Hmm… Let’s Get Those Crisps

One of the most time consuming menial tasks I have is grocery shopping. It is also one that can easily become a money drain. This is why I spent a lot of time trying to optimise it. Here are my takes to date:

1. Don’t shop when hungry

The first thing I did was not go to the supermarket hungry. It is amazing how short your shopping list gets when you’re not hungry. Snacks don’t have as much appeal, and it’s much easier to rationalise your choices.

2. Shop online

Next, I cut on my commute and browsing time by shopping online. This also helped me save a lot by having easier access to sales on products I consume frequently and can stock up on. Most vendors have decent interfaces nowadays for finding sales.

3. Learn your routine

Then, my wife and I learned our routine. This helps us cut on waste. We know exactly how much we need of everything, and buy accordingly. We never throw away expired goods anymore. Nothing has to wait that long to be consumed.

4. Book time slots in advance

Lastly, if we learned something during the pandemic it’s that it is hard to book delivery slots last minute. So we book slots a week in advance, and edit the order right before delivery.

Do you have any advice on optimising your grocery shopping? Please do share!

Also check out The Apple Scourerâ„¢

Heavy Weight

(scroll to the bottom for an update)

Keeping my pc software up-to-date should have been easy. I mean, look how easy it is on your smart phone. You go to the app store, it lists all relevant updates, and with a push of a button you have the latest and greatest.

There is no such central place for PCs. This means it’s up to the individual vendors to inform you of updates. Many don’t. What a mess.

Luckily, from time to time someone comes up with a solution. Currently, this comes in the form of Sumo. Sumo scans your computer for installed software and lets you know what updates are available.

Unfortunately, the free version does just that. It doesn’t help you find the download link. That’s on you. But really, for the most part, that’s the easy bit.

Sumo also has a sister app, Dumo. Dumo does the same thing, but with your hardware drivers.

Between Sumo and Dumo, you can once again stay up to date. Shiny!

  • Note: I’ve linked to older versions of both apps intentionally. These seem to be the last versions that are still fully free.

Edit (04/04/2024): Unfortunately, the company that brought us Sumo and Dumo went under. Both apps are no longer available. This is a real shame, because I have not yet found a single good alternative for either. If you know of good alternatives, please leave a comment below and I will be eternally grateful.

Someone Will Do It

There is always a chore waiting for me. For every chore I complete, a couple of new ones line up.

Some of these chores are team chores. By team chores I mean anyone can pick them up. At home, that could be doing the dishes or the laundry. At work, it could be creating tickets for upcoming tasks.

It turns out that these chores often get left undone. Other chores always come first – because someone else could always pick up the team chore, right? That’s why we’re a team.

Only this doesn’t work very well. It seems everyone on the team thinks the same way. And so, team chores are de-prioritised by everyone. Nobody really pulls their weight. This is a phenomenon known as social loafing.

There’s a simple solution to this problem. Do not have team chores. Every chore must be assigned to an individual. Take turns, if you want. When I know I am responsible for a chore, I know I will get it done. After all, if I don’t, who will?

One way of assigning could be sharing the load. If one person does the dishes, another does the laundry. If you’re lucky, you may even find some people prefer certain chores.

Another way is to take turns. For example, have one person on the team create the tickets for the sprint. The next sprint, pass that responsibility to the next person.

Work gets done when there is accountability and clear responsibility. Don’t just say “someone will do it”. Assign an individual to the task. Now I know it’s on me… I guess I have to get it done!

Who Said That?

My computer makes funny noises sometimes. They sound like notifications, but I can’t figure out what they’re meant to say.

Well, until recently. And then I figured it out.

If you’re a mobile developer, you may have had a similar experience. Unlike normal notifications, which are usually accompanied by a visual clue, these seem to come from nowhere.

It turns out they don’t come from nowhere. They come from the emulator. If you’re working on any apps that support notifications, those might be the cause of the random sounds.

They can also be a result of your automated tests going through the motions.

In short, the emulator can get quite chatty. If you don’t need to explicitly hear the sounds it makes, just mute it.

Ever since I muted my emulator, I no longer get random notification sounds in the middle of the night. My paranoia is at rest.

