New year’s resolutions

2014 was an exciting year for me. I started the year moving to a new apartment in the city center, just ten minutes away from my workplace. The increase in free time allowed me to start a few hobbies and, as a consequence of that, my circle of friends grew significantly. New friends means more daytime activities, more dinners, more bars, and more clubbing.

Professionally, I had reached a point where I was comfortable in my work place but I wasn’t really seeing any cool new things on the horizon. A friend of mine got a job offer in Kiev and a few months after he moved, he told me that there was an opening in his company for a position as PHP Consultant in Kiev. It was a major change but after some talking, and with the full support of my amazing girlfriend, we packed and moved to Kiev. The last 3 months of 2014 were spent getting used to the new job, new apartment and, new city.

When 2015 started, I made a list with five New Year’s resolutions that I really plan to complete.

1. Start my own personal blog (done)

Starting a blog is easy, the hard part is maintaining it. A personal blog is a great way to get your views and ideas out there but it can also be a curse. I don’t want to become just another twat that writes one blog post a year to wish happy holidays to everyone.

There’s a ton of choices for anyone that wants to start a blog. I looked first at a few online blog platforms like Medium, Svbtle, and Google+ but none of them really convinced me. I needed something self-hosted that I could break and fix and break again. Being extremely busy (lazy) to code my blog from scratch, I was left with two options: Drupal or WordPress.

Drupal is great. It has a ton of features: out-of-the-box caching, great security, amazing admin control, just to mention a few. But do I really need all that?  I need a reliable platform to write a few articles and eventually get into a few troll wars in the comment section. That is exactly what WordPress is all about. So, Keep It Simple Stupid. Choose the right tool for the right job.

2. Create a profile in a meaningful social network (done)

I was always reluctant about social networks. Not just because of privacy issues but because I could see colleagues and friends being consumed by them. Honestly, I always considered them a waste of precious time. If you want to be social, go out! Meet people.

My opinion didn’t change but society forced some changes in social networks. It became easier to control what you share and what others share with you. Social networks are powerful tools when you stop sharing photos of kitties, bathroom selfies, or your morning cappuccino decorated with a unicorn made of foam farting rainbows of cinnamon.

All social networks have spam. Layers and layers of superfluous information and ten different ways to re-share, re-like and re-post anything. The task here was to choose the one that would bring the most value with the least work filtering out all the crap.

I ended up creating a LinkedIn profile and after 48 hellish hours of dozens of alerts and emails of accepted “connections”, I can say that I’m happy with my choice. It’s the social network that gives the most professional value, and I even found a couple of interesting articles to pass the time.

3. Plan a vacation in paradise

Living away from my home country has a toll on my vacation days. Twice a year I go back to Portugal to visit friends and family and that cuts my regular vacation days half. This year I decided to visit a place that was in my bucket list for a long time already. The Maldives.

The only month that I have available for this trip is May and that raises a few concerns. The monsoon season in Maldives usually happens around April/May and comes packed with heavy rains and cloudy skies. The temperature is still great and the rainstorms don’t usually last more that 30 minutes so me and my girlfriend decided to take that chance.

After a few hours on Tripadvisor,, and, we selected Kuredu Resort Adaaran Select Meedhupparu for our 7 nights in paradise. The island seems amazing for snorkeling and it has a bunch of activities if we get bored or if the weather gets really ugly.

I will definitely write a post about the trip and the hotel after I get back.

4. Read two books about application architecture and design patterns

There’s a lot going on regarding application architecture in the PHP world. PHP 5.3 introduced namespaces, among other cool things, and that was the start of it all. We got composer, auto-loading, and an overall increase in true OOP architecture. All of a sudden, terms like TDD, DDD, SOA, EDA, CQRS, started to pop out in articles about PHP and PHP Frameworks.

All of this makes me very happy but also makes me feel outdated. Every day is harder to keep up with the new stuff and that’s why I decided that my focus this year would be more about the big picture and not just diving into a new framework.

The two books I selected are:
Patterns of Enterprise Application Architecture by Martin Fowler
PHP/Architect’s Guide to Enterprise PHP Development by Ivo Jansch
Software Estimation: Demystifying the Black Art by Steve McConnell

I will write an article about them as soon as I’m done.

5. Publish my first open-source package/library

One of my recent projects required users to create calculated fields with some complex formulas as well as some query filters with custom logic. I managed to implement them but not without some messed up hacks. After I finish, I started to see some logic that was similar on all these different areas of the application. That led me to some online research on calculated fields (a.k.a. Formulas) and the way CRM applications implement them.

To my surprise, there’s no PHP package to manage any of these and now I’m trying to define a proper structure that will allow me to implement this type of logic without being dependent on the application data.

The package needs to be framework agnostic, ORM agnostic, and initially needs to focus on operations for numeric data, string data, and date data. It needs to be able to create formulas for custom queries, event triggers, or simple calculated fields. Also, it needs to provide options to persist the created formulas to a repository.

I will definitely post something as soon as I finish an alpha version of the package.



Daniel R.

PHP developer and consultant. Enjoys solving problems, building apps and (occasionally) breaking stuff. Currently lives in Poland and works for an american startup focused on data-gathering.