DrTomAllen.com
[email protected]
  • Dr Tom
  • Now
  • Consulting
    • Testimonials
  • Robotics
    • Publications & Videos
  • Startups
    • Cubescape
    • Triple Point Robotics
    • Triple Point Games
  • Game Design
    • Triple Point Games
  • Blog

Solving problems that change while you're solving them.

7/7/2014

 
There's a great question on Quora that asks people to explain their theses in layman's terms. (Every Ph.D. should be expressible in a single sentence, and some of the answers here have this down to a fine art!) It certainly isn't simple to explain where I blew three and a half years of my life, but here's my attempt.

My research answered the question of how you solve problems when the problem itself is changing while you try to solve it. Imagine you're trying to work out the fastest route from one side of your city to the other, but while you're working it out people keep having car accidents that block roads, tow trucks keep clearing previously blocked roads, and the local council is constantly building new roads (really really quickly!) Adding to that, even when you've worked out what you think is a good route, while you're driving it the roads are still changing constantly.

My work showed that in most interesting applications of this problem (not just roads and driving, it applies in lots of other contexts as well), the time you spent working out a solution is quite large. If you want the 'perfect' solution, it could be so large that you would have been better off to drive a slower route but not spend so much time thinking about it in the first place.

I found a way to quantify all these factors, and a way to solve what you really want; not "find me the fastest route across the city", but rather "get me to the other side of my city as fast as possible". I was also able to prove that my method was guaranteed to be at least as fast as any other method, and most of the time was much faster.

Oh yeah, and I built a robot to do the driving... :-)
Picture
Picture
In a lot more detail, here's how the technique actually works. (And I'm not just being self-indulgent here - somebody actually asked for this...) Everything comes down to time. If we stick with the driving example that'll help. What you really want is to get to the other side of the city in the shortest amount of timing, starting RIGHT NOW!

Let's focus on just the one decision point right at the start - whether to set off instantly on a beeline for your destination, or to sit and plan a better path for a few minutes and then set off. Let's use some easy numbers and say it's 100 minutes drive across the city via the best route, and 200 minutes via the worst route (the one you can calculate instantly.) Let's also say it takes 20 minutes to calculate that best route.

Your two options are:
a) Planning time of zero, plus driving time of 200 minutes = 200 minutes.
b) Planning time of 20 minutes, plus driving time of 100 minutes = 120 minutes.

Obviously, b) is the better option. But actually, this isn't just a binary decision. There are many other options in the middle ground. (Straying away from common parlance, there's a class of algorithms called anytime planners that help find these middle points.) Often, problems turn out to have a solution that takes perhaps 1 minute of calculation time, but results in a driving time of 101 minutes. So, it's not the best route, but the total time is 102 minutes which is better than the total time for the best route. (In technical language, this is the Pareto optimal decision.)

