Video: Designing a Beautiful REST API

This video gives a neat introduction into REST API design and some of the consideration s/pitfalls in different approaches.

Leave a comment

Filed under Programming, Technology

Tech Book: Seven Databases in Seven Weeks

Seven Databases in Seven Weeks – a guide to modern databases and the nosql movement
I picked this book to learn about NOSQL which seems to be a current buzzword. I have experience writing SQL-based applications with Watcom and SQL Server, but the new database back-end choices are impressive and have neat ideas that can be generalised for other applications (e.g. resilience).

Leave a comment

Filed under Tech Book

Tech Book: Paradox, Jim Al-Khalili

paradox

Paradox – The Nine Greatest Enigmas in Science – Jim Al-Khalili
I’m enjoying the mixture of history and pop science – Al-Khalili explains physics as well as anyone.
FiveStars

Leave a comment

Filed under Tech Book

Tech Book: Clean Code, Robert Martin


Clean Code – A Handbook of Agile Software Craftmanship
This book was recommended by a colleague. I agree with nearly all of it so far, but I’m intending to keep the “m_” prefix on my member variables. Would have been five stars if the examples were C++.
Four stars

Leave a comment

Filed under Tech Book

Tech Book: High Frequency Trading, Michael Durbin

All About High-Frequency TradingAll About High-Frequency Trading (Michael Durbin)
This is subtitled “A detailed primer on today’s most sophisticated and controversial trading technique”. For me, it really delivers on that promise with decent coverage of the subject from a high-level and even some detail on basic trading strategies as well as a stab as system design.

Five stars

Leave a comment

Filed under Tech Book

Tech Book: Linux Kernel Development, Robert Love

LinuxKernelDevelopmentLinux Kernel Development (Robert Love)
I picked up this book at the ACCU 2012 conference from their Charity Book stall (for a small donation). This is the 2005 version, so slightly out of date. I’m finding the mix of low-level detail (down to names of data types and methods) in amongst high-level theory (memory management, process scheduling) hard – but there’s certainly plenty of useful detail.

ThreeStars

Leave a comment

Filed under Tech Book

Tech Book: A Tour of C++, Bjarne Stroustrup

A Tour of C++ This recent book was recommended by Herb Sutter at CppCon as a slim summary of all that C++ developers should be expected to know. It’s a good read, sprinkled liberally with example code to illustrate the techniques that make up modern C++. Having originally learn C++98, then spent a lot of time reading and trying our C++11 techniques, it’s interesting to see how the language looks when presented as a whole. Also, the book covers some C++14 additions.

The points I particularly found interesting were:

  • override – use this to mark virtual methods that are declared in the base class and have an implementation in the derived class (avoids declaring a new virtual method if the signature is wrong)
  • explicit – single argument constructors should by default be marked as explicit to avoid unexpected implicit conversions, unless there’s a reason not to
  • delete – when defining a base class, it’s good practice to ‘delete’ the default copy and move operations, given that the default implementations will not know how to handle derived class members
  • regex – the book covers the standard library as well as the language. A welcome addition is std::regex, and the chapter in this book is an excellent introduction
  • vector initialisation – uniform initialisation of vectors of a struct can still use initialiser lists, even if the struct members have different types e.g. string/int
  • vector::at – this method returns the same value as operator[] (subscript), but performs bounds-checking, which doesn’t happen with operator[]

Four Stars

Leave a comment

Filed under C++, Tech Book

Bjarne Stroustrup: Five Popular Myths about C++

Catching up on my C++ reading, I read through Bjarne Stroustrup’s 5 Popular Myths about C++ and why he believes they are wrong:

  1. To understand C++, you must first learn C
  2. C++ is an Object-Oriented Language
  3. For reliable software, you need Garbage Collection
  4. For efficiency, you must write low-level code
  5. C++ is for large, complicated, programs only

Worth reading for the surprising amount of hostility he reports to these arguments, which on the face of it I thought were pretty reasonable.

The comments prove yet again that the “Myths” paper was needed. People keep repeating the old hairy rationalizations. Unfortunately, many programmers don’t read long papers and dismiss short ones for being incomplete. The unwillingness of many programmers to read a long paper was the reason I released this paper in three separate parts.

Leave a comment

Filed under C++, Programming

Overload magazine: Order Notation in Practice

Overload 124Roger Orr wrote an excellent article for Overload about complexity measurement. It’s amazing how many candidate for programming roles in general, and C++ roles in particular, aren’t comfortable with order notation. This introduction should be a must read before interviewing!

Leave a comment

Filed under C++, Programming

SlateMail – a newbie’s project to streamline his email

Slate.com blogged an attempt by a non-programmer to write his own email client, in an attempt to improve his email life.

I was email-depressed. You may well be too. Lots of people are, but email is not on the laundry list of things that people routinely complain about, like weather or allergies or public transit. Nobody asks, “How was the email today?” And nobody replies, “Awful, just awful. New York just has the worst email.” But ask people directly, and you’ll see there’s an epidemic of email depression. Last year, Slate conducted an internal survey about email, asking editors and writers, “How do you feel about the amount of emails in your inbox?” The responses included: “Exhausted.” “Overwhelmed.” “Alarmed.”

He adopted some smart ideas to match the way his wishes to organise his email traffic. This is a classic example of the 80:20 rule, he’s been able to get 80% of the functionality he needs by covering 20% of a standard email client and customising. But someone else’s basic requirement may be a differ 20%.

I had a semifunctional email client. It could receive, display, and send email. Features I considered crucial, such as email threading and quoted message collapsing, worked somewhat reliably. There were other common features I wanted to add, features that most users would consider non-negotiable, such as search functionality and email address auto-completion.

Ultimately, he developed an application that worked for him. More notably, he grew to love coding and became somewhat addicted to it:

By that point SlateMail had taken over my life to a far greater extent than email ever had. Whenever I found time to think, I coded in my head. I improved the syncer on a walk to the grocery store. I built the mailbox tree standing on the subway.

Leave a comment

Filed under Programming, Technology