Rediscovering JavaScript: Master ES6, ES7, and ES8 now in print and shipping

Programming Elixir ≥ 1.6, in print, plus free offers

Getting Clojure: Build Your Functional Skills One Idea at a Time, in print

Modern Vim: Craft Your Development Environment with Vim 8 and Neovim, in print; May PragPub Magazine now available

Modern Vim: Craft Your Development Environment with Vim 8 and Neovim, in print; May PragPub Magazine now available

Xcode Treasures: Master the Tools to Design, Build, and Distribute Great Apps in beta

Xcode Treasures: Master the Tools to Design, Build, and Distribute Great Apps in beta

Simplifying JavaScript: Writing Modern JavaScript with ES5, ES6, and Beyond in print

Simplifying JavaScript: Writing Modern JavaScript with ES5, ES6, and Beyond in print

Data retention with the Serverless Framework, DynamoDB, and Go

At Honeybadger we have standard retention periods for data from which our customers can choose. Based on which subscription plan they choose, we’ll store their error data up to 180 days. Some customers, though, need to have a custom retention period. Due to compliance or other reasons, they may want to have enforce a data retention period of 30 days even though they subscribe to a plan that offers a longer retention period. We allow our customers to configure this custom retention period on a per-project basis, and we then delete each error notification based on the schedule that they have set. Since we store customer error data on S3, we need to keep track of every S3 object we create and when it should be expired so that we can delete it at the right time. This blog post describes how we use S3, DynamoDB, Lambda, and the Serverless Continue reading “Data retention with the Serverless Framework, DynamoDB, and Go”

Docker for Rails Developers: Build, Ship, and Run Your Applications Everywhere, in beta

Craft GraphQL APIs in Elixir with Absinthe: Flexible, Robust Services for Queries, Mutations, and Subscriptions, in print

Journey to ElixirDaze 2018

Last October I discovered an interesting Github issue, Elixir-Lang #6643. It was opened José Valim, the creator of Elixir.

Here's part of the introduction to this issue:

Elixir master now includes a code formatter that automatically formats your code according to a consistent style.

We want to convert Elixir's codebase to use the formatter on all files. We understand this means a lot of code churn now but, on the positive side, it means we can automatically enforce and/or format future contributions, making it easier for everyone to contribute to Elixir.1

This issue set off a massive refactoring project to get Elixir conforming with its new formatter. Today, new pull requests to Elixir must pass through the formatter without requiring changes. I think this will have a ripple effect on every Elixir project in production.

While closing this issue, José provided the following statistics on the refactor:

Adopting Elixir: From Concept to Production, in print

Programming Clojure, Third Edition, in print; Free iOS course

When To Use Redux

Have you had a conversation about Redux recently that has left you wondering — despite all of its praise and the assured recommendations — if you made a big mistake when you typed the words, yarn add redux?

Jani is being a bit facetious here. But if you’ve been following along on twitter, there has been a lot of discussion about redux. The crux of the conversation is aimed at whether most apps even call for the use of redux and consequently if we, as developers, are using it when we don’t need it.

Creating A Paper Wallet for Your CryptoCurrency with MyEtherWallet

When investing in cryptocurrency, security is a huge concern. In 2014, a famous online bitcoin exchange, Mt.Gox, was the target of a hack that saw 850,000 bitcoins stolen. For many investors, this was a wake-up call. Keeping your money in an online exchange is not a smart move. The best way to protect your investment is to be proactive. There are already many strategies for storing cryptocurrency, and one of the most secure ways is cold storage. Cold storage involves generating and storing your coins private keys offline. While it might not be ideal for you to keep all of your cryptocurrency stored offline, this option ultimately provides the best security.

Like many others, I too had kept my investments on online exchanges (mainly for convenience). After a few months of investing and seeing some positive gains, I decided it was finally time to move my assets off of

MEW - Create Wallet Password
MEW - Save KeyStore File
MEW - Print Paper Wallet
MEW - Wallet Log In

Continue reading “Creating A Paper Wallet for Your CryptoCurrency with MyEtherWallet”

Books I Liked in 2017, All In One Part

2017 Books A Plenty

At long last, the 2017 books that made me happy/recommendations post. Did you miss me?

Past years:

This year, I’m doing it all in one post, because if you are going to write 4000 words it’s best to get it all in at once, that’s just science.

The rules are:

  • These are all books I read in 2017
  • That I liked
  • The books are organized into arbitrary groups, because there were weird coincidences, in that I read a number of say, unusual time-travel books this year.
  • Within each category, books are alphabetical by title.
  • The order of the categories is arbitrary
  • Links go to Amazon Kindle version.

For each book this year, I tried to add a Recommended If You Like.

Weird Portal Fantasies

For some reason, I read a lot of revisionist

Continue reading “Books I Liked in 2017, All In One Part”

Fun with Views and CTEs

A view is a stored query the results of which can be treated like a table. Note that it is the query that is saved and not the results of the query. Each time you use a view, its associated query is executed.

A related concept is that of the common table expression or CTE. A CTE can be thought of as a short-lived view; you can only use it within the query in which it appears (you can refer to it multiple times, however).

Let's say that you're the SQL-savvy owner of a store that sells kits for building robots. On your site, customers are guided through the process of selecting all of the components needed to build a quadrupedal robot, i.e. getting the right motors, microcontrollers, sensors, batteries, grippers, etc.

Robots have lots of component parts and you have to make sure that the correct components for

alt text
customers
alt text
purchases
alt text
component_purchases
query1
query_4
tree graph
working_table_1
inner_join_1
working_table_2
inner_join_2
working_table_3
inner_join_3
working_table_4
inner_join_4
working_table_5
subcomponents
purchases_made
pm_pc_join

Continue reading “Fun with Views and CTEs”

Forge Your Future with Open Source; Domain Modeling Made Functional in print