legojoey17's comments

legojoey17 | 1 month ago | on: CLI agents make self-hosting on a home server easier and fun

Cool, I'll definitely take a look! I do have a preference for container-oriented setups and do have an elaborate set of plumbing on kuberenetes at the moment.

That being said, I procrastinated on getting postgres backups working and ended up causing self-inflicted corruption, so it is nice to see you've got that setup and have thought of pretty much everything!

legojoey17 | 1 month ago | on: We put Claude Code in Rollercoaster Tycoon

Yea, it does so this would likely have been to be a `--yolo` (I don't care, let me `rm -rf /`). I've found even with the "workspace write" mode and no additional writable directories I can't do git operations without approval so it seems to exclude `.git` by default.

legojoey17 | 1 month ago | on: CLI agents make self-hosting on a home server easier and fun

I just got around to a fresh NixOS install and I couldn't be happier as I've been able to do practically everything via Codex while keeping things concise and documented (given it's nix, not a bunch of commands of the past).

I recently had a bunch of breakages and needed to port a setup - I had a complicated k3s container in proxmox setup but needed it in a VM to fix various disk mounts (I hacked on ZFS mounts, and was swapping it all for longhorn)

As is expected, life happens and I stopped having time for anything so the homelab was out of commission. I probably would still be sitting on my broken lab given a lack of time.

legojoey17 | 2 years ago | on: Ledger: Stripe's system for tracking and validating money movement

Not the author, but I worked on the Ledger team at Stripe for 5 years.

Clearing is definitely a key part and a large amount of signal can be derived simply through the zero-balance assertion. To give you some more detailed examples of that:

1. System A bookkeeps +$11 and system B bookkeeps -$10 against the same account, where this is representative of A handing off responsibilities to B during some multi-step process and something was off. In practice, this might look like a Charge being handed off from a product team to the team integrating with card networks for submission. There's plenty of reasons this could have gone awry internally from either team like incorrect fee handling, incorrect FX handling, etc.

2. Pipelines reconciling data may bookkeep $11 and -$10 against the same account, where the two events come from different data sources. This could be a difference in Stripe data vs partner reporting or even a difference between two reports from the same partner (e.g. a transaction-level report against a aggregate we've estimated attributions for). Again, there's plenty of reasons this goes wrong like an error on our side, unexpected partner behaviour, actual partner error, or our incorrect interpretation of a complex partner behaviour.

This approach is general in that we don't need to be concerned about what the actual data models or system interactions are to effectively apply monitoring to everything. Another element is to not create a lot of noise on for non-zero balances while they're in an interim state. Some amount of modelling happens to establish an expected time to clear for accounts, and with the right granularity, like "Charges from product teams to integrating teams usually take 10 minutes", "partner report A and B arrive and are processed 1 day apart", or "we receive money from partner A about 2 days after submitting".

In the end, we're trying to boil down every other Stripe system and partner integrations into a Stripe-wide set of discrete states, transitions, and with dollar value they're for. Teams may have their own system diagrams but they'll also have a parallel Ledger event diagram if they handle money which takes consideration to get right (e.g. failure modes, modelling everything well). I suspect that's what the author is getting at with reasoning more mathematically about distributed systems, as we add a twist on a typical system design here.

legojoey17 | 2 years ago | on: Show HN: Multi-monitor KVM using just a USB switch

Seems like we all have! I ran into quite a few hiccups when I tried to automate this with a Windows and MacOS machine with just a USB switch (bad DDC values, detecting device events, etc). https://nokappa.notion.site/Making-a-software-KVM-using-only...

I ended up mostly giving up because it was a bit janky and I always had something else in more disarray.

Sweet idea on the macropad! I haven't used them before and placement of the USB switch is always a pain.

legojoey17 | 3 years ago | on: Poor sleep drove me insane, and my long path to recovery

Thanks for sharing this story, it's very encouraging to read. I really resonate with this as I'm currently facing similar struggles and overall just feeling like I'm sinking and zombie-like.

I had an at-home test that was not positive for obstructive sleep apnea so I landed on a 6-month queue for a test at a sleep lab (hello from over in Vancouver).

I've felt really discouraged by that because it's left me back at "I have no idea what's wrong". I snore (occasionally "like a banshee"), always have nasal congestion while sleeping, wake up every night once (or even twice) needing to urinate and with an extremely dry mouth, and no longer remember what a well rested sleep feels like.

Even now, I'm taking an extended time off work and hoping the lack of work stress would increase my sleep quality but to no avail. If anything, because my circumstances are keeping me away from home, my sleep has gotten even worse to the point where I'm consistently lethargic and too tired to do anything most days.

I only very recently learned about sinus obstruction after taking Affrin (for a cold) and realizing just how clear my sinus was compared to mu average day.

Everything you wrote about allergies and other self-experimentation is very helpful for awareness. I also had no idea positional therapy was a thing, which is helpful as I'm a stomach sleeper.

It has certainly given me more to understand and proceed with doctors for.

legojoey17 | 3 years ago | on: Poor sleep drove me insane, and my long path to recovery

Thanks for sharing, this seems like what happens to me except only partially (1 nostril fully congested and the other partially). I've only recently self-educated myself on nasal and sinus obstruction issues after particularly bad congestion from a cold. I used Afrin for one night and realized that my typical night was far from breathable compared to that.

legojoey17 | 4 years ago | on: FoundationDB: A distributed unbundled transactional key value store

Adding clarifications to that, Pebble is a local K/V library akin to RocksDB/LevelDB and provides no services or distributed capabilities. Comparing the two does not make sense.

On the other hand, TiKV is more comparable to the internal distributed transactional K/V layer to CockroachDB that its SQL layer is coupled to. That of course is not a usable external interface. You could utilize CockroachDB like a K/V store with simple table to forego the SQL functionality and planning (e.g. only primary col index, only key/value column, so on), but I am not sure what the practicality of that is as I have not kept up with CockroachDB development.

(disclaimer: I interned at Cockroach several years back)

legojoey17 | 7 years ago | on: Show HN: A map that shows you how far you can go for a given time or distance

This is awesome!

I did a similar thing and built isochronic maps while at a start-up for business intelligence back in 2014. I'm curious how you got the going, data processing and all.

When I'd done it I set up all roads and continents in OSM but it took quite a bit of work to do so. I'd used Osmium to import everything into postgres and set it up to using pgrouting. It took quite a bit of work but with a lot of query mangling it had a lot of traversal cost variates (street type, population, daytime pop) it had pretty good approximations of Google!

The most awful part was trying to set up the data to be usable, quick, and deal with large queries (set it up for a maximum 150km without issue), but it was a great challenge!

legojoey17 | 8 years ago | on: C++ Coroutine Theory (2017)

It has been one of my favourite courses because it really dives into the fundamentals and implementation of how concurrency models work, is very learnable but still applicable.

The primitives uC++ make it very easy to form the concurrency models that are present in other languages and these days the prof does exactly that and shows exactly how to implement common models, such as channels, actors, and a few others.

Everything done is very mappable to how other languages provide concurrency.

legojoey17 | 8 years ago | on: “Follow-The-Workload” Beats the Latency-Survivability Tradeoff in CockroachDB

If you are willing to give it a shot, there is currently a fork of postgrex from someone in the Elixir community! It handles some of rough edges of the incompatibility. You can find it at https://hexdocs.pm/postgrex_cdb/readme.html and the source code at https://github.com/jumpn/postgrex.

For any other issues you run into when using it, you may want to see the discussion about postgrex compatibility at https://github.com/cockroachdb/cockroach/issues/5582. If you run into different problems please do file the issue :).

I'm also an Elixir junkie, so I would also love to see ORM compatibility here! I definitely want to dedicated time to it if I can. (Disclaimer: I'm currently interning at Cockroach Labs.)

legojoey17 | 8 years ago | on: All You Need to Know About Bitcoin's Rise, from $0.01 to $11,000

The 4$-10$ fee being mentioned is a flat flee when transferring between wallets.

When you are trading on an exchange, there could very well be nothing happening in the background. It's instead a process that's just flipping some bits for who owns what in their own database.

legojoey17 | 8 years ago | on: Stripe Elements: Pre-built UI components to help you create checkout flows

That either takes a lot of time (and volume) to gather on card usage because it's not available as a list from Visa and co, or you require certain processing rights to access and can't share it due to confidentiality.

I forget the details, but I'm pretty sure it's the former, so it's not exactly easy -- which is yet another testament to how much work goes on behind such a seemingly simple new product.

legojoey17 | 8 years ago | on: Crack WPA/WPA2 Wi-Fi Routers with Aircrack-Ng and Hashcat

So I don't have experience with WPA cracking, but if the access point has WPS (the click to connect button) you can sniff handshakes on the network and crack the WPA password it in relatively no time. In my experience this has usually been under 10 minutes.

legojoey17 | 8 years ago | on: Join the YC Software Team

Total shot in the wild here, but would YC be interested in having an intern? (Waterloo student here, so something from Sept. to Dec.)
page 1