Happy new year! A year ago I made a plan for the year 2014. Some things worked out as planned while others did not. I'm analyzing the goals, the outcomes, and provide a new plan for 2015.
Keep working as a freelance developer
I have no intention to change that. Although I am more selective in choosing projects. Technology matters as I want to provide superior service and I cannot be an expert in everything. I had to say goodbye to Wordpress. It did not match my workflow and required experience I did not have. That experience was also too hard to come as all my other projects were more general development projects. There is enough demand for custom non-blog/homepage web apps.
For one Wordpress project I had to find another developer to pick up the work. The project was in a very early stage (it was practically restarted) and passing it over was easy. Interestingly, it was quite hard to find someone to pick it up. I posted a job ad and many freelancers that contacted me had very brief CV's, most of them had no portfolio and some even had no CV and social accounts (GitHub, Twitter, Facebook). It's really hard to make good decisions with such incomplete information. This behavior makes no sense for freelancer developers. Clients just start to think you have something to hide.
Study new things and languages
I tried Docker and saw it was awesome. I have settled for two use cases: 1) trying out new things in an isolated environment; 2) run test environments inside dockers. In the second case I'm treating a docker container as a lightweight virtual machine with a process manager (supervisord). It does not match the recommended approach where you are supposed to put each process in a separate container. However, it works incredibly well and friction-free.
I made an attempt to write some Go code for Docker to solve an issue I found. However, due to extreme popularity of the Docker project, it was solved before I could write a single line.
I briefly looked at the Rust language but have not written anything in it. I also checked out NodeJS web framework Koa and tried to write some code with generators. As I also write browser code, I did not find generators enough useful yet. Instead of generators, all my new production code since second half of 2014 uses Promises.
I'm also a great fan of Prolog and it is moving forward. SWI-Prolog got dicts that make programming easier with object-like data structures. Learning Prolog for new programmers became easier as the Learn Prolog Now got interactive code examples. However, for every-day programming, the issue with Prolog is lack of packages doing to the plumbing work and interfacing with other systems such as databases and remote APIs. Writing an high-quality database interface fully covered with tests can take a month of full-time programming.
Meet new people
At the of 2014 I took part of my first Coding Dojo. I also went to other smaller meetups. It's good to see my old coursemates (that still work in IT) to take part of these events, too. My only issue with these meetups is that there are too few of them. As I'm looking forward for 2015, I'm hoping that it brings some changes.
Get better means of transportation
I finally bought a car. It's a Volkswagen Passat, a family wagon. It's big enough to fit both of my bikes without taking them apart. As a coincide, during the same week I bought the car, I started working on my current main project, a car sales portal.
I did raise my rates. I also lost a client doing that. But I cannot ignore the fact that some clients pay me 2x or 4x more than some others. In addition, I have noticed that higher-paying clients have steadier supply of work, cleaner vision and more well-defined goals for the project.
Finish up old projects
In 2014 I had two large side projects unfinished. The first was the Prolog framework for blogs (this blog uses the same framework). The first version of it finally got released.
The second of the two unfinished projects was the watercooling project for my PC. The project was actually a part of the much larger project of building a completely silent computer. By the 2nd half of 2014 I had realized that finishing the whole project would have cost hundreds of euros in equipment and parts and take many months to complete. So I decided to complete the watercooling only. The water loop was actually built in 2012 but it lacked a controller unit for fans and monitoring for the pump. As of today, the controller is built and installed but the firmware is not yet finished.
Start 3 more blogs
I had plan to write about my DIY projects, gaming and cycling/running activities in separate blogs. The blogs were installed but I managed to write no articles. The DIY blog will be merged with this tech blog (I have a number or articles in backlog). The gaming blog will have some announcements and reviews but I'm not an hardcore gamer. The cycling/running blog will eventually get some articles. I already have a list of competitions that I plan to take part of in 2015.
Write more on technology
Writing a good technical article takes time to do some research, especially when you try to provide a novel solution for some practical issue. I do not yet have a good discipline to blog a solution as soon as I hit a technical problem and find a solution. I'm hoping to change it.
Start using a real spam filter
This has been done and I might write about it :)
Most of the planned goals for 2014 were done. For 2015:
- Keep working as a full-time freelancer.
- Find more local tech meetups. Or maybe help to organize one.
- Keep raising rates.
- If doing side projects, keep them small (a week max).
- When permitted, open source more libraries from client projects.
- Get started with the gaming and cycling/running blog.
- Whenever possible, blog about found technical issues and solutions.
- Write more often about completed projects.
- Release blog-core 0.0.2