Log

July 8, 2016

I changed my reading schedule this week. Instead of reading after I complete all client work and "when I have time", I read at least half an hour in the morning. One concern that I had is that this might impact other work. However, this had no impact on client work. So for now, I'm sticking to "do stuff you want first and stuff you must next".

I read Dynamo: Amazon's Highly Available Key-value Store this week. An interesting paper about scaling problems and Dynamo - a database that allows developers to trade consistency to achieve high availability and performance.

July 3, 2016

Last week I wrote about keeping promises and this week I broke one. This was the first Friday since I started writing the log that I didn't write one. I'm 2 days late. No excuses really.

I have an ongoing client work, but I also focused on completing some projects where development slowed down a little bit. I hope to finish those in the next few weeks so I can work more on private projects.

I read a paper called Fundamental Concepts in Programming Languages. It was a nice brain exercise.

June 24, 2016

This week I met some ex-coworkers. They told me they read this blog from time to time. While I appreciate that, I have to say that this blog is not really meant for reading. I don't think that a visitor can pick up a lot of useful stuff from reading it or that she can find amusement. However, I still think that it's important for me to keep writing regularly.

There are several reasons for that. My goal is to practice skills that I'm not good at but are very important for any software developer. One of those skills is writing. I'm not a native English speaker and I started writing somewhat recently, so every line of text that I write is important to improve my skills.

Not all writing is equal. I wrote several tutorials for Semaphore Community that were well received. It's much better to write a piece that's useful for other developers than to write for myself. That is something that I need to work on more in future. However, since I do publish this web log, I still need to keep it at least decent, which is better than keeping it only for myself.

I think that moving to a more useful content from something that's not that useful is much easier than to do that from scratch. Time will tell if this is something that works for me.

Another thing that I'm practicing is keeping promises and staying on schedule. I want to publish few sentences every Friday. Sometimes it's not easy to find 15 minutes to do so, which makes keeping the promise even more important.

So, for now, I write this blog to improve my skills, but I hope I'll provide more value to visitors in future.

June 17, 2016

The biggest change this week is that I got a new standing desk. I've used a standing desk for a couple of years now. This desk was custom made by my cousin. We designed a desk over a family dinner. Since we have a small apartment it was designed specifically to save space and to match my height. I'm pretty happy so far, although I already have a version 2.0 in mind.

Couple of weeks ago, a paper named Deep API Learning was features on Hacker News, so I choose it for this week reading exercise.

I also updated Rails Tips with a trick that will make your Selenium tests more robust.

June 10, 2016

