State of my toolchain 2016

In July, I transitioned from a 16-year career in digital and IT with a regional university to setting up my own digital consultancy. This meant that I no longer had a Managed Operating Environment (MoE) to rely on, and instead had to build my own toolchain. Both to document this toolchain, and to provide a snapshot to compare to in the future, this post articulates the equipment, software and utilities I use, from hardware up the stack.

Hardware

I have three main devices;

  • Asus N76 17.3″ laptop – not really a portable device, but a beast of a work machine. I’ve had this since January 2013, and it hasn’t let me down yet. It has 16GB of RAM, 4 dual core Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz CPUs, so 8 cores in total, and it basically needs its own power station to run. This machine is a joy to own. It speeds through GIMP and video processing operations, and has plenty of grunt to do some of data visualisation (Processing) work that I do. The NVIDIA graphics are beautiful. The only upgrade in this baby’s near term future is to swap out the spinning rust HDD (x2) with some solid state goodness.
  • Asus Trio Transformer TX201LA – a portal device, useful for taking on trains and to meetings. I’ve had this for around 18 months now, and while it’s a solid little portable device, it does have some downsides. This is a dual operating system device – the screen, which is a touchscreen, and detaches, runs stock Android (which hasn’t had an update since 4.2.2 – disappointing), while I’ve got the base configured via Grub to dual boot Win10 and Ubuntu 16.04 LTS. Switching between the mobile OS and desktop OS is generally seamless, but I’ve had some glitches switching between Ubuntu and Android – in ASUS’ defence, they did tell me that Linux wasn’t supported on this device, and of course you all knew what my response that was, didn’t you? Challenge: accepted. The hardware on this device is a little less grunty than I’d like – 4GB RAM and Intel® Core™ i7-4500U processor. It just isn’t enough RAM, and I have to pretty much limit myself to running 3-4 apps at a time, and less than 10 Firefox tabs. But, that said, I *do* like the convenience of having the Android device as well – and the screen is a joy to work with. One little niggle is that VGA / HDMI out are via mini display port – and only a VGA adaptor was provided in the box. I’ll have to get a mini display port to HDMI adapter at some stage, as the world embraces digital video out. For the meantime, I’ll have to party like it’s 1999 with VGA.
  • LG Nexus 5X – my mobile phone. Purchased in January 2016, it’s running stock Android Marshmallow, and I’ve been super happy with how fast Android OTA updates ship to this device. For non-RAM-intensive operations it’s pretty snappy, and the quality of the camera is fantastic. The battery life is pretty good compared to my old Nexus 4, and I can usually go a full day on a charge, if I’m not Ingressing. This device has some pretty major downsides though. The USB-C charging cable is frustrating, given everything else I own charges on micro USB, so I’ve had to shell out for new cables. The RAM on this device just isn’t enough for its processor, and I’m constantly experiencing lag on operations, making for a frustrating user experience. The camera is buggy as hell, and there’s more than once I’ve taken a great shot, only to find it hasn’t been saved. I’ll be looking for a different model next time, but I can’t justify replacing this at the moment – it’s only around 8 months old.

My hardware overview wouldn’t be complete without these other useful peripherals:

Wearables

The two key wearables I have are the Pebble Time and Fitbit. As Pebble Time’s GPS and fitness tracking capabilities increase, I’m expecting to be able to decom my Fitbit. I can’t imagine living without the Pebble now – it’s a great wearable device. The battery life is pretty good – 3-4 days, and the charging connector is robust – unlike my poor experiences with the Fitbit – both with the device battery itself degrading over time, and having been through 5-6 chargers in 3 years. I’ve Kickstarted the Pebble Core, and can’t wait to see where this product line goes next.

Software

At the operating system level, both my laptops dual boot both Windows 10 and Ubuntu LTS 16.04, with my preference to be to use Ubuntu if possible. This generally works well, but there are some document types that I can’t access readily on Ubuntu – such as Microsoft Project. Luckily, most of the work I do these days is web-based. I still need Windows for gaming, because not all the titles I play are delivered via Steam – with the key one being The Secret World. Total addict 🙂