The key point is that the "best" route is not the best route when you take the planning time into account. (Except when it is. But that doesn't happen much in practice!)

Ok, let's step it up a notch. There's actually a catch here too - assessing all the possible points on the spectrum between the worst and best routes also takes time. Let's call that the Decision Making time. Since that counts for the total time too, you'll need to minimise it as well, which might mean that it's better to only think about perhaps 5 options, rather than 50.

Perhaps...

Alternatively if the right option was one of the 45 you didn't consider, then maybe it would have been better to spend the Decision Making time to find that option, and then ... ARRRGGGHHH!!!

If you're thinking this is all getting a bit meta, you're exactly right. This class of problems is called Meta-computing.

Ok, let's step it up yet another notch! In the driving example I discussed in my answer, the roads keep changing while you're driving. Ignoring a few of the less interesting considerations, this effectively means that you have to go through the same decision making process all the bloody time!

So the best you can do is to start moving (as long as it's in roughly the right direction) and keep adjusting your route while you're driving. Whenever you settle upon a new choice of route, start driving it, and simultaneously start thinking about what you might want to do next. Do that until you reach your destination, at which point you can collapse in an exhausted heap, completely unable to think of anything else. Why did you need to drive there again?

In terms of what you actually need to do with all the choices you make, it comes down to the problem at hand. First you guess how much Decision Making time to spend, then you spend it evaluating the options - which involves guessing how much Planning and Driving time each option will require. Then, you pick the option you've guessed is the best, and you start planning it. Finally, you take the plan and start driving it. Then you repeat.

It's at this point that you re-read that last paragraph and ask "so what's with all the guessing?" Well, unfortunately, reasoning about time is reasoning about the future. You don't know how long something is going to take until you've actually done it, by which point it's too late to use that information because you've just done the thing you had to do to get the time it was going to take to do the thing you were just having about to had been done. I think... 

The only solution to this is to guess. Much of the contribution of my thesis was designing and testing a whole bunch of different ways of doing these guesses.

In the end, what you can say about this technique is that it is guaranteed to be no worse than any other technique that has access to the same information. I proved that. It probably doesn't sound like much, but it's actually very important because a lot of the time you're actually much better than other techniques if you use my technique. And since you're not going to be worse, you might as well use mine, just in case it's better!

So that's the common parlance explanation. In mathematical terms it's:




where y* is the optimal set of parameters to apply to the system out of the set Y of all possible sets of parameters, and the 't's are the Decision Making, Planning, and Driving times respectively, summed over all future time until the destination is reached.

More Than a Programmer

19/3/2013

 
"Programmers are the brick-layers of the computer industry."
When I was 12 and professed an interest in computers and programming, this was the advice my friendly neighbour offerred. Being 12, I can't remember if I had a clever retort to this line, but it certainly struck with me.

The neighbour in question was an engineering manager, running a large enterprise team delivering various aspects of online voting systems for government (amongst other things.) That Australia still does not have online voting available to most of the population probably goes some way to explain his view. (For what it's worth, it's now available in NSW to disabled voters who can't reach a poling booth as a trial run of the service, which has been in development for over a decade. It is a complicated system due to all the negatives ramifications of stuffing it up, but this is still a stupidly long time!)

As I grew up, studied engineering, then physics, then robotics, and then ultimately ended up working as a software engineer (not a programmer? Here's why...), I've thought back to this line more often than you'd expect for such a throwaway remark. But the question that really bugs me is; was the remark engendered by his management of a large team of varying talents on a long, complicated, and tedious project? Or is there actually some truth to it?

Read More

If Michael O. Church is Wrong, Then I'm Probably Going to Kill You

15/3/2013

 
I've been reading Michael O. Church's latest blog series on the Macleod hierarchy of worker types in modern corporations lately, in addition to musing over my own role following a series of ennui and recruiter induced interviews. It's a great read (though lengthy!) and I agree with his analysis for the most part.

The short summary is that he's added a fourth class to Macleod's hierarchy (Losers, Clueless, and Sociopaths); the Technocrat. Losers (only in the sense that they realize corporate grunt work is a losing proposition) put in minimum effort for decent pay, and don't bother striving beyond this as their life is predominantly outside work. The Clueless believe that with dedication they'll be promoted into the upper echelons of the corporation, and take on more work for less reward than a rational approach would suggest. Sociopaths manipulate the system for their own ends rather than those of the corporation. They work hard only on projects likely to result in recognition or reward, and ignore, delegate, or sabotage work that doesn't.

Church's addition is the Technocrat, who operates like the Sociopath on the surface, but whose intent is to generate positive sum rewards for herself and the corporation. Where Losers are strategic, team-players, but not dedicated, the Clueless are dedicated team-players who lack strategy. The Sociopaths are dedicated strategists, but definitely not team-players. Technocrats are somewhat more pragmatic; they're strategic at all times, but only dedicated team-players when they sense their efforts will be positive sum and result in a better workplace for everyone. When this isn't the case, they bugger off somewhere else.

Humans being what they are, most people's first reading of this sees them side instantly with the good guy Technocrat, but I tried to analyse myself a bit more rationally. Bailing out of my robotics role because I didn't think it was teaching me enough or my efforts were improving the organisation may well have been characteristic of a Technocrat, but not enough for a strong classification (after all, a Sociopath would have done the same having realized the chances of promotion were negligible.)

I hope it's clear enough that I'm not Clueless. I'm incredibly lazy when I don't think something is worth doing, and I certainly won't due it just for the brownie points. I turned down a job offer only last week because the manager described the promotion prospects as being "Brilliant! After four or five years you'll have a really good chance of making team lead." (And Adrian, if you're reading this and thinking "I didn't say that?", that'd be because I actually turned down two jobs last week and I'm referring to the other one... #humblebrag)

I think I have some traits of the Loser, and not just my haircut. I generally work 9 to 5 only, and frequently take a pleasantly long lunch break. Whilst this is partly laziness, it's also that I'm well aware management is satisfied with my performance, and I don't see any reason to make them realize I'm capable of more effort or hours unless there's a kicker in it for me. I'm not a fan of delayed gratification, and don't fall for it when people suggest reward will come only after all the hard work is given. So this is strategic laziness then; lazy when the effort required to advance isn't justified by the reward offerred. I'm also not entirely referring to money either - recognition, interesting work, and an opportunity for learning are all alternative forms of persuading me to work harder. (And in my defence, I did stay late the last three nights because I had something interesting to work on!)

So, maybe I'm a Sociopath. Let's see now. I'm clearly strategic. I've clearly made several medium sized organisations think I'm a team-player. I've clearly bailed out on a great bunch of people because dedication to the organisation didn't pay. I've used a very positive sounding history of my startup failure to simultaneously leverage both title and salary inflation, and jumped straight into the most interesting chunk of available work in the organisation without having any experience of it. Seems pretty clear that if Church is wrong and there's no silver lining Technocrat class with which to paint myself, then I'm the number one contender for filling the office nerf guns with live ammunition.

Perhaps it's time to analyse my intent. Am I strategic, manipulative, and successful because I'm an asshole? Or is it because getting myself to the right position leaves me better able to deliver value to the organisation? That's certainly what I'd say in a salary review, but is that because I'm a cynical bastard with an affinity for telling people what they want to hear, or because I actually believe it? To answer this, I think we have to analyse the organisations I've worked in (which is a) simple, because there's only three, and b) fun, so just indulge me, ok?)

Academia (caveat - in Australia! This can be quite different in the USA.) is the home of a moderate number of satisfied Losers who love research for its intellectual freedom and accept the low salaries for this and a flexible lifestyle. There are numerous Clueless post-docs and joint-co-Chief Senior Principal Lecturers who for some strange reason never quite get that final title that'll give them stability and an excuse to slack off. Lording it above them all are the few Sociopaths who played the game well enough to grab tenure or switched tack into the bureaucratic arm instead. It's most definitely a rank culture and Technocrats are the strange bunch who've achieved exit velocity and left the gravitational pull of a satisfying Loser existence in the intellectual bubble of an otherwise parasitic and decaying organisation. Ouch.

My next role was in a fully industry funded research group within the same university, but the situation was unique enough that it can be thought of as an external consultancy simply renting space from the uni. That's certainly how it was sold to me, but proximity breeds homogeny, and the pull of the university hampered the success of what was otherwise a thriving self-executive culture with some guild aspects. Both the technical and academic staff had excellent mentoring from senior colleagues, the work was sufficiently interesting to breed dedication and a strong team spirit, and the pay and lifestyle flexibility were nothing to sneeze at. Its main downside was the division between academics and technical staff, both in monetary terms, and for interesting work and recognition. For a flat organisation with a surprising absence of Sociopaths at the top, it still managed to have a fair share of Clueless hoping for change that could never come. Fortunately it has a large number of happy and content Losers who've accepted the trade-off of increased comfort and interesting (if sometimes ignored) work, for a slower career progression and lower pay. There's a big part of me that wishes I could be happy in that position, but I can't.

Which brings me to my current employer, which for a startup is an absolutely canonical example of a tough culture frantically paddling back towards the guild from which it purports to have come, and truly wants to believe it can return. (Whether it can or not is a question for another day, and my thoughts on the matter have flipped a few times already in my short tenure here. Likewise whether it'll have a billion dollar exit or devolve into a semi-bankrupt zombie corporation. My odds are closer to 50/50 than I'd like, and I sometimes wonder if it's merely that e-commerce itself is growing so fast that's keeping us afloat.)

Without intending disrespect, most of my colleagues are Clueless (remember lads, this is a category label, not a derogatory term. You all know your memes better than any other group I've met). As is typical in many startups, they've been sold a dream, and blinded from any sharp realities by shiny toys and the 'culture club'. It also pays well, which the Clueless think is because they're irreplaceable and important, but in reality is because their output is important and probably a positive return on investment. Too few of my colleagues have considered that we're only recently profitable, and the number of business-destroying risks we face (mainly due to technical debt) is flabbergastingly high. Too many think that working hard and being seen to jump into the triage response when shit hits the fan will result in promotion and reward, without realizing that there isn't anywhere to be promoted to, our engineering spend is already too high to raise salaries any more, and fixing the fan mostly just covers you in crap.

There's a small number of Losers. For the most part, these people have been around the block a few times, recognise the high salary and low expectations available here, and happily meet them. They work hard only on the interesting problems (of which there are fortunately a decent number) and the most strategic of them have found their way into roles that avoid working with the legacy technical debt or too much triage. There are definitely a few strategic lurkers, waiting for more information on what the future holds, and who could morph into Clueless if they predict optimistically and incorrectly, or Sociopaths whatever the future as long as they predict correctly. (If it's a sinking ship, they'll bail. If it's a rocket ship, they'll find a path into upper management.)

There are Sociopaths scattered across the organisation, but due to its rapid growth, most have yet to reach upper management, and are effectively Sociopaths-in-waiting. Fortunately, there a number of truly positive-sum individuals who manage to be strategic (at least somewhat), team-players, and dedicated all in one. Their strategic efforts are aimed at projects that reduce technical debt, open up new areas of interesting work, and enhance the team itself. They don't always succeed, but it's clear that they're trying, and that they're not interested in playing politics like the Sociopaths are. It is largely due to these people that I'm still here.

And, it is because of these people that I think O'Church is right, and that Technocrats do exist. Which is lucky for me because otherwise I'd have to call myself a Sociopath, and I like to think I'm not quite that mercenary. If my trajectory looks like that of a Sociopath, I claim it's only because I haven't succeeded yet. I would love to be in a situation where I'm making my own life better at the same time as the corporation lots of money and a better place to be. I believe the best place for me to do this is in a guild culture, but in the absence of them in my field, in this city, at this point of time, I'm pretty happy in an organisation that's at least trying to be one.

So after a long and roundabout trip, I can now declare that I am actually a Technocrat. Relax. I'm not going to kill you after all.

The Hacker News Effect

21/8/2012

 
Picture
I've talked to a few people offline about the effect Hacker News had on the audience for my recent post. Essentially, what was written as a cathartic rant for my own sanity turned into 24000 page views and an inbox full of job offers. Sure, not all of those 24000 actually read what I wrote, but it's interesting to look at the statistics and work out just how many really did. For those of you with websites that already garner millions of page views each month, this will probably be uninteresting. If however you're like me, and this is more people reading your words than your entire academic output put together, it's worth thinking about whether it's repeatable, and how to use its powers for good (or evil...)

Overall, my post spent about 8hrs on the front page of Hacker News, reaching as high as position #5 (HN has a time-based curve - your post will only stick if it's young with a fair few points, or old with masses of them.) It eventually garnered 93 points and 38 comments. People clicked the Twitter button 101 times (which amazes me, since I didn't even bother doing that and I wrote the damn post) and Facebook 'like'd it 43 times. Clearly a bunch of people manually tweeted about it too, since there were lots of differently formatted tweets about it when I searched.

My webhost's statistics say it was viewed 23841 times and Google Analytics - which I only thought to install about an hour after posting it - tracked just under 17000 unique visitors (obviously missing the first few hours.) In an attempt to work out whether this was representative, I found a few other people discussing the effect on their posts; David Zhang of simply.io, the guys at elastic.io, and a few others. Nowhere near enough data for a representative sample, so label this inconclusive.

Of these visitors, the bounce rate (the percentage of visitors who leave without navigating to another page of the website) was 90%, and a different 90% stayed for less than ten seconds. Ouch. On the other hand, I guess that suggests that those who did actually read the article "converted" by looking over at least something else. In terms of page depth, 5.63% hit two pages, 1.57% hit three, and exponentially lower thereon. It was a long-ish post that probably took two to three minutes to read fully; roughly 1500 visitors stayed at least that long reading it and/or other pages.

Picture
More interesting than raw web statistics however are the subsequent effects, especially on my email inbox. I ended up with 26 emails from people I'd never talked to before. Of these, 14 were people thanking me for discussing a topic that resonated for them, or for bringing some reality to the tech media blanket coverage of this and that startup raising millions of dollars (and, often enough, being abandoned within six months.) Another eight were offers of collaboration from people starting their own businesses, or with technology projects in which they thought I might be interested.

The final four were preliminary job offers - I don't mean "this job pays $X and if you say yes you'll start on monday", but more like "you sound like you might be interested in and the perfect candidate for this job, let's have a chat about it". This is the valuable bit. Compared to sending your résumé into the lion's den of HR and hoping your choice of perfumed paper makes the grade, having potential employers come to you instead is a far more pleasant way to operate. I even got a free lunch out of it yesterday - they do exist!

To summarise the Hacker News effect; it's definitely valuable. HN gets ~150k unique visitors in a day. The vast majority only view the front page. Given my post was there for about 8 hours, let's assume 50k of those uniques saw it, which means nearly 50% clicked through. Of those, 90% abandoned it immediately. Of the remainder, only about 10% abandoned before finishing the article, i.e. around 9% of the total HN traffic read the whole thing. This is in agreement with a BoingBoing article that discusses the readership habits of various traffic sources (the original source is here, but the graphs are broken), concluding that HN readers stick around longer than those from any other referrer. Of the attentive HN traffic, around 50% read something else on my site, around 10% tweeted, liked, commented, or somehow promoted it on, and about 2% got in touch with me directly.

If you've read this far, you probably shouldn't follow me on Twitter because I've got very little idea why it's important.

How to Get Decent Espresso Coffee from La Sorrentina

8/8/2012

 
Picture
I've learnt a lot of things since quitting my job, but by far and away the most important is how to get a decent coffee out of La Sorrentina.

For those that don't know, La Sorrentina is an Italian coffee maker, reproducing the 1946 'Atomic' design by Milanese designer Giordano Robbiati. It's occasionally denigrated as merely a high-class Moka pot, but is actually far better. Able to reach around 5 bar of pressure, it's possible to get a reasonable crema and excellent steam volume.

However, despite these strengths she's even more temperamental than the infamous Miss Silvia, and making a decent espresso requires a series of tricks, none of which are detailed in the manual. There's a few videos on YouTube (this one is terrible and you can do far better, this one is better but doesn't explain how he got there), but not much by way of a technical description. I hope this post goes some way to fill that gap.

The basic process is simple enough:
  1. Fill the jug with the right amount of cold water.
  2. Pour into the boiler and tighten the black cap.
  3. Grind your coffee beans to the right fineness and put the right amount in the group handle.
  4. Pack it down with the right amount of force.
  5. Ensure the red milk valve is closed.
  6. Place the unit on the heat source with the right amount of heat.
  7. Wait the right amount of time for coffee to pour.
  8. Froth/heat the milk.
  9. Turn off the heat source.
  10. Pour the coffee into a cup and add milk.
  11. Open the steam valve and wait until it stops producing.
  12. Remove the group handle, clean it, then empty the remaining water from the boiler.
There's a lot of "right amounts" in that process, none of which are adequately explained. Chances are your first few attempts will result in some of the worst coffee you'll ever force yourself to drink because you can't possibly discard it after all that effort.

Here's tip #1 - throw away your first ten coffees. They will not be worth drinking, and you'll end up thinking it's a bad machine. It's not, it just takes a bit more care and attention than most.

The process to get a drinkable coffee is a bit more involved - not harder - just more involved.
Firstly, let's resolve those "right amounts".

The right amount of water is easy enough to find. When you empty the remaining water in step 12 of the basic process, empty it into the (cleaned!) coffee jug. Mark this level with a permanent marker or scratch. This is the minimum quantity of water you need. If you're making one espresso, add a 30mL shot more water. Add a dash more (maybe another 15mL if you want to be precise) for the steam. Two espressos, two shots, etc. Any water you add above this minimum will end up pouring through as coffee or get turned into steam. For a single shot of espresso, this extra ends up being about 2mm above the mark I made, and roughly halfway up the jug.

The right amount of coffee is also easy - however much you can fit in the damn portafilter! Yes, this is far more than the manual recommends. Yes, you'll be "wasting" coffee. Shut up. It'll taste better. Trust me.

The right amount of force is also easy. Work out how hard you intend to press down with your tamper, and be consistent. (Experts recommend 15N of force. Unfortunately, my arm doesn't come with a spring balance inbuilt.) That's it. This is now the "right amount" of force - it's right for you, and that's good enough.

The right grind is more difficult, and you will have to experiment. It is nowhere near the "medium coarse" suggested by the manual. It is much closer to "almost as fine as your grinder can get". The best strategy for finding the sweet spot is Isaac Newton's "halving the interval" method:

Start at the coarsest espresso setting and make a coffee. It'll almost certainly be weak, thin, and foul smelling. Move to the finest espresso setting. Make sure you've very firmly attached the group handle to the machine. At this fineness, it'll almost certainly blow the pressure release valve before any coffee pours at all, and you definitely want the valve to blow instead of the entire group handle flying off the machine! (Here's tip #2 - always remember to open the steam valve before removing the group handle. You'll probably have to learn this the hard way too. Trust me, you won't do it twice...) Turn the heat off, open the steam valve fully, and walk away. When the machine is cool and ready for you to try again, split the difference. If it's still weak, split again in the finer direction. If it's still blowing the pressure release, split again in the coarser direction. Repeat until you've found the sweet spot.

This description makes it sound like you'll just know the sweet spot when you see it. Chances are, you'll have a rough idea but so many gradations on your grinder that there's two or three that are all reasonable. Here's tip #3 - the sweet spot is when the pressure release valve does blow, but only after most of the coffee has already poured. Why? Well the first part of the coffee extraction process releases medium-thick, black coffee. Very aromatic, but not the best bit. What you're really after is the brown, very thick crema that comes second. Since this is thicker and less viscous, the pressure in the group head has to increase a bit more to force it out. So you're looking for the early stage pressure to be below the limit, and the later stage to be just above. The machine will be fine with this, but you should ideally be turning the heat off within 15-20 seconds or so of the valve blowing, even if you're busy frothing milk. Be aware that the machine will now be fucking hot. That's a technical term for "don't touch the metal bits."

The right amount of time is easy enough, as it's related to the right grind. From cold water you can expect it to take 5 to 7 minutes. From just boiled (my recommendation) expect around 3 to 4 minutes. You should turn off the heat before what's pouring out is no longer crema but weak thin watery coffee. Sometimes you'll get good crema after a bunch of big oily bubbles, but usually these bubbles are a sign that the crema is ending. In the ideal world the crema will pour as a thin stream, perhaps curling in on itself like a pig's tail. You'll then remove the jug, (replace it with another or a cloth - what pours out now is horrible and will foul your coffee), texture your milk, and turn the heat off either as you remove the jug or in the middle of the milk frothing process. There should be enough steam to make one person's worth of milk with the heat off, but you may need to leave it on for some of the time if making milk for two or more people.
Ok, so that's all the "right amounts" sorted. In summary:
  • Water - the quantity of poured coffee you want above the line marked by filling the jug with the leftover water from a previous pour.
  • Coffee - as much as possible.
  • Force - around 15N, but whatever you can do consistently. Hard, but don't put your back into it.
  • Grind - as fine as possible such that the pressure release valve doesn't blow until after some crema has started to pour.
  • Time - stop before you reach thin watery coffee, usually just after big oily bubbles start to pour.
  • Heat - a medium sized gas hob on max. Don't let the flames shoot past the bottom of the machine. I don't have an electric stove, but I'd expect this to be equivalent to 60-80% of the full heat. You'll certainly want to pre-heat the stove if it's electric.
In addition to my first three tips, here's a few more:
  1. Throw away your first ten coffees. La Sorrentina requires a bit of experimentation to master, but can make a good espresso if you persist.
  2. Always open the steam valve and wait until it stops steaming before you ever remove the group handle. This releases any remaining pressure in the machine, and you will certainly know about it should you ever forget.
  3. The sweet spot for your grind is just fine enough that the pressure release valve usually blows, but only after some crema has started to pour.
  4. To avoid your crema dissipating in the jug, don't rest the jug directly on the flat metal of the boiler but instead either hold it (this gets tedious) or put a heat proof mat between them. Much of the crema disappears because the high heat required to produce it also means the jug heats up so much that it dissolves while you're collecting it.
  5. Remove the jug once the crema has poured. Any coffee that emerges after this will be over-extracted and bitter. You'll need either a cloth or a second jug to catch the dregs.
  6. Start with just boiled water. It's faster (unless your kettle is inefficient!) and makes no discernible difference to the quality of the coffee.
Picture
Ultimately, after much experimentation, you should be able to get a decent coffee. I'm a harsh critic, but the best I've done is about a 7/10. For some sense of scale, I've only ever had two 10s in my life, I consistently get 8-9s from Campos' (arguably Australia's best coffee) baristas, I could regularly make 7-9s from a $2500 dual boiler ECM Giotto or Cellini Rocket, and I usually think the average cafe coffee is anywhere from 4-6 (7 if the barista has any idea what to do.)

7/10 is pretty damn good for a $400 single-boiler machine. La Sorrentina can make a decent coffee.

If there's enough demand I can make a video of the process, but the real takeaway from all this is that it requires a bit of experimentation. Persist, and don't fall into the trap of thinking it's a bad machine. Let me know your tips or any parts of this you disagree with in the comments below.

Why I Quit My Job, Killed a Company in Six Weeks, And Still Feel Great!

7/8/2012

 
Picture
This was my last job. That's me, in a helicopter, telling an eight-wheeled killer death robot what to do. And getting paid handsomely for the privilege.

It was awesome! So why the hell did I quit?

Well, I had an itch. I thought I wanted to start a company and ride the coming robotics revolution to fun and profit. The reality was something quite different to that, I just didn't know it at the time. Everybody I knew (and I really mean everybody) advised me that this was foolish. That I had a four month old child to support and a wife who wasn't working. That I had a mortgage to pay. That I had a seriously awesome job and an obvious career path into one of the largest and highest paying companies in the country. That the startup lifestyle is hard work, stressful, and nine times out of ten - fails.

They were all right, but I couldn't listen. I had to learn this lesson for myself.

Picture
So I started a company (well, actually, we didn't get around to incorporating it, which turned out to be a good call) with two friendly colleagues, quit my job, and didn't think much about step two. We had some plans for synchronised collaborative whiteboards, and started plotting how to get funding to make this happen. We approached a business incubator who were very keen on us, less keen on the idea, but put in a lot of their time getting us to take a customer development approach.

We did, and it was horrible. Over the next three weeks we talked to lots of potential customers - less than our advisers wanted, but more than enough to discover that our product was too expensive for the marginal improvements over related products. We moved onto product number two, followed the same approach but faster, and found the product to be less useful to people than we'd thought it would. At this point, one of my co-founders decided he'd have much more fun just building things without worrying about whether or not they'd make money, and promptly left.

Product number three actually had a lot of interest. We found a great niche of customers with a big problem, and our product would have fixed it beautifully. Unfortunately, despite the customer development process looking good here, from a product point of view we concluded we couldn't make it cheap enough. (On the up side, in a few more years time all the components should be cheaper and better, so its something worth revisiting in the future.)

After three rounds of this disappointment, my remaining co-founder lost interest and went AWOL. I can't blame him. I'd sold the vision of an awesome startup company building amazing technology and enjoying the process. Instead we'd experienced what is likely much more typical; hard work, disappointment, and not much to show for it other than the knowledge that it was better for these ideas to fail sooner rather than later.

At this point I burnt out. In true burn out fashion I didn't realize this, and kept pushing on with coding, meeting people, talking to customers, and the like until my body engaged in a cunning plan to weaken my immune system and make me get sick so I'd stop. It took a full week of not doing anything at all before I realized what should have been obvious at the outset: I don't care enough about money to run a startup business.

I want to work on cool, innovative, novel, and exciting projects with interesting, motivated, and motivating people. Provided I can earn enough by doing that (and enough isn't even that much in the grand scheme of things) I'm not too bothered whether I work for myself or for someone else.

This begs the question however; why did I quit a job that met all these criteria? The easy answer is that I knew I didn't want to be an academic. But since the job was a stepping stone to a similar, higher paying job in industry, there's a more complex answer hiding away in here somewhere. Ultimately, I think it's that I want to move a bit faster, have more opportunity for learning, and to see my work get used by real people. Academia is slow, procedural, and if more than ten people care about your work, you're probably doing well. As an example, since quitting my job, a paper I wrote eighteen months earlier has only just been accepted.
This whole post has told the story through a lens of failure, but that's not the only way to read it. I recently stumbled upon Robbie Abed's article on how to find your dream job. Roughly summarised; quit, start a company, expect it to fail, tell everyone about it, build a new network, talk up your product (not yourself), help people out, and finally "Accept Failure. Ask For Help." Sure, I didn't set out like this, but if I tell this same story through that lens instead, then I'm already up to step eight and ready to rock whatever opportunity comes knocking.

Maybe it's your company - if you need an inventive, capable, problem-solving engineer, get in touch.

The Patent Minefield Is Already Patented.

7/8/2012

 
It's an increasingly common refrain of the startup entrepreneur - "Patents are broken!"

Clichéd though it may be, I believe it to be completely true.

This week is my first week working on Triple Point Robotics full-time. I quit my secure, well-paying, and generally pretty awesome job to work on this because I really want to see more robotic technology available to the general public. I know how to make it happen technically, but running a company has its own share of problems which I'm rapidly discovering. I'm pretty sure patents are going to be a persistent, huge, and irritating one.

The main issue is that every obvious idea has been patented already. EVERY. SINGLE. ONE. Regardless of the fact that patents are supposed to be non-obvious to an expert in the field, there are about a thousand patents covering minor - no, let me rephrase that, completely trivial- variations on already obvious ideas. Even the process of being a patent troll has been patented!

Have you ever tried to buy a domain name? It's the same problem in a different guise. It's so cheap to buy a domain name that cyber-squatters have literally coded what amount to dictionary attacks on domain name registrars to purchase every available verb+noun and noun+noun combination in the .COM TLD. Patents, although stupidly expensive for startups, are so cheap for big companies that they patent tens if not hundreds of things each week.

In my previous job, I was called upon to skim the patent landscape for devices related to measuring properties of a borehole. I found a patent on transmitting information wirelessly from down a hole to a device outside the hole. I found another on recording information down the hole on any medium, then removing it and reading the information off it at the top. In other words, you can't measure anything down a hole without violating someone's patent. Arguably, even putting a stick down a hole and looking for the water line violates these patents.

How did anyone conclude that measuring something down a hole was non-obvious? What kind of idiots does the USPTO have working for it that they couldn't guess that the logical ways to get information out of a hole are to transmit it out, or record it down there and bring it up afterwards? Why do we allow this kind of crap to be regarded as intellectual property, let alone intellectual?

The next stage of the problem occurs for slightly non-obvious things, or obvious but technically difficult things. Oh don't worry, they're also all patented already, but there are few if any products available that implement any sufficiently complex patent. Take for example the fairly obvious idea that if you point a camera and projector in the same direction, you can show an image on a whiteboard, annotate it, then record the result. There are at least 80 patents covering this exact same concept - I know because I've read most of them over the last few days.

People have been having this idea since at least 1990 (Xerox has this one for example) so why, 20+ years later, can't I buy a product that does this? There are plenty of "interactive" whiteboards (about 80% of these are essentially a camera-projector system with some form of electronic pen, the rest are hugely expensive giant touch screens), but despite all the patents on the idea of doing this for a "Plain Old Whiteboard" as a form of backup, you just can't buy one. (Amusingly, if you search for "Version Control for Whiteboards" you get our products page :-), and then this hilariously over-engineered protocol for when people should be allowed to erase stuff from a workplace whiteboard.)

So what's a poor entrepreneur to do? I posed this question on Quora and the best answer so far is the most obvious - infringe anyway and deal with the consequences later as a cost of doing business in an archaic intellectual property system. There are other options, ranging from 'give up and go home' through 'try to negotiate a license' or 'modify your product to get around the claims' to 'ignore it and hope they don't sue you before you get big enough to patent a bunch of related crap you can use defensively'. But if everyone is infringing, patenting crap just in case it's useful defensively or offensively, or using lawyers to find ways of worming their way around existing patents, then what on earth is the point in the first place?

Am I just a hopeless libertarian for thinking that a world without any patents whatsoever might just be a better one than one in which patents are just a giant tax on doing business? The standard argument trotted out against this suggestion is that big pharmacuetical companies wouldn't ever spend the money on research, animal trials, human trials, and FDA approval if they couldn't have exclusive rights to the drug design. Sounds reasonable, but why not have a special annex for drugs and ditch software and process patents completely?

That argument however, is one for another day. Today was for ranting about the minefield that is patent law. Thank you, Internet, for indulging me.

Stop Anthropomorphising Design

10/5/2012

 
Picture
Anthropomorphisation is the attribution of human-like qualities to another thing. People often do this with robots, saying things like 'it wants to drive over there' or 'it saw me and turned around!'. When this happens naturally it can be a great indication of user friendly robot. But note that it happens when the robot is in the hands of end users. By contrast, anthropomorphisation of design happens at the beginning of a project. The concept crops up in design and engineering all too often in the guise of 'well this is how humans do X, so our system should emulate that'. In many cases, and especially so in robotics, this is a bad thing™.

Why? Because it limits the space of possibilities that the designers might consider, and worse, it leads to systems that fail to exploit their strengths and instead compete with the strengths of a completely different system.
As an example, someone commented recently on an IEEE Spectrum article about Google's autonomous vehicles: "No doubt it's a great step ahead in automation... but but but. Something is wrong.. because ... We [Drivers] has no computers in our heads, so we don't measure lengths, compute logarithms nor adding two numbers when we drive."

In all fairness, this commenter might not have been an engineer or designer, but this is backwards thinking. And on the Hacker News post about the same article, more people suggested that Google's team should focus on visual sensing, with such comments as "the technology is impressive, but humans drive okay without LIDAR, radar, or GPS." (Again to be fair, this commenter clarified his thoughts later, pointing out that he meant they should look at visual sensing as well.)

Fortunately, Sebastian Thrun and his team are designing an autonomous vehicle to drive at and beyond the abilities of a human. They are not designing an autonomous vehicle to mimic what a human would do. They realise that computers are incredibly good at computation over massive amounts of data, and pretty lousy at almost everything to do with vision. Humans are pretty slow at calculations, but our eye/brain combination is amazing at spotting patterns, detecting changes, and spotting moving objects in clutter. So Thrun's team plays to computers' strengths - they pre-scan the world ahead of time (incidentally this is a very smart move by Google - their competitors will struggle with the scale required to do this) and then have the two comparatively simple jobs of working out where their current sensor picture fits into that map, and what the differences are. They don't use visual SLAM, they use a particle filter and (as far as I can tell), ICP for scan matching - computationally intensive, but again, playing to their strengths.

This is just one example, but this kind of thinking turns up again and again. When we talk to customers about mobile robots in their homes, and mention that we have a very neat omni-directional wheeled platform, they often ask why we're not using legs to avoid the dreaded stairs problem. This is constrained thinking, led by anthropomorphic tendencies. Why are legs the first solution people think of? Why not flying robots? (don't laugh too hard - four out of the first fifty people we spoke with suggested this! Relax, we're not going there...) Why not a flexi-track like a packbot? Why not a stair lift? Why not just bank on robots being cheap enough to have one on each level?

Picture
Humans work well with legs, machines don't. Don't ignore wheels just because nature did.

And that's the take-away message from all this: play to your strengths. Don't emulate nature unless your system is well suited to doing so. Stop anthropomorphising design. 

    This blog is very rarely updated. Having kids will do that.
    ​

    Archives

    October 2022
    August 2021
    October 2019
    June 2019
    February 2016
    July 2015
    July 2014
    June 2014
    February 2014
    October 2013
    September 2013
    May 2013
    April 2013
    March 2013
    November 2012
    September 2012
    August 2012
    June 2012
    May 2012

    Categories

    All
    Coffee
    Hacking
    Programming
    Projects
    Rants
    Robots
    Startups
    Thoughts

    RSS Feed