A keyboard design (by )

Ok, so a friend of mine is making himself a custom keyboard - there's a whole hobbyist community of people who design their own, often based on a published design like the Ergodox.

This is related to something I've long wanted to do, which is to obtain myself a chorded keyboard. So I thought I'd write up my current thoughts on the matter, given that they've been brought to the forefront of my mind again!

Read more »

Time for a new job! (by )

So, this happened:

It is with great regret that I announce that Dotscience is shutting down with immediate effect. The global economic situation has caused our source of funding to cease and, as we have been unable to secure alternative funding we are now closing all our operations.

...which means I'm out of a job!

This isn't an urgent problem, as we have resources enough to get by for a few months. And I'm not actually free from my contract for a while yet (notice periods and all) so I can't start a new job yet anyway.

Which is a relief, because I'm still a bit burnt out and, right now, I'd much rather curl up and tidy my workshop and fix my roof and do some long-overdue maintenance on my infrastructure (you may notice that web sites I look after are starting to support https lately, for instance) than be thinking about another job. Right now, I am motivated to think about this from a "We're going to run out of money if I don't" perspective, which isn't great and probably won't look great in interviews. I need to get back to "I'm going to do something awesome and rewarding, that lets me apply my skills to doing good in the world" being my reason to work!

I liked the people I worked with at Dotscience, and I was impressed with how we managed to investigate a totally unfamiliar market (statisticians, or "data scientists" as they're called these days) and work out how to make a product they actually really wanted. I learnt a lot about product-market fit and how to find it, and learnt a lot about modern data science tooling. But, in a small team I didn't get to do much leadership, and the technical challenges were more "fighting third-party components that didn't quite do what we wanted" and "refactoring permission checking logic out of seventy-five different API call handlers" than the kinds of things I like doing.

So I definitely need to find myself something where I get to do some mix of the things I've enjoyed most in my career:

  1. Solving really hard technical problems, ideally ones with complicated and conflicting requirements. I love conflicting requirements. I'm in my element finding elegant compromises between them.
  2. Looking after a team. I joined a startup in the hope that it would grow until I could lead a team again... I like looking after people, helping them become their best, working out with them to form a plan everyone is happy with (ideally involving solving some conflicting requirements!), and then mucking in to get it done.
  3. Communicating with people. I really like talking to customers to understand their needs, talking to developers to understand their work, integrating the two to figure out a way the developers can meet the customers' needs, then communicating that back to the customers and developers (who, of course, both require quite different kinds of explanation) to see if it's right. I worked for a year in a role that was purely this with no coding at all, and it was pretty good; Dotscience was just starting to get customers when it was plucked from my grasp!

So, given that I can't start a new job for a while yet, I'm going to do my best to work on some personal projects for the time being. This will be a mixture of:

  1. Infrastructure maintenance/expansion, so I can feel the pride and security of operating on a solid base, rather than feeling the combined guilt/fear that everything I'm responsible for is about to fall apart. I've been too busy to look after the Snell-Pym Mainframe properly for years, and my work area is a mess.
  2. Exploring my curiosities. Network protocol design, for instance. I've spent too long suppressing my urge to explore interesting challenges because there's no time!
  3. Sheer fun stuff. I've a small list of computer games I'd really like to play, things I'd like to watch, and so on!

I'm tempted to avoid going back to my previous routine, though. Should I work part-time, say 3 or 4 days a week? Can we afford that? Or should I start my own business (I'm not short of ideas) so I can make my own choices?

Either way, definite requirements for my future career are:

  1. I've got to work from home (so it must be remote work), with flexible hours so I can fit in medical appointments and school pick-up. My wife has ongoing health issues due to a brain injury, which includes seizures; if I'm away, she's either on her own, or our eldest daughter has to look after her, which isn't a burden I want to regularly place on a 14 year old. I need the kind of workplace that's making a policy of being accessible to single parents, effectively!
  2. I need to earn enough to feed myself and my family.

So, it remains to be seen just how idealistic I can be about having a fun job where I get to make a difference, versus working in the code mines closing issues to pay the bills. I can do the latter, but I'll need enough time away from work to do something more appealing to remain sane!

I'm starting to feel tingles of excitement about interesting jobs I might do next... Suggestions for places that need somebody to guide a team to solve really hard technical problems are welcome, so I can start job-hunting with gusto in a few weeks' time 😉

A draft specification for IRIDIUM (by )

As discussed in my previous post, I think it's lame that we use TCP for everything and think we could do much better!. Here's my concrete proposal for IRIDIUM, a protocol that I think could be a great improvement:

Read more »

TCP sucks (by )

The go-to transport-layer protocol for people to build Internet applications on these days, with the exception of real-time streaming media or a few specialist apps, is TCP.

The problem is, TCP isn't really all that great for the things we're using it for.

I won't go into any more detail on how it works than is necessary to make my point, but let's take a look at how TCP is used by an application. Read more »

Debugging poor home wifi at the Snell-Pym residence (by )

So, we have a fairly complicated network at home - the Snell-Pym Family Mainframe has a dedicated DSL link with a static IP for hosting various Internet-facing things, as well as providing internal services to the home LAN. The home LAN has the usual mix of desktop computers, the laser printer, and two wireless APs for mobile devices to connect to - one in the house and one in the workshop, because one can't get a good signal to both locations. And there's a separate infrastructure LAN for systems control and monitoring.

Now, we've often had on-and-off poor connectivity on the wifi in the house; this used to happen sporadically, usually for around a day, then just get better. The wifi signal strength would remain good, but packet loss was high (10-20%) so stuff just didn't work very well. TCP is poor at high packet loss; it's OK once a connection is open, but packet loss during the initial SYN/SYNACK/ACK handshake causes it to take a long time to retry on most implementations.

I went looking for interfering networks (we live in a pretty wifi-dense urban area) using an app called "Wifi Analyzer" on my Android phone, and it showed a strange network, always on the same channel as the house wifi (as in, if I changed the channel, it would move too). The network never had a name, and the signal strength was about the same as the house wifi; sometimes a bit stronger, sometimes a bit weaker. Read more »

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales