HNHacker News
TopNewBestAskShowJobs

Mister_Snuggles

3,822 karma · joined July 24, 2013

submissionscomments
Mister_Snuggles··on Borland Turbo Assembler Version 5 User's Guide (1996) [pdf]
There are some. One of my favourites is Terminal.Gui[0], but you have to be in the .NET world in order to use it.

[0] https://github.com/gui-cs/Terminal.Gui

Mister_Snuggles··on Seeking the productive life: Some details of my personal infrastructure (2019)
I've read this before, but took the opportunity to read it again.

One of the things that impresses me the most is exemplified by these two examples:

> [...] including for example the issue of my elementary school magazine from Easter 1971.

> [...] school geography notes from when I was 11 years old, together with the text of a speech I gave

When he was 11 he had the foresight to realize that he might want to refer back to this stuff and decided to keep it and store it somewhere that it could be found again. When I was 11 I'd have likely thrown it out during the end-of-year desk/locker clean out and not given it a second thought.

While I don't necessarily aspire to his level of productivity, I'm very envious of how meticulous his record keeping is. Whenever I try to get organized like this I quickly get overwhelmed and give up.

Mister_Snuggles··on Activist glues his head to glass covering 'Girl with a Pearl Earring' painting
The weirdest part of that description is that the tablet "which works on PS3 and Xbox 360" seems to have a Wii controller slotted into it.
Mister_Snuggles··on Identity management for WireGuard
That's the biggest challenge - it's not really a WireGuard problem, but "something" needs to be able to tell iOS "use server X for *.blah, otherwise use whatever servers you got from the WiFi connection".
Mister_Snuggles··on Identity management for WireGuard
My mental model of WireGuard is that it wants to replace IPSec (the encryption/tunneling), not IKE/IKEv2 (authentication, session setup, etc). It's not a perfect mental model, but it serves me well.

On the official client I can specify DNS servers for a particular connection, so one "easy" solution would be to specify domains that need to go to that set of DNS servers. e.g., when connected to home use 192.168.x.y to resolve *.blah, otherwise use the system resolvers.

Mister_Snuggles··on Identity management for WireGuard
In my case I mean the iOS official client.
Mister_Snuggles··on Identity management for WireGuard
I really want to like WireGuard, and these get so close to what I want. I think as soon as Headscale gets the iOS story sorted out I'll be able to switch away from IKEv2/IPSec.

Right now the thing that's stopping me is the lack of Split-DNS. I'd even be happy if I could configure this in the official client, I've only got a handful of devices so distributing the configuration by hand is fine. My IKEv2/IPSec set up does this perfectly, and using MDM profiles lets me set up connect-on-demand. WireGuard already does connect-on-demand and my limited testing suggests that it works well enough.

I don't want to use Tailscale since I'd like to keep everything self-hosted. It sounds like Headscale is almost there - it just needs the iOS client to be able to point to an arbitrary endpoint.

Mister_Snuggles··on IR-Controlling New Air Conditioner in Server Room
Based on the behaviour of the remote and the AC unit, it works just like the Comfee unit where the remote sends the whole state (mode, temperature setpoint, fan speed) to the AC unit. The remote has a display on it showing the mode, fan speed, temperature, etc.

That doesn't tell me anything about how the actual protocol works though. I still need to buy an IR receiver and start decoding the protocol.

Mister_Snuggles··on IR-Controlling New Air Conditioner in Server Room
I've got two portable air conditioners, an LG in a living space, and a "Comfee" (which is made by Midea) for my home office/server room.

The Comfee was very easy to automate. I just grabbed an ESP32 board that I had handy, some parts out of my bins, and soldered up a working IR blaster. ESPHome provided all of the hard parts, Home Assistant provided the UI. It works brilliantly. I have the air conditioner on a smart outlet which gives me real-time power consumption information, from here it's easy to determine what the machine is doing. I also have a Xiaomi temperature/humidity/pressure sensor, which I can use to feed into automations to control the unit if I want to.

So far I've been unsuccessful at using an IR blaster to control the LG - ESPHome, out of the box, can't seem to control this unit. I haven't gone down the rabbit hole of capturing IR codes, but that's the next step once I get the appropriate parts.

