456 karma · joined March 28, 2019
github.com/gh123man/ Blog - sb1.io
Currently hacking on dateit.io
So far, it's survived a few device firmware updates with no visible breaking changes, but I can't guarantee it always will.
https://github.com/gh123man/OpenSnek
Similar to other reverse engineering threads ive seen recently, AI is empowering us to replace crappy vendor software with something better.
Also - OpenSnek documents a mostly complete bluetooth spec for the Razer vendor protocol which as far as I know, hasn't been done anywhere else yet!
Sure Swift itself has some sharp edges, but not any more (or worse) than many other popular languages.
cat 1.txt | sed -E 's/(one)/\11\1/g; s/(two)/\12\1/g; s/(three)/\13\1/g; s/(four)/\14\1/g; s/(five)/\15\1/g; s/(six)/\16\1/g; s/(seven)/\17\1/g; s/(eight)/\18\1/g; s/(nine)/\19\1/g;' | sed -e 's/[^0-9]//g' | awk '{print substr($0,1,1) substr($0,length,1)}' | tr '\n' '+' | sed 's/\(.*\)+/\1\n/' | bcI blotted up as much coffee as I could with some napkins and kept taking notes on the soaked keyboard. Worked like a charm. After drying it out, a few keys stopped working so I bought a replacement keyboard for ~$20 and swapping it out was rather fast (from memory).
I use an M1 MBP now, but I still have that thing in the basement. It still works, and I loved it. I don't miss carrying it around though (or the hilariously short battery life due to forcing discrete GPU mode so I could dock it for multiple monitors at home).
I wanted a NUC, but as it turns out a used laptop on Ebay could fetch the same specs (i7-1185G7, 16gb) for less than half the price of the equivalent NUC (without an SSD or memory).
An added bonus is you get a UPS and KVM included!
Cloud providers are forced to host mac instances on real mac hardware for example (with a lot of strange restrictions).
The whole UX drives me mad.
I've been thinking about re-writing my raycasting engine in Rust but never really found the time - glad to see someone has done it and documented it so well!
If anyone else is interested in raycasting this page is also worth a read: https://lodev.org/cgtutor/raycasting.html
One simple example - Serilog enrichment https://github.com/serilog/serilog/wiki/Enrichment
This does however assume your entire application uses the same logger. But this is generally a requirement in services that require tracing like this.
Swift works great on Linux. You can install it manually, or use the official docker image. I prefer using docker and have had a great experience (both developing and deploying).
My app also uses firebase and SwiftUI with hundreds of files (views, view models, and more) with no problems.
I find that I can deliver features and iterate much faster and that makes up for the time I spend fixing edge case bugs or bridging to UIKit when I need an unsupported feature.
alias lzf="fzf +s --tac --bind 'enter:select-all+accept' -m"
With the added bonus that you can press return to release the filtered lines to stdout. Really useful for interactively filtering logs. Date().advanced(by: .hours(2) + .seconds(10))
I'm honestly not sure why TimeInterval doesn't include this representation by default.1. https://developer.apple.com/documentation/dispatch/dispatcht...
Some of the interesting bits of the engine are open source: https://github.com/gh123man/Portal-Raycaster
I am also working on an app where hosting photos would be a nice feature - but the risk/undertaking without proper and potentially expensive infrastructure is daunting.
*example.com/.well-known/acme-challenge/*
Disable Security, SSL: Off, Cache Level: Bypass, Automatic HTTPS Rewrites: Off
and one big gotcha: Under SSL/TLS -> Edge Certificates -> disable Always Use HTTPS
(assuming you are using the HTTP-01 challenge).Even if you do get dedicated mac instances, managing them is a bit of a nightmare since MacOS isn't designed to be headless.
I'd love to see sourcekit-lsp (the swift lsp) to further develop. Though last time I checked it wasn't exactly usable day to day.
I'm a little bias because I really like Swift as a language but Vapor is growing and there are lots of plugins to fill the gaps.