I’ve been meaning to write this article for a long time @flexdinesh . Thanks for taking the time to share this technique for managing stacked diffs using vanilla git rebase!
I have to take special effort to tamp down on duplication in AI generated code.
For me it's not uncommon for AI to draft an initial solution in X minutes, which I then spend 3*X minutes refactoring. Here's a specific example for a recent feature I coded: https://www.youtube.com/watch?v=E25R2JgQb5c
I find it amusing that the motivation for creating a complex font program that supports syntax highlighting internally is the desire to avoid a complex syntax highlighter JavaScript library. The complexity is still there; it's just been moved around.
Edit: Perhaps this is a reminder that custom fonts are a potential attack vector for security-sensitive websites since font rendering runs highly-complex programs, probably in a language that isn't memory safe.
Looks like this library is serious. Most of what I see can be written more succinctly using existing Python functionality:
1. Maybe -> Optional[T]
2. Result -> Union[SuccessT, FailureT]
3. Future, FutureResult -> concurrent.futures.Future[T]
4. IO -> don't use this; none of the standard library I/O supports it
I do appreciate the use of "container" as a term instead of "monad".
I also appreciate the typechecker enhancements being put forward by their custom plugins.
> A better resource today would have to start with some radical choice such as whitelisting, if only to reduce the head-end costs of ingesting material.
> It's tempting to imagine some rules like: no ads, no popups of any kind, government mandated or not, especially no cookie banners, no paywall, but even sites like Wikipedia fail at those criteria today.
This sounds like the approach that the Marginalia (https://search.marginalia.nu/) search engine is taking. My understanding is that its algorithm favors text-heavy sites. And additions to its index are done via GitHub Pull Request so it's effectively using an approve-list (whitelist).
I’ve used 3+ text editors on macOS (BBEdit, Sublime, VS Code, PyCharm), and prefer Sublime for my day-to-day work writing Python/JavaScript web apps, mainly because of fast code navigation and relatively fast typing speed.
BBEdit I still use for multi-file search & replace since I prefer its interface for that. It also has the fastest typing speed.
PyCharm I use exclusively for identifying & removing unused imports in Python.
VS Code I don’t use at all. Relatively slow typing speed. Relatively slow navigation.
I created a smart spreadsheet app for tracking any books, movies, or TV series I'm interested in watching which can automatically run web searches for sources to stream/rent/buy any item on the list (ex: Netflix, Amazon Prime, my local library, my local bookstore).
This way I can focus on what I want to watch and not worry about how I will watch it.
> Servers can also be liability. You need to document, implement and maintaing hardening, have a process for regularly patching os and apps, […], have backup and disaster recovery procedures, regularly test the procedures, […] and so on.
Much of this complexity I eliminate by using the Immutable Server pattern:
Specifically I deploy my app as a Docker container hosted on a virtual machine cluster managed by AWS ElasticBeanstalk. OS upgrades and patches (outside the container) are done by AWS.
If anything goes wrong with a VM I just terminate it and a different fresh VM spins up to take its place.
Personally if I was starting a project in the same space as Rails/Ruby I’d go with Django/Python instead.
I prefer the “explicit is better than implicit” norm in the Python community over the “powerful yet mystifying magic” I find in Rails. (This is personal preference.)
I also appreciate Python source code being easier to manipulate with tools than Ruby, since Ruby did not have a formal grammar the last time I checked. Any tools that did exist appeared to usually include the yacc/bison file from MRI (the main Ruby implementation) as the best approximation of a language definition.
Several of the missing capabilities mentioned here can be done with 3rd party tools.
* BetterSnapTool for window snapping and maximization (although I prefer Moom for better control).
* Afloat to force a particular window to always be on top.
* TinkerTool to mess with various other settings.
Sure, these may not be “built-in” as first party capabilities, but Apple has a history of slowly bringing such capabilities into the OS over time. Flux (for altering screen tint at night time) became standard. So did TextExpander (for auto-expanding abbreviations).
For languages that don't give you a choice of signed vs. unsigned - giving you signed and sometimes arbitrary-precision integers - this debate is irrelevant.
I'll put it in my same mental bucket of "things that I no longer worry about", along with buffer overflows, wild pointers, etc that are eliminated by memory-safe languages.