Oh, but do remember to unmute if you’re explicitly testing the audio functionality of your app, or you might get quite frustrated!

  • Pro tip: you can run your emulator with no audio but calling it like so:
    emulator @Nexus_5X_API_23 -noaudio
    (On Windows it’s a bit more complicated, see here)

If It Isn’t Broken…

How many times were you told “if it isn’t broken, don’t fix it”?

Working isn’t necessarily optimal. You may find something to be working in a sub-optimal way. When this happens, fixing it should be a valid option.

Very often, “if it isn’t broken” is said when “we’ve always done it this way” is intended. This mentality is the enemy of progress. It prevents growth and leads to stagnation.

The next saying on this list is “it may not be right, but at least it’s consistent”. These sayings should be a red flag. If consistency is our guide, we can never improve.

This applies to so many fields. Take the tech world as an example:

Your app loading time may be twice as long as it should be. Your user journey may be converting half as well as it could be. These are working examples. Does that mean we should leave them alone?

A working solution isn’t necessarily a great solution. We would not have modern cars or smart phones if we’d have settled for what was working at the time.

So please… The next time you find something that isn’t broken – fix it nonetheless.

The Life Of A Contractor, Part 1

A colleague suggested I’d share my experience as a contractor. Hopefully this helps you if you’re about to become one or are just starting out.

In this post I will cover the growing pains. I will then touch on managing your finances as contractor. Lastly, I will discuss ways to get more work.

How it all started…

So, back to the start. When I came to the UK in 2013, I already had quite an impressive profile. I was sure securing a contract would be a piece of cake. It wasn’t.

I spent every day iterating over my CV, polishing my LinkedIn profile and making sure anyone looking for my skills would find me. I posted on every major board, applied to every role.

In fact, because I had a broad range of skills, I had several, specialised CVs. I used each one to apply to opportunities that matched the skills it highlighted.

Despite my experience and commitment, it took me 3 months to secure my first contract. I would later learn that securing the first contract is the hardest challenge. Not many companies want to risk it with a first-time-contractor.

On my first contract, I agreed a very low rate for the first month, with the condition of it increasing after the first month of me proving myself.

This is my first point. Expect to have to work hard and not see any results for the first few months. Don’t panic. This is normal. Keep at it. Be creative. Be flexible.

What do I do with all this money?

This leads me to my second point: managing your finances. Being so long without income taught me a lesson I will never forget. Always have at least 3 months of living expenses in reserve. You never, ever touch that reserve unless you absolutely have to.

Don’t put that money into a savings account, unless it’s an instant access one. You want that money there to pay the bills if you can’t secure a contract for months. As I mentioned earlier, this can definitely happen.

Another thing on the subject of finances. Figure out your rate. Start low and go up as quickly as you are comfortable with.

Ever since that first contract, I have not reduced my rate. In most cases, I’ve increased it. This makes sense, as I am more experienced and have more to offer with every contract. Over 8 years, I have more than doubled my initial rate.

This is a choice you have to make. Are you willing to wait longer for the right contract, potentially losing money in the interim? This will let you continuously increase your rate.

You could probably have shorter gaps if you accept a lower rate. That does mean working a lot harder for the same income, though.

So… How do I get work?

Make sure to get reviews from your clients after every contract. Build your portfolio. Keep polishing it. Keep connecting with people in the industry. Start building a reputation.

Be involved in the community, if you are comfortable with it. Write a blog (or a book!). Start a podcast. Be helpful on Stackoverflow.

To sum things up:

  • Expect a rough start
  • Don’t give up easily
  • Have savings for a rainy day
  • Figure out your rate
  • Adjust your rate ovet time
  • Keep promoting yourself

It’s an exciting world with plenty of learning opportunities. But it’s not all smooth sailing.

If you have any questions, please feel free to contact me. Hopefully I will be able to help!

It’s Like Apples And Pickles

When I need to explain a complex idea, I often use an analogy. This helps convey concepts to people from different disciplines, too.

One thing I learned is how important it is to choose the right analogy.

A colleague recently used car design as an analogy to software development.

This analogy was fundamentally wrong on several levels. First off, cars are a solved problem, for the most part. This gives designers the freedom to focus on appearance. Then, there’s the fact that once produced, the manufacturer cannot make big changes to it.