Mister_Snuggles··on Ask HN: Any legal place to buy offline TV movie downloads?
The point is to free up the table so that they can seat another customer.
Mister_Snuggles··on Software I’m thankful for (2021)
Tailscale deals with the things that the IKEv2 part of IKEv2/IPSec handles. It's not a perfect mapping as Tailscale/Wireguard is different that IKEv2/IPSec.

Apart from being a 3rd-party service, which isn't really what I want, it seems to check all of the boxes. The documentation is very thin on the iOS side, but it seems likely that the iOS app can do everything that can be configured in the admin console. That configuration does seem to meet my requirements.

Is there a self-hosted Tailscale-like option?

The only other thing is automatic connection. In my IKEv2/IPSec setup, I've build configuration profiles for the iOS devices so that they'll establish a connection on-demand (triggered by a DNS lookup for my internal domain), but only when they're not on my home Wifi network. It's perfectly seamless since it's all built-in to iOS. The Wireguard app seems to deal with the "connect when not on home Wifi" part, but doesn't do the on-demand side. Wireguard is light enough that this may not actually matter though.

Mister_Snuggles··on Software I’m thankful for (2021)
I'm torn on WireGuard.

Getting it set up was really easy. I think it took about an hour, which included standing up a new OpenBSD VM to run the server. Configuring clients (iOS) was pretty straight-forward and reasonable. I don't have a feeling that there's some security hole lurking in the configuration simply because there's not a lot to get wrong.

In comparison, IKEv2/IPSec was incredibly painful, especially when you also create configuration profiles for iOS and have to issue and distribute certificates. Once I understood how it worked it made some sense, but there's always that nagging feeling that I've screwed up the configuration because there's just so many options to get wrong. I've probably spent six hours, not all at once of course, getting it working and set up "just so."

In spite of all of this, I'm continuing to use my IKEv2/IPSec setup. I have not figured out how to get WireGuard to do split DNS, whereas this was a fairly simple part of the IKEv2/IPSec setup. The other requirement I have is split tunnels, but I think WireGuard can do that fairly easily.

Mister_Snuggles··on Crazy Thin ‘Deep Insert’ ATM Skimmers
Don't they have to deal with those forgotten PIN calls anyway? Don't you need a PIN to get cash out of an ATM?

My debit card and its PIN are used for a few different things - in-store payments, using the ATM, and authenticating when in-person at a bank. The last one is interesting - each desk at the bank, both the tellers and the offices where you talk to someone, has a terminal and every interaction starts with putting in your debit card and entering your PIN.

Extending this to credit card is no big deal - my main bank syncs the PIN between the debit and credit cards. I only have a credit card with the other bank that I use and I haven't set foot in one of their branches in 20 years, so I have no idea whether they sync the PINs or use their cards for in-person authentication.

Mister_Snuggles··on Crazy Thin ‘Deep Insert’ ATM Skimmers
I've heard this argument but I honestly don't understand it. This is the reality for making credit card purchases in Canada, having to remember PINs for credit cards is something I've never heard anybody complain about.

Maybe it's because the prevalence of Interac already trained us to deal with PINs.

Mister_Snuggles··on Crazy Thin ‘Deep Insert’ ATM Skimmers
Gas stations are interesting here.

Here in Alberta, it's the law that you need to pay before you pump[0]. If you're at a modern pump you insert your card, it does a preauth for some amount (you can select common amounts, like $20 of fuel, or "fill up" which is like $125 or $250 depending on the station), then when you're done it does a purchase for the exact amount.

If you're not at a modern pump, or you're paying cash, you have to go into the store, prepay for something that you think will fill your tank, fill your car, then go back into the store and get your change.

[0] https://calgary.ctvnews.ca/station-owners-and-gas-and-dash-v...

Mister_Snuggles··on Crazy Thin ‘Deep Insert’ ATM Skimmers
When Canada moved to Chip and Pin there was no fanfare.

Merchants started getting chip terminals as part of the regular replacement cycle, consumers started getting chip cards as part of that regular replacement cycle, and eventually the terminals started telling users to insert their card.

