Hackweek 2020

Because we can

One of our great pleasures and privileges at Thinkst is that every year we set aside a full week for pure hacking/building. The goals for our "Hackweek" are straightforward: build stuff while learning new things. Last week was the 2020 Hackweek work-from-home edition, and this post is a report on how it went. 

Now in its the fourth year, our Hackweek has come to serve as a kind of a capstone to our year, and folks start thinking about their projects months in advance. The previous editions produced some truly awesome projects, and topping would be was a serious challenge. Without question this has been our finest so far.

We run Hackweek for multiple reasons. We're a company of tinkerers and builders, and dedicating time towards scratching that itch just feels right to us. Of course, there's sometimes downstream benefits to the Thinkst, either in terms of the projects folks worked on, or skills they've picked up. (Replacing our Redmine with Phabricator was a project in Hackweek '17 that brought us much value and is still in use.) But that's a pleasant side-effect, and not the objective. A key underpinning to Hackweek is that the projects don't need to be related to Canary or other work projects. When we say "build something", it can literally be anything and some folks steered far from tech (as we'll see shortly). We want folks to continually learn, and this sets the tone. While we provide training through the year for topics in our day-to-day work, Hackweek gives the team a chance to stretch themselves in directions they hadn't previously considered.

Hackweek format

The structure of the Hackweek is that on Monday we kick-off, and on Friday afternoon everyone demos their project. Following that, we vote on projects in three separate categories:

  • Most Joyful
  • Most Useful
  • Most Hacky

The progression of Hackweek over the years tracks well with the team growth we've seen at Thinkst. In first few editions, an afternoon was more than sufficient for all the demos, but we had 20 projects this year and that's tricky to squeeze in. It's apparent that a rethink is needed for the next edition. Nice problems to have!

The three winning projects

The prizes are secondary to the aim of the week, and mostly provide a fun incentive for folks to aim in different directions. Here's a run through of the winning projects, plus a report on the others below.

Most Hacky

Jay and Max decided that their years of gaming experience weren't enough of an edge when playing Counter-Strike: Global Offensive. To make up the gap, they created a series of game hacks for CS:GO. Their hacks run as a separate program which accesses the CS:GO game's memory, and changes values on the fly. Hit a key shortcut, and other players become visible through the walls. Hit another shortcut and the crosshairs snap onto the nearest enemy's head to get a guaranteed headshot every time, even taking into account recoil patterns. Yet another shortcut, and enemies show up on your game radar, so you know wherever they are. No fair! 

See-through walls? Sure, why not.

Most Joyful

Louise taught herself how to crochet this week, starting from scratch. Crocheting has a bunch of technical details in how the knots are tied, the different patterns, and putting them together to produce articles. But she didn't just limit herself to 2D articles, she went all out and produced three separate 3D birds, plus a crocheted Canary device. To top it off, she took them on a hike near Stonehenge for this final shot:

Early morning birds

Expect to see more from the "Inyarnis" in our weekly mails.

Most Useful

Sherif decided to hit a problem near and dear to his heart. We use Salesforce as a CRM, and for the Customer Support and Success teams, switching to Salesforce to lookup details is a common daily task. But there's friction in performing this, and he wanted to file down that edge. Slack is our internal comms tool of choice, and Sherif built a Slackbot which interfaces to Salesforce to assist with querying customer details from directly within Slack. The Support and Success teams are thrilled!

Slack command to quickly get an overview of a customer

Great projects

Here's a rundown of the other projects.

Anna created CN-D, a machine to forge signatures (or draw anything in pen). She built a CNC machine, replaced the drill with a pen holder, and figured a workflow to take SVGs to CNC files. With an SVG of someone's signature or a scan of a written page, she could sign documents as them 🤦‍♀️. She also had it draw our logo in pen. It's an amazing project to hit in one week.

Haroon writes "remotely"

Nick mostly stepped away from tech, and built a wooden arcade cabinet called Birdbox to house a monitor, joysticks, and a RetroPie. However he had one tech addition: a Flappy Bird clone with a Canary theme and Haroon's voice!

The logo rounds it off beautifully

Bradley revisited a topic we've looked at previously: how to automatically grab a fingerprint of a production server and produce a Canary configuration which mimics that server. Mimic Rebooted sets up a Canary to imitate a server already live in your environment, to save having to manually configure each detail.

Generating a Canary configuration by scanning a production machine

Shereen repaired and repurposed a toy crane to add a remote control function to the previous wired design. Using MicroPython running on two Microbits, she had one drive the crane motors, and the other serve as the remote control, with wireless comms between the two.

Parts and the finished crane

Lissa put together a Raspberry-Pi gaming console, her first foray into a Hackweek project and one guaranteed to bring hours of fun.

Retro-gaming is best gaming

Matt also took a crack at a carpentry project by building an infinity table. He added a distinctly tech twist by using a bunch of individually addressable LED's (as opposed to a single LED strip), then wrote a Python-based webserver to set the LED colours! 

This demo had the viewers clamouring for Shopify links

Todor re-implemented the fundamental Canary functionality by imagining what a "home-use" Canary might look like, where the hardware platform is super lightweight (ESP32), and the bird talks directly to Firebase. He then wrote a mobile apps for receiving the Canary alerts, to build a PoC for a new kind of Canary.

Alerts direct from bird to phone

Mike designed a 3-in-1 projector from phones and tablets. It literally had three separate projection lenses, which is some kind of record for projectors. He could wirelessly stream content to the three separate lenses.

I see your one projector lens, and raise you three! In different directions!

Benjamin solved a problem which had previously vexed him (and me): some models of Suburus don't have a temperature gauge but only display a warning light when the oil temperature is too high. So he built a device to plug in to his car's OBD-II port, grab the temperature measurement, and stream the data via Bluetooth to an app on his phone.

Homemade temperature monitor

Az leveraged the T2 chip on his Mac to develop a custom tool for cryptographically signing things with a single tap on the TouchID pad. He targeted two separate actions: the firmware images we produce, and the code we commit.

Code signing and verification in commit logs

Deena also attacked Salesforce, and setup a flow so that when new Customer are created in Salesforce, we're alerted in Slack. This solves a particular problem we see, which is that as new customers are signed up, parts of our org are simply unaware of the flow of new customers. This gives everyone a chance to see who the new logos in our customer stable are.

New customers in Salesforce show up in Slack

Yusuf learned the lesson from last year, and set his sights on a manageable problem this time around. However he finished sooner than expected so kept going on other projects :) He built a custom Canary link shortener usable from Slack (expect to see this in Customer mails soon), a voice note app for Slack, and an in-browser video-to-GIF conversion tool leveraging ffmpeg and Wasm.

CanaryLinker: create short URLs in Slack

CanaryCaster: send voice notes in Slack

CanaryGifyfier: Convert videos to GIFs directly in-browser

Caleb added a new platform to the six we already support for Canary, by producing a Canary that runs on Open Stack. This is still early days, but if the interest is there we can consider adding Open Stack as a supported platform.

Virtual Canary running on Open Stack

Keagan built and published a Chrome extension called Re-chord to assist folks in their music practise. It tracks links for music pieces, and will recall them when you want to practise at a later date.

Tracking your music practise links with Re-chord

Riaan made a device for discreetly defacing public displays. A Pi-Zero is plugged into the HDMI port of any compatible display. It then polls a public DNS record, and when the trigger value is returned in the DNS response, the Pi-Zero switches the HDMI input to the Pi and plays a video, before switching back to the original display input. He tested on his family, and suitably freaked everyone!

Surprise Rick!

Haroon built love.pl (a golang tool without go in its name) and turned his constrained attention to needlework, and produced pillows with the Canary logo on them as a pleasing backdrop for his Zoom calls. Keep an eye out for them next time you vidchat with him!

So tasteful

Lastly, I delved into Terraform, Packer, and Saltstack to automated a particular environment we've pondered for a little while.

Wrapping up

Hackweek was a great success, and as a yardstick for our growth it demonstrated some of the logistics we need to improve on. But that's a key part of why we do it: growth in Thinkst is dependent on growth in Thinksters, and a learning org is what we are. Onwards to next year!


Check out some of our other popular posts:

A Steve Jobs masterclass (from a decade ago)

New features aren't Solved Problems

Canarytokens: Token Anything, Anywhere