Office productivity

  • LibreOffice – my office suite of choice is LibreOffice. OpenOffice is pretty much dead, and the key driver of that is being umbrella’d by Oracle. Open source communities don’t want to be owned by large corporates who purchase things, like, oh I don’t know, MySQL, to simply gain market share rather than ascribing to the open source ethos.
  • Firefox – my browser of choice. Yes, I know it’s slower. Yes, I know it’s a memory hog. But it’s Firefox for me. I really like the Sync feature, meaning that the plugins and addons that I have on one installation automatically download on another – very useful when you’re running essentially four machines. My favourite and most used extensions would have to be LeetKey, Awesome Screenshot, Zotero, ColorZilla and of course Web Developer tools.
  • Thunderbird – I run Thunderbird with a bunch of extensions like Enigmail, Lightning (with a Google Calendar integration for scheduling) and Send Later – so that if I write a bunch of emails at 2am in the morning, they actually send at a more humane hour.
  • Zotero – I used Zotero, and its LibreOffice plugin for referencing. It’s beautiful. And open source.
  • Slack – Slack is the new killer app. I use it everywhere, on all the things. The integrations it has are so incredibly useful. In particular, I use an integration called Tomato Bot for Pomodoro-style productivity.
  • Xero – Yes, I have a paid account to Xero for accounting and bookkeeping. It’s lovely and simple.
  • Trello – For all the project management goodness. I got some free months of Trello Gold, and I’ve let it lapse, but will probably buy it again. It’s $USD 5 per month and has great integration with Slack. Again, if there were an open source alternative I’d give that a go, but, well, there just isn’t.
  • GitHub and Git – If your office is about digital and technology, then GitHub is an office productivity tool! I use Git from the command line, because it’s just easier than running another application on top of everything else.

Social media and radio

  • Hootsuite – Yes, I have a paid account to Hootsuite. There just isn’t a comparable open source alternative on the market yet. It has some limitations – such as lack of strong integration with newer social media platforms such as Instagram and SnapChat, but you can’t go past it for managing multiple Facebook pages or Twitter accounts at once.
  • Pandora – I stream with Pandora, but I really, really, really miss Rdio.

Quantified self

Over the years, I’ve found a lot of value in running a few quantified self applications to get a better idea of how I’m spending my time – after all, making a problem visible is the first step toward a solution.

  • RescueTime – the visualisations are beautiful, and it runs on every device I have, including Linux. It provides great insights, and makes really clear when I’ve been slacking off and not doing enough productive work. One of the features that I appreciate most is to be able to set your own categorisations. For examples, Ingress in my RescueTime is categorised as neutral – yes it’s a game, but I only play it when I’m walking – so that’s something I’m aiming to do more of.
  • BeeMindr – this nifty little app puts a sting in the tail of goals – and charges you money if you don’t stick with strong habits. I’ve found it’s started to help change my behaviour and build some better habits, such as more sleep and more steps. It has a huge range of integrations with other tools such as RescueTime and Fitbit.

Coding, data visualisation and other nerdery

  • Atom Editor – this is my editor of choice, again because it works on both Windows and Linux. The only downside is that plugins – I run many – have to be individually installed. If Atom had something like Firefox Sync, it would be a killer product. It’s so much lighter than Eclipse and other Java-based editors I’ve used in the past.
  • D3.js – this is my go to Javascript visualisation library. V4 has some pitfalls – namely syntax changes since v3, but it’s still a beautiful visualisation library.
  • Processing – I’ve used Processing a little bit, but I’m frustrated that it’s Java-based. Processing.js is a library that attempts to replicate the Java-based Processing, but the functionality is not yet fully equivalent – particularly for file manipulation operations. The concept behind Processing – data visualisation for designers, not programmers – is sound, but I feel that they’ve made an architectural faux pas by not going Javascript right from the start. I haven’t really gotten in to R or Python yet, but I can see that on the horizon.

