[Weekly Drip 067.1] 3 Nerds in a Garage, /([Pp]+okemon)/, TypeScript|OCaml for React Native

image alt text

Alex Clemmer wrote one big Regex to beat Pokemon Blue. Alex dives into what a finite state machine is, which he defines as a collection of states with transitions between them. Alex used a FSM, a simple data model, a massively surprising AWS bill, and a not so simple algorithm to make the Regex. You should also check out the code. relevant

image alt text

Edward Kim discusses changes in his role as CTO of Gusto as the company grew from three nerds in a garage to a company with over 100 engineers. At first, as the only software engineer, Edward was coding 12-14 hours a day. As the company grew, coordinating multiple engineers became more difficult and required more structure. Now, Edward sits in meetings all day, which he says sucks. However, he still finds satisfaction in his impact in different ways.

California passed the California Consumer Privacy Act of 2018 and while business sites like Forbes have covered it, there is a curious lack of information for developers who will need to implement infrastructure changes to their applications. The bill seems to affect companies with 50k or more users, or companies who make the majority of their revenue from selling user data. Those companies will be required to have a page to opt out of selling user data, and delete data upon request. Unfortunately for businesses, the bill is self contradictory and poorly-written. Unfortunately for users, there are so many carve-outs for businesses that it’s effectively useless for controlling your personal data. ed - We’ll have to wait on legislation to see what the real requirements are -- [must be a California theme].

image alt text

Will switching to Vue be a good decision in two years? Peir Bover shows the good, the meh, and the ugly of Vue to help you decide. Peir suggests that Vue is very fast, lightweight, and has great documentation. However, the component boilerplate syntax will eventually leave you disappointed, and the architectural patterns in Vue are often unclear. Peir’s ultimate conclusion: “Vue certainly does the job it’s intended to do, and succeeds in areas that others fail, but today I don’t think Vue is objectively better or worse than the other options.” Curious what others think? Follow the Orange Site discussion. [con - it’s still JavaScript]

Maybe you aren’t ready to switch from React to a different FE framework. Amit Gilad suggests using TypeScript to Build Better React Applications. Amit shows how to get set up quickly and start testing stateless and stateful react components in TypeScript. [con - it’s still JavaScript]

The mobile team at Udacity has completely switched off React Native. The features that involved React Native are no longer being used, so they didn’t require replacement. Nate Ebel suggests React Native is quick and easy to get up and running, but ultimately too difficult to achieve platform consistent UI/UX. [pro - it’s not JavaScript]

image alt text

CallStack open-sourced Rebolt. Rebolt is a way to write React Native apps with Reason. The current plan is touch up v1, and then start working on v2 with more major announcements coming the fall. Checkout the GitHub Repo, read the docs or try out a starter app with Rebolt. [pro - it’s not JavaScript]

PoC || GTFO Issue 18 is out, and of course it’s fantastic. If you’re new to PoC || GTFO, it’s a quarterly mag dedicated to impressive hacks. The release is simultaneously valid as a PDF, ZIP, or HTML file. This issue includes remote exploits for a 20 year old networked game (TetriNET, which was amazing), SHA-1 collisions for PDFs, an Apple ][ demo, and more.

image alt text

Termtosvg will record a terminal session as an SVG.

If you like reading up on database internals, CrateDB wrote up how they made joins 23,000 times faster. It’s a deep-dive into implementing Block Hash Joins. In an earlier article they described the implementation of Hash Joins - this article goes into how they made it possible to perform joins when neither of the joined tables can fit into memory.

image alt text

Kyle Kingsbury created a site to explore consistency models. It’s part of the Jepsen site, and can help you learn the differences between Serializable and Linearizable, as well as every other named consistency model. There are a couple of papers that inspired the project, if you want even more reading.

image alt text

7Mind announces KaufmannEx - Elixir Microservices with Kafka and Avro. It’s a library for building highly parallel, efficient, Kafka backed services in Elixir. 7Mind built the library as they were migrating from a Rails-based monolith to Elixir-powered microservices, and they use Apache Avro to define message schemas. In the article, they describe the library as well as provide an example if you want to use it.

image alt text

In Adrian Colyer’s The Morning Paper last week, he covered How not to structure your database-backed web applications: a study of performance bugs in the wild. This paper is a study on problems introduced by over-reliance on ORMs. Rather than just focusing on listing the problems, the authors actually identified and fixed them in 12 mature Rails-based applications, and measured the performance impact. With generally fewer than five lines of code to fix each issue, they saw from 2x to 39x speedups. If you maintain a Rails app, you should probably read this one. [tl;dr we’re bad at writing efficient code]

image alt text

Tim Berners-Lee is leading a new project called Solid. Solid aims to give developers tools that allow true data ownership for users. Try Solid out or check it out on Github. Follow it up with some Solid Orange Site discussion. (Get it?)

The .NET framework has added a collection of new IO APIs called Pipelines. Marc Gravell explores the new APIs and how to use them in his blog. Pipelines allow for the easy processing for binary streaming data. The toolset has some great inclusions like buffer management, read/write access to data, threading, and backlog control.