I’ve been a bit distracted lately, for good reason - I’ve been busy working with BESTCINCO, Michael Candy and Meagan Streader to design and build a series of interactive sculptures that will feature in the redevelopment of the heritage-listed ’Gasworks’ site here in Brisbane.
One of the best things about working with a group of creative people is brainstorming and thinking of new ways to stretch technology. “What if we made the lights mimic a brain?” I suggested, “We could get them to ‘fire’ like a neurone in response to activity they detect nearby.” “Can we do that?” was the reply. So here I am, cramming out some code that will turn the Gasworks into a simulated brain that senses and reacts to people using the space.
Suspended within the centre of the Gasworks structure will be ten sculptures, each containing a cluster of lights, a Raspberry PI, a webcam, Arduino and a host of electronics.
Each of these sculptures loosely simulate a brain neurone. The webcams act as the ‘dendrites’, continuously monitoring the spaces underneath each sculpture for physical activity. Any detected activity is translated into an energy level that drives the lighting sequence for the attached sculpture (neurone). This energy level is sent from the Raspberry PI to the Arduino where it’s converted into a lighting sequence. Sculptures with low energy levels have a dim and slow random light sequence, while sculptures with higher energy levels have brighter, faster lighting sequences.
The energy level of each neurone continues to increase as movement is detected, until it reaches a threshold and ‘fires’. When this occurs, that sculpture broadcasts part of its energy to the adjacent sculptures, which in turn have brighter and faster lighting sequences. Meanwhile the neurone that fired will ‘reset’, dropping its energy level back to zero.
Below is a video of a single sculpture/neurone prototype, demonstrating how it detects movement and transitions from low energy to high, and finally ‘firing’.
With a load of hard work and a bit of luck, I hope we get some emergent behaviour (i.e. effects I have not explicitly coded) arising when people start interacting with the sculptures. The work will be permanently installed at the site in Newstead from the end of the year.
Eleven months ago, a beer and a handshake kickstarted one of Brisbane’s most intriguing startups, API Engine.
Greg Davis, former engineering director of a Brisbane-based software company, was building a fairly hefty API that was a chore to document. His co-founders developed a nifty way to make documenting APIs easier, and over drinks late last year, they reached a gentlemen’s agreement to self-fund and bootstrap the idea into a fully fledged product.
Like most good development tools, API Engine was borne out of a need, in this case API documentation. But it didn’t stop there. Davis and his co-founders soon found they needed to glue together disparate systems, and provide consistent API access – things which are not well-served by the API tools that come out of the box in web development frameworks such as Rails and Play.
The result is a composition utility for software developers that has found a market niche: since December last year more than 2,500 people have signed up to be beta testers and Davis says API Engine frequently receives requests from software development companies to use their system.
API Engine plans to launch the beta offering later this year. When it does, the team will target two market segments: internal APIs found in large enterprises (such as financial institutions), and the plethora of RESTful APIs publicly available on the internet. A small group of local developers, bootstrapping a company that aims to take the legwork out of documenting and combining APIs is impressive. But once you get under the hood of API Engine, the real intrigue begins.
I’m not going to lie. I was a bit of a functional programming skeptic. It sounded costly, both in terms of development effort, memory and CPU consumption. And having never really seen or heard of Haskell, the purely functional programming language in a production environment, I had written it off as another academic curiosity.
I was using this very argument against functional programming when I first learned about API Engine some months ago. It was the first time I’d heard of Haskell being used in production. But since then, my ambivalence towards this form of programming has slowly been replaced by a newfound appreciation of its real-world advantages.
Davis says size was one of the reasons behind the decision to use Haskell: “The code base itself is no larger than 5,000 lines of code. In fact, it is probably still less than 3,000.” If they had developed API Engine in a more traditional language such as Java, it could have been as much as five times larger.
Not only is their Haskell code small and well structured, it is also robust. “When you come into a new system, you wonder which bits are robust and which aren’t. And Haskell was new, fairly new to me… As it turns out, I never go looking at the Haskell, because that is the bit that never breaks,” Davis laughs.
Choosing Haskell to power the back end of API Engine was a decision influenced not only by technical considerations, but deep principles held by the founders and a sense of responsibility to the next generation of software developers. In Davis’ case, a sense of embarrassment: “I have children, and I am embarrassed to teach them things that our industry is doing today.”
This embarrassment stems from fundamental development practices that currently permeate the industry – how problems are analysed and the awkward way in which code is composed by multiple developers. These are things the team at API Engine thinks can be partially solved by functional programming and Haskell.
Along with enabling developers to build great APIs, Davis and his co-founders are aiming to create a workplace with a development culture steeped in functional programming that they would be proud to share with their children.
The ultimate goal is to have a workplace that will have a positive impact on the general software culture in Brisbane, by promoting new approaches to problems, and challenging the status quo.
This is a repost of an article I wrote for the The Tech Street Journal.
Each year, Brisbane generates a surprisingly large, diverse pool of software developers. However, stories about outstanding people who outgrow Brisbane and move onto greener pastures are all too familiar. Some are headhunted, others relocate to start businesses or seek employment elsewhere. While you hear the occasional story of someone who’s returning to Brisbane after a successful stint overseas, on balance it seems the city is losing a large number of experienced developers who would otherwise be pillars of local technology companies. This series explores why all our friends are leaving Brisbane. We profile some of the talented developers who have left on the promise of a better career.
I first met Coen a couple of years ago at ActionHack. At the time, Coen was implementing a new layout for the site he co-founded: Wikifashion.
It looked great. I was impressed. Coen casually dropped some very respectable traffic stats (currently pulling in 50,000 uniques a month), but he was nonchalant about future plans: “I dunno, maybe throw up some ads or something?”
Fast forward a few years and the former Blue Dog Frontiers founder and Kondoot engineer now personifies the “California or bust” mentality. At the end of 2012 he packed his bags and moved to San Francisco with no external investment and no incubator or accelerator lined up. He moved simply because he figured that in San Francisco he would get better value for his savings as he burnt through them starting a new business.
What he did have was technical ability, plenty of experience with early stage businesses and a large captive audience with Wikifashion, where advertising supported Popbasic development. Enough to make it work.
In San Francisco, Coen bootstrapped Popbasic, a company that sells limited edition “micro” fashion collections. Popbasic’s service includes a surprise item in each collection, courtesy of one of their partner companies. In return, the partner gets exposure to a fashion-savvy audience and Popbasic’s customers add the latest fashions to their collections. Popbasic is already breaking even — an achievement Coen feels wouldn’t have been possible in Brisbane, where doing business is more difficult. ”It’s a cultural thing,” he says. “The biggest benefit is that other companies are willing to work with you, even though you’re a ‘startup’.”
Popbasic has had greater success dealing with US companies to package its surprise items than with Australian counterparts. And it’s not just working with other companies. The US media is easier to deal with too: ”Newspapers are also more willing to go out on a limb and cover you first, before someone else: we discovered that first with Wikifashion and again with Popbasic.” This seems to reflect a greater willingness in the US to give new technologies and companies a chance — ironic given Australia is supposedly the land of the fair go. It’s a cultural gulf that, for one talented developer at least, is enough to keep him away from home.
When asked about the type of opportunities that would need to exist in Brisbane for him to consider moving back, Coen is frank: “I don’t think that is possible. Maybe if the opportunities existed in Brisbane to begin with I may not have left, but Silicon Valley is unrivalled in the ecosystem it provides for young internet based companies. I don’t see myself starting a mine anytime soon, so I’ll probably stay over here. Though I’ll definitely come back every once in a while and say hi!”
This is a repost of an article I wrote for the The Tech Street Journal.
To be honest, I had never really stopped and taken the time to appreciate how difficult things are for women working in technology. I mean, I had always attended co-ed schools and mixed with the opposite gender. But as I got older and more involved with technology, the demographic slowly but steadily changed. It started in high school, when we were gradually empowered to self-select our fields of study. For me, my timetable became increasingly littered with mathematics, physics and chemistry, while fewer and fewer girls shared the same courses.
Initially the change was so subtle, I am embarrassed to say I didn’t even notice. In fact, the gender disparity in the sciences only became apparent on my first day at university. I was crammed into a lecture theatre overflowing with several hundred young minds eager to become mechanical, mechatronic, aeronautical and aerospace engineers. How many woman shared these ambitions? So few they could almost be counted on one hand - six.
I’m ashamed to say that a younger me simply accepted the gender stereotype: girls are more interested in the arts, health, and the humanities, while boys are into maths, science and engineering. This was so profoundly and utterly ingrained in my psyche that it took a life changing event for me to really appreciate how flawed my thinking was at the time.
About nine months ago I became the father to a little girl, lovingly nicknamed ‘The Kins’. Almost instantly, society began to bombard her with images and objects, aiming her away from science and technology and towards those more traditional ‘female’ vocations. It takes considerable effort to keep the gaggle of plastic toys at bay: dolls with pink hair brushes, purple vacuum cleaners and pastel-coloured tea sets. Some days I come home and it looks like a drunken unicorn has stumbled in and vomited all over the place.
I realised that our society had somehow managed to create an environment that didn’t do much to encourage women to take an interest in science, technology, engineering or maths. I realised that those six young women in my university class, who had managed to make their way into a lecture theatre filled with other hopeful engineers, were probably the most remarkable of all of us. The guys had it easy: we were actively encouraged by society into these pursuits, and nobody blinked an eye when we walked into that lecture theatre. The women on the other hand? They were so deeply interested in engineering they were able to ignore social norms and doggedly pursue a career that was alien to most of their female peers.
So to all the women working in technology - the programmers, the engineers, the scientists, the mathematicians - all of you. I can’t thank you enough. You are spearheading a modern woman’s liberation movement. Sure, you are not burning bras or adopting the iconography that popularised the movement in the 60’s. Instead, despite the horror stories, you’re out at conferences and actively engaging with male dominated communities. You build amazing things, and are actively creating an environment that will make it just that little bit easier for other women to follow you into the industry.
I understand that The Kins is likely to be fascinated by areas that are completely foreign to me: strange music, strange movies, strange interests. I guess that means as The Kins gets older I am going to need to try and wrap my head around rugby, interpretive dance, Iggle Piggle or whatever else she finds fascinating. But the fact that it will be just that little bit easier for her to consider a career in technology? I can’t thank you enough.
Dad, Maker, Software Engineer.
I spent last weekend at the excellent CampJS, with my good friend Paul Theriault who works for Mozilla securing FirefoxOS. We spent much of the weekend turning FirefoxOS mobile devices into a collaborative, location-based musical instrument: Cowboy Jukebox.
The premise of Cowboy Jukebox is fairly simple: you and your other ‘band members’ are carrying mobile devices, each a small piece of a larger globally distributed ‘musical instrument’. By tracking the location of each device via GPS, the whole instrument produces different sounds based on band members’ locations. All participants share the same auditory experience, and any band member can twist and change what the others can hear.
We still have more work to round out the build. But, thanks to the insanely awesome work that the folk at Mozilla have put into FirefoxOS (more on that later), it should work on any mobile device with a modern browser.
Cowboy Jukebox is broken down into two main components:
A lightweight server built in Ruby on Rails, and running on Heroku. This setup gathered and distributed the GPS coordinates of all the band members via JSON. You can find the source for the server lurking over on github.
The locations of all the band members are then processed to obtain the total distance moved (along with changes in latitude and longitude), and used to synthesize sound using the awesome library timbre.js. The source code for the client is also on github
Seeing as FirefoxOS is literally a web browser whereby all apps are identical to applications built for the web, to allow installation we simply created a manifest file. This was dropped into the FirefoxOS simulator and we were away, riding the crimson fox to bleeping and blooping freedom.
In the past, I have done a reasonable amount of Android development building a few different site specific theatrical works using cheap handsets, GPS and a chunk of Java.
Wow. Not only is developing for FirefoxOS a breath of fresh air, but, for handsets in the sub $100 range, FirefoxOS powered devices are simply amazing. The user experience is almost on par with a high-end handset like the Nexus 4 or Apple’s iPhone 5, and completely overshadows a sub-$100 Android phone. I am also a little attached to the brightly coloured cases that I lovingly dubbed ‘borange’.
As with everything else when developing software, it wasn’t all happy days. We ran into a few little stumbling blocks while hacking away on the devices:
- When ‘pushing’ the app to the device, the icon would often not appear on the homepage along with all the other apps. The app had still been pushed to the device, but still required a search on the phone to find it.
- Had a few minor jittering issues with buffering sound on the device. We might have been pushing these handsets to the limit, or just need to tweak timbre.js a bit.
- ‘Curling’ or accessing remote JSON sources felt a little clumsy. Considering everything is running in a browser on FirefoxOS, we had to work on the server a bit to get around the XHR same origin policy. While this makes sense for ‘regular’ browsers, I felt it was a little restrictive considering apps running on FirefoxOS are almost never going to be from the same origin.
- I missed being able to debug directly on the device. Debugging on the simulator is good, as is being able to use the developer tools built into Chrome and Firefox (P.S. the dev tools in Firefox have really caught up on Chrome). Still, for a few things, like the jittery audio, it would have been great to access handset debug info from within the FirefoxOS simulator / dev tools.
Minor quibbles aside, Mozilla should take a bow. They have done really fantastic work on FirefoxOS, and with awesome handsets available for less than $100, I think they are going to be a great option for new media artists working with mobile phones. I can’t wait for them to become more widely available and to work with them again.
PS - No payment was received from Mozilla in writing this post (though I wouldn’t say no to a handset!)
Not long ago I was pretty jaded about life as a software developer, and my colleagues could often hear me proclaiming at lunch (in between mouthfuls of leftovers from last night’s dinner), “A commune! We need a coding commune!”.
A commune? Sure, Kombi vans and bearded hippies are cool, but what on earth does that have to do with software development?
What I was looking for was something akin to a monastic engineering experience. I wanted to know what would happen if I removed all extrinsic pressures: things like pleasing stakeholders, KPIs, making money, customer discovery and all that blah. I wanted to know what it was like to bang away on my keyboard and create code, just for fun, without any distractions.
And now, having just returned from CampJS, I can say that Tim Oxley, Nigel Rausch and Geoffrey Donaldson have managed to organise the perfect monastic engineering experience.
Last weekend, over one hundred like-minded software developers charted a course to the Gold Coast, many flying in from interstate and some from as far afield as Vancouver, Canada. Then by bus or car, we ascended into the hinterland, winding our way up into Springbrook National Park (and hopefully, closer towards coding enlightenment).
Arriving at Koonjewarre in the early afternoon on Friday, we spent a couple of hours soaking up the views, socialising and meeting new people. Then, something amazing happened - people pulled out their laptops and began coding. Yes, people were coding - for fun! - on a Friday evening, after the end of the work week. I can’t think of another profession where this would happen - can you imagine plumbers at the pub on a Friday afternoon deciding to fix toilets or lay some pipes for fun?
This really set the tone for the weekend - a completely free form exploration of technology, with no pressure to do anything. For those who preferred their explorations a little more regimented, there was a schedule of amazing people presenting talks on everything from functional programming and Angular, to physical computing using Raspberry PI and Arduino.
But there was no pressure to attend sessions, and some people found themselves instead curled up under a tree reading something from the awesome book swap table. Some wanted to knit, play table tennis or throw a frisbee, while others wanted to go bush walking. Some spent the time coding on a project, and some even took one of the organiser’s suggestion at the outset to lay in bed and nap.
Despite removing all external pressures, and with plenty of people attending talks and taking the opportunity to blow off a bit of steam by doing whatever they wanted, a huge amount of code was written over the weekend.
CampJS culminated with a demo night, with 50 or so project demos. Some people were in it for the prizes, while others were building things just because they could. One attendee demonstrated an amazing personalised news site generated from his Twitter feed, proclaiming, “This is just for my friends, because, fuck startups.”
All the demos were videoed, and I hope they turn up on the interwebs soon, but until then here is a random assortment from the night:
- A multiplayer Snake game running on a LED matrix. Powered by Node, Raspberry PI and controlled by mobile phones.
- The best arcade cabinet I have ever seen, assembled out of beer cartons and a Raspberry PI. As an added level of difficulty, it was put together with the only spare keyboard available - one with a Russian layout.
- A remote sensing project, using an Arduino, an assortment of sensors, Johnny 5 and dashing.js
- A unicorn fart piano for FirefoxOS, hilariously developed by someone in a unicorn onesie.
- A really polished, live updating simulation of Brisbane public transport.
- A website designed as an RSVP to a 30th birthday party, inspired by Nintendo pixel art and featuring sounds and even cheat codes.
- A hyper scrolling, ball bearing mouse that ‘changed the life’ of the creator.
- A flying sheep battle game written in Haskell, using functional reactive programming.
Plus so much more awesomeness that is just too hard to cram into a single article.
As for me? I got to work with Paul Theriault, a friend from university who now works for Mozilla securing FirefoxOS. We turned their mobile devices into collaborative, location based musical instruments. Why? Because we could.
Two days ago Microsoft announced native 3D printing support in Windows 8.1. As someone who isn’t exactly a rabid Microsoft fanboy, I do have to tip my hat and congratulate them on integrating 3D printing support. You can watch their announcement in the Build Keynote here (skip to 1:03:00)
The only thing is, in their efforts to simplify 3D printing, Microsoft have rendered their API largely useless.
It turns out they shoehorned 3D printing into their existing 2D XPS printing pipeline, adding a common API layer between the 3D content and existing slicer / printing host software (which now gets bundled into a driver). This is a pretty obvious approach to take from a systems architecture perspective: Microsoft can reuse all the existing 2D printing infrastructure (like spooling and queuing), and push all the ‘hard’ stuff (like slicing) onto the hardware manufacturers and their drivers.
This might sound like great news if you are building an application and want to quickly add direct support for multiple 3D printers.
The only problem? This first version of the API is such a horrendously leaky abstraction, in reality the only thing it’s good for is attracting media attention.
The Windows 8.1 3D printing API abstracts away many of the common 3D printing parameters, leaving just the following four:
- Job3DQuality: Draft, Medium and High
- Job3DDensity: 0% (hollow) through to 100% (solid)
- Job3DSupports: Include, don’t
- Job3DRaft: Include, don’t
That. Is. It. And while I can appreciate that Microsoft are trying to simplify things for the average user, removing the ability to even select the output material is a massive oversight. And don’t get me started on the differences that colour and other additives have on the melting temperature of thermoplastics - quality prints require temperature control.
I’m not sure why, but it seems as though the corporate end of town are using The Oatmeal’s comic “Why I believe Printers Were Sent from Hell” as an instruction manual on how to piss everyone off. The new Microsoft 3D printing API checks off another two in the list: starting the ecosystem that breeds bundled printer software crap, and poop smears. Got PLA in your printer and the driver defaults to ABS? Bad luck Brian, you just printed a poop smear and probably jammed your printer at the same time.
When you get a key copied, the locksmith usually asks if they key is an original or a copy. This is because the process of copying a key is lossy; each time you make a copy from a copy, detail is lost. After a few generations the key will not open the lock, and after many generations the copied key will be blank.
Recently on the IRC RepRap channel, someone piped up and asked a similar question about self-replicating 3D printers: how many generations can a RepRap reproduce before there are serious issues with print quality? A couple of people chimed in with answers, which basically boiled down to the fact that with the right calibration you can always make a better printer from your existing printer.
This certainly parallels my own experience - the RepRap parts I am able to print today on my printer are vastly better than the first prints I got from my friend’s printer. It was a bootstrapping process: those initial poor quality parts got assembled into my printer, which I used to create higher quality parts to upgrade both our printers.
So it looks like the process of copying a RepRap printer from itself is not lossy at all, but rather the opposite. I don’t even know what that is called; enhancy? Case closed. Almost.
I have always had one tiny problem with my RepRap that no amount of calibration could resolve: ellipses. Circles would always come out a bit elliptical on my printer. I never noticed till I was printing some large disks for a replica hoverboard a friend was building.
The problem came down to the printed pulleys I was using. They were not circular, and despite how much calibration or tweaking I did, I could never print a perfectly circular set. I had been using CNC couplers on my Z-axis for a while, and decided it was time to get some decent machined pulleys to drive the X and Y axes.
The machined pulleys do their job really well - print quality is up and circles now get printed, well, circular.
RepRaps are ‘enhancy’ only if you are using high quality, machined parts for power transmission. Then you will be able to reproduce many, many generations of printers without any serious issues with print quality.
However, RepRaps are ‘lossy’ if you are using printed pulleys for power transmission. In my experience, any defects will result in elliptical pulleys that no amount of calibration can correct. These pulleys get worse and worse with each new generation, introducing alignment issues to the detriment of print quality.
So while it is true that RepRaps are self-replicating, there is a caveat - if you don’t want any ‘genetic defects’, you’re going to need some machined parts.
Are you old enough to remember pestering your parents to fork out $5 for you to stand in a queue for 30 minutes to have two minutes floating around in one of these?
Naturally, as a ten-year-old, those two minutes felt like 10 seconds and I absolutely HAD to have another go. My poor dad looked at his watch, the line and firmly dragged my brother and I in another direction.
Recently a friend was trying to stir me up, and said:
Yeah, but isn’t 3D printing just going to be the new virtual reality?
… implying that consumer 3D printing is just some sort of entertaining fad that excites ten-year-olds, and bores parents to tears. Bound to lurk around for a few years and disappear. I immediately rallied to the defence of 3D printing and rattled off all the typical defences.
BZZT. I was wrong. Consumer 3D printing IS the new virtual reality. Wait, don’t turn away in disgust. Let me explain.
Virtual reality was never really a fad, and it never really died. Sure you don’t see the above Dactyl Nightmare machines lurking around in shopping centres anymore, but elements of virtual reality are everywhere today. Sure we have the Oculus Rift, and long before that most gaming graphics cards supported a stereoscopic 3D mode that you could couple with a set of 3D glasses like these from Nvidia 3D.
But virtual reality is a term that encompasses a lot more than head tracking and a couple of small screens mounted in glasses. The whole idea of a 3D virtual environment that you can move around in? You are probably reading this article now on a device capable of that task. Computers, smart phones, tablets and gaming consoles are all capable of generating immersive 3D environments. Sure they may not have the immersive fidelity of an Oculus Rift paired with a really expensive computer, but you can still easily ‘lose yourself’ in a virtual reality generated by a gaming console.
You see, what happened in the early 90’s was that some really clever Texans got together and created an imaginary ‘virtual reality’ where you awoke in a prison and had to escape your Nazi captors. Yes, I’m talking about the game Wolfenstein 3D. It ran on cheap hardware available to large portion of the population. Wolfenstein 3D sparked decades of consumer hardware and software innovation that made those original virtual reality machines cumbersome, expensive and obsolete.
The exact same thing is happening in 3D printing today. We have these huge, expensive, high fidelity 3D printers (the ‘Dactyl Nightmares’) being superseded by smaller, cheaper, lower fidelity 3D printers (like the 386 powered machines that could run Wolfenstein)
We are still in the Wolfenstein days of consumer 3D printing, maybe Doom at best. I for one am totally excited that 3D printing is ‘the new virtual reality’, and I cannot wait to see what sort of products and technology evolve from two decades of consumer innovation. Oh boy, the 3D printing equivalent of sitting down to play ’Rage’ on an Xbox 360? How could you not be excited by a future filled with that?
It seems as though every other day, breaking news on 3D printing pops up in a mainstream article somewhere in the world. So what are the best places to keep track of everything that is happening in the 3D printing space?
3ders is a traditional blog that covers the latest 3D printing news and developments. They have been around for a while, and grew an early audience by maintaining three excellent lists: 3D printer price compare, Top 100 websites in 3D printing world and Price compare - 3D printing materials.
Unsurprisingly, Twitter is also a great source of up to the minute announcements of what is happening in the 3D printing space. You can follow one of the many aggregator accounts for 3D printing news, with my current favourite being @3dPrint_news. Which is a well curated tweet stream, featuring about 10 high quality links / tweets a day. If that isn’t current enough, you can always do a twitter search for ’#3Dprinting’
The social news site, Reddit has an excellent subreddit on 3D printing. The moderators have managed to foster a very friendly environment for newcomers and seasoned experts. You will find the best news articles, coolest content for your 3D printer and no shortage of help on how to get started with your own 3D printer on the 3D printing subreddit.
For the very latest improvements in the open source RepRap project, you really can’t go past the IRC #reprap channel. It is always full of avid RepRap developers and enthusiasts. Plus the #reprap community have feed a little bot that lives in the channel with a whole bunch answers to common questions. Just type in something that ends in a question mark, and if the bot, kthx knows the answer he will automatically reply. You can try stuff like ‘abs?’ and ‘botqueue?’.