If I maintain the same development pace as the last eight weeks, I’m due to have a “Summer of fun”.
I’m two weeks away, one development iteration from a point in which I’ll be comfortable letting the Costs to Expect API and website run throughout the summer untouched.
They won’t be untouched; both the website and API are under active development; I’ll focus my energy on building the service, not the public website.
Dependant on your experience, as a developer, you don’t typically get to spend too much time working on new projects solving problems entirely new to you. Mid-way through July, that is me, I’m planning on locking myself in my office and getting down and dirty with my IDE, whiteboard, pen and paper.
My wife and children have told me that they have a very different idea on what a “Summer of fun” is; I’m guessing it is far less coding than my plan.
The Costs to Expect API is approaching the point where it includes all the standard and expected features; you can add items, edit, list, delete and summarise the data, all the features you would expect at a minimum from a basic Rest API.
This summer, the fun begins, almost one year after development began I get to start work on the non-standard features and start developing the Costs to Expect service.
It took a long time to get here, well, a year. One year ago, I had an idea; now there is a Rest API, three web apps that use the API and a shiny new website showcasing five years of data that we have collected.
I know what we have planned for the next couple of months, and I know the long term goals, it is going to be interesting to look back again in 12 months to see how much progress there was and how much we still have to do.
I’ll blog more about the specific features when I start development, during the summer, I expect progress will slow slightly as I spend time with my family.
Costs to Expect API – https://api.costs-to-expect.com
Costs to Expect Website – https://www.costs-to-expect.com
Costs to Expect on GitHub – https://github.com/costs-to-expect
Eight weeks ago I concluded my 16th contract, yes, I have been contracting for a while, over ten years so far.
I enjoy contracting; I continually meet new people; additionally, by moving around, I have been fortunate enough to be exposed to numerous business domains, frameworks and tools.
We can’t ignore the elephant in the room, contracting pays well, especially when you have over 20 years of experience.
In April, my Wife had our second child, Niall. When we had our first child, we realised that the best way to provide the support my Wife needed was to take time off, there were so many positives with me providing the support rather than getting in professional help. Well, with Niall, we are going to do the same thing, I’m going to take at least a year off, primarily to help my Wife raise our brand-new son, secondly, to try and get the Costs to Expect service off the ground.
Costs to Expect is a project I had been considering for a while, during the summer I released the first version of the API; I plan to develop the MVP of the service during my time off.
Twelve months is not as long as you think, especially when you are a single developer. I’ve used Pivotal Tracker for years; it has become scarily accurate at predicting what I will be able to accomplish during a two-week sprint. I usually have two or three sprints worth of work in my backlog, according to Pivotal, it is going to be quite difficult to get enough of the service ready in 12 months, hopefully, if I plan well, I should be able to do it.
When I published the Costs to Expect API I was initially bemused, none of my OPTIONS requests worked, they all return “405 method not allowed”.
After searching, I diagnosed the problem. The HTTP OPTIONS request fails because the default PHP-CGI handler does not handle the “OPTIONS” verb.
The fix is simple, update or add the handler in web.config.
<remove name=”PHP72_via_FastCGI” />
<add name=”PHP72_via_FastCGI” path=”*.php” verb=”GET,PUT,POST,DELETE,HEAD,OPTIONS” modules=”FastCgiModule” scriptProcessor=”PATH\To\File\php-cgi.exe” resourceType=”Either” requireAccess=”Script” />
As I have mentioned before, I’m lucky enough to be able to take time off during the year to work on my projects, every time I take on a new contract my schedule goes out of whack.
When I’m not contracting, outside of real life commitments, I try to dedicate as many as 30hrs per week to work on my projects, when I’m contracting that isn’t possible, a 40hr week with travel doesn’t leave much free time.
The last two weeks have been an adjustment, I managed to log 5.5hrs the first week and 7.5hrs the second week, I’m on track for 10hrs this week.
Is this a real problem, no, the first world called and wants a tissue, the issue is expectations, during my summer off I steamed through my work, with reality hitting, productivity takes a nosedive. Eventually, Pivotal Tracker will update to show more accurate completion times; once I’m three sprints in, until then, it is frustrating looking at completion dates that are optimistic.
Why am I blogging about this? As the site byline says, I was musing.
As a contract developer, I’m lucky enough to have I have the luxury of choosing when not to work, I’ve just finished a six-month contract and rather than find a new contract immediately I am taking the summer off to work on my projects.
I have many personal projects, the big one that dates back years and then lots of small projects, one of which has become far more popular than I ever expected and is keeping me busy.
What does a summer off mean?
Outside of social and family commitments, it means I have a bit more time to focus on my projects. I always manage to find time to work on my projects, being a night owl, but it is nice to have the extra time, makes it easier to solve the more significant problems that you can’t entirely get your head around when you only have a couple of hours at the end of a long day.
In no particular order, I am going to support and improve my open source projects, learn Swift, write a simple app to interface with a RESTful API, develop the API and if I get time, work on my long-term project and do some charting and graphing work for a new website.
The above is a tall order for six to eight weeks; we will see in September/October how far I got.