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.
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:
- In the mornings, and sometimes once or twice throughout the day, I’ll pop into Feedly to skim through post headlines
- 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
- At some later point I get back to them, and I read the articles
- 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.
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.
- The prototype with just the bare-bones workflow and lots of ugly hard-coded crap to get my head around MVC and Knockout.js
- 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
- 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.
I’m a .NET developer, so this will be very .NET skewed.
At the moment I’m thinking of using the following tools:
- ASP.NET MVC for the server-side
- Probably SQL Server, but I’m also kinda curious about RavenDB… not entirely sure which way I’ll go
- Autofac for the DI
- xUnit and (Moq or Rhino Mocks) I’ll have to compare the latter two
- Maybe NCrunch, although it looks like VS2013 has a good unit-test runner built in, so maybe not?
- Knockout.js and JQuery for the front-end
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.