-
The REPL: Issue 48 - July 2018
Web Architecture 101
The world-wide web is built on top of many abstractions. That is what makes it powerful. As a user, we are typically just concerned with a browser and a “site”. When I first started programming for the web, I learned about HTTP, request and responses. Sometimes, one needs to dig deeper into common architecture patterns. In this article, Jonathan Fulton covers some of that architecture: DNS, load balancers, web and application servers, databases, caching. I found it to be a very useful reference. Note: As is always the case with computers, there are more levels of abstraction to learn: TCP, IP, UDP, TLS, etc.
Scaling the GitLab database
Yorick Peterse discusses some of the scaling issues that GitLab went through and how they resolved them. I find these type of articles very enlightening. Both for the solution they chose and for those that they discarded: Your particular scaling problem might look different, making one of those solutions more attractive.
Queries on Rails - Showcasing Active Record and Arel
Pedro Rolo discusses how to go beyond basic queries with
ActiveRecord
andArel
. I personally use techniques similar to the ones outlined in the article often. Caution:Arel
is considered private API by Rails maintainers. If you decide to use it, there might be some work needed to ensure your code works when upgrading Rails. I’ve never had a significant problem with that, provided that I have good tests around complex queries. I much preferArel
to using long and complicatedsql
fragments as strings. I believe those are even more brittle. -
On Remote Work
A few months ago I changed jobs. My previous job was at a large software company, with offices worldwide. My day-to-day activities routinely included conference calls with people in the Americas, Europe and Asia. For the most part, these were coordinations meetings. My most meaningful collaborations were with the people sitting around me: The members of my team.
-
The REPL: Issue 47 - June 2018
How to GraphQL
GraphQL is an alternative to REST that aims to be more efficient than traditional APIs and allow fast development, both for the server and its clients. This is a fantastic tutorial introduction and hands-on tutorial, with just enough code samples to get a sense of what it is like to write back-end or front-end code in GraphQL. The content is presented in both written and video form. Nice touch.
Arel with Wharel
ActiveRecord
, the ORM that ships with Rails, is an implementation of the ActiveRecord pattern. It’s elegant API is one of the things that makes getting started with Rails very convenient. Expressions likeuser.posts.where(published: true)
are readable and expressive. When trying to write more complex queries it falls short. In those cases, I usually fall back toArel
, the relational algebra library that Rails uses under the hood. While technically, it’s considered by the Rails core team to be private API, it’s usually very stable. Unfortunately,Arel
has a more verbose API.Wharel
attempts to fix that. LikeSqueel
before it, it adds a bit of syntactic-sugar to make interacting withArel
more expressive. It accomplishes this with a minimum amount of code, making it more attractive to use. The author, Chris Salzberg, explains in his blog post the motivation and code behind the library. I look forward to using it.The impact of the ‘open’ workspace on human collaboration
The findings presented in this paper are that open-office workspaces actually reduce the number of face-to-face interactions and increase the number of electronic interactions. The belief that this is not the case has always baffled me. In crowded spaces, like a big-city subway, stadium lines, or elevators, people tend to avoid eye contact, protect the little personal space that they have, and generally keep to themselves. It’s a defense mechanism. It’s not that people are unfriendly – it’s just that when you clearly don’t have any personal space, you don’t want to give up your mental space! Clearly, this applies to workspaces as well. If I am sitting with people typing in their keyboard all around me in close proximity, you bet I am going to have headphones on and keep my eyes pointing at my keyboard.
-
The REPL: Issue 46 - May 2018
The Economics of Writing a Technical Book
I’ve often wondered what it would be like to be a published author. Writing a book is a time consuming. Is it worth it? In this post, Justin Garrison covers in a lot of detail the economics of writing a book for O’Reilly Media. I found it very valuable, as discussions about how much money some makes are hard to come by. The bottom line: After a few months of the book being on sale, he has made ~$23/hour invested. The number would probably go up, since the number of hours it took is not going to change, but the number of sales keeps increasing. My understanding is that that flatten out rapidly after release, though. Food for thought!
GDPR Hysteria
hysteria | həˈstirēə, həˈsterēə | noun exaggerated or uncontrollable emotion or excitement, especially among a group of people
Last year, while working for my previous employer, I spent about half my time working on GDPR compliance. The work involved adding features for data export, data deletion for former customers, notifications around both, etc. The General Data Protection Regulation is a big deal for any company doing business in Europe, even if not located or incorporated there. As Jacques Mattheij points out – in a lot of detail – in the tech blogosphere there is a lot of hysteria around what it means. The post does a good job of explaining what it means and how it’s often misunderstood. Don’t miss the follow-up, with actionable advise on GDPR.
What is a Blockchain
I am not bullish on crypto-currencies. Actually, if I trusted that there was a reliable way to bet against them, I would. But what is a blockchain anyway? David Bryant Copeland starts from the ledger and builds his way up to explaining how it all ties together and what problem it solves. The article’s subtitle says it all: A novel solution to a problem no one has.
-
The REPL: Issue 45 - April 2018
the Origins of Opera and the Future of Programming
Jessica Kerr writes eloquently about how some groups of people in music, painting, science, and programming produce extraordinary results, like the invention of a novel genre of music. She goes deep into the theory behind it and introduces the concept of symmathesy:
Nora Bateson points out that there’s more to a living system than parts and interrelations: the parts aren’t constant. We grow and learn within the system, so that the parts don’t stay the same and the interrelationships don’t stay the same. She gave a word to this, something deeper than any mechanical or model-able system, a learning system composed of learning parts: symmathesy.
I am still processing what this all means. My immediate takeaway is that some teams have dynamics in which positive outcomes are amplified to form a virtuous cycle. I believe this is equivalent to what people mean by “synergy”.
How I Write SQL, Part 1: Naming Conventions
This post covers a lot of detail on the naming conventions Sehrope Sarkuni prefers when writing SQL, including the rationale behind for each convention. I agree with most of the conventions. In reality, I am more interested in my team having conventions in the first place.
How To Index Your Database
The slides for Baron Schwartz’s presentation at PostgresConf US 2018 cover a lot of detail on what indexes are, how databases use them and in the uses cases where indexes help: Read less data, read data in bulk, and read data presorted. This is one of those slide decks that contains enough information and context without needing to see the talk – not available on video at the time of writing.