Well, I mean, macOS is POSIX, but you know what I mean.
I would miss the tight integration between my desktop apps and iPhone apps - being able to type up a shopping list in Notes on my desktop and then bring it up on my phone with zero manual copying or hiccups, being able to start reading a Safari tab on one and immediately bring it up on the other to continue, that sort of thing. Workarounds for all these things would be annoying (and I sure ain't switching to Android or something else).
26.8.2025 02:53Well, I mean, macOS is POSIX, but you know what I mean.I would miss the tight integration between my desktop apps and iPhone apps - being...I 'm going to have to get a new work machine at some point - 8GB is increasingly hard to work with even after moving most of my server daemons to another machine on my office LAN. Would like to play some newer games too. I really don't like what I've seen of the next macOS release, though, with its increasing rounded corners and transparency - just give me opaque rectangles, dammit. Is it time that I start thinking of switching to POSIX on desktop for good?
26.8.2025 02:50I 'm going to have to get a new work machine at some point - 8GB is increasingly hard to work with even after moving most of my server...Today's project was learning Resque, a task queueing system which runs as a daemon. It's already replaced one `* * * * *` cron task which the client complained was taking too long and will likely replace more in the future. It was definitely a bunch of new stuff all at once but in the end it wasn't that hard.
I guess the good thing about picky clients is that sometimes they drag you kicking and screaming towards learning new things for the better.
25.8.2025 10:55Today's project was learning Resque, a task queueing system which runs as a daemon. It's already replaced one `* * * * *` cron task...In JavaScript, the type of the "Not a Number" constant is "number."
I don't know why I was expecting anything else, really.
22.8.2025 20:47In JavaScript, the type of the "Not a Number" constant is "number."I don't know why I was expecting anything else,...I know it took Apple quite a long time to build a fully-functional password manager but now that they've got that squared away, maybe they should work on this next. It really feels like something which a "privacy-focused" Apple should have built in to their systems.
31.7.2025 23:41I know it took Apple quite a long time to build a fully-functional password manager but now that they've got that squared away, maybe...Now that Authy has gone to complete shit and they don't seem interested in fixing it, can anyone recommend a similar 2FA app that isn't Google Auth?
31.7.2025 23:40Now that Authy has gone to complete shit and they don't seem interested in fixing it, can anyone recommend a similar 2FA app that...I've been using PHP as my primary programming language for over 20 years now and I just discovered the "compact()" function from a code sample I came across. It's definitely one of those "why is this in the stdlib" functions. Basically, `$array = compact($foo, $bar);` is equivalent to `$array = ['foo' => $foo, 'bar' => $bar];`
Gotta sweep up the stdlib and get this weird cruft out, man. Maybe in another 20 years…
29.7.2025 21:17I've been using PHP as my primary programming language for over 20 years now and I just discovered the "compact()" function...The "hack" of the Tea app can't even be called a "hack" at all - the data was stored, unencrypted, on a publicly-accessible server. Given that I don't think accessing it is actually a crime (but IANAL).
I'm really curious how such a basic flaw was introduced into a production system. Some have suspected vibe coding, but we all know humans are more than capable of doing something like this too.
Be careful who you provide your PII to, and pray for competence when doing so is mandatory.
27.7.2025 01:45The "hack" of the Tea app can't even be called a "hack" at all - the data was stored, unencrypted, on a...Interactive quiz to see if you can predict how JavaScript's Date parsing/handling works (hint: it's about as consistent as anything else in JavaScript). I scored 6/28.
I've griped about PHP's DateTime in the past and I'm sure its parser has its own weird edge cases but don't think I haven't forgotten how good we have it compared to other langs.
12.7.2025 21:35https://jsdate.wtf/Interactive quiz to see if you can predict how JavaScript's Date parsing/handling works (hint: it's about as...I recently found out about Nostr and Bitchat. They look like really fun and interesting projects and I'd love to play with them, but at this point in my life I feel like I don't have the luxury of being able to play with things which are unlikely to make me any money in the short-to-medium term.
In other news I still haven't won the lottery. That shit *has* to be rigged.
10.7.2025 04:30I recently found out about Nostr and Bitchat. They look like really fun and interesting projects and I'd love to play with them, but at...Not gonna lie - I've been pretty crunched for money the last… several years, so I'll throw this out there: If you might be in need of the services of someone who's been a professional web developer for almost two decades and cares more about code quality and user experience than using the flashy framework/language/database of the week, please reach out and let's talk. Check out my other posts for an idea of some of the stuff I've worked on over the years.
30.6.2025 20:30Not gonna lie - I've been pretty crunched for money the last… several years, so I'll throw this out there: If you might be in need...Thank you to whatever idiot recently redid Authy's UI and somehow made it worse. Which one of these key icons and email address combinations hides the code I need right now? Tapping them doesn't show any clue as to what site they're associated with. Can I clean this up by deleting those, or will I be locking myself out of something down the road? *(shrug)*
Why is this "list" not a proper list on its own screen? Why not show at least as much info as the previous version. Is Authy dogfooding?
26.6.2025 18:41Thank you to whatever idiot recently redid Authy's UI and somehow made it worse. Which one of these key icons and email address...And to expand a bit on the foreign keys bit, note that that pragma change is *not* saved to the database for future connections - you really do have to run it on every connection. That means if someone "fixes" the database by manually connecting and doing manual SQL inserts/deletes without running that pragma line, your data may now be fff… er, in an unexpected state. Good thing SQLite makes backups easy and they made one before messing with things, right?
22.6.2025 19:44And to expand a bit on the foreign keys bit, note that that pragma change is *not* saved to the database for future connections - you really...To expand a bit, on the "column type not respected" part, if adding STRICT isn't an option, you can use CHECK on column definitions to validate many things at INSERT time. For example, the CHECK constraint on the following columns will make them work as you'd otherwise expect:
`username varchar(31) NOT NULL CHECK (length(username) < 31)`
`verified unsigned bool NOT NULL CHECK (verified IN (0, 1))`
For datetimes, do `typeof(datetime(column_name)) = "text"`.
https://sqlite.org/lang_createtable.html#ckconst
22.6.2025 19:41To expand a bit, on the "column type not respected" part, if adding STRICT isn't an option, you can use CHECK on column...With these changes in place, the stupidity is nearly eliminated and SQLite becomes absolutely as usable as MySQL or Postgres particularly in low-write and single-server situations, and with its own unique benefits - since all the data is in a single file, making backups or local copies is just a matter of using cp/scp/rsync rather than having to bother with dumping and importing.
22.6.2025 19:28With these changes in place, the stupidity is nearly eliminated and SQLite becomes absolutely as usable as MySQL or Postgres particularly in...The latter can be most reliably fixed by changing a compile-time flag, but if you can't/don't want to manage how SQLite is compiled on whatever systems your app will run on, you can run `PRAGMA foreign_keys = ON` after the SQLite "connection" is made, before any other commands expecting these constraints to work are run (if you're using some sort of DB connection manager or ORM, you might have to fight/hack it to make this happen).
https://sqlite.org/pragma.html#pragma_foreign_keys
22.6.2025 19:21The latter can be most reliably fixed by changing a compile-time flag, but if you can't/don't want to manage how SQLite is compiled...SQLite is simultaneously the greatest and the stupidest database system in existence. The stupid parts: By default, neither column type nor foreign keys are respected.
To fix the former, put the STRICT keyword at the end of table definitions on creating them, like `CREATE TABLE foo (…) STRICT`. (Already have an existing database? You can't add STRICT with ALTER TABLE - gotta recreate the database tables, dump from the old ones, and import into the new.) https://www.sqlite.org/stricttables.html
22.6.2025 19:15SQLite is simultaneously the greatest and the stupidest database system in existence. The stupid parts: By default, neither column type nor...Going to be adding several thousands of markers to a MapLibre map? It turns out you don't want to add markers; you want to add "symbols." Markers are for some reason done via DOM objects, so you'll run into the same performance issues which have probably driven you towards MapLibre in the first place. Unfortunately symbols are kinda sporadically-documented. Useful links: https://github.com/maplibre/maplibre-gl-js/discussions/5207 https://maplibre.org/maplibre-gl-js/docs/examples/add-image-generated/ https://maplibre.org/maplibre-gl-js/docs/examples/center-on-symbol/
18.6.2025 18:42Going to be adding several thousands of markers to a MapLibre map? It turns out you don't want to add markers; you want to add...determine how many degrees of latitude a pixel covers, right?
Right? I don't know. I just know with what I've got right now, things are off vertically, and that's my best guess as to why currently. I'm going to dive in and try it. Thoughts and prayers are appreciated…
14.6.2025 23:00determine how many degrees of latitude a pixel covers, right?Right? I don't know. I just know with what I've got right now, things...because the range of latitude is -90 degrees to 90 degrees, both of those "lines" representing a point at the north and south pole respectively - so that's 180 degrees. Except, wait, -90 degrees and 90 degrees are not the same line as they are with longitude, so that means… there are actually 181 degrees of latitude, because there's also 0, and like if you counted from -10 to 10, you would say 21 numbers even though the difference is 20, so we would divide 181 by the pixel height of the world to
14.6.2025 22:58because the range of latitude is -90 degrees to 90 degrees, both of those "lines" representing a point at the north and south pole...