I have 25 years of experience, including at prestigious places like Blizzard and JPL. However I've worked for a variety of startups, none of which succeeded.
HN user
javajosh
javajosh @ google's email service Full-stack programming, system design, architecture. Java, Spring, Microservices, Kafka, Postgres; React, Angular, JavaScript, TypeScript; AWS, GCP, Linode; Docker, Kubernetes.
What are some of the most impactful/eye-opening lessons you learned from biome?
They used to call this "peer pressure". Admittedly this is a narrower form of it where you harness the power of vanity and shame for purposes of good, not evil.
That's a very unhelpful link if you want to buy or comparison shop. Online walmart sells over 300 different styles of countdown timer, including ones shaped like a tomato. Note that the Pomadoro Technique recommends a timer that ticks or makes some other unobtrusive sound to remind you that you are in focus mode, and to associate the sound with focus.
Yes. I'd be curious to know how resistance movements deal with this problem in other regimes. How do (did?) Navalny or İmamoğlu supporters organize, for example? Is it simply Telegram & Signal? How does one spread a message to the public under such a regime, via pamphlets? Does it work to share "anonymously" on a foreign-hosted platform? Asking for a friend.
I agree that anonymous speech is an important right in free societies. A novel attack on such a right in the Internet Age is to allow so much speech, anonymous or otherwise, ensure that most of it of is of very low quality, that thoughtful criticisms are ignored or, more accurately, overlooked. A related attack is to "flood the zone with shit", low-quality but emotionally resonant criticisms of speech, generated by hired humans and/or software. (Anecdotally most readers will see any coherent pushback as a signal about the OP's veracity.)
Yeah, I've been disappointed in a lot of code generation within my field of expertise. However, if I need to whip up some bash scripts, AI works very well. But if I want those bash scripts to be actually good, AI just can't get there. It certainly cannot "think outside the box" and deliver anything close to novel or even elegant (although it may give some tactical help writing boilerplate lightly adapted to your codebase). The analogy I use is that LLM AIs are like a new car mechanic tool that can generate any nut, bolt or gasket, for free and instantly (just add electricity!). It's great addition to the toolset for a seasoned mechanic, distracting for a junior, and is not even in the same universe required to fix an entire car, let alone design one.
What better way to "own the libs" than to openly transgress against sacrosanct values? There is a certain power when you demonstrate that shame, consistency, or principle has no hold on you. To avoid the internal backstabbing this would entail, you also need to convince the audience that it's all a kind of kayfabe, make-believe, and that you really ARE principled and trustworthy with your people, or for some short period of time to achieve a goal. It's foolish, but the world is full of foolish people believing simply because it feels good. Reality has no place in this calculus. This is NOT a partisan problem.
Sidenote: Voidzilla did a 6 minute video about this interview [1]. Tucker focused on injustice, but not the billions SBF stole from people, but the fact that the people who took SBF's political contributions didn't get him off. The implications seem to be that Tucker values transactional justice rather than unbiased justice. This is a sea-change in American (and indeed Western) jurisprudence that is (to me) some combination of shocking and expected at this point.
There are two big error modes that we need to look out for when reacting in anger. First is to not jump from the frying pan into the fire by adopting a browser that makes nice sounding claims but really has no way to back them up. Installing a blob from a random website is never a good idea, especially when it's a browser. Personally, I think Librewolf is worth the risk but time may proved me wrong. The second error is a bit more subtle in that we need to think more deeply about how to fund browser development such that protects user interest. Clearly there are very powerful and pervasive market forces that Will attempt to warp any browser project into selling user data. That's true for all ubiquitous platform software, but the browser is particularly vulnerable because it exists at a high level of abstraction and therefore high level of utility. So I will make a prediction that the next successful privacy focused browser is going to be something like Cursor, a fork of a well-known browser engine with built-in local AI in service of the user only. This project will have to be a loss leader for another money making entity that requires a truly secure and private platform.
That only captures your output, not your input. The best people to simulate in this world would be so-called terminally online people virtually all of whom's input is itself online. So for those who've read a lot of paper books or done a lot of traveling or had a lot of offline conversations or relationships, I think it would be difficult to truly simulate someone.
But the comment you're replying to doesn't say Java doesn't have any downsides. It just says that Java has a great story for doing shared types between client and server, which is true. It's also true that Java as a language has gotten a lot better over time. This is I think thanks to pressure from other languages written for the jvm like kotlin, And also developer feedback for those who work in other languages like JavaScript. Java is old and boring. Just like go is new and boring. Rust has plenty of downsides this idea that it's easy to use. Seems wrong to me. The borrow checker is famously difficult to work with despite being a central feature of the language. The really big upside to JavaScript is that it's the native language of browsers and so in a weird way. If you want to get closest to the metal so to speak, JavaScript is a better option for most deployed applications. It's interesting to note that the op's article mostly points to build tools that are written in rust rather than applications and I think that's telling.
Complex philosophy has a way of devolving almost inevitably into a kind of "four legs good two legs bad" sort of way a la Animal Farm. In the same way dei seems to inevitably devolve into white people bad non-white people good. It doesn't really matter what it was originally. Philosophies that become popular will always devolve into some easy to understand but wrong version of itself. I personally believe this is the single biggest argument in favor of color blindness since it's relatively unambiguous.
Testimony is not evidence, and using the passive voice ("given explicit authorization", by whom? why does this matter?) is an explicit argument from authority. Physical evidence or nothing. There are no shortage of credulous people in the world happy to bask in the glow of attention.
Consider the counter-factual. If indeed there are aliens here, and have been here for decades, why not centuries? Why haven't previous generations found them, and not known their true origin? How curious that these artifacts only started appearing in the space age, when if they had appeared previously they would have been attributed to a religious origin (and not only not suppressed, but shared widely as evidence for God.)
Note: if aliens are here then FTL travel is not only possible but common, and easy, and this would undermine a great deal of verified physics. To get around this you'd need a conspiracy across all physics research (a la the SF novel "The Three Body Problem"). I'd also add that if going to other planets was like sailing a ship, then we could expect (lazy, sloppy) tourists to come around who don't "toe the line" when it comes to staying hidden.
Extraordinary claims require extraordinary evidence, and without it all such claims can be safely ignored (and indeed, can and should negatively impact the people making them).
If a particular function doesn't fit anywhere, create a new module (or class or component) for it and you'll find a home for it later. It's better to create a new independent construct than to jam it into an existing module where you know deep down it doesn't make sense. Worst comes to worst, it lives as an independent module which isn't too bad anyway.
Innocuous and fine I guess but it points to (and then ignores) a deeper and interesting issue around how codebases grow, split, and merge over time. When the same thing happens at several levels of abstraction/zoom, take note. Refactoring to extract a method is similar to splitting a package is similar to splitting a monolith into microservices (and the reverse operations). The creation of a new package/module/whatever is an early signal of a "fault line" around which a future refactoring will occur (or, more often than not, a signal that the dev may not be familiar with where things go - but even in this case I tend to agree with the OP to just put it in a new place and let the code review fix it.)
I think it is safe to say that few if anyone actually understands the common American voter and what they actually care about. Anecdotally, the prevalence of cyber-security plot points in action thriller movies/games/books indicates that there is at least some awareness of the threat.
Actually, I think an abacus ring is a great idea or it could be multiple rings on the same finger where the main benefit is you could keep keep count of something. If you had three rows of small beads, you could theoretically keep track of up to a thousand things, all without a battery and with perfect accuracy. Additionally, you could keep track in a very low profile way if the beads were on the inside of the ring toward the palm of your hand and you manipulated them with your thumb. The beads would have to have a slight friction to them so they stay in place but are still easy to move. But in general I like the idea and it's at least as appealing as the op Casio watch ring.
Love the book but I always thought this needed a little bit more explanation. It seems in our world people seek power for many reasons and only a small minority seek it simply to make people suffer. For example, people seek power to increase their own safety and pleasure. The suffering of others is incidental to their goals. In addition, since suffering is universal and requires no human actor to inflict. It seems rather like a huge waste of effort. I think it's better to read O'Brien's statement as something more specific to the world of 1984 and Big brother rather than something general that applies to all power seeking. We don't really learn that much about the workings of the inner party and the kind of propaganda that they are subjected to or subject each other to, and this might be evidence of what that looks like.
Also, the wood frog's ability to withstand freezing may help researchers discover how human organs used for transplants could be frozen and thawed without damage. This would increase the allowable time between removing an organ from a donor and implanting it within the recipient, which could make many more transplants possible.
While certainly some good would come of this, imagine the unintented consequences of such an advancement, especially in a world with stark income inequality.
There needs to be a word for when someone does something bad in their own interest, and as a result the wider society degrades far more than the individual profited. Corrupt anti-corruption officials, yes, but also college professors issuing passing grades to customers, er I mean students, news networks that give in to the urge for sensationalism and ideologically driven attention, lawyers who escalate conflict for profit, and so on. The individual act is (relatively) harmless, but over time if left unchecked these acts degrade institutions and eventually society itself (or confidence in society, which is the same thing). These actions cause a society to move from the good nash equilibrium to the other. A healthy society can endure a certain amount of malefactors, has an immune system for them ranging from "stink eye" to "prison", but when the violations gets higher than a certain threshold, across a certain number of industries and institutions, when the immune system starts failing to catch even a fraction of it (or the immune system degrades completely), the host society begins to weaken and the majority of the herd flips from "cooperate" to "defect".
How about "enshittifiers"?
Upvoted for Shoegaze reference. Suggest hosting a demo with My Bloody Valentine "Loveless" as the default musical selection. I will also echo the other commenters who believe your communication needs to improve; it is unlikely that I will download and install your code because the risk/reward ratio is poor, as it is for most OSS (open-source software).
Note: distribution wins in software. Suggest you rewrite this to be at the intersection of distributable and local, which basically means running in the browser. Consider porting to JavaScript and distributing either as a simple static webpage, or perhaps a codepen. This might be an interesting use of two interesting but little-used browser APIs, namely WebAudio and WebGL or perhaps WebGPU. For simplicity I'd target Chrome first.
The fact that persistent storage has to happen at the same place to be reliable is only incidental, not a defining attribute of a relational database.
Persistence happens to processes who's state is expensive to reconstruct. Measurements of the world requires time travel to recover and so are quite expensive to acquire! "Incidental" implies a weaker correlation than warranted.
As an aside, ~100% of data models are incapable of modelling contradictary or ambiguous measurements and fail to adequately model alternative normalization and integration into whatever model of "truth" you pick. And these systems entirely fall over when any part of these tacit and underspecified constraints change.
having a very thin skin is not a good trait to have
It is if you get leverage from it. There is a perverse incentive to have thin skin - in fact, you can get flak for not having thin enough skin, these days. I once heard someone call it "reverse CBT". I invented a game called "Take it Personal" to demonstrate how easy this is, where the participants say anodyne things to each other and are tasked with taking offense. It is an easy game, if an unhappy one.
Tempting to write a response piece, "Get me into data hell, I need the money."
I wish this was a link to the original Oxfam audit. It's strange to me that an audit would say that there's somewhere between $23 and $41 billion missing. If the audit really knew what it was doing, wouldn't it have a more precise number What is unaccounted for?
That said, it's high-time for organizations like the World Bank to have fully transparent finances. Like, I should be able to go to a website and see where every single dollar is being spent. I say this as someone who's a citizen of a country who contributes heavily to the org And therefore, I think I have a right to know where my money's going.
I think you missed a tense. Was atrocious, we got jquery, which got folded back into javascript. If the last time you worked with vanilla js was when jquery was hot, you're views are outdated.
The problem is within that gray area. For enjoyers of vanilla js, like myself, I'd hate it if "core" js got so small that I now started to require a compiler for my ES6 code. If I was in charge I'd say "fine, but the core must be at least as large as ES6" and I'd reserve the right to tweak browser native modules in minor ways (for example, it would be nice to support a SPA syntax where you could export/import modules from within the same page without either a) hacking the global object or b) generating unnecessary resources).
I wrote something similar, but for the web. I call it "Literate Markdown" (https://simpatico.io/lit.md) and you write markdown and your html/css/js/md code blocks are both exposed as text and as code blocks for execution in the browser. The format expects to a) be transformed and exposed by a special server (https://simpatico.io/reflector.md) and b) rendered in a browser. This code also includes a simple test harness that, for example, turns the favicon green/red depending on if exceptions are thrown in your code (https://simpatico.io/testable.js) I also wrote an acceptance test that loads most of the interesting parts of the site in iframes and combines their test output (https://simpatico.io/acceptance). That page also has notes for using headless chrome to run the tests. Also, the server (lazily) caches all transforms with file watcher invalidation, disallows 3rd party cookies, and starts up instantly.
The central use case is to have a fun and fast way to play with browser code, using your favorite editor, and literate programming techniques. All while being open source, local first, and minimalist.
The repo (https://github.com/javajosh/simpatico/) is not yet npm/npx compatible so you have to fork and run. This is a local first, minimalist project that has ~2 small dependencies, which themselves have no deps, so publishing was not a priority.
Eventually I'd like to automate an md-> js process, such that the md is the canonical source for javascript and the final js is a build product. I'd also like to clean up the code and publish to npm, but sadly someone is squatting on the @simpatico handle and npm won't do anything. :(
My cynical understanding of category theory is that it's the mathy Peter principle: category theory is when meta mathematics starts to lose all value. Except two professional mathematicians, of course, in which case the value is almost purely economic. "He who is employed to teach something that cannot be understood will always have a job."
Wow what a cool writeup. Two things stuck out for me (I'm only halfway so forgive me if you address these issues). I have two comments on processing the 511.org data. First, you generally want to use a streaming parser rather than one that allocates memory to the entire response. Second, you should filter out the most data first (in this case, dropping the stops you don't care about) and then filter the least data second (dropping the fields you don't care about). This idea is similar to how, in SQL, you want to order your WHERE clauses such that the most impactful comes first.
This may not be strictly required by your use-case at this scale - 27MB of data is not a lot, after all. And the filter ordering performance is probably trivial given its all in memory (I'd be curious to see a benchmark!) However, a) efficiency is always good, especially on a Pi, and b) if you make the code more efficient it makes it easier to scale later if you want to.
Also, regarding the BOM problem you had, wouldn't it be nice if all APIs had a "developer feedback" mode built into it? That is, you can send feedback to the ppl who own the API endpoint by...posting to the endpoint. In this case you could send "Please remove the BOM. k thanks."