Interac was the first mover because most people were already familiar with swipe and pin, so the move to chip and pin was a virtual non-event. When the credit card companies moved the issuing banks had to issue PINs, but everyone already knew the mechanics of using it.

The most interesting part is that the US already has the infrastructure to support this. I went to a Walmart in the US and paying with my Canadian credit card worked EXACTLY like it does in Canada - insert card, confirm amount, enter PIN, done. The cashier was a little confused that I didn't need to sign for it, but ultimately they just went with it.

The introduction of NFC was a similar non-event.

Mister_Snuggles··on Ask HN: How worried should I be about Google randomly suspending my accounts?
I see lot of people get around this by purchasing their own domain and using a service like Fastmail. In theory you can switch all of the pieces (domain registration, DNS, and email provider) at will as there are many alternatives available for each piece.

I'd like to go this route as well. I've got a domain and Fastmail checks all the boxes for me, but inertia is a powerful thing.

Mister_Snuggles··on Accounting For Developers, Part I
Double-entry is kind of a bad name, but the concept is sound.

I like think of each entry as the complete journal entry - a set of debits (abbreviated DR) and credits (abbreviated CR) that describe an event. Debits and credits are, as many accounting instructors have taught many students, names that effectively mean "Left Side" and "Right Side". Some accounting systems represent debits as positive numbers and credits as negative numbers - this is perfectly valid too.

Say somebody purchases a product for $60 and a service for $40 from me. The product that I sold cost me $40 to purchase, and both the product and service have a 5% sales tax applied. This is a very common transaction - car repairs, for example, are usually a combination of products (e.g., oil, oil filter) and services (e.g., oil change and inspection).

    Account               DR      CR
    Cash in bank         105
    Tax Payable                    5
    Sales Revenue                 60
    Services Revenue              40
    Cost of Goods Sold    40
    Inventory                     40
In this example, I collected $105 in cash from my customer which will go into my bank account. Because of this sale, I now owe the relevant tax agency $5 because I collected sales tax on their behalf. I recognized sales revenue of $60 and services revenue of $40. Since I sold some physical goods that I had in inventory, I also reduced the value of my inventory by the cost of what I sold.

This is, in my mind, one "entry" which has six detail lines to recognize all of the different things that need to be recorded for this event. The important point is that everything balances, credits always equal debits.

Some businesses might not do the Cost of Goods Sold / Inventory entries with each transaction, instead they might count their inventory once a month and calculate out how much they sold (inventory at start + inventory purchased - inventory at end = cost of goods sold) and just do one entry a month to get the books in sync with reality.

Mister_Snuggles··on The Unreasonable Effectiveness of Makefiles
There are a number of deficiencies with the current system that aren't showstoppers, but are pain points nonetheless. Off the top of my head:

* There's no reasonable way to do cross-batch dependencies (e.g., if process X in batch A fails, don't run process Y in batch B). I've got a few ideas on how I could add this in, but nothing has been implemented yet.

* There's no easy way to visualize what's going on. Airflow has a Gantt view that looks very useful for this purpose, our business users would absolutely LOVE the task duration graph, and the visualization of the DAG looks really helpful too.

* Continuing a failed batch is a very manual process.

None of these are showstoppers because, as you said, this has been running fine for over a decade. These are mostly quality-of-life improvements.

Mister_Snuggles··on The Unreasonable Effectiveness of Makefiles
This was another thing that attracted me to `make` for this task. I figured that, as long as the dependencies were all declared properly, I should be able to run multiple jobs in parallel.

I didn't pursue this very far as there were other problems with doing this, but I'd like to pursue it again. The problems are all with the target system, `make` does the parallel execution work perfectly.

Mister_Snuggles··on The Unreasonable Effectiveness of Makefiles
It took a while, but I finally found it!

https://web.archive.org/web/20110606144530/http://www.ibm.co...

There’s a reference to some sample Makefiles to start and stop some Linux services in parallel. It’s obviously not complete, but this (or something similar) was what inspired my system.

Mister_Snuggles··on The Unreasonable Effectiveness of Makefiles
Interesting:

> Airflow was started in October 2014 by Maxime Beauchemin at Airbnb. It was open source from the very first commit and officially brought under the Airbnb GitHub and announced in June 2015.

