Cheaply calling your Granny abroad. Build your own tools for dental emergencies. Browsers are the best delivery platform. How far high roaming fees will push you. TL/DR: I built a browser phone app for cheap international calls. Read on for the backstory. It’s been a while since I wanted to build a product. Not just anything with which I’m happy once I have a draft online, but rather,…
A few words on some things I built or helped build. Both past and current. Cheap and simple international in-browser calls A conjunction of multiple things pushed me to build a little web-app: traveling and having a sudden need to reaching out to local businesses, being annoyed at roaming fees when I call my Granny abroad, learning that Skype will close down and, finally, being curious about…
–Phinally something! –Tools for phools –GitHub is the Microsoft of Git. Oh, wait. Ever since Evan Priestley announced Phabricator’s end of support in 2021, I’ve been keeping an eye open for alternatives1. At the time, GitHub was already pretty entrenched, and since then they seem to have dug in more2. If you miss the benefits of the arcanist+phabricator workflow, if you’re into…
the network is the new bottleneck —when does slow get too slow? —push it under the rug with a good connection! Note: I’m putting this post out just in case someone ends up in the same situation as I did. If you somehow reached this page because you are looking for an USB-C/thunderbolt dongle or adapter for speeds above 1Gbps on your mac, you can save yourself some time and directly buy the…
Lately I’v been toying with some sensors at home, for which data ends up in a VictoriaMetrics instance and gets displayed using Grafana dashboards. Setting this up was surprinsingly easy. At some point I wondered whether I could get the charts to be displayed on a Pimoroni e-ink display that I own. Again, surprisingly, I found that Grafana supposedly allows you to genereate a PNG for any…
What does it mean to build code? Why are dependency conflicts even a thing? What are build systems made of? Is there a perfect build-system? What are diamonds doing in here? You may have read what’s a build system, which I wrote before getting into illustrating certain of my ideas with simple diagrams. If you’re more of a visual person, this post is for you. Who Uses Build Systems,…
All time does not feel equal. Productivty at any cost: whose time are you living on? Impact is one helluva drug. My last job as an employee was essentially sorting through a perceivibly infinite stack of interesting and challenging problems, and picking whichever I liked most. Once a problem was tackled acceptably, I had the luxury of being allowed to easily move to the next one, with an…
It took a little while, but it eventually got ready: Phorge1, the rebranded successor of Phabricator was officially released. I mentioned already in my profession of faith and my notes on emulating the arcanist CLI behavior that I’ve long been a fan. Here are a few unstructured thoughts about the release. May 2024 Edit: if you’re working with GitHub and are missing arcanist, check out…
An abstract thinking test. Memories from high-school physics. Speed-running through programming mistakes and anti-patterns: again and again, each time somewhat faster. Remember from what is programming that a program is something that, very generally, takes som input and gives you an output. Today we’re going to take that idea further. I’ve had this post on my mind for a while now, and…
Does a job search need to be stressful? Can recruiters improve their game? Knowledge is power. Time is key. I’m on a sabbatical (read, without an employee status) since April. More on what I’m doing (and not) during this time might follow in another post. Here I’d like to focus on some interesting benefits my situation has had with respect to looking for a job, and I’ll…
Can you live from snacking? On the diminishing returns of the cookie mine. No doing it once and forgetting about it. This post is about the need for constantly keeping priorities and incentives in alignment, lest resources will increasingly be spend on the wrong things. This subject came up while I started thinking about what constitutes glue work and how it is an essential aspect of progressing…
When lambda’s just won’t cut it. Just see what sticks. Get them cheap domain names. Today’s question and related topic shall be summmed up thusly: How can I, as a seasoned non-javascript/typescript backend dev build services requiring persistent processes on the cheap without learning an entire new stack? Let’s Start With Why As mentioned here, I started toying around with…
Programming through the lense of phenomenology. Can you guess what a compiler is? Programs all the way down. Before we attempt to define what programming is, let us take a little detour and look at what a program is, to put you into the correct state of mind. We’re going to mostly re-use the definition of a program from what is a build system, the previous instalment of the What is series.
Same shape, same thing? Networking can be hard. Value, virtue and the benefits of simplicity. Ever got into a discussion comparing the vices and virtues of monolithic versus multi- or micro-service based approaches? They are such a lovely way to enliven a boring day at the office! Especially if held outside of any constraining context. For the present discussion, I’ll assume that a modicum…
Top down or bottom up? Behavior and emergence. Hard to cut corners. Fixing fools with tools. I used to have this rough model about how people and groups function: mindset (or whatever is in your head) influences the behavior you need or want, which itself will influence the tools you’ll chose for a given job or task. Just get the right thing into someone’s head and their behavior will…
On getting into things sideways. The path is the destination. Scratching an itch. Build engineering is one of these numerous things I landed in without really expecting it: To anyone interested in the topic, here’s the backstory to how I ended up co-owning the subject with another engineer at Open-Systems. Who knows, it might make something click for you. Where It Began The words build…
On morals, market timing and letting go. You can’t predict the future. Where’s my mouth at? For a long time, all things related to finance seemed morally tainted to me, until I started changing my mind around 2015: the in defence of finance and finance followups posts by Jakob Falkovich1 finalized the process. I mention them as they are interesting enough in their own right to warrant…
You still can’t predict the future. But it’s coming at you faster. Be your everyday strategist. Books & authors mentioned herein are: Title Author Loved It? Would read again? The Art of the Long View: Planning for the Future in an Uncertain World Peter Schwartz Yes Yes The Misbehavior of Markets: A Fractal View of Financial Turbulence Benoît Mandelbrot Yes Yes The Information: A…
I’ve had the pleasure to present the zio-prefetcher micro-library at zio-world 2022. Below is a quick summary, here are the slides and there’s the video (or watch it below). A Street-fighting Trick for Software Engineers While there are a few reasons to adopt pre-fetching, such as slow databases and unreliable third-party systems, the core argument of the presentation boils down to:…
Recently, after having asked on LinkedIn what subjects my contacts might be interested in for a blog post, I got this reply from a former co-worker: I would like to learn about your thoughts on our education system, what we could change to attract more kids into computer science and what are your inspirations for new thoughts once out of academia? This got me thinking about the path of my own…
Hi I’m Julien Perrochet, welcome to my personal blog. First time here? Get a sense of how & what I write about through one of these sample posts: The Inevitable Slide Towards Everything as Code What is Programming? The Art of the Long View, Applied to Software Express CV I earn a living by writing software, currently under the umbrella of my own consulting company, Open Tide. Formerly…
Ever wondered what a kafka partition is? Or why assigning them randomly might be a bad idea? Last October I presented at Spoud.io’s streaming meetups on the topic of Kafka Partitioning. The goal was to illustrate how the enterprise context can make simple things more challenging, the assorted counter-measures and lessons learnt from a migration project. If you’re into watching videos,…
I’ve relied on Phabricator and Arcanist for the last 8 years at all my places of employment, after having been introduced to these tools by an ex-Facebook employee. Hence, last year’s news that Phacility would stop developping phabricator where saddening to me. Reflecting on the particular development process that the arc+phab combo advocated for, it is clear that most of its benefits…
ZIO is a pretty good (not to say great!) framework. I can’t compete with Natan Silnitsky’s pitfalls to avoid, which are a good little tour for any newcommer to this subject. Having relied on it in the last year in a production setting, I can however add a few cents on the subject of zio-streams, a powerfull addendum to the ZIO library that, you guessed it, let’s you do stuff in a…
Properly securing services is no trivial task in the modern and glorious adventure that the daily life of a backend developper represents. An aspect that is often forgotten in this area is the benefit a strong type system can provide. As a reminder, a type system, coupled to a compiler, essentially lets you do (almost) mindless changes to your codebase and will tell you when you’re doing…
Considering code as code. Maven doesn’t suck that much: the rest does too. Setting the stage. Out of the blue, I sometimes need to improvise a mini explanation about build systems, usually as a pre-requirement for having a constructive discussion on topics that build on that notion. This is pretty much a personal definition: it’s likely incomplete. Also, it’s an attempt at…
About seven years have passed since I started writing software for a living. For no particular reason, I’ve recently been thinking about the parts of it I’ve both enjoyed and been successful at, as judged by my bosses and peers1. Software is not only about modeling the world, but it always involves some of it, at least when dealing with problems rooted in reality. This is also about a…
Let’s tackle the first obvious objections right away: I can’t possibly understand everything is possibly a true statement, and the wider the area encompassed by the definition of everything you deal with, the higher the probability that it will, indeed, be true. Scope Here, however, I’d like specifically not to include into everything things like the whole of science, philosophy,…
No, I did not change jobs. Compliance has just been taking more time than I wished for in the last year or so, and I’m reflecting on some things I’ve learnt in the process. Disclaimer If you came in the hope of finding a bashing post because naïve and compliance appear in it, sorry to disappoint. Formally complying with the loads of security requirements you may run into is neither a…
Sometimes I complain about fragmentation or silos in organizations. Counterparts are sometimes offended, usually when they feel I’m applying those qualifiers to their own structure. It then becomes hard for me to convey the underlying point: A certain degree of fragmentation is necessary. Too much of it is bad. That’s pretty meaningless if you don’t define fragmentation somehow,…
Here’s something past me used to think: I write Java code, I work in a single language, life is easy and forever great! Later it was replaced by Scala, and a pletora of others were added with small side projects comming with the inevitable consulting tasks. Yet, what took a good while to hit me, after leaving school, is that during my learning there had been a strong focus on programming…
This post is an introduction to a concept we’ll call Prefetching or Prefetcher Pattern1. In many circumstances, prefetching helps to easily achieve low latencies while enabling high availability for your services. Added on Apr.14th'22: this was also presented at ZIO World'22, see here for the slides and presentation. Background Once upon a time, I was working for a company that was running…
Long story short: today I was wondering about the question below. And yes, if you’re wondering, I’ve bought into ZIO (and I like it very much so far ;)) The Question How, using ZIO, can I create a Stream to which I can add some values at an arbitrary point in the future? The docs for Stream don’t make it obvious, but without too much digging one quickly runs into the answer:…
Let’s skip the whole commenting is important because… part. That’s been dealth with. Here I’d like to share some thoughts about what drives me to comment code (or not) and, consequently, how it shapes my view of other developers work. Driving Factors There are two basic things that drive my commenting in code: Write to my future self Write what I wish I had found My Future…
Lately I’m dealing with some RDBMS’s again. Nothing particularly worth talking about in itself, except that it involves dealing with timestamps and specialised date/time types. This suddenly brought back some very painful memories from a time where I was dealing with date/time and timestamp types in Postgres, and the hard and fast rules the team I worked on devised to make our life…
Modular maximalists vs. service maximalists. On humourous path dependent conflations. And how they lead to repository explosions. Here, a semi-authentic quote that definitely isn’t from me: I don’t like mono-repos, because they are bad for modularity and micro-services are better. The above encapsulates some common misconceptions, conflations and outright abusive (intelectual)…
Time-series (or timeseries. Or time series? Never figured it out…) are a semi-regular encounter at work. Chances are you’ve met some too! Be it IoT data, monitoring metrics, logs from services… everyone is talking about them, and some crazy people at Sqooba even want to convince you that everything is a time-series! At some point, when you need to work with such kind of data,…
I’m happy to announce that we’ve released a first open source version of kaeter: it’s a CLI tool that aims at helping in codebases and repositories that contain a lot of deployables or deliverables such as: jars packages docker containers binaries arbitrary tar balls … and anything that can be released It tries to do so in a sufficiently generic way to support most, if not…
Career advice isn’t what I was thinking about when bootstrapping this blog, but a conversation I overheard recently brought back older thoughts about this question: Should I accept a job offer from my employer after my very first internship there? This is an interesting topic that, I believe, is pondered far too rarely, or generally way after its relevance has faded. After checking the…
The folks at Scala.io kindly accepted my talk proposition about time-series for the edition of 2019 in Lyon, and they recently published the recordings. This was my first talk of this kind, and I’m extremely grateful for them to accept conference newbies like me: as a side-note, you should definitely try applying for conferences, it’s a very nice and rewarding experience. The talk in…
Before you dwelve in other articles, it’s important that I confess my faith: I am: a monorepo lover; a phabricator apologist; an arcanist workflow zealot. (Also, I’m fond of Evan Priestley’s humour, but that is probably irrelevant.) If this sounds heretic to you, feel free to leave. In any case, keep it in mind while browsing this site, especially if you’re about to hire…
Before I started writing software for a living (and before I really started working), I always considered myself as a reasonably decent person. By the time I ended my studies, my forehead had already been hit by a few (figurative) walls I ran into that showed me that, if I wasn’t careful and even if it wasn’t intentional, I could be mean to people and hurt them (it did involve…