Friday, 3 August, 2018 UTC


Summary

We are giving away a copy of @pragmaticstudio’s course Developing With Elixir/OTP. Enter the contest to win.

Congrats to Mohamed, Alex, and Wheeler for winning a copy of Exploding Rails by Ryan Bigg. If you want to pick up a copy of your own, here’s a coupon for 50% off.
News
Mozilla has started a series on Introducing the Distributed Web (which they very much want us to call Dweb but I’ll die on that hill). In the introductory article, they point out that the web is facing critical internet health issues, seemingly intractable due to the centralization of power in the hands of a few large companies who have economic interests in not solving these problems. I view Decentralization and Distribution on the web as one of the only economically-realistic paths to removing the stranglehold large centralized tech companies have on open standards, so I’m watching the rest of the series with great interest. Mozilla could truly be a force for good in pushing distributed web technology.

Robert Carpenter’s piece ‘Keeping Your Secrets Hidden’ has some helpful tips when it comes to database credentials. Robert suggests, Don’t commit your database credentials to your git repository. He suggests using AWS Parameter Store instead.

If you’re in the market to buy a Mechanical Keyboard, Brian Mock has written a comically detailed intro to get you started. Pros: Feels good, customizable, pretty. Cons: Expensive, loud, typically are not wireless.

James Stanier answers the question When should I build something myself? in Not invented here, revisited. He details how his company decided it wasn’t crazy to build their own custom-purpose storage layer. Joel Spolsky advised back in 2001 that “If it’s a core business function – do it yourself, no matter what.” The tl;dr is to generally reuse existing solutions before reaching product-market fit, then be creative to scale them up afterwards, and only then pursue building a replacement in-house. Progress on your solution will be slow but you’ll be being truly innovative for your use cases, and that will provide an advantage.

What are the differences between Vue and React? Sunil Sandhu built the same app in both FE Frameworks to find out the differences and see them side by side. Each app passes data through a child component, has event listeners, and creates new items on a todo list. Read the article, and checkout the code for the Vue app and React app.

David Dias created a Front-End Performance Checklist. The checklist focuses on performance of HTML, CSS, Fonts, Images and other Front-End related fields.

George Brocklehurst showed how Thoughtbot used machine learning to recommend blog posts on the Giant Robots Blog. George gives a brief intro to Topic Modeling, and talks about why this approach might work better than just pairing articles by tags. Read on to see exactly how they did it.

TypeScript released version 3.0. Typescript was created by Microsoft, and defines itself as an extension of JavaScript that aims to bring static types to modern JavaScript. There are a lot of new features, but the features we are most excited about are project references, ‘--build mode’, controlling output structure, and richer tuple types.

Joe Berthelot made a very MEAN boilerplate, and a guide to go along with it. Jump straight to the boilerplate on GitHub if you have been using Angular 6 recently. For the rest of us… This is a great guide to freshen up; if you are feeling rusty with your MEAN stack knowledge. In other Angular news, the Ionic 4 Beta is live.

Robinhood Engineering announced and open-sourced Faust. Faust is a stream processing library for Python. What makes Faust different is that it doesn’t use a DSL, so if you are already stream processing it shouldn’t be too hard to integrate faust. Read the announcement, and look at the code.

Tom Gallacher suggests that kubernetes doesn’t have to be hard. In the first post of the series, you can learn all of the core concepts of kubernetes. There’s no reason to be scared of containers!

PurgeCSS is a node package to detect and remove unused CSS selectors. Luke Lowrey shares how he used it to remove a bootstrap-heavy site’s CSS size from 159KB to 60KB.


BlockGeeks wrote Understanding Vyper: The slick new Ethereum language. It’s a detailed article introducing the Vyper programming language that compiles down to EVM. Vyper is designed to massively simplify the process in order to create easier-to-understand Smart Contracts that are more transparent for all parties involved, and have fewer points of entry for an attack. It’s a Python-esque language and at a glance I believe I would like it more than I do Solidity.

Were you thinking to yourself I wish someone would write a detailed exposé on writing a Wayland compositor with wlroots? Because if so, wow are you in luck. In the article, Drew Devault goes into detail on how wayland shells work.

Firefox is testing Time Travel Debugging. It allows Firefox processes to record their behaviour, replay it later, and rewind to previous states. You can test it out in the latest version of Firefox Nightly for Mac. Here’s a video showing it off.

Uber Engineering open-sourced Fusion.js, which is a boilerplate for webapps that uses plugin-based architecture.

githooks provides auto-install for git hooks in your repository. It’s written in Go, and the author describes his motivation in the introductory blog post. You simply add a .githooks folder into your repo and organize your git hooks inside that, then you can share them easily with other projects. Check it out on GitHub. If you’re working with node apps, perhaps you’d prefer husky.

I’ve long maintained that everyone should read RFCs. Sometimes it can feel a bit daunting though. Mark Nottingham wrote How to read an RFC which outlines where to find them, how to make sure you know if they’re obsoleted by a future RFC, and more. Take some time to read an RFC relevant to you.

Dan Ghica asks If monads are the solution, what is the problem? He thinks we should update the introductory description of monads to “Monads in Haskell are used as a mechanism for scheduling evaluation, thus turning a language with a hard-to-predict evaluation strategy into a language with predictable, sequential, interactions. This makes it possible to add interactive computations such as state and input-output to the language, noting that benign (non-interactive) computations are already a part of the language, transparent to the type system.”

https://twitter.com/flagelbagel/status/1023661343143026688?s=19

by Matthew Ray