Hardware is Hard
Hardware has always been a tough business to make a profit in but is arguably tougher than ever for gadget-makers in the current climate as Charles Arthur points out in this article posted on New Years Day in the Guardian:
the challenge for many consumer electronics firms [is] not how to make things, or how to distribute them and get them in front of potential buyers. It’s how to make a profit. Out of Fitbit, GoPro, Parrot and Sonos – each operating in different parts of the consumer electronics business – only Sonos made an operating profit in the last financial quarter, and all four have made a cumulative operating loss so far this year.
Making a profit in hardware has always been difficult. By contrast, in software, all the significant costs are in development; reproduction and distribution are trivial – a digital copy is perfect, and the internet will transport 0s and 1s anywhere, effectively for free. If your product is free and ad-supported, you don’t even need anti-piracy measures; you want people to copy it and use it. Software companies typically have gross margins of around 80%, and operating profits of 40% or so.
The one exception to the rule over the last decade has been Apple but even they appear to be tilting to software and services for revenue creation which won’t provide the old Jobs era cachet:
Somewhere along the way to becoming a trillion dollar company, Apple’s taste for hardware innovation seemed to sour. Some would argue that the iPads, Watches, and iPhones haven’t gotten any meaningful new features in years.
The story of the Raspberry Pi, “the $35 computer that changed the world” offers a key lesson in how to go about building a success story around hardware. It requires vision, foresight and lots of hard work to nurture and grow a global scale community able to collaborate and support each other on what is essentially commodity hardware:
the proof of the Raspberry Pi’s success lies not just in the tens of millions of boards sold, but in its ability to give a new generation the same sense of excitement he felt coding games on the BBC Micro all those years ago. .. the foundation built the huge community of Pi owners who regularly help each other and share their projects.
Artificial Intelligence and Machine Learning
Deep Fakes are having their moment. None of these people exist:
Here’s an explanation from NVidia of how researchers are able to use GANs (generative adversarial networks) to copy the “styles” of source faces onto destination faces, creating blends that have copied features but which look like entirely new people:
Flair is a powerful NLP library developed on top of PyTorch and released by Zalando. Here’s an example of how to use it for sentiment analysis:
from flair.models import TextClassifier from flair.data import Sentence classifier = TextClassifier.load('en-sentiment') sentence = Sentence('Flair is pretty neat!') classifier.predict(sentence) # print sentence with predicted labels print('Sentence above is: ', sentence.labels)
Cloud and Microservices
Hackernoon post on how to create an AWS Lambda function as a service using node.js to resize images on the fly. There are a lot of posts like this right now:
AWS Lambda is commonly used to support microservice development. This introduction to microservices is a handy primer and emphasises that the term covers a multitude of development philosophies and approaches that have been used over the years in adjacent contexts:
This architecture is an evolution on things like RPC and SOA and brings concepts that the UNIX world has been building for years into the enterprise architecture space. Actually defining and bringing the concept to the mainstream has been the work of a few tireless individuals, and this blog series is a tribute to that work.
Coding and Computers
Continuing the headline theme from the last newsletter, yet another contrarian post on coding as the new literacy again emphasising that the reality of software development is often much more complicated and messy than a few simple syntax challenges. Further that rather than coding, what we should be encouraging is curiosity and approaches to problem-solving:
Coding is not the new literacy. While most parents are literate and know to read to their kids, most are not programmers and have no idea what kind of skills a programmer needs. Coding books for kids present coding as a set of problems with “correct” solutions. And if your children can just master the syntax, they’ll be able to make things quickly and easily. But that is not the way programming works. Programming is messy. Programming is a mix of creativity and determination. Being a developer is about more than syntax, and certain skills can only be taught to the very young.
Related Medium post on lessons learned teaching computer science. One of the key lessons for anyone starting out in coding is that your code may well outlive you and it is imperative to invest effort upfront in making it understandable for others particularly those who may have to work on it when you’re gone:
The quality of code is judged not by its initial authors but by the future readers and debuggers of the code, since the onus to reconstruct the mental model under which the code was authored falls squarely on the reader of the code.
A classic paper covering what every programmer should know about memory, specifically why SRAM is used for small CPU caches and DRAM for the bulk of RAM access. And a complementary post how a program is laid out in that memory:
Diving even deeper into what code in memory is doing, this excellent post demystifies what’s going on inside a Python dict with the aid of interactive visualisations.
Symbian OS lives on in the form of the Delight 1.7 update for Nokia N8 and co. complete with Qt and Python support.
Vlad Savov of the Verge outlines how Apple and Samsung sales are stalling in the face of slowing growth and Chinese competition. Apple’s problems in China are multifaceted and extend beyond simple competition into areas like national pride and international relations.
The Chinese are coming to India at least in terms of apps. in December 2018 44 out of the top 100 apps on Google Play were of Chinese origin. In December 2017 it was just 18.
NYT on China’s “censorship factories”, the packhorses of digital totalitarianism. It seems particularly appropriate to point out how aggressively state of the art machine learning techniques like NLP are being co-opted to extend State reach to every corner of digital activity. It serves to underscore that working in technology is no longer entirely the utopian exercise some of us thought was the case years ago.
Work and Hiring
Why “the FizzBuzz phenomenon is more folklore than fact” and we need to use it as a mirror to reflect on ourselves:
“Half of the people we interview don’t even know how to program” is a lot more appealing than “we don’t know how to hire people.”
Hiring remains fundamentally broken in a lot of tech companies largely as a result of lack of calibrated interview process and questions, missing rigour around job descriptions and overall lack of appreciation of the time it takes to do properly:
The hiring process is terrible. For almost everyone, on both sides, it’s frustrating, unsatisfying, unpredictable, unreliable, and potentially more painful than it’s worth. People stay stuck in jobs they don’t like in order to avoid searching. Leaders know they need more team members in order to complete all the work, but no one ever told them where and how to search and hire, so they bemoan how bogged down the existing team is. Recruiters try to help, but they often end up being the servants of infinite masters.
This post from Microsoft Developer Division outlines the changes they made to address shortcomings in their hiring process. There are some very interesting insights in here with the overall resulting approach resembling that used by some of the best tech startups. There are two key key standouts. Firstly that working or pairing with candidates on real-world issues in the interview is an important element of the process:
Our dev teams had taken to working with candidates to solve a bug or feature as part of the interview process. It was a collaborative effort with the candidate and the team working together to solve a real problem.
Secondly that doing interviewing right is really expensive and there are no shortcuts if you want to do it right:
We learned that interviewing is “expensive.” By having two people in each interview, we were doubling the time and people commitment and dramatically increasing the scheduling complexity. However, after some initial complaints about the expense, everyone on the team began to see the benefits, like more people on the team meeting our potential new hires. So, we were willing to pay the price.
The soft skills in most demand in 2019 according to this post from the Editor of LinkedIn Learning who presumably has plenty of data to call upon include creativity, persuasion, collaboration and adaptability. Hard skills are somewhat more predictably cloud, AI, data analytics, people management and UX.
It requires creativity and persuasion to get your team to write articles for your engineering blog and it can be difficult to maintain momentum in doing so. One approach that can help is having and crucially adhering to a rota with everyone in the team contributing.
Nasa’s long range reconnaissance probe New Horizons now has a “theme tune” written by Brian May
Culture and Society
Word of the day: "tsundoku" – the act or art of acquiring more books than one will ever actually read, such that they gather in stacks & flocks on shelves and floors (Japanese, 積ん読, lit. "pile up-read"). Especially common after Christmas. Share your tsundoku images here… pic.twitter.com/WwASLZXzwc
— Robert Macfarlane (@RobGMacfarlane) January 5, 2019
There’s always time and space for the Futurist Manifesto 110 years on it remains extraordinary:
We have been up all night, my friends and I, beneath mosque lamps whose brass cupolas are bright as our souls, because like them they were illuminated by the internal glow of electric hearts. And trampling underfoot our native sloth on opulent Persian carpets, we have been discussing right up to the limits of logic and scrawling the paper with demented writing.
This visualisation of 4000 years of global power brings to mind Tufte. It seems somewhat Western-centric in focus: