School was pretty regimented. Everything from when I could use the toilet to what I could learn was dictated by others. That wasn’t a complaint, I kinda liked school. I mean, sometimes it was awkward and not a lot of fun. But I never ‘hated’ school. I guess I was a bit of an oddball kid and a little inconsistent on the critical thinking front. Behavioral constraint? No question. Yes Sir. You should learn mathematics, while difficult it will be useful. Yes Ma’am. Geography and ‘facts’ about the Murray River? Woah. Hold up there. HOW CAN YOU POSSIBLY SAY THAT? Ten minutes of argument later, I would be sitting outside twiddling my thumbs.
One thing I should have questioned, was how schools index knowledge. All through school prerequisites dictate what you can learn next. Counting, Addition, Subtraction, Multiplication, …, Linear Algebra, Languages and Logics, Algorithms, etc. It wasn’t until my final years of university that I had figured out how to play the system a little. I needed an six more credit points in physics to pass my degree. I put a lot of research into finding the easiest six credit points I could possibly earn. Oh. Hello. What is this? Introduction to Astronomy, that sounds easy. I went to every lecture. Every single one. Each time wearing the same stupid ear to ear grin. I would roll up on a Friday afternoon to a darkened lecture theatre to watch pictures of different star systems. It tuned into the perfect way to unwind from a week spent struggling with what ever bit bending exercises I was working on.
While reading ‘Steal Like An Artist’, the idea of climbing your own family tree stuck out.
Instead, chew on one thinker – writer, artist, activist, role model – you really love. Study everything there is to know about that thinker. Then find three people that thinker loved,
and find out everything about them. Repeat this as many times as you can. Climb up the tree as far as you can go. Once you build your tree, It’s time to start your own branch.
It wasn’t the first time I had heard of indexing knowledge this way. A professor that I had the good fortune of working for was always referring to her academic family. She had cousins, an academic father, an academic grandfather and so on.
Austin Kleon’s Steal Like an Artist just gave me the motivation to have a crack at re-indexing my own knowledge. So I started building my own ‘family’ tree by writing fan letters. It is giving me the chance to form strong opinions on what I really like about a person’s work. So far this is what I have:
It is a bit of an advent calendar I guess, initialed names are my current research front. As I finish another love letter, the initials and their influences get expanded and the family tree grows.
A year ago I first got my hands on a pack of Estimote iBeacons, I spent a bit of time working out their accuracy and quickly fell in love with them. The quick answer. Super accurate, within 10cm when you are 1 metre away.
What bothered me about the test is that it was static. The phone fixed in place and didn’t move in relation to the Estimote. This wasn’t representative of how iBeacons get used in practice. People holding mobile devices move around the place and ‘happen’ upon an Estimote. The settings I was using would sometimes feel like it took a minute or two before the mobile device registered that it was near an iBeacon. Estimotes are accurate, but sometimes it took a long time for the measurements to catch up with a moving target.
For the sorts of locative applications I write, a sixty second delay is unacceptable. After a bit of tweaking I got everything as responsive as I wanted, but it was a clumsy approach. So how long does it take for Estimote distance measurements to ‘catch up’ with a moving target?
There are four main settings that have an impact on Estimote response time. Two are set within your application and the other two on the Estimote beacon itself. The application side parameters are set with the ‘ForegroundScanPeriod’ method call. You can tell your application how long to spend scanning for iBeacons and how long to wait between scans. Altering these settings can make your application spend more time looking for iBeacons.
For the Estimote itself, the two parameters that affect response time are Broadcasting Power and Advertising Interval. A higher broadcasting power will mean that your phone will be able to hear the iBeacon at a further distance. While a lower advertising interval will send ranging pings more often. Naturally, upping these settings will burn through your Estimote battery at a faster rate. So getting all this right (and optimised for your application) is important. If the advertising interval on your Estimotes is set at 950ms, intuitively you would expect the median response time to also be around 950ms. Well lets find out.
To test, I built a little utility application for measuring response times. Placed the Estimote on the ground and measured out some markers. The nearest being 3 metres from the Estimote, this was my target. I then measured out 8 metres and 21 metres from the Estimote. These were going to be my two starting points. The 21 metre starting point being behind a large concrete cyclone resistant home (at this point, I was always out of range of the Estimote).
Walking from one of the starting points, I would walk up to my 3 metre mark and press start on my utility app. This started a timer, which would only stop when the distance returned by the Estimote SDK was between 2.1 and 3.9 metres. This wide error margin is the expected accuracy at this range, as found in my earlier test.
I did this ten times from each of the starting points for each of the configuration sets I tested. If you are after the raw measurements and stats, you can check out the full dataset and calculations here.
With the default Estimote settings (-12dBm broadcast power and a 950ms advertising interval), the median response time was 1300ms. Much higher than the 950ms I was expecting, but the worst case was a whopping 21000ms. This was inline with my experiences, having measurements to debunk earlier anecdotal experiences helped. Keeping the Estimote settings the same, and using 950ms for both the poll time, and poll wait actually made things worse.
By upping the broadcast power to -4dBm, and bumping the advertising interval to 600ms I was able to get a sub second response time. It also dropped that worst case wait down to around 6 seconds. Tolerable for my application, especially considering it is only a rare occurrence.
I’m having a second honeymoon with my Estimotes now that I can configure the right response times for the applications I build. Upping the power and lowering the advertising interval only had a modest impact on the battery life of my Estimotes. They are still claiming to have about two years of juice left.
Warning! Self promotion ahead: Live in Brisbane, Australia? Want to see Estimotes used in a neat little piece of Science Fiction theatre? Tickets for ‘This is Capital City’ are on sale now.
What I am noticing, no matter how much I do in a month, I’m always unhappy with my ‘create’ progress. I’m not exactly sure why that is the case. Maybe it’s because I feel like I’m behind? Maybe it’s because my projects list grows faster than I can create them? Maybe I feel guilty when I don’t have the stamina to concentrate on my monastic goals for a solid eight hours? Whatever the case, I haven’t felt as though I have earned my monthly ‘create sticker’. I hope come the end of the year I manage to land one of those coveted suckers.
This month was pretty quiet, and was a purely digital month. I didn’t build anything physical, but did get a circular saw for turning plywood into sawdust. Pretty excited, it should speed things up, especially for a couple of bigger projects I have in the pipeline. Instead, this month I blew the dust off a couple of software projects.
- Signalbox - An experimental signalling server for WebRTC.
- TriggerTracker - Site specific theatre software for mobile devices.
The vast majority of my time went into TriggerTracker. Sandra Carluccio and her production company Counterpilot are developing an interesting little science fiction work that takes place around the Brisbane Powerhouse. I had a fair chunk of code to write for our first rehearsal that happened last weekend. It went well, it was great to have time to properly test the work. Sometimes it can be a feverish last minute process. Having another couple of months for refinement and polish will make a huge difference.
Interested in how Science Fiction, smartphones and iBeacons blend into a theatre experience? Tickets are on sale now.
Somewhat ambitiously, I picked a crazy long book. Haven’t finished it yet, I need to set aside more time and headspace for reading.
Missed a couple of runs this month due to a bung knee, but still managed to hit my distance goal for the month (just - 52km).
For a while now I have been on the hunt for a cheap android handset that features a Bluetooth Low Energy (BLE) radio. Until recently, this new standard was only on the latest and greatest handsets, with matching price tags.
I write custom software for theatre performances and tracking the location of the audience is a big part of the smoke and magic. In these site-specific performances, the audience walks around, rather than sit in auditoriums. While software tracks their location and plays audio and video files from the handset. Before iBeacons became mainstream I did the location tracking with GPS and a home-rolled bluetooth tracking system. Neither of which were as accurate as I would have liked, and the bluetooth system was cumbersome.
I have switched to using Bluetooth Low Energy (BLE) and iBeacons, it is fantastic. Better accuracy, indoors is no fuss and it’s easy to tear down and set up the performance in another location. What was missing were cheap handsets. At $300-$400 for a handset that worked with iBeacons, it put a serious limit onl the audience size we could run on small budgets.
Recently in Australia, Optus put the Sony Xperia E1 on sale at $59 AUD (or $130 USD unlocked from Amazon). YES! It was the right price, but was it any good?
At first glance I was pleasantly surprised. The E1 is a solid phone and will take a tumble better than most smart phones. Not as hardy as those old Nokia bricks, but it certainly won’t bend in your pocket.
But holy crap, the touch screen actually works. A rarity for budget android handsets. Every sub $100 android handset I have ever used has had a touch screen that is so horribly inaccurate it straight up doesn’t work. No. Stuff you. I want to press the letter ‘t’ not ‘e’, you stupid phone. On the E1 however, the touch screen is responsive and accurate. So although it may only have a 4” screen, you aren’t at a big disadvantage because you can still tap on what you are after*!
As for specs, it is well rounded for only sixty bucks. Android 4.4, 1.2GHz processor, 512MB Ram and 4GB storage. Plus the oh-so-sweet Bluetooth 4.0 that I use all the time. The Xperia E1 has more than enough grunt to power site-specific theatre performances. We can live mix a soundtrack based on a persons location and trigger narrative at pre-defined locations.
The only thing noticeably missing is a front-facing camera. But at $60 it is pretty hard to complain about that.
The big thing I don’t like is common to all Sony phones. To leverage off their existing brands (like playstation and walkman), Sony built their own versions of many standard apps. But for whatever reason (legal or technical) the Google equivalents still kick around on the device. Expect to get asked if you want to do this with ‘Walkman or Play Music’ a LOT. But that problem is common even in more expensive Sony handsets, so again it is pretty hard to nit pick. Recently Sony dropped the brands and went with simpler and more descriptive names (I.e. walkman became music). It makes me wonder what value remains in rolling their own custom applications.
All in all Sony have done very well with the Xperia E1. You get lots of phone for only $60. They are light years ahead of any cheap handset I have used in the past and when used in site-specific theatre? Awesome.
I give the Sony Xperia E1 4.5 stars out of 5.
* I’m also a little biased towards smaller form factors – never been a fan of phablets.
Dear Jeff Atwood,
For seven or eight years you have unwittingly been a mentor of mine. So I guess it is your fault that I still suck… But at least I now suck in public. Nervous Laughter. Opening a fan letter with obscure in-jokes? Risky. But stick with it, I hope this letter instills you with a little extra motivation. Your blog has given me plenty of motivation over the years, so it is way overdue that I try and repay some of that debt.
This talk you gave in 2012 is brilliant. You managed to distil decades of writing articles and software into a concentrated 25 minute hit of your ethos. I still re-watch it, especially when I have utterly sucked and got kicked in the guts by my own mistakes. I didn’t intend for this to be a confessional, but yeah. It is normal for developers to watch this talk while crying and eating ice cream… Right?
Woah. Oversharing. Actually, that brings me to the other thing I always enjoy about your work. You never seem to take yourself too seriously. There is always plenty of room for a joke. As someone who enjoys the Jeff Atwood experience over the Internet, this humour imbues your avatar with humanity. One of many skills that allows your personality to survive the transmogrification into the digital world. A process, which for most is brutally dehumanising. No matter where you lurk on the Internet, it is clear. “Hi. I’m Jeff and I am an actual living, breathing person.”
I like how your mega projects are about empowering others with similar skills. Making social interactions function on the Internet in a similar way as they do in the analog world. You don’t need to take a long trawl through comments on YouTube to realise that this is long overdue.
I’m really happy to see you continue along this path with Discourse after leaving StackOverflow.
So thank you. Your the reason why I’m not afraid of falling over in public anymore. Your blog has inspired a few of my projects, and also into taking the leap of choosing my own adventure.
P.S. Appologies that this website ended up so much like yours asthetically. It wasn’t a conscious decision. Well some of it was directly inspired. But I just kept removing things that obscured content and ended up in a similar place. I guess reading a website for almost a decade rubs off in more ways than you realise.
In the early days of Stack Overflow, Jeff Atwood and Joel Spolsky hosted a podcast covering the rationale behind their design decisions. In those early days, Jeff and Joel talked about the community of developers they wanted on Stack Overflow. One of my favourite recurring themes during this time was around griefing (and trolling). Joel offered this neat little analogy:
This is exploiting the system basically to play a different game than the game other people in the system want to play. You’ve got a bunch of people playing chess, but you want to play “Throw the chess pieces all over the park!”
You got the sense that Jeff and Joel wanted to create a welcoming place for all walks of developers. They had first hand experience with communities that had devolved over time. They thought Stack Overflow would need to rise above those issues to succeed.
Fast forward a year or so and I decided to make a website to help settle arguments with my wife.
Yeah I know. What a stereotypical software engineer response. Disagreements with my wife? I need a website!
Picking a movie we both enjoyed was pretty difficult, we needed information to make the decision easier. So I made a movie rating website to determine if a movie was something that men liked, or one that women would prefer.
Seeing as the rating was all vote based, I wanted as many votes as possible. I didn’t want to watch Pride and Prejudice again, there had to be good stuff that we would both enjoy. So I designed the website with a low barrier to entry. It didn’t have any sign up requirements or captcha’s or anything like that. Just buttons for your voting preference.
With almost no checks in place, I wondered how long it would take before people started throwing chess pieces around the place. So a friend of mine submitted it to Reddit. Twenty minutes later ‘Debbie Does Dallas’ was the number one film women enjoyed. It had something like 100 times the votes of all the other films combined. For a grief, it was pretty hilarious.
So I installed a movie pre-populated blacklist and the request “No pornographic movies please.” It was enough to resolve the current forms of griefing. I was telling my friends about the improvements, and we talked about a more difficult test. We needed people from a place with little or no rules, a place where moderation or censorship is largely avoided. A few moments later it was on 4chan.
Well, things got interesting. Someone wrote a vote spamming script that would systematically reverse the lists. The script preserved vote the tallies exactly, but everything was back to front. Not as funny as the first grief, but impressive. Someone had put some real effort into griefing an obscure corner of the Internet I had created. More coding later, and I had some vote limits in place to reduce this sort of spamming.
I maintained the website till a few months ago, retiring it to focus on little projects I could build in a month. But the 4chan test for griefing is one I won’t forget. Need to find unexpected sources of griefing? Just paint a target on your project and take it to the corners of the Internet with little or no rules.
* Awesome sketch by Nicholas Allen.
My parents came and visited for a couple of weeks in May. It was great, we spent a heap of time hanging out and exploring around Cairns.
Over the last couple of months I have been digging around the works of Tom Sachs and Van Neistat. I wrote a couple of fan letters as a way of better understanding their work. While studying Van Neistat’s work I found myself wondering “Where in the world is Van Neistat?”. In recent years he has become a digital ghost. I had been toying with the idea of a long post that lined all the bread crumbs up, making it easier for others to answer a similar question. Then in the comments to my fan letter, Van replied to my fan letter, and I found a lot more people wondering the same question. So I decided to go the whole hog and created a digital museum.
Oh alright. I guess that is just a millienal way of saying I created an old school GeoCities fan site.
I also knocked up a better solution for our outdoor shoe storage. The heavy rains up here were flooding our shoes on occasion. We also needed a better place for storing our big arse tropical strength golf umbrellas.
Finally finished up the second half of the third curiosity. A sunrise / sunset simulator light system thing for my aqarium. The planted aquarium has become a bit of a full time hobby. Between snail outbreaks and algae blooms, our poor plants have been struggling. Hopefully I’m starting to get on top of it now.
Writing was weak, so no sticker this month. Working on the didactics for the Van Neistat museum soaked up most of my writing juju this month. I completed only one article.
Four Colours Suffice: How the Map Problem Was Solved - Robin Wilson
Tells the story of how a long standing mathematical problem was solved.
Can every map be coloured with at most four colours in such a way that neighbouring countries are coloured differently?
In many ways I found the history of the four colour problem more interesting than the proof itself. Especially the rise of computing within mathematics and how computers powered the solution. I also enjoyed the little stories behind famous mathematicians such as Euler and Möbius.
Went to Cape Tribulation for a weekend. I love that place. Light drizzly rain and Gomez set the mood for a super fun evening run. Clocked up 78.8km for the month and I am almost back on track for my yearly goal.
Just about all the electronics components I use in my projects are manufactured in Shenzhen, China. The logistics of getting them from China to Australia at a decent price is surprisingly tricky. If you are on a budget, you need to research and order two to three weeks in advance. But if you are willing to pay more, you can get most things in under a week. Although expect shipping and handling to cost more than the actual component. It has made me a little jealous of the Shenzhen electronics markets, those places look amazing. Being able to stroll down the street and get any component you need same day or next day at wholesale prices? Yes please.
The following is a summary of online vendors, and how long it takes to get packages shipped from them.
I love eBay for buying most of the parts I use in my projects. I can get just about anything direct from China with free shipping. The biggest downside is shipping time. You are looking at a solid 15-20 business days to get things delivered. This makes eBay perfect for consumables, heat shrink, hot glue, solder and that sort of thing. Even for building up a supply of components you use all the time like resistors, LEDs, heatsinks and ic chips. The sorts of things you can order when you are getting low, and have them arrive before it runs out. It is still a good resource of project specific stuff like motors and actuators, but you need to plan a month in advance.
I found my favourite stepper motor manufacturer through eBay. Wantai. They are the best. There is something futuristic about being able to talk to a Chinese factory, and having them create a custom order on eBay. Then build your motors to order and have them arrive at your house a month later. All without leaving my living room. I imagine this is just a tiny taste of what it must be like to visit those Shenzhen markets.
eBay is often the cheapest, but with the slowest shipping times. Sometimes you luck out and find a cheap part shipped from Australia. Those days are awesome. It is like winning the shipping lottery.
Seeed studios is cool. My friend Michael Candy got me on to them. Seeed is great for microcontrollers, they make some awesome Arduino derivatives. They also stock some great sensors and other base components. You pay a little more for the base components than what you would on Ebay. But if you bundle things up with a larger order of microcontrollers, it often works out alright with faster shipping times. I can get things delivered in 10-14 days via EMS, which is not too expensive and comes with tracking. Seeed often have some good sales with discounts of up to 20%.
Seeed is almost just as cheap as Ebay, but also stock some speciality items you can’t get anywhere else. Medium shipping times via EMS.
Power Supplies Australia.
Power Supplies Australia are awesome. They have a huge stock of Meanwell LED drivers and power supplies, plus a flat rate for shipping that can make it to me in two business days. Best Cinco used Meanwell gear on the Golden Orbs project, and Grant Trebbin has a cool Meanwell review. Highly recommended.
If I lived in Mainland US, I would use Amazon a lot. The prices are pretty close to what you would find on Ebay and Seeed, but shipping costs to Australia are brutal. You are looking at 10-15 days to get something shipped from Amazon via the cheapest option. I use Amazon for small things that are cheap to post. I often get microSD cards from them.
Aus3D are new, they are another vendor I found through eBay. They stock and sell a great collection of Arduino, Adafruit and Reprap gear. They are a local seller so shipping is fast, about five days for me in Far North Queensland. They are also reasonably priced.
Element14 stock a lot of different components, and the shipping is fast. They are a great source for Raspberry Pi’s and high quality components. The only catch is shipping and handling on the smaller stuff is expensive. It works out alright if you are buying larger volumes, but not on small batches for prototypes. Probably the closest thing in Australia to living near a Shenzhen market, just don’t expect Chinese prices.
Some people prefer pictures, so here is the above in complicated chart form:
Wow. What a schmozzle. Well not completely, but this month has been tricky.
The hardest part of each monthly project is wrestling logistics. Getting components shipped to Cairns on time has been the biggest bottleneck. I had a bad experience with a local distributor this month and it put a solid week delay into the pipeline. This had some disastrous knock on effects, and I’m still waiting on a few components to get shipped in. It looks like that original week delay has blown out to two. It won’t be till the middle of May before I even have all the components to finish this months project. In many ways a monastic engineering experience would be vastly easier in Shenzhen, China. Need some electronic component? Just skip on down to the giant market and pick up what you need.
I still managed to complete the first half of the project. A planted aquarium featuring a 3D printed filter. Anna Gerber inspired me into my first tilt at symbiotic aquaponics in years. It is the healthiest ecosystem I have managed to create (all my earlier aquaponics systems failed quickly). Fish and plants are doing well this time around. But the microcontroller powered pizzazz? Soon.
One luxury of the monastic engineering experience is having the mental headspace to organise my life. For the first time in over a decade I’m starting to feel on top of things. I know where things are! Anyway while waiting on shipping I delved off into a little side project. A notebook that brings together twenty years of old scribbles. It has four main sections:
- Doodles of a bored mind.
- Bad Graphic Design.
- Unfinished game ideas.
- Crazy concepts.
Writing went well this month. I got some really cool feedback, this helped formalise some vague concepts I have been kicking around my head. This month the articles covered:
I was so pumped for this month I picked a tricky book. One that would usually take me a long time to read. Only about a quarter of the way through and it keeps putting me to sleep. May. That is the month I finish that book.
When I started out on the monastic engineering exerience I never thought that I would have a month where exercise would be the stand out activity.
I really look forward to my runs. Running three times a week, and now aim for one ‘long run’ a week. 67.2km. Trying to take a photo each run.