Graphics, typography and design

  • Scribus – in the past year I’ve had to do quite a few posters, thank you certificates and so on – and Scribus has been my go to tool. The user interface is a little awkward in places, but it provides around 60% of the functionality of desktop publishing tools like QuarkXPress and InDesign – for free.
  • InkScape and GIMP – my go to tools for vector and raster work respectively. Although, I have started to experiment a little with Krita lately. One of the things I’ve found a little frustrating with both InkScape and GIMP is the limited range of palettes that they ship with, so I started writing some of my own.
  • Typecatcher – for loading Google fonts on to Linux.

Next steps

Thin client computing seems to be taking off in a big way – virtualised desktops are all the rage at the moment, but I don’t think they would work for me, primarily because I tend to work in low bandwidth situations. My home internet is 4-5Mbps, and my 4G dongle gets about the same, but is pre-paid, so data is expensive. For now, I’ll have to manage my own desktop environment!

What do you think? Are these choices reasonable? Are there components in the stack that should be replaced? Appreciate your feedback 😀

We’ve reached Peak Hackathon and this is what we need to do about it

Over recent years, the term ‘hackathon‘ has entered mainstream parlance. There are many nuances in just what a hackathon is – very eloquently articulated by Jack Skinner. What I’d like to unpack today however is the growing number of hackathons in the Australian technical and entrepreneurial scene – and whether we’ve reached a point where there are now so many that they’ve become ineffective. This saturation point is a condition I’ll term ‘peak hackathon‘.

What hackathons are there?

