Tech Book: Data Science from Scratch, Joel Grus

This book is an excellent primer on data science. It builds up concepts from scratch with code examples in Python. Whilst it uses some well-known libraries for utilities, the code that builds on the core Data Science concepts is all included and explained in the book.

I particularly enjoyed the conversational, often humorous style of the book. He gives a short introduction to NoSQL databases, then concludes: “Tomorrow’s flavour of the day might not even exist now, so I can’t do much more than let you know that NoSQL is a thing. So now you know. It’s a thing”. The author doesn’t get too stuck in jargon either – one example is his definition of a greedy algorithm: “… at each step, it chooses the most immediately best option” – perfect.

Some of the main topics covered are:

  • Visualizing Data
  • Gradient Descent
  • Linear Regression
  • Logistic Regression
  • Neural Networks

Having covered the theory, the book extends to a few use cases – natural language processing, network analysis and collaborative filtering.

Four stars

Leave a comment

Filed under Python, Tech Book

Book Review: The Affair, Lee Child

I bought a nice soft-back edition of this Jack Reacher thriller some time ago, but it was well worth re-reading. There has long been a gap in Reacher’s history – how did he go from being an elite investigator in the Military Police to travelling around America as a loner? This book fills in the gap and is one of the best in the series.

Reacher is assigned to go to Carter Crossing to shadow the town’s police department in their investigation of a murder. Although he’s supposed to be incognito, the police chief, beautiful Elizabeth Deveraux, unmasks him immediately. No matter, because the two develop a very close relationship working on the investigation together. The author plants seeds of doubt about Deveraux – perhaps she has a hazy past, taking revenge on former boyfriends? Could this murder, and two others of similarly beautiful young women, be her revenge after she was dumped by Captain Reed Riley, son of a US Senator? A side plot is that, sometimes the cover-up is worse than the crime. In this case, Reacher wants to know why local militia were employed to defend the military base outside the boundary – leading to the senseless murder of a journalist and the brother of one of the murder/rape victims. He confronts Colonel Frazer of military liaison at his office in the Pentagon – did he authorise the cover-up to protect his investment made building relationships with the Senator?

I always enjoy the Reacher books where he teams up with locals to solve the case – and as a bonus, this book features Reacher’s favourite Sergeant, Frances Neagley.
Four stars

Leave a comment

Filed under Book Review

Book Review: The City and the Stars, Arthur C. Clarke

Another book from the SF Masterworks series, this one traces the adventurous Alvin, a unique individual in the city of Diaspar on Earth. Set a billion years into the future, Diaspar is the only city left, run by AI and repaired into perpetuity by autonomous robots. Yet Alvin feels that something is missing and has a deep yearning to explore beyond the city. He discovers a route to Lys, a community set in countryside far from the city, where the populace has evolved quite differently from those in Diaspar. His destiny is to unify these divided communities and to re-examine the shrouded history that separated them in the first place.
Four stars

Leave a comment

Filed under Book Review

C++ London Meetup: Pointers and Errors

This C++ Meetup, held at Skillsmatter, was split into two talks.

The first by Ervin Bosenbacher was Modern C++ Smart Pointers in C++ 17, 20 & Beyond. It served as a good introduction to smart pointers and motivation for using them, particularly for developers new to C++ (or those who had not yet started to use C++11). The talk covered:

  • Issues with use of raw pointers (ownership, how to delete, exception safety)
  • std::auto_ptr and why not to use it
  • std::unique_ptr and std::shared_ptr – trade-offs and performance figures
  • Use RAII – assign a raw pointer to a smart pointer as soon as it is allocated

A good point was that use of std::shared_ptr means that other parts of the codebase can modify an object that you’re sharing – so synchronisation primitives (such as a std::mutex) are needed to ensure access to the underlying resource is thread-safe. This is often overlooked because the reference counting *is* thread-safe. In C++20, we will get atomic smart pointers to help with this.

Discussing std::shared_ptr with a friend, I also learnt about a secret constructor on std::shared_ptr to share the resource control block and keep a parent pointer alive.

