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.

Because sometimes you want to know if they actually work.

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…

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

How can you use client-side libraries like Leaflet, on the server?

Get easy confidence on exactly what you’re committing.

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…

Why do we need better maps, and how does server-rendering help?

Expose request interception hooks
Don't try to automatically add an 'accept-encoding' header in the browser
Add request interception hooks
Simplify and tidy up after various fetch-mock updates
Expose request interception hooks
Suborigins: https://w3c.github.io/webappsec-suborigins/. Define separate origins (for same-origin policy) for different parts of your site, e.g. subdirectories.
Simplify and tidy up after various fetch-mock updates
Don't fail if no Promise global is available in the browser
Don't fail if no Promise global is available in the browser
Add request interception hooks
Allow ids in addition to names
Inferring a user's mobile pin by measuring the fluctuations in wifi signal caused by their hand movements: http://fermatslibrary.com/s/when-csi-meets-public-wifi-inferring-your-mobile-phone-password-via-wifi-signals.
Very excited to be talking at @TopconfAT in March on how #DevOps tools & techniques can help in open source. Anybod… https://twitter.com/i/web/status/830910683902521347
#TypeScript can now catch invalid typeof comparisons, like `typeof x === "array"`, and autocomplete valid values: https://github.com/Microsoft/TypeScript/pull/13791
Great writeup by @FiloSottile of @Cloudflare, chasing down a memory exposure vuln in TLS handshakes: https://blog.filippo.io/finding-ticketbleed/ #security
Is it a mistake? Am I doing something wrong? Or is it legitimately a bug in npm? Let's find out: https://github.com/npm/npm/issues/15710
Want to write Rust & JS & TypeScript? @resin_io are hiring! We're even in this week's @ThisWeekInRust: https://this-week-in-rust.org/blog/2017/02/07/this-week-in-rust-168/
Best part of software dev is debugging the inexplicable. Why does that happen??? Dig, dig, dig... bing, dig, dig, bing, dig, bingbingbing.
Who's in London and wants to hack on some real hardware? @resin_io are running #resinhack17 on the 11th of March: https://www.eventbrite.com/e/resinio-spring-hackathon-registration-31266678477
Allow ids in addition to names
Ouch: http://www.theregister.co.uk/2017/02/01/gitlab_data_loss/ Check your backups! And get more sleep.

Keys in JavaScript objects are always strings. The syntax doesn't require you to specify it, but yes, validateLocation here becomes a string key in both cases.

You can see this with:

var x = { a: 1 };
console.log(x['a']); // Prints 1, because 'a' the string is a valid key.

MDN has more details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Object_literals.

Object property names can be any string, including the empty string. If the property name would not be a valid JavaScript identifier or number, it must be enclosed in quotes. Property names that are not valid identifiers also cannot be accessed as a dot (.) property, but can be accessed and set with the array-like notation("[]").

Use the updated SDK
Pointed the @resin_io team at http://github.com/octobox/octobox yesterday to huge enthusiasm - managing GH repos just got way easier. Thanks @teabass!
Add desktop usage instructions to README