Day 112 – Developing My Project

This Post

This post will get progressively more technical. Apologies if this does not appeal to you. We’ll be back to my regular everyday topics shortly.

Just let your eyes glaze over slightly and let the words fall through your brain.

It’ll almost be as if I’m making sense.

The Project

In the spirit of not biting off more than I can chew, I’ll start with something relatively modest. Something that undoubtedly already has many solutions. Something that is a stepping stone to a bigger problem I’d like to solve.

Baby steps though…

I have a very specific workflow for dealing with my RSS feeds:

  1. In the mornings, and sometimes once or twice throughout the day, I’ll pop into Feedly to skim through post headlines
  2. For every headline I make a snap decision whether it’s something I’d like to read more about (Star), or not; this usually triages my feeds from 200-300 articles for the day down to maybe 10-15 of real interest
  3. At some later point I get back to them, and I read the articles
  4. At long irregular intervals I go through the starred posts and un-star any that have no lasting value, leaving stars on anything I want to keep for reference

And that’s where it usually ends.

But I’d really like the third step to immediately result in a classification of “Not worth keeping“, or “Worth keeping under category X“. I want my workflow to keep up a well-organised library of links to refer back to later so I can actually find stuff.

So, a workable project to me seems to take RSS and my intended workflow and mash those together into a minimalist web application.

The Iterations

I’m going to have to learn many aspects of web development for a somewhat polished result, but I don’t want to overwhelm myself with too many concerns simultaneously. So, I think I’m going to have to do several versions of this project.

  1. The prototype with just the bare-bones workflow and lots of ugly hard-coded crap to get my head around MVC and Knockout.js
  2. The maintainable version where I tidy up the internals and introduce Dependency Injection (not to be confused with an injection dependency which falls outside the scope of technology) and unit testing/mocking
  3. The pretty version where I apply some CSS3 and JavaScript transitions to make it all look better within the confines of my design sense 😉
  4. The secure version where I introduce some form of account management / login, and analyse the code for typical attack vectors (session hijacking, insufficiently secured requests, etc.)

I am sure there will be another couple of important versions past this that I’m forgetting about now. But that seems like a manageable separation of concerns. I fully expect to throw lots away between these iterations.

The Tools

I’m a .NET developer, so this will be very .NET skewed.

At the moment I’m thinking of using the following tools:

I wonder which of those will prove to be bad ideas in retrospect? Luckily, with at least 4 iterations ahead of me, I’ll have at least 3 opportunities to drastically change my mind 😉

Oh, and I should probably have mentioned GitHub, where I’ll be hosting my attempts. I may even have a look at the issue tracking built in to GitHub to see if it suffices for the scope of this project. Otherwise I might have to set up my cheapie 10-user Jira license locally somewhere.

This is all both daunting and exciting at the same time.

I suspect the first iteration will take the longest because there will be the most reading material associated with getting the first attempt off the ground. I’ll try to blog about that as well along the way. I’ll try to make it a separate stream to the 365-challenge, lest I bore my non-tech audience to tears.

Day 72 – Personal Development

Preparing for the presentation I did last Wednesday has had unexpected flow-on effects. Looking through code listings that I had not seen for a year, and re-reading my post on Reflection Performance made me want to play around and re-implement a more flexible version of the APIs in the latest .NET version.

And then the inevitable happened.

I started reading web pages.

And I remember all the techniques and methodologies I have meant to write about and apply properly. Maybe I should take this as a sign to combine the two and write a series of posts on my journey of “Doing Fast Reflection Right”.

What this would look like is something like:

I’ll try not to make (all) these posts a part of my 365 day challenge for fear of boring any non-developer readers.