Over the past two months alone around the city of Melbourne, Australia, there are a plethora of hackathon events;

  • GovHack – a national open data hackathon where participants leverage open data from federal, state and local government authorities to build new tools for citizens (free to attend)
  • Girl Geek Academies #SheHacks – a hackathon for women only where a number of female mentors are present, aimed at providing connections and a space for women to test new business ideas ($AUD 100 to attend)
  • #Moonhack by Code Club Australia – aimed at children aged 9-11, this hackathon is a world record attempt to get as many children as possible hacking at once (free to participate).
  • Unihack – run by Monash University’s student IT society, this hackathon is aimed at university students only and has fairly open-ended goals – with a working product being the overall goal (free to attend).
  • Random Hacks of Kindness Melbourne (#RHoK) – positioned as a social hackathon, RHOK focuses on developments that provide social outcomes (free to attend).

Why are we reaching ‘peak hackathon’?

The rise in the volume of hackathons is completely understandable. While the empirical evidence is thin – largely because hackathons are a very recent phenomena, the case studies that have emerged are generally positive – hackathons are great ways to generate ideation, to facilitate social connections and to grow innovative products and services (see references below).

Hackathons are also great was to build social capital and technical communities – for instance around a particular language, a geography or a product.

So, what’s the problem?

As hackathons gain additional traction and recognition as hotbeds of innovation, the sheer volume of hackathons being run is now becoming the problem itself.

Why? It comes down to dollars and people.

Hackathons have a number of expenses. Firstly, you need a venue to house the hackathon. Sometimes this will be donated in-kind or at a discount, but sometimes not. Then, you have to feed your hackers – well, you don’t have to, but it’s considered de rigueur to do so. Often, the venue will have a contractual obligation in place to use a particular catering company, so even if the hackathon is able to obtain the venue for a low price point, the provision of catering is often much more expensive. Next, you will need stationery, which for a smaller hackathon is often a neglible cost, but can run to hundreds of dollars for larger events. Factor in marketing and media coverage (such as promoted posts or tweets), prizes for hacks and suddenly the cost of running your hackathon can run to thousands of dollars.

Sponsorship, up until recently, has generally been relatively easy to obtain. Organisations want to align themselves with groups that represent innovation and creativity, and especially where the organisation receives additional benefits, such as the ability to scout for talent or first pick of the minimum viable products delivered at a hackathon. However, as the number of hackathons in the market increase, sponsorship is becoming more difficult to obtain in some cases. Alternatively, the amount of money that organisations are willing to direct to hackathons is diluted – meaning that a hackathon may need to deal with twice the number of sponsors – who are contributing reduced amounts of capital – thus placing an administrative overhead on the hackathon organisers – who are generally volunteers. Building sponsor relationships takes time and effort – that often needs to be sustained over several years.

An alternative to this is to charge attendees – such as #SheHacks charging $AUD 100 per participant. However, this choice – as financially necessary as it may be – places additional barriers to entry in place for participants. For instance, some potential participants may need childcare to attend (something that GovHack Melbourne provides for free), and others may need to give up paid work to attend. So, competing for sponsorship indirectly means more barriers to participation – something that all hackathons want to avoid.

The plethora of hackathons sprouting up also means that competition now exists not only for sponsor patronage, but for developer / creative / entrepreneurial attendees. A hackathon is a significant time commitment – often two-three days over a weekend – competing with leisure time, family time – or for the more introverted attendees – ‘alone’ time.  Hackathons are intense. They require significant investment of cognitive effort, long hours – and although fun, exciting and exhilarating – often leave participants tired or drained. There is a limit to how many of them attendees can actually do without feeling drained our burned out – again something all hackathons wish to avoid.

Lastly, but certainly not leastly, the other resource that becomes contended when we reach peak hackathon is volunteer time. Most hackathons – apart from corporate hack days – where the organisation has paid members of staff organise the hackathon – are run on volunteer time and effort. The number of volunteers we have in Australia has actually increased over the last five years, but the number of hours they are volunteering on average has significantly reduced. While it’s unknown whether this statistic extrapolates to hackathons and the technical community, it stands to reason that if there are more hackathons, requiring more volunteer effort, and that the pool of volunteer time is finite, sooner or later hackathons are going to contend for the same volunteers. This in turn leads to volunteer burn out – which reduces the overall capital of the community.

So, what can we do to collectively address the situation?

  • Dates – finding dates are hard. We have to schedule around university holidays (as students won’t attend if they’ve gone home for term break), major events (such as sporting events), and simply time of the year (if it’s 40 degrees outside, you might be at the beach). Trying to then co-ordinate around multiple other hackathons may then appear to be a bridge too hard to cross, particularly if the hackathon is national or international in scale.
  • Hackathon summit – another option is for the leaders of various hackathons to stay in regular and constant contact, and identify the areas where they should, and should not be collaborating. This might take the form of co-ordinating around which sponsors will be approached, or co-ordinating around dates, or co-ordinating around shared resources – for instance information on how to source childcare. Great collaboration will mean less competition.
  • Volunteer pipeline – the most effective volunteers are those who have significant experience and connections throughout the hackathon community. The downside of course is that if people are effective in a volunteer capacity they are often ‘rewarded’ with additional work. Collectively we can work together to identify, nurture and grow the volunteer base. Of course, this nurturing itself is an additional task.
  • Less money for prizes, more money for participation – with significant funds from hackathons going to prize money, it may make more sense to divert funds to participation activities – bursaries, child care, travel and accommodation grants – from prize money. Whether this would deter those hackers who come to hackathons purely for the money on offer is unknown – but it may serve to increase participation from under-represented cohorts.

What do you think? Are there other actions we could be taking as hackathon organisers to address peak hackathon?

 

Full disclosure: I’m the site lead for GovHack Geelong, a GovHack official event, and sit on the board of Linux Australia, an incorporated association which auspices GovHack as well as many other technical events such as Pycon-AU and linux.conf.au.

References

  • Decker, A., Eiselt, K., & Voll, K. (2015). Understanding and improving the culture of hackathons: Think global hack local. In Frontiers in Education Conference (FIE), 2015. 32614 2015. IEEE (pp. 1–8). IEEE.
  • Isaac-Menard, R. (2016). Hack the library Organizing Aldelphi University Libraries’ first hackathon. College & Research Libraries News, 77(4), 180–183.
  • Jetzek, T. (2016). ElEmEnts of a succEssful Big Data HackatHon in a smart city contExt. Geoforum Perspektiv, 14(25).
  • Leclair, P., & a Catalyst, O. D. I. (2015). Hackathons: A Jump Start for Innovation. Public Manager, 44(1), 12.
  • Lewis, B. A., Parker, J., Cheng, L. W., & Resnick, M. (2015). UX Day Design Challenge Hackathon to Apply Rapid Design Ideation to a Practical User Experience Challenge. In Proceedings of the Human Factors and Ergonomics Society Annual Meeting (Vol. 59, pp. 304–306). SAGE Publications.
  • Rice, J. (2015). Hackathon implementation for industry and academia. UTICA COLLEGE
GovHack 2015 group photo, credit: Mo Xiao Xiang
GovHack 2015 group photo, credit: Mo Xiao Xiang

 

The Light Clock

My Light Clock arrived on Friday, and the weekend was a great opportunity to set it up and learn more about how it worked.

I’d backed this project for two key reasons;

  • The project was run by an Australian hardware and software engineer – Chris Carter – who was recommended by colleagues in the opensource community. I’m passionate about opensource development, and I wanted to help back an Australian project, particularly given the success of LIFX.
  • The project was based on open hardware and open software. The base board for The Light Clock appears to be the arduino-compatible ESP8266 which is fast becoming the go-to board for open hardware developers. The lighting is based on AdaFruit’s neopixel range.

The box was very plain and simple, and the device itself was packed with polystyrene peanuts and bubble wrap – very secure nonetheless. The Australian adaptor was included in the box, however the lead on the device was only about 1.5m long. The Light Clock sticker on the back of the device was a nice touch, however I would have liked a Light Clock sticker separate in the box for say laptop stickering. Being one of the first 200 people to receive a Light Clock device, a ‘Kickstarter Edition’ engraving or similar would have been a welcomed addition, but understandably not part of minimum viable shippable product.

First steps with #thelightclock, a @kickstarter project I backed.

A photo posted by @kathyreid_id_au on

The short lead presented the first design and installation challenge; ostensibly this device is aimed at replacing existing analogue clocks that are wall-mounted. However, it’s rare that someone would have a general power outlet (GPO) high up on their wall, necessitating a fairly long lead run to a ground-level GPO. This may not be the case in say corporate offices, which may already have networked clocks in place, or existing infrastructure for digital signage.

Connecting to the network

The next challenge was connecting to the Light Clock, and getting it on to my home wi-fi network, so that it could use NTP to keep in sync. The Light Clock correctly appeared as an advertised SSID in my Network Manager, however every attempted connection to this SSID failed. Rather than spend the time diagnosing it, I used my Nexus 5X mobile phone, running stock Android, to connect to The Light Clock SSID. This was successful on the first attempt, and I was able to join The Light Clock to my home wifi network. As expected, The Light Clock could not see my 5GHz SSID, and could only see my 2.4GHz SSID. This appears to be pretty normal for most IoT devices at the moment, but I suspect we’ll see more support for the 5GHz frequency over time. The service that joined The Light Clock wasn’t responsively designed, so it was a bit tricky on a mobile device.

Once I got the device on the network, I then went back to try and diagnose why I couldn’t connect to The Light Clock SSID via Ubuntu, and found something very interesting. The MAC address picked up by the router, shown in the image below, was;

18:fe:34:e2:14:43

however, the MAC address picked up in dmesg (the Ubuntu Network Manager log) was

1a:fe:34:e2:14:43

So, I think there may be an issue with the MAC address it’s broadcasting, or how my machine was picking up the MAC address. Here’s a link to the dmesg logs in case anyone is curious. For the record, I’m using an Atheros network card in my ASUS N76. It’s otherwise generally pretty reliable.

How The Light Clock appears as a device on the router
How The Light Clock appears as a device on the router

Configuring The Light Clock

Configuring The Light Clock proved much easier than getting the device on the network. You simply connect to a web interface to the device over your WiFi network and adjust the settings.

Another observation was that clear setup instructions were at thelightclock.com/setup.

/setup is becoming the default setup URL for devices such as this

The Light Clock settings screen
The Light Clock settings screen

Experimenting with colours yielded some interesting conclusions. The colour settings tended to work best when both colours – the hours colour and the minutes colour – were heavily saturated and bright. Neon type colours – bright pinks, yellows, blues and greens – tended to work best in terms of contrast between hours and minutes. For someone whose house is pretty much all neutral shades – stones, earthy colours – finding a colour palette that was both clearly readable but resonant with the rest of the interior design was very challenging, and I couldn’t settle on a palette that met both requirements.

The blending option when set high tended to make the time much more difficult to read, and I settled on the lowest blending setting. The other feature that would be useful here would be the ability to adjust the brightness of the hours colour setting and minutes colour setting independently, so for instance you could have a very bright hours setting and a very dull minutes setting. I’m not sure if this is possible with the Neopixel hardware though. I did have a look at the source code to see if it was an easy pull request to do, but I couldn’t figure out how the brightness value is added to the pixel colours.

The settings also had three slots to save different colour schemes, which is a useful UX addition, however I would have liked to have seen more slots. In experimenting with the hour markers, I found that no hour markers at all actually made the time more readable, which was counter-intuitive.

With a little tweaking, I think this device could be integrated into other design projects, such as on canvas or with something like LilyTwinkle.

Integration with other IoT devices

One of the key drawbacks of The Light Clock is that it doesn’t appear to have any integration with other IoT devices, such as LIFX, Hue, Nest and so on. There are a number of use cases I can see for The Light Clock to have a lot of additional value if integrated such as;

  • Using The Light Clock as a visual indicator of notifications, phone ringing and alerts
  • Synchronising The Light clock as a wake-up device. Currently I use LIFX to slowly turn on my bedroom light in the morning, and I’d like The Light Clock to be synchronised with this, particularly given that it tends to work best with neon colours.
  • Integrating Light Clock control in to other apps – such as LIFX. I’m really glad that I don’t have to install yet another mobile application to control The Light Clock – because the IoT app market is already so fragmented.

I was also half expecting some sort of documented API for The Light Clock so that I could experiment with some integration myself, and although the source code is available, the device itself doesn’t appear to have a documented API or web service. From what I can tell, the settings page basically takes a bunch of GET variables and writes them to the board, so even knowing the range of GET vars would help to be able to integrate The Light Clock with other devices.

The verdict

This is a great product for people passionate about open hardware, and who like to tinker, but it’s not yet mature enough for a mainstream product. With some small design tweaks and attention to detail in the codebase, it would be a strong standalone product, however it’s key value lies in integrating with other IoT devices to provide meaningful and valuable interactions.

I’m not sure what I’ll do with my Light Clock – I don’t have a wall mounted GPO or GPO in range where I could mount one, unless I find a longer-lead adaptor.

List of feedback for next iteration of this product

  • Include an adaptor that has a long lead to cater for the use case where someone doesn’t have a wall-mounted GPO available, or allow this to be selected during the purchase process.
  • Alternatively, the product could be redesigned to run on batteries (wasteful) or better, power over ethernet – but again the same design limitation remains – just as people are unlikely to have a wall mounted GPO available, they’re even less likely to have a wall mounted RJ45 ethernet port available. I suspect this will change as more and more people have networked devices on their wall though, so I don’t see it as a major limitation.
    Note to self: I need to include wall-mounted GPOs and RJ45 sockets in my home renovation master plan
  • Chris Carter’s The Light Clock source code is available on GitHub, but isn’t in its own project. There also aren’t any license files for the different repositories, so I’m not sure if I’m allowed to fork it or issue pull requests.
  • In the settings, you manually have to set whether it’s daylight savings time or not. Given that it uses NTP for keeping network time, I would have thought it would be possible to get it to automatically accommodate daylight savings time. Could be wrong here, NTP may not store that data, or it may be difficult to pick up the geolocation from the home wifi network.
  • Have separate brightness settings for minutes and hours
  • The web interface for adjusting The Light Clock settings would benefit from being responsively designed
  • Can haz API plzkthx 😀

 

Update: trying to mount it to the wall

So, I gave mounting it to the wall a go. This was a nightmare. The two circular openings to hang The Light Clock with are flush to the back of the clock, meaning that I couldn’t mount it with cuphooks  as the hooks were too curved to snag into the openings. I also tried with the Command re-usable big hooks, and tried to assemble them so I stuck them in the openings first, then tried to stick the entire lot to the wall, with no success. Definitely frustrating. Even if I had got it to mount on the wall, I would have still had a cord trailing down the wall, and the 1.5m power cord is still insufficient to reach the GPO.

Was anyone else able to mount this successfully? How did you do it?