Completely agree, and I've started writing more Roslyn analyzers to provide quick feedback to the LLM (assuming you're using it in something like VS Code that exposes the `problems` tool to the model).
I also want C# semantics even more closely integrated with the LLM. I'm imagining a stronger version of Structured Model Outputs that knows all the valid tokens that could be generated following a "." (including instance methods, extension properties, etc.) and prevents invalid code from even being generated in the first place, rather than needing a roundtrip through a Roslyn analyzer or the compiler to feed more text back to the model. (Perhaps there's some leeway to allow calls to not-yet-written methods to be generated.) Or maybe this idea is just a crutch I'm inventing for current frontier models and future models will be smart enough that they don't need it?
> where are people expected to learn these implicit rules? If the store doesn’t care enough to communicate these expectations (assuming they even have them, and that they don’t only exist in the minds of the self-appointed “cart police”), why should customers follow them?
The rules are not implicit; there are typically giant signs saying "RETURN CART HERE" over a metal cart corral that often contains other carts.
People are expected to learn this during their first or second trip to a grocery store that offers carts.
Similarly, at a full-service restaurant, you will be able to notice busboys picking up used tableware, and you will notice a scarcity of customer-accessible garbage bins (as compared to, say, a self-service fast-food restaurant).
If you are ever unsure of the protocol, you are always welcome to ask an employee. Employees at these businesses are typically distinguished by wearing a uniform.
Hope these tips help you on your future trips to Kroger/McDonald's/Olive Garden.
Or engineers are little bit full of themselves and know better how user should experience the product. If user is "holding the product wrong" it is a problem of a user and not a problem of stupid design, created by a person who knows in which order these buttons should be pressed. People around Desktop Linux could write a complete book about dismissing user's complaints.
The moment you have stubborn engineer who knows better than PM and user, it is really difficult to get anywhere. However if you will put such engineer into line of fire from a users that's suddenly not engineer's friendly PM trying to tell the engineer that this is wrong, these are frustrated people who would like to skin engineer alive as a punishment for using his "awesome" creations! That induces fear, but absolutely also crushes his ego, because somebody is berating product of engineer's genius like it would be a retarded hamster.
From my perspective, it is not about showing that PM is an idiot, it is about humbling your engineers. Their ego will grow again and this exercise will need to be repeated.
Which also showed that you can make NNs weight agnostic and just let the architecture evolve using a GA.
Even though these approaches are cool and NEAT even is somewhat easier to implement than getting started with RL (at least that is what based on so many AI Youtubers starting with NEAT first) they didn't ever seem to fully take off. Although knowing about metaheuristics is still a good tool to know IMO.
To paint a picture: I’ve worked with Microsoft technologies almost exclusively for decades but recently I was forced to pick up some Node.js, Docker, and Linux tooling for a specific app.
I can’t express in words what a giant step backwards it is from ASP.NET and Visual Studio. It’s like bashing things with open source rocks after working in a rocket manufacturing facility festooned with Kuka robots.
It’s just… end-to-end bad. Everything from critical dependencies developed by one Russian kid that’s now getting shot at in Ukraine so “maintenance is paused” to everything being wired up with shell scripts that have fifty variants, no standards, and none of them work. I’ve spent more time just getting the builds and deployments to work (to an acceptable standard) for Node.js than I’ve spent developing entire .NET applications! [1]
I have had similar experiences every few years for decades. I touched PHP once and recoiled in horror. I tried to get a stable build going for some Python ML packages and learnt that they have a half-life measured in days or hours after which they become impossible to reproduce. Etc…
Keep on assuming “Microsoft is all bad” if you like. You’re tying both hands behind your back and poking the keyboard with your nose.
PS: The dotnet SDK is open source and works fine on Linux, and the IntelliJ Rider IDE is generally very good and cross-platform. You're not forced to use Windows.
[1] The effort required to get a NestJS app to have barely acceptable performance is significantly greater than the effort to rewrite it in .NET 9 which will immediately be faster and have a far bigger bag of performance tuning tools and technologies available if needed.
This appears to be GA rather than GP, but I did some experiments with GP a while ago and the most counterintuitive thing I discovered was how essential junk code turns out to be.
First, for anyone unaware of the difference, in Genetic Algorithms (GA) you have fixed-length strings of instructions. Genetic Programming (GP) is a superset in which you have ASTs, which can get arbitrarily large (which can be a problem if you're not careful). I find GP much more interesting than GA, but the practical issues with AST bloat are why you see a lot more GA examples.
Anyway, not wanting to run into overly large ASTs myself, I went ahead and prematurely optimised my GP implementation by having it always collapse functions into simpler forms where possible, e.g. (+ (+ 1 2) 3) becomes (+ 6).
It turns out that this causes huge problems, because all that "junk" code is actually useful during evolution. Each generation inherits parts of its parents (called "crossover"), but if you cut down the information available to inherit as-per the above optimisation, you get much less variety between the generations and become more reliant on random mutations. As a result, it's like falling back on bogosort to find your solution.
Once you get down into final generations you can start running optimisations like this and removing dead code, but if you do it too soon, you won't reach a solution convergence quickly, if at all.
Interestingly, this principle seems to apply to DNA too, but DNA doesn't come with an optimiser. Hence most DNA is "junk" but the junk is actually more important than it seems.
It also turns out that genetically optimising (as opposed to hand-coding the optimisation rules, like I did) is non-trivial too. You can either adjust your main cost function to account for code size/speed alongside the problem you're trying to solve, or you can do a second pass that aims to optimise the code after you've already found an acceptable solution. Either way, there's a certain amount of black magic involved to decide how many iterations to run, or what constitutes a "good enough" or "fast enough" or "small enough" solution so you can decide when to stop.
Code size is also irrelevant in GA because the code is always the same size, but different instructions might have different costs, with NOPs having the lowest cost. If you allow goto or recursion in your VM then you have to impose a runtime constraint to avoid infinite loops, and can also assign a cost per instruction executed or per microsecond of runtime.
There are lots of reasons to want a robust local development environment, but a paved path or sometimes even the possibility of "consistency between environments" is not one of them dear sir or madame.
The JankStack in which one piles Python environment jank on top of Ubuntu/Darwin jank, and piles Docker jank on top of the previous, and piles Docker Compose jank on the previous, until you finally arrive at Jank-As-A-Service via something like ECS or EKS gives a terrifyingly comforting illusion of such with roughly the risk profile of speedballing hard drugs while simultaneously free climbing El Capitan. It has the nice ancillary benefit of subsidizing some combination of mega-yachts and private space programs, so that's cool I guess.
Sooner or later you're going to link CUDA, or glibc, or some other thing that just doesn't play like that. And then your are capital-F fucked if you didn't invest early on in some heavy-metal hermitic shit and some Gazed into a Palantir foresight around feature flags.
Excuse my harshness but people doing it needlessly is just unprofessional waste and abuse.
Some people seem to have no concern with the needs and timetables of the would be customers but instead burn through cash building fancy nonsense.
It's like going in to a car mechanic for tires and then finding out it took 3 weeks because the guy wanted to put on low rider hydraulics and spinner hubcaps for his personal enrichment.
The worst part is it's inherently ambiguous to the next people. They don't know if the reason something is there is because it's needed or because it's just shiny bling.
I am just here to thank HN for introducing me to Neal Stephenson. My life has been made better by reading his books.
It's so nice that someone writes books for smart people.
All and every book I read before were for the lowest common denominator level of people. Sure, smart, educated, cultured, wise people could get more out of some of them (like Anna Karenina), but the books were written to be made accessible to each and every human.
Getting to know Neal's works has brought in a paradigm shift in my reading and thinking, and now I read other authors like Greg Egan, too.
Thanks to Neal for being himself. And thanks to HN for suggesting his works on books threads.
I am reading Quicksilver right now, and read Anathem, Snow Crash, Cryptonomicon, Diamond Age before. Loved each one.
If you are reading this comment, feel free to suggest me other authors or works, although not from Neal, as I will read ALL of his works, anyway.
I designed and built my PWA. You just have to define a manifest and set an empty service worker. Boom now your mobile responsive app is a PWA. PWA can look exactly like native app if you are careful with the design. There are navigation patterns that users expect. Make sure to dial in the information hierarchy and design modals correctly. Use familiar iconography and use type that works at small point sizes. This is basic mobile design regardless of platform.
Firefox hooks into the Android type display settings. I would like to see chrome support this. It really adds to the app feel.
When you make a PWA you have to remake native components. Material Design 3 Web Components is not done yet. Apple has nothing for you so just set your border radius to 17px or whatever they use. Backdrop filter blurs.
You don't get the advertising from the app and play store. You don't get discoverability. However, discoverability is a marketing function. If your acquisition costs are under 30% of your product fees then there is no reason why you can't drive users to your mobile optimized website.
I don’t think the devil needs your help. This is a very real and pernicious belief behind the assertion that we should continue to leave large fractions of our student population behind when it comes to math. We say it’s too hard for them. It’s too hard to teach them. They don’t really need it. Excuses, excuses.
It’s a colossal failure of imagination, as far as I’m concerned. I think developing mathematical thinking is an absolutely nonnegotiable part of a complete public education. If kids are coming out of school with no clue of how to do it, we have got to mend that breach, not leave it.
BTW I think it’s utterly irrelevant whether someone “gets” PEMDAS or not. That’s not math. To the contrary, it belies a rote, formulaic way of thinking that is almost inimical to math.
Let's not forget one of the best approaches for indexing magnet hashes: https://btdig.com . It basically connects to the DHT and listens to queries. When a new one is found, it downloads the torrent data and indexes it.
At what point does it make sense to simply use the web for this? This is what the web was meant for, to enable standardized, dumb clients to consume content from any provider. What we have today is a wonderful architecture and a solid set of standards that is the result of over 20 years of evolution. As a user, there is not much I haven't been able to do on the web, that I do on mobile apps. Why do companies insist on the apps model, even when it causes them so much pain as to reinvent the web? Is the performance or user experience over web really that bad, even in this day and age to warrant shipping a 100MB package to the user? Or are there some nefarious gains or access to privileged information to be had by having your app installed on the user's device that the browser sandbox typically safe guards against?
I feel like 64 cores is getting rather close to a tipping point: What workloads are so massively parallel that they can use 64 cores of x86 but can’t use the thousands of CUDA cores on a Quadro card? I’m sure right now there are workloads that just need particular x86 instructions, but that feels like a temporary problem.
Am I wrong about that being a temporary problem (that would feel frustrating)? Are these cores just that much faster than CUDA cores? What else am I missing here?
I often hear people talk about getting CPUs like this for deep learning research, but all the deep learning work I’ve done goes straight to CUDA and lands on my GPU.
I also want C# semantics even more closely integrated with the LLM. I'm imagining a stronger version of Structured Model Outputs that knows all the valid tokens that could be generated following a "." (including instance methods, extension properties, etc.) and prevents invalid code from even being generated in the first place, rather than needing a roundtrip through a Roslyn analyzer or the compiler to feed more text back to the model. (Perhaps there's some leeway to allow calls to not-yet-written methods to be generated.) Or maybe this idea is just a crutch I'm inventing for current frontier models and future models will be smart enough that they don't need it?