There are plenty of other differences. This matters because choosing the wrong analogy could lead to the wrong conclusions.

In our case, the confusing analogy led my colleague to suggesting we should develop the UI first, and worry about the internals later, like putting the engine into a car after designing its “shell”.

In software, the UI is usually the easy problem. Without working internals, it is useless. We should focus on the hard problem first. We then give ourselves more time to do it right. It also means our solution can be UI agnostic. This will allow us to change the UI fairly significantly later on without changing the underlying logic.

There was a good lesson there for me. You have to choose your analogies well. Otherwise you’re like a cricket trying to draw water out of a plutonium well. That never ends well.

A Stain For Life

From time to time, the unavoidable happens. I spill or splash something on my carpets, sofa, bed or clothes. Coffee stains, food stains, grease… As careful as I try to be, these things still happen.

For years I had to either learn to live with those stains or pay a professional to get them removed. It can get rather frustrating and pretty expensive.

And so, I was rather excited to discover yet another use for the internet: finding out how to remove stains. It turns out that for almost any stain type on almost any material, there is a solution.

All you have to do is Google “how to remove [stain type] from [surface type]”. Try it. Try “how to remove chocolate syrup stains from pillow” (don’t ask!).

Stains no longer have to stay with me for life. Thanks, Internet!

Like An Open Book, Part 1

I love books. I’ve loved books since before I could read. When I did learn how to read, I remember walking to the library while reading the last book I borrowed. I’d then read another book in the library and borrow one for my walk home.

I remember how exciting I found Joules Verne’s stories. I remember how enchanted I was by the Neverending Story and Watership Down. I enjoyed comic books as well. I mostly remember enjoying Tin Tin, Asterix and Obelix and Lucky Luke.

I read tens of books published by TSR. I read every Pratchett book. Zelazny, Frank Herbert, Douglas Adams… So many worlds to explore.

I later started exploring technical books. I learned programming languages, algorithms, architectures, new ways of working with people, managing my finances. I just could not get enough of books.

I’d read on my way to work. I’d read on flights. I’d read while waiting for an appointment or an interview. I would always have a book on me.

I still can’t get enough of books. The thing is, when you have hundreds of books, space becomes somewhat of an issue. It’s also a bit hard to carry around more than one at a time.

For my birthday, my wife bought me a Kindle Oasis. For years I was skeptical about e-readers. I couldn’t imagine parting with the feel of paper and flipping a page.

Because of my skepticism, it took me a while to start using it. Eventually I did, though. And what can I tell you – I’m a converted man.

There are several significant advantages to a Kindle:

  • The reading experience is pleasant, even in complete darkness.
  • I have tens of books with me at all times.
  • It remembers my progress in every single book.
  • Highlighting sentences is easy.
  • The built-in dictionary is a lifesaver.
  • What’s really cool is it has a lifetime free GPS connection.
  • E-books can be much cheaper than paper ones.

I still love my books. But now, every time I consider buying another one, I prefer getting an e-book. I think its time to turn the page.

Stay tuned for a follow-up if you got a Kindle too…

I may get commissions for purchases made through links in this post.

Don’t Go Breaking My Heart

At the risk of sounding like a broken record, I’m a software developer. If you aren’t one, you’d probably imagine us as sitting in a dark corner in front of a bright screen, typing away.

But really, I’d imagine pretty much like any other professionals, we spend a lot of time working with people.

Working with people introduces a whole range of new challenges.

I’ve worked with people who expected everyone else to be professional, and so respond well to all criticism. I’ve worked with others who got easily offended by constructive criticism. I’m sure I’ve been a bit of both myself, actually.

And this is the point. We’re humans. We have feelings, and ego. We should check them out at the door when we get to work, but it doesn’t work like that.

In my role as a consultant I try to remind my colleagues of both sides of this coin. When delivering constructive criticism, we need to remember we’re talking to a person. As professional as they may be, they still have feelings and can’t fully detach their work from their ego.

When receiving criticism at work, we need to remember it’s not personal. We can take it and try to grow and improve.

So give me your criticism, but don’t go breaking my heart. I’ll try and do the same.