I believe I starting building my tool somewhere around 2010, possibly 2011. The core mechanism has been completely unchanged in that time. If Airflow was a thing at the time, I'd have hopefully looked into it. I looked at a handful of similar products and didn't find anything that was a good fit.

Based on a really quick skim of the Airflow docs it seems like it checks all of the boxes. Off the top of my head:

* LocalExecutor (with some degree of parallelism, assuming the dependencies are all declared properly) seems to do exactly what I want.

* I could write an Operator to handle the interaction with the system where the processes actually run. The existing Python script that does this interaction can probably get me 90% of the way there. Due to the nature of what I'm running, any job scheduler will have to tell the target system to do a thing then poll it to wait for the thing to be done. To do this without any custom code, I could just use BashOperator to call my existing script.

* It's written in Python, so the barrier to entry (for me) is fairly low.

* Converting the existing Makefile to an Airflow DAG is likely something that can be done automatically. We deliberately keep the Makefile very consistent, so a conversion program can take advantage of that.

I think my dream of replacing this might have new life!

Mister_Snuggles··on The Unreasonable Effectiveness of Makefiles
My most horrible abuse of `make` was to write a batch job runner.

Most of the targets in the Makefile had a command to kick off the job and wait for it to finish (this was accomplished with a Python script since kicking off a job involved telling another application to run the job) followed by a `touch $@` so that make would know which jobs it had successfully run. If a process had dependencies these were declared as you'd expect.

The other targets in the Makefile lashed those together into groups of processes, all the way up to individual days and times. So "monday-9pm" might run "daily-batch", "daily-batch" would have "daily-batch-part-1" (etc), and each "daily-batch-part-..." would list individual jobs.

It was awful. It still is awful because it works so well that there's been no need to replace it. I keep having dreams of replacing it, but like they say there's nothing more permanent than a temporary solution.

All of this was inspired by someone who replaced the rc scripts in their init system with a Makefile in order to allow processes to start in parallel while keeping the dependencies in the right order.

Mister_Snuggles··on Ask HN: List of titles and specifications for tech jobs?
I'd probably pick "Software Archaeologist". I've got a soft spot for old programming languages, code bases, etc.
Mister_Snuggles··on Dear startups: I hate subscription services (2021)
I’m torn on this. For both apps I mentioned there is a reasonable path forward, it’s simply a matter of buying a newer version. But it really amounts to spending extra money to get functionality I’ve already paid for once, after all both of these programs are 100% complete and bug free relative to my requirements.

I’ve got a few GOG games and they’ve done an incredible packaging job with DOSBox - if there was a way to take an old PPC Mac app and package it up to run in a similar manner, I’d have probably taken a serious look at it back when Rosetta was discontinued.

Mister_Snuggles··on Dear startups: I hate subscription services (2021)
Operating systems are starting to make that impossible.

I used to use an old version of Quicken for Mac (this was back in the MacOS 10.2 days). It was "finished" in that it did absolutely everything I needed and there were no bugs that affected me. As time marched on, Apple switched from PowerPC to Intel which was fine because they had technology (Rosetta) which allowed me to run PowerPC applications. Then they dropped Rosetta, so now I had to choose whether to upgrade MacOS or continue to use Quicken.

I now use software called Banktivity to replace Quicken. Much like Quicken, Banktivity is "finished" as far as my requirements go. The version I have is Intel-only and Apple is switching to Arm processors. How long will Rosetta 2 last before it's pulled and I'm forced to choose between upgrading my OS and using this software?

I think there are similar things in the mobile world too. I think Google requires apps to use a minimum API version to maintain a listing in Google Play. I believe Apple does something similar with the App Store too. So short of regularly recompiling, testing, and publishing your app, everything in the stores has a finite lifetime.

Mister_Snuggles··on Node-Red 3.0 Released
I use Node-RED and Home Assistant. They compliment each other very nicely.

At the time I started, Home Assistant's automation capabilities (scripts, automations) were very clunky to deal with, so anything but the simplest things were done in Node-RED. Home Assistant has gotten a lot better in this respect, so I'm doing less in Node-RED these days.