I work remotely, so I spent part of the week in my home town, Sombor working "even more remotely". I enjoy changing locations from time to time (although, I'm far from a digital nomad).

I read The Imitation Game by Alan Turing this week. It's the paper that presents famous Turing test. Although I have knew about Turing test before, this paper makes things much more clear. If you are interested in AI field, read this paper. It's an easy to read paper from the father of the field.

I recently saw the movie - The Imitation Game. My memory about the movie is not perfect, but I can't tell that I understand why the movie is called the way it is. It certainly is about Turing. However, the movie is about Turing's efforts in WWII and cracking the Enigma code. I don't remember that it had anything to do with his work in the AI field. Perhaps it's just a cool title.

I picked up a new, custom made, standing desk this week. I'll put some pictures next week.

June 3, 2016

I wasn't very productive this week. I did a solid work on client projects, however, I failed to meet any personal goals. I didn't read any papers and I didn't work on personal projects. I had a personal obligation that took a significant chunk of my time, but I still managed to schedule 3 slots to work on personal projects. I failed as I overslept all of them.

My goal for the next week is not to let this happen again.

May 27, 2016

An interesting thing this week is that I started using the Pomodoro Technique. It's a well known time management technique that improves focus and flow.

I don't really have problems with focusing. However, I do sometimes have problem with 'unfocusing'. I tend to forget taking a break. When I worked in a company, my day was filled with different tasks and interruptions so I took a break between the tasks. However, when I work alone I tend to work on a single task for a longer period of time. The Pomodoro Technique helps by enforcing regular breaks.

During the breaks I do a small chore, stare at the ceiling or gaze at the seconds hand on my watch. I don't do any mentally involving task and I don't sit at the computer. So I'm still focused on the main task and I can think away from the keyboard. With that in mind, I don't feel guilty for taking a break, since I know that the break is good for me and for a project that I'm working on.

The technique works well for me, but I just started. I'll have more insight in few weeks.

May 20, 2016

This was a busy week, but not much happened actually. I'm still busy with client work. Unfortunately, I didn't find time to work on the side project.

I did schedule some time to read Lisp: A Language for Stratified Design by Abelson and Sussman, 2 professors from MIT, famous by SICP.

I found a nice Ruby on Rails related resource Ruby on Rails Security Project. It includes a number of guides on RoR security and a newsletter that looks like a neat way to keep up with the important topic.

I added one new tip to Rails Tips repository. The plan is to make at least one contribution to the repository every week.

May 13, 2016

This week I completed last formal steps for joining Toptal and I'm now a Toptal member. Still didn't spend much time on the platform, searching for jobs, as I'm busy with client work.

I read Organizing Programs Without Classes which compares class based object oriented languages with those based on prototypes.

I continued working on a side project - managing book collections for teams, but I still struggle at finding time for it.

May 6, 2016

I continued working on the client project that I started the last week. I learned that the project started as a pre-Rails 1.0 application. It's great to work on an application that's been ticking for so long.

At the start of the week I worked intensively on my Toptal application. Yesterday, I had the last interview and I'm now accepted to Toptal talent pool. I'm still not sure how much work will I do through Toptal, but it's nice to have that as an option.

This week I read Searching for Spaceships by David Eppstein. Although it's not written for the wide programming community, it's very interesting if you're into Life.

April 29, 2016

I focused most of my time on a new client project, that will probably keep me busy for the next few months. It's an established project that's been around for around 10 years. It has a small, but dedicated team. So far, I spent most of my time learning about the domain and the code base, but I also did few smaller contributions.

I read Donald Knuth's ACM Turing award lecture from 1974 - Computer Programming as an Art. Read more about it on the list of papers.

I learned few surprising (to me) but useful tips related to Ruby on Rails and testing this week. I created Rails Tips repository to collect them. I choose a GitHub repository, as I welcome contributions. I'm generally looking for tips related to Ruby or Rails or related tools that are less known, interesting or surprising.

April 22, 2016

I worked on a client project and I found another project that will keep my busy for the next few months. If you still want to work with me, please contact me to check my availability. I might still be open for smaller consulting gigs.

I had another Toptal interview that I passed. And I have one more step left before I can join Toptal.

This week I choose to read Why Functional Programming Matters by John Hughes. The paper was published in 1984. It discusses advantages of functional programming over "conventional" languages. In particular, it discusses how higher order functions and lazy evaluation contribute to modularity. I also printed out several papers for the next few weeks.

I switched to Neovim as my main editor instead of Vim. Few fellow developers reported that it's stable enough for daily use. I'll try it out for the next few weeks. I created a new GitHub repository for Neovim configuration and updated my dotfiles repository to install Neovim automatically.

In the next few weeks, I plan to focus on client projects and to wrap up Toptal application.

April 15, 2016

This week, I concentrated on Toptal application. I continued going through Codility lessons. Although I didn't complete all lessons, I concluded that I did enough to officially apply at Toptal.

I had my first Toptal screening interview on Thursday. It was a short, pleasant conversation and the Toptal person informed me that I can continue to Codility based test.

I did Codility test on Friday. I'm still waiting for results.

I helped Tanja complete some old projects. It was a sort of spring cleaning for freelancers.

I also did some paperwork and learned more about running a business.

April 8, 2016

I continued working on the client project. And I did a smaller job to help out Tanja with her work.

I fixed 2 annoying exceptions for servisne.info, the service I developed and maintain.

I read The Humble Programmer, the ACM Turing award Lecture by Dijkstra from 1972. And it's a fantastic paper! I wrote more about that on the papers list.

I also continued working on Codility lessons. It's interesting that another programmer contacted me though the repository. We exchanged few emails with tips and shared our experience about Codility and programming in general.

April 1, 2016

I started working on a client project. However, I still have one slot left. If you need my help, or if you know someone who might, let me know.

I bought a new laptop - Macbook Pro 13". My initial choice was Dell XPS 13" with Ubuntu. The main problem with Dell + Ubuntu is that some popular software (like Skype) doesn't work great. A friend advised me that this is something potential clients don't want to hear about.

I'm used to working on 27" iMac and didn't expect much from Macbook Pro. But, it's a really nice machine. It's good looking, faster than iMac and it has a great screen. My only criticism is that the keyboard is not that great. It has that clickety sound, like I have long finger nails. But, it's not a big problem.

I visited a local meetup that featured 2 talks. The first one was by Sandra Prvulović, an HR expert. It discussed the problem of finding experienced developers for a company. One of the most interesting remarks I heard is that the IT companies have more or less equal offer in Novi Sad. Because of that, not many developers switch companies, although many say that they would if a company makes a good offer.

The other talk was by Tijana Momirov. She talked about her experience living and working as a digital nomad. It was a very inspiring talk for someone who's just starting his own business.

I read the paper Some History of Functional Programming Languages by D. A. Turner. It was generally an interesting paper, although hard to follow in some parts. I did learn some interesting facts, though. For example, that LISP, was not influenced by lambda calculus. Apparently, John McCarthy didn't study Church's papers, before he invented LISP. Modern lisps, however, are based on lambda calculus.

Another interesting part is a discussion about languages that influenced Haskell.

My plan is to continue reading one paper every week.

I also continued working on Codility lessons.

March 25, 2016

This was my first week as an independent consultant. And it went pretty slow. A project that I planned for this week got postponed, so I concentrated on some preparation work.

I updated my homepage a little bit. The website needs a full redesign, but for now, my goal was to make it decent. I updated the text on the homepage, added some links to the articles I wrote and the link to the conference talk I recently gave at WebCamp.si. I also started writing a short summary of my professional life, to replace the CV.

Another thing that I set up is this log of my weekly activities.

I did some research about Toptal as a source of clients. To get into Toptal, you need to pass a interview process, much like a standard company interview. One of the tasks is Codility test. I tried doing few Codility tests that are freely available and they are harder than I though. So I set up a git repository and started going through the lessons.

My goal is to complete as many lessons as I can. I learned few things so far:

  • Lessons are harder than I thought. I'm not as good as I though.
  • I can get better by practicing. Ideas can be applied in different challenges.
  • You need to know what Big O notation is.
  • Every task in Codility has expectations for performance expressed in Bit O notation. This is also a hint and a guide how you need to implement the solution.
  • It's good to write code that generates test data and to use benchmarking to make sure a solution has good performance.
  • It's useful to develop a naive or slow solution first (if you can do that fast), as you can use it to test the fast solution, that often has more complex implementation.
  • My solutions to more complex problems are not that readable and the code is not great.

I plan to continue working on Codility challenges.

I also migrated email sending for a side project that I have (servisne.info) from Mandrill to Mailgun.