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”
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:
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?
Just got home from the React thought leader meeting. Bad news, we apparently all hate Redux now so please start rewriting your app as soon as convenient, thanks
— Jani Eväkallio (@jevakallio) February 12, 2018
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.
Realization: Putting Redux in our company framework by default was a mistake.
1 People connect *every* component.
2 People embed Redux in "reusable" components.
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
2017 Books A Plenty
At long last, the 2017 books that made me happy/recommendations post. Did you miss me?
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
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
Binary search might be the most well-known search algorithm out there. If you went to school for computer science, you've probably heard the fundamentals of binary search hundreds of times. Chances are, you've been asked about binary search while interviewing for a development job – and for good reason. Binary search is a powerful algorithm. Compared to a linear search it performs very well, and the performance benefit is especially noticeable as the data set grows. A few weeks ago, I got the chance to use it in a live application, but it's been a while since I've worked with this algorithm, so I had to brush up on the implementation.
My pair and I were working on a class in one of our client's applications. This class used a lot of
finds and other linear search-esque code to check for items in sorted collections. Being the
The following is the story of how Randall Degges created a simple API to solve the common problem of external IP address lookup and how he scaled it from zero to over 10 thousand requests per second (30B/month!) using Node.js and Go on Heroku.
Several years ago I created a free web service, ipify. It is a highly scalable IP address lookup service. When you make a GET request against it, it returns your public-facing IP address. Try it out yourself!
I created ipify because, at the time, I was building complex infrastructure management software and needed to dynamically discover the public IP address of some cloud instances without using any management APIs.
When I searched online for freely
Today, we’re excited to announce a major update to Heroku Postgres with a new lineup of production plans. These plans are the first component of Heroku Postgres PGX, the next generation of our managed Postgres solution.
PGX Plans introduce larger database sizes, more generous resource allocations, and a broader set of options to suit your needs and to help your applications scale more smoothly. PGX Plans are generally available as of today, and all new Postgres databases will be created on our latest generation of Postgres infrastructure. Underneath the hood, we've upgraded the CPU, memory, storage, and networking aspects to ensure your Postgres database is running smoothly at scale.
To take a look at which of your Heroku Postgres databases can take advantage of PGX Plans now and how, go to data.heroku.com.
Our new lineup of 8 plan levels offers gradual
Since I’m coming pretty late to the #Rust2018 party, most of the things I wanted to say have already been said!
Ashley’s kick-off post was kind of a meta-#Rust2018 for me, calling for us to experiment with new ways to get community feedback in Rust. I personally really enjoyed all of the energy in #Rust2018, and hope that we continue to experiment on this front.
I really loved Julia’s post, both for enumerating so many ways that Rust has become easier to use since last year, but also for showing that marketing Rust to people who have never written low-level code before need not conflict with marketing Rust to people who want a better C++ (and other audiences too!).
I liked both Steve’s post and Nick’s post for showing that we’re already on track to have a great 2018, as long as we stay focused on shipping and Continue reading “#Rust2018 – Exploring New Contribution and Feedback Models”