One really neat thing about Node-RED (with the appropriate addons) is that you can create entities in Home Assistant that are populated by Node-RED flows. I use this to fetch the garbage collection schedule and expose the next pickup times for each collection (garbage, organics, recycling) as entities. I've also got a garbage pickup notification that tells me which things will be picked up the next day so I don't have to think about the collection schedule at all.

Mister_Snuggles··on My Preferred Smart Home Vendors
I follow basically the same logic as the author does - local-only, no messing around with custom firmware, etc. I'm willing to make exceptions for things that are just too good to pass up, but those are few and far between.

Some additional recommendations that fit the general theme:

* Cameras: I use Blue Iris, so anything that does ONVIF is suitable. There's no need to limit yourself to one brand, though sticking with stuff you know is good is sensible - I've got a couple of ReoLink cameras that are good, and I've got some Amcrest cameras that are also good. Keep your cameras, regardless of brand, on a separate VLAN/Wifi network.

* Switches and Lights: Ikea's TRÅDFRI outlets, and bulbs are pretty decent and very affordable. I also recently got a bunch of Sengled Zigbee outlets and am very impressed with them - great form factor (small enough to not block the other outlet), and the power consumption monitoring helps me understand my electricity usage better.

* Sensors: Ikea's motion sensor is decent and I've never experienced the extreme battery drain that other people have reported - I only have one of these though, so maybe I got lucky. Also, Aqara water detectors have likely saved me thousands of dollars thanks to alerting me to issues in places I don't normally look.

* Other stuff: Ikea's STÅRKVIND air cleaner is pretty nifty, and Zigbee-enabled. I've got a handful of Ikea Zigbee buttons (the shortcut button and the five-button 'puck' remote) that work very well.

Also, check out ESPHome[0] - if you can't find a sensor or device that does exactly what you need, this makes it shockingly easy to build one. I've got a water level sensor (ESPHome, ESP32, HC-SR04) on my sump pit that has alerted me to pump failures before damage occurred.

I'm using a ConBee II with deCONZ for my Zigbee gear, but that's more of an implementation detail than anything.

Finally, my one exception to no cloud stuff - the Rainforest EAGLE-200[1]. Being able to monitor and track my home's energy consumption has been very valuable for saving money. You have to use the cloud to set it up, but Home Assistant can do local polling to retrieve the data. You can also, via the cloud, configure it to POST data in real time to a URL, that POST happens directly from the device.

[0] https://esphome.io/

[1] https://www.rainforestautomation.com/rfa-z114-eagle-200-util...

Mister_Snuggles··on Contra Wirecutter on the IKEA air purifier
I run my STARKVIND in Auto mode most of the time, but from 4PM to 9PM I have scheduled it (via Home Assistant) to run on full power - basically to clean the air, regardless of what the sensor tells it, before bedtime.

What you're asking for is 100% reasonable and easily achievable.

Mister_Snuggles··on Contra Wirecutter on the IKEA air purifier
I'm not qualified at all to do a deep dive, but I've got a FORNUFTIG and a STARKVIND and can give you some thoughts.

The STARKVIND is a LOT bigger than the FORNUFTIG. Assuming you're getting the standalone model, it's probably the depth of two or three FORNUFTIGs. This really surprised me. The table version is very interesting because it eliminates that problem by being a functional piece of furniture.

The STARKVIND filters are different than the FORNUFTIG, so no filter sharing. Conceptually they're the same - a paper particle filter plus an optional carbon filter. At its highest setting it's louder than the FORNUFTIG's highest setting, but at its lowest it's virtually inaudible. If you leave it in Auto mode you'll hear it ramp up when it detects particulates in the air and ramp down when the air quality returns to normal.

The main reason I bought the STARKVIND was the Zigbee interface. The IKEA Home Smart app is functional, but after the initial setup I only use Home Assistant to control it. In Home Assistant there are sensors for particulates and filter life, and controls for fan speed and mode (auto/manual). I'm using the IKEA gateway for my STARKVIND since deCONZ support wasn't completely ready at the time. Overall, it lives up to expectations as far as control goes.

← PreviousPage 5 of 32Next →