Open Source Clarizen Projects


Pull,Push,Pull,

Push,Release…..

Since starting (and finishing) my Clarizen Appathon application, I have decided to carry on and release them so anyone can use them – i.e. fix and release the brute code of the Clarizen.NET wrapper. Today I have move forward with that goal by completing the console version of my tool PlainClarizen, which will help me rapidly implement the required entities for Clarizen.Net quickly. So here are the links if anyone would like to follow the repos.

  1. Clarizen.net: Wrapper for the RESTful API – this is nowhere near finished and I wanted to just get some simple methods in place to pull down and query tasks. There is a simple fluent CZQL creator as well. The coming weeks this will gather pace, so if you are interested watch the repo.
  2. PlainClarizen: Simple application that pulls down a list of available Clarizen Entities and serializes them into POCO C# class files. I started building this so I easily create strongly typed objects for the Clarizen.NET wrapper.
  3. Clarizen2Trello: My Appathon submission. Once the Clarizen.Net is in Beta, my next task is to make this a good and robust application.

All Clarizen, and no play……

With Windows 10 looming, I’m really only going to work on this for the next month, desperately trying to ship Clarizen.Net out so other developers can start hacking and using it. Reason: Working on a Raspberry Pi 2 IoT App in August for Windows 10……

Clarizen Appathon 2015 – Clarizen.NET & Clarizen2Trello


clarizen-appathon

Finally finished it.

It has been a busy 2 months personally, with my wife’s 30th birthday and her various parties, upping running training to start tackling Marathons (and hopefully at the back end of 2016, Ultra 50ths), plus all my myriad of coding projects, including Windows 10 development and Windows 10 Internet of Things (IoT) for a Raspberry Pi App – more on that soon.

One of my coding projects is an App for the Clarizen Appathon. For anyone who does not know, Clarizen is a Project Management collaboration and tool, and honestly I’m a big fan. Clarizen comes with a a very good Custom Engine for building:

  • Custom Fields
  • Custom Work flows
  • Custom Visualisations using HTML/JS (Called Panels)
  • Custom Business Logic
  • Not really part of the Customisation Engine but a robust RESTful API

This is very good, because there are some areas which Clarizen struggles with, one being their Agile/Scrum implementation. There are various bespoke add-ons for this area but they are not very good.

Which is where I come in.

I decided to try and create an interface to my favourite (free, as Clarizen is an Enterprise implementation) tool outside of work – Trello. This project grew larger than I expected, mainly due to the fact that I also decided to write a Clarizen .NET code library to wrap around their RESTful services. So that is what I did. Because I only wanted to pull down Tasks from Clarizen, I concentrated on the necessary actions from the list to accomplish this:

* Authentication / Session ID

*  Metadata (DescribeEntities)

* Query and a simple Clarizen Query Language (CZQL) implementation.

I have of course used great frameworks like Newtstonsofts JSON.NET and json2csharp to create my POCO’s and built a brute-force alpha-stage API. I enjoyed doing this very much and plan in the following month to get these issues completed:

issues_clarizendotnet

So once I have the bare basics of this done, I moved onto the quick and easy Clarizen2Trello console application, that pulls down tasks and updates Trello (Tasks as cards within various Todo/Doing/Done lists). here is a snippet:

client.Data.Query.Select("Name,Work,CreatedOn,ActualCost,RemainingEffort,DueDate") 
                 .From("Task")
                 .Where("StartDate > 2015-06-01");
            client.ExecuteQuery();

            foreach (Bradaz.Clarizen.API.Models.Task t in client.Tasks)
            {

                if (t.RemainingEffort.Value == t.Work.Value)
                {
                    Card newCardTodo = trello.Cards.Add(new NewCard(t.Name, todo));
                    trello.Cards.ChangeDueDate(newCardTodo, t.DueDate);
                    trello.Cards.AddComment(newCardTodo, "Remaining Effort is : " + t.RemainingEffort.Value);
                    trello.Cards.ChangeDescription(newCardTodo, t.Id);
                }

                if (t.RemainingEffort.Value == 0)
                {
                    Card newCardDone = trello.Cards.Add(new NewCard(t.Name, done));
                    trello.Cards.ChangeDueDate(newCardDone, t.DueDate);
                    trello.Cards.AddComment(newCardDone, "Remaining Effort is : " + t.RemainingEffort.Value);
                    trello.Cards.ChangeDescription(newCardDone, t.Id);
                }
                else
                {
                    Card newCardDoing = trello.Cards.Add(new NewCard(t.Name, doing));
                    trello.Cards.ChangeDueDate(newCardDoing, t.DueDate);
                    trello.Cards.AddComment(newCardDoing, "Remaining Effort is : " + t.RemainingEffort.Value);
                    trello.Cards.ChangeDescription(newCardDoing, t.Id);
                }




            }

Easy! Its the Trello.Net and Clarizen.Net API’s that are doing the grunt. Here is a quick video explaining how it works:

Code can be found here:

A little bit of Clarity.