The second talk was Arno Schödl on Error Handling. He described how Think Cell grade errors into different levels, each with a clearly defined error handling strategy. The aim is to minimise coding and testing overhead whilst maximising the ability to capture and debug error conditions.

Leave a comment

Filed under C++, Meetup, Programming

Book Review: 2001: A Space Odyssey, Arthur C. Clarke

A bit like The Right Stuff, this is a book most people have probably heard of, especially because of the famous film, made in collboration with the author. I knew that the plot involved the finding of black monolith, and a computer called HAL that mutinied against its crew.

Perhaps the most fascinating part of the story, though, is that the book was written in 1968 at the dawn of the space age. When Clarke described Extravehicular Activity (EVA), needed by the crew to repair the antenna on their ship, he defined the term used by future astronauts working outside the Space Shuttle or the International Space Station. He described the isolation felt by David Bowman on board, exaggerated because of time lag on communications between Earth and the space craft, and that lag forms part of space exploration experiments carried out today. When Dr Heywood Floyd plugged in his “newspad” to read the world’s major electronic papers, he effectively wrote the specification for today’s electronic tablets, 40 years before the first iPad was released.

There’s a fascinating scene where an alien intelligence has built an environment familiar to Bowman based on television and radio signals received out in space – yet books and magazines lack any content, because only the covers are transmitted. Perhaps the availability today of literature online means that, in a re-write, the aliens would be able to produce accurate re-print of the books.
Four stars

Leave a comment

Filed under Book Review

How to solve Huawei Watch W1 wifi connection issue

I recently purchased a Huawei Watch W1. Although many other Wear OS smartwatches are available, this one has the smaller 42mm case (recent launches like the Huawei Watch GT have a 46mm case) and it has several really attractive watch faces loaded out of the box:

I paired the watch with my iPhone 6S and the initial setup was pretty painless. The watch connected directly to my home wifi and several updates installed successfully. At that point, I had access to all of the watch faces that I’d seen, and the iPhone forwarded notifications to the watch – happy days.

The downside was that Wear OS App on the iPhone reported that the watch still needed an update – but at this point, the watch no longer connected to my home wifi. I waited a few days, then tried to connect to my office wifi (thinking that was likely to be up to date) – still no joy. It seemed that I was stuck on that old version of Wear OS, which was a shame because I’d read good things about the latest version. Without the update, and without connecting to wifi, I couldn’t use Google Maps or Weather (both need location services which weren’t working in that version either) and Google Fit wasn’t working properly without an update to Google Play Services. There were many articles on the internet about resolving wifi connection issues from the Huawei Watch W1, but I was confident that the problem would be resolved if I could just install the latest Wear OS updates.

The trick that worked was to turn on the Personal Hotspot on my iPhone and connect the watch to that as its wifi connection. Although this meant I was downloading the updates over my mobile data allowance, the patches turned out to be pretty small (less than 20MB each). I suspect that the data was transferred via Bluetooth, which wasn’t quick, but it did enable the watch to install all the Wear OS and Google Play Services updates that it needed. Even better, as I hoped, the watch now connects successfully to wifi and all the issues with location services and Google Fit have been resolved.

Disclaimer: Whilst I currently work for Google, I don’t work on Wear OS/Android and opinions in this blog post are my own.

Leave a comment

Filed under Technology

IET Meetup: Debugging the Brain


In 2011, Ed Boyden won the IET Harvey Prize in recognition of his contribution in the field of optogenetics. Now some years later, he came to the IET to update the organisation on the progress his team have made in that field and how their contrarian approach has led to developments elsewhere.

The field combines light-based optical technologies and genetics to control the activity of neurons, enabling treatment of conditions resulting from a wide variety of brain disorders, such as epilepsy, post-traumatic stress disorder, and Parkinson’s disease.

Boyden described novel techniques, such as repeated miniaturisation of structures by injecting a lattice and using dehydration of hydrogels. This was discovered by reversing a process performed to increase the scale of neutrons in brain tissue so they could be visualised for research projects.

Marquee events like this are always very popular at the IET and this one was was very well attended. What was particularly notable was the number of well-informed questions after his presentation from researchers in similar fields who had travelled to attend the event.

Leave a comment

Filed under Meetup