592 karma · joined February 14, 2010
With a type checker on, types are fantastic for catching missed cases early.
Oh yikes. I did not know.
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
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.
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.
> 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).
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.
This way I can focus on what I want to watch and not worry about how I will watch it.
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.
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.
* 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).
<hot-take> More programmer-focused, less UI/normal-folk focused. </hot-take>
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.
For example:
* About 5 years ago I happened to read about the Material Design Lite library on HN which I then used for my then-nascent startup to get our initial website up and running quickly in the Material Design UI language. (And for that purpose it has worked quite well.)
* Emscripten & WASM-related tech has been useful for implementing some of the “secret sauce” at my startup.
* The recent attention given to Cosmopolitan has unlocked a specific technical hurdle (around multi-platform support) for a digital preservation venture I’m planning to start as a side project soon.
That seems like a waste if there would be otherwise be projects around with a nonstandard license that was acceptable to a subset of users.
For example the CPython interpreter (the official interpreter for the Python language) does not use a standard license. Would you not want Python to exist?
https://github.com/katharostech/ldtk-rs/blob/master/LICENSE....
Most OSes have a license restricting use in nuclear power plants. This license adds similar restrictions like “cannot use in adtech”. :)
For example I cannot use GPL at work (based on my own rules as team lead) but am open to it in personal projects.
And other folks would consider having something NOT GPL licensed to be suspect.
It is not possible to provide a uniform license that will be acceptable to all in all circumstances.
> The solution is to use an Open Source browser
Seems to me the solution is to use 3rd party services that are not tied to the browser at all.
For example I manage passwords with 1Password, not Chrome's or any other browser's sync services. And I use bookmarking services like Pocket which aren't tied to any browser.
Using independent services made by companies that care about their reputation (and therefore the quality of their product) makes a lot more sense to me then putting all your eggs into a single browser basket.
Later I noticed that Python (along with Java and C++) was part of the trinity that Google used internally - and I met some smart engineers from there - so that's how I got into Python.
Then the internet became big and desktop app development became not very important anymore. Web development and mobile is in. Many modern ostensibly-native desktop apps are actually written in web tech these days with an Electron wrapper to make it run on the desktop as a regular app. Notably Spotify and Slack.
So right now I'd suggest looking into web tech even though it's unfortunately rather complicated these days. It's the most widely available deployment platform in existence if you're trying to reach consumers (and make a difference in the world through reaching them).
RE web tech, just play around with plain HTML, CSS, and light JavaScript. Ignore the frameworks like React, Vue, etc - they'll just confuse you at first. (I think JQuery is still okay to play with to start out, but you'll eventually want to migrate to document.querySelector and window.fetch later.)
Once you have the fundamentals of web tech down (i.e. HTML, CSS, JS), then pick up some of the bigger tools like Vue/React (for frontend dev) or Django/Rails (for backend dev).
I can only conclude this proposal is in bad faith.
I therefore speculate that big ISPs like Comcast must be paying the politicians behind the bill.
NPR covered a local government a while back that tried to build a local ISP but was shutdown when players like Comcast brought in their legal teams to make building a government-run ISP illegal in that jurisdiction.
We absolutely must not see a ban like this at the federal level.
I'll counter that if you add a type checker to one of these languages, such as TypeScript (for JavaScript) or mypy (for Python), then all of those problems go away.
I'm personally particularly excited about the possibilities unlocked in the Python community by type checking, which I wrote about recently here: https://dafoster.net/articles/2021/01/26/python%27s-type-che...
Additionally, RE "Poor performance" the author is presumably talking about CPU-bound performance. If you happen to be writing network-based or I/O bound programs, which you always are in JS/TypeScript and sometimes are in Python (for web applications), then the effective performance is more affected by the network/database/disk than the programming language.
Thanks for the clarification Jeff.
> Another component of Privacy Sandbox is Turtledove (https://github.com/WICG/turtledove), [...]. Which groups a user is in is maintained entirely by the browser, and never sent to the server
Interesting. I'll plan to read up on this tonight and amend my post from what I learn.