That isn’t it by a long stretch, I want to really flesh out the Clarizen.NET code so it can be used by other developers, plus I’m also working on a Chrome Extension (Clarity) that enchances the Configuration page within Clarizen itself, and I may even try and convert Clarizen.NET to Javascript AND Windows 10 UWP and create a Windows 10 Clarizen Client (for Desktop, Phone and possibily Hololens – haver some ideas on 3D data visualisation).

Watch this space.

Fresh new Theme, Fresh New Direction


making sweet code.

I have had the old Theme for this blog since its inception a long time ago, and it has not aged well. I have updated with a fresh new look which hopefully reflects my own life at the moment and the direction it is going, which is good. I’m currently extremely busy creating my own site (quick Single Page Application using Knockout.js), learning Windows 10 UWP development, especially for the Raspberry Pi and the IoT branch, plus a number of small projects (like the Clarizen Appathon), so alot going on,

If anyone is interested, my projects are hosted on my Trello Page.

Source of Cover Image.

CSV File Read – Alpha 0.2


This slideshow requires JavaScript.

Just a quick update that I plan to try and get some more functionaltuy added to the the CSV File Reader utility, with another update this week with a designed XML file that describes the type expected in each column and an application which can create a XML settings file.

Links:

C# – CSV File Reader


 

CSV is a comma separated values file, which allows data to be saved in a table structured format. CSVs look like a garden-variety spreadsheet but with a .csv extension (Traditionally they take the form of a text file containing information separated by commas, hence the name).

 

At work, when taking on a new client and integrating them into our Distribution systems, we mostly write import routines to take in data and process it into our back office file system. We mainly receive these as flat CSV files – because these are easy to work with. Lets face it, the better way would be to expose some public API endpoints and provide these to clients to push data in a temporary data store (then for us to post-process it into our back office). We don’t. In an ideal world we would, but we live in a world of ideals which involve providing lots of different flat files and writing some custom code each and every time, mainly because we don’t have the time to write a more modular and reusable application….until now.

I will explore in my own time, how best to create a CSV Reader system using C# and how to process a file and validate it. Because there is no defacto standard, I have chosen to work with RFC4180 for the default behaviour.  I have just started this and the 1st version was pushed to github on Monday and can be found here:

 

http://garfbradaz.github.io/bradaz.utils/

 

Snip

 

 

 

 

 

I’m not going to explain all the code now as I would like to try a video tutorial at explaining each individual class, but the gist of it is in Bradaz.Utils.IO namespace includes:

 

  1. CSVRow – Represents a CSV File Row and tracks things like the row number and the original data. Also stores a collection of CSV Columns (CSVColumn).
  2. CSVColumn – Represents a CSV File Column and tracks thinks like the column and row number and the original data.
  3. CSVFile – This represents a CSV File itself with a collection of rows and a CSV File Reader (CSVReader) of buffered data.image
    The project itself contains some example code on how to load a test file, validate it (simple validation currently) and display the contents. Currently I only load into a string to view it:

http://pastebin.com/embed_iframe.php?i=Sj9A4MM2

 

I next want to enchance the Parser based on a XML configuration file that will allow a user to specify things like how many columns should be in the file and what types to expect in those columns and convert to a usable object, no more strings! (Things like dates and integers). More to come!

8WG – New Site on its way.


I have been wanting to build my 1st MVC site for a while and always wanted to take the 8weekgame concept further and build it out into its own site. Well now I’m – I have completed the functional analysis and design and now in the process of mocking the HTML pages using a snazzy tool called CoffeeCup. I have decided to get the front end pages done first before moving onto designing and building the backend database (the model part of MVC).

The first protoype page is now up and will grow as the weeks come on. I have decided to use the CSS framework Metro UI CSS to rapidly develop the pages using Microsoft’s Modern UI design language. This is changing with the advent of Windows 10 and there is a new version (3.0) of the Metro UI Framework coming. Please note I will remain on version 2.0 until later on after golive and way up the pro’s and con’s in upgrading. The Mock can be found here:

http://8wgdev.coffeecup.com/

I mentioned Phase 1 earlier. I’m splitting 2015 into two Phases and using Trello to help me organise this in a simple Scrumboard approach of Todo/Doing/Done. Again this can be found here:

https://trello.com/b/GyBHSXfI/8wg

I will of course keep this blog upto date on my progress.

Grovelands posted a job you might be interested in



Grovelands

Dynamics AX 2012 Senior Developer
Brighton, United Kingdom, GB – Information Technology and Services

My client, a leading player in the payments space has an immediate requirement for Microsoft Dynamics AX 2012 Senior Developer / Technical Lead.

The client we are working with is a market leader in their industry, they have been around for nearly 30 years and have offices across the EMEA, South America and in Singapore.

This is a great opportunity to be part of a great organisation that invests heavily in its staff, they are looking to grow a team of Microsoft AX Developers around this role and you will be directly involved in this growth strategy.

 

£70k plus package + relocation

Posted February 24, 2015 at 02:53PM from LinkedIn http://ift.tt/1A74OSm
via IFTTT