Tim Perry

Senior software engineer at resin.io.
Creator of Build Focus, keen open-source contributor, and maintainer of Loglevel, Git‑Confirm and Server Components.

Federate your content just one more step, all by yourself, and making jumping ship a little less scary.

Mastodon has been quietly building popularity for a good few months now, but over the past 48 hours it’s really burst to life, leaping from 25,000 to 40,000+ users in no time at all.

This is an exciting good thing: we’ve been in desperate need of less centralized and walled social networks for a good long time now.

Moving on from Twitter though isn’t easy, as many of us have been there many years...

Because sometimes you want to know if they actually work.

Bash scripts are unloved and underappreciated. Many of us developers spend a lot of time on the command line, and a good shell script is an incredibly powerful thing to drop into & extend your existing workflow.

Shell scripting isn’t easy though. Many of the tools and techniques you might be used to aren’t nearly as effective or well-used on the command line. Testing is a good example: in most languages, there’s a clearly agreed basic a...

Promises Are So Passé at Codemotion Milan

CSS-only tabs are a fun topic, and :target is a delightfully elegant declarative approach, except for the bit where it doesn’t work. The #hash links involved jump you around the page by default, and disabling that jumping breaks :target in your CSS, due to poorly defined behaviour in the spec, and corresponding bugs in every browser.

Or so we thought. Turns out there is a way to make this work almost perfectly, despite these bugs, and get perfect CSS-only accessible linkable history-tracking tabs ...

Opening Open Source with DevOps at DevDay
Promises Are So Passé at Frontend Conference

Building a Server-Rendered Map Component

Part 2: How to use client-side libraries like Leaflet, in Node.

As discussed in Part One: Why?, it’d be really useful to be able to take an interesting UI component like a map, and pre-render it on the server as a web component, using Server Components.

We don’t want to do the hard mapping ourselves though. Really, we’d like this to be just as easy as building a client-side UI component. We’d like to use a shiny mapping library, like Leaflet, to give us all ...

Get easy confidence on exactly what you’re committing.

Git Confirm is a git hook, which asks you to confirm when you commit a change that includes additions from a (configurable) list of risky matches. Think ‘TODO’, ‘FIXME’, ‘@Ignore’, ‘describe.skip/it.skip’ and ‘describe.only/it.only’. You can drop Git Confirm in, and effortlessly stop yourself ever committing anything like this by accident.

TODO is the easiest example. It’s really useful to sprinkle TODO comments in your code as you work, to ma...

You’ve written an application deployed using Dokku, and you’ve got it all up and running and great. You’ve heard a lot about why HTTPS is important nowadays, especially the SEO and performance benefits, and you’d like to add all that, with minimal cost and hassle. Let’s get right on that.

Let’s Encrypt is a new certificate authority (an organisation that issues the certificates you need to host an HTTPS site), which provides certificates to sites entirely for free, by totally automating the syste...

Travis now runs builds against commits on master, in addition to PRs
We at @resin_io are looking for a frontend dev: https://resin.workable.com/j/F8D86329DB. Come join us! Underrepresented people extr… https://twitter.com/i/web/status/857571408611860480
Thanks for having me @Code_Europe! My hardware with JS and @resin_io slides are up at https://goo.gl/ZL6ROV, enjoy 🙂. #CodeEurope #omgkrk
On my way to Krakow for @Code_Europe! It's a little hard to practice a hardware talk on a plane, but I'll do my best... #codeeurope #omgkrk
New repo: pimterry/metawear-repl
New repo: pimterry/arduino-demos

This was a red herring: the actual issue for me here was that some existing frame dropping logic meant that I wasn't passing Broadway the first few frames in the stream, and it was failing to render. Replaying the SPS and PPS frames for all new connections and making sure they're never dropped has fixed the issue nicely.

I also did work out what these bytes are though, which helped, and may be useful for others for reference:

Hex Binary NAL type Meaning 0x65 = 11 00101 = type 5 Coded slice of an ...
New repo: pimterry/raspivid-stream
Awesome! Etcher.io is now the official standard way to write SD images for the #raspberrypi: https://www.raspberrypi.org/documentation/installation/installing-images/README.md
Clarify ResinOS 2.0 dbus migration instructions
🎺 Surprise: It's UK election time! 🎺 This is going to be a huge mess.
Drop unnecessary direct pinejs-client-dep dependency
Sort OS versions taking their rev into account if present
Support OS 2 uuids
Include Etcher instructions as default for image writing
Automatically publish tagged master commits to npm
Deprecate this package
Add Etcher as the cross-platform default for specific image installation
This is comfortably the most beautiful and delightful story I've ever read about a programming interview: https://aphyr.com/posts/341-hexing-the-technical-interview
Love the power of open-source-by-default at @resin_io. For example, there's now a @RustLang lib for NetworkManager: https://github.com/resin-io-modules/network_manager.
I have the perfect talk intro for my hardware+JS talk: walk on, and live code a slide clicker from scratch, use it to do the talk. Yesssss 😆
New repo: pimterry/slide-clicker
Remove resin token and drop Node <4 support
Update the readme, since imageMakerUrl is now also used in browsers
Youch. Android device takeover + iOS RCE with just wifi proximity, by exploiting Broadcom wifi SoC: https://googleprojectzero.blogspot.com.es/2017/04/over-air-exploiting-broadcoms-wi-fi_4.html #infosec
Allow overriding the mixpanel api host
Tiny readme tweak
Want to come join #Mastodon, but no idea which instance to join? https://maly.io/@way has you covered: http://tooter.today/