Blog of Rob Galanakis (@robgalanakis)

server/client

Dynamic JavaScript and React Configuration

Most of the frontends we build at Lithic are written in React. Normally we deploy them as static apps in Netlify. This will write environment variables from process.env directly into the compiled JavaScript. Sometimes, though, we need to dynamically configure the applications based on runtime, not build time, environment...

Read more

Don’t bother with migrations for performance-based indices

I used to write database migrations for performance-based indices, like adding an index to a foreign key column. I don’t do it anymore, and do not recommend the practice. Instead, write your SQL against a production-like database (same schema and data), and run it against production directly as part...

Read more

Please reuse your database servers

I’ve been part of a number of “monolith to microservice” transitions and something that I’ve seen a few times is engineering orgs creating separate database servers per-team or even per-service. Please don’t do this. Please start with a production server, and an “everything else” server, until you outgrow one...

Read more

Failed assertions and async functions

Armin Ronacher asked in a tweet: If you want to signal a bad calll from an async function (failed assertion). Do you … — Armin Ronacher (@mitsuhiko) February 7, 2018 I explored this quite a bit working in JavaScript on the client and feel like I have a good...

Read more

Modern computing is fast

There was a bug I fixed that I was reminded of recently. It’s was small bug – a one line fix – and it didn’t take too long to track down, but it left an impression as to how fast modern computing is. We had some code in an...

Read more

Linting pull requests

A couple weeks ago on Twitter, I joked about adding a way to bypass Cozy’s Pull Request linter by including #YOLO in the pull request description. It spawned an interesting discussion and a few people asked for more details about how the linter works. Some devs at @CozyCo said...

Read more

We’re not so different, you and I

Ben Sandofsky wrote a post about why QA departments are still necessary, specifically with regards to mobile app development. He makes a good point: mobile apps create a distribution bottleneck that makes very rapid iteration impossible. I agree, and this is a good angle to think about. I would...

Read more

Deploying a C# app through pip

“If we bundle up this C# application inside of a Python package archive we can deploy it through our internal CheeseShop server with very little work.” That sentence got me a lot of WTF’s and resulted in one of the worst abuses of any system I’ve ever committed. We...

Read more

goless- Golang semantics in Python

The goless library https://github.com/rgalanakis/goless provides Go programming language semantics built on top of Stackless Python or gevent.* Here is a Go example using channels and Select converted to goless: c1 = goless.chan() c2 = goless.chan() def func1(): time.sleep(1) c1.send('one') goless.go(func1) def func2(): time.sleep(2) c2.send('two') goless.go(func2) for i in range(2):...

Read more

Why I love blogging

I started to write a post about how I missed multithreading and speed going from C# to Python. I ended up realizing the service we built which inspired the post was poorly designed and took far more effort than it should have. The speed and multithreading of C# made...

Read more

1 2 3