To your third point - the author would recommend doing research and prototyping with all the options you might consider based on your use-cases. He actively avoids being prescriptive in generic contexts like this because he wants to avoid arbitrary dogmatic solutions (like React tends to be).
Source: I work closely with him and have been frustrated with this stance until I saw people using Next and Remix for things like landing or contact pages.
(Sorry, somewhat copying this, since I responded to a similar point elsewhere.)
This is not practical advice for the vast majority of software engineering teams.
Most teams do not have the privilege of being able to do research and prototypes across multiple options, at least in a way representative of what their final product will look like. Most teams - at least those in small to mid-size startups - will start out building A, route through A' and A'' and end up building B once they land on PMF. If you were to run 5 different prototypes on A, you're going to be a bit upset when you end up at A' and you're likely to run horribly technically aground when you truly find the right thing to build.
Yes, if at the point when you discover B you have the latitude to rewrite your entire codebase to fit your new criteria, then by all means, go ahead. That will definitely outperform React. I think the teams with that kind of latitude is an exceptionally small fraction of all teams, and the number of teams with the technical chops to do it correctly will be an even smaller fraction of that. The rest of us will use React, which is roughly 80% as good as the optimal solution.
My experiences don’t really align with yours - most people are playing “follow the leader” with tech - “X uses Y, so we should to” and that’s it.
To your point though - use the platform. Vanilla HTML, CSS, and JS. All of that will be reusable no matter where you pivot and not lock you in to a pattern that might not work well for where you land.
This is a non-answer. It only really is an admissible solution if you're just working by yourself. React solves real problems when building web applications. If you use vanilla HTML, CSS and JS, you're going to have to solve those same problems. How are you going to do it? How are you going to manage state? How are you going to synchronize your state with the DOM? How are you going to organize your components?
Teams that use vanilla HTML, CSS, and JS end up eventually building an internal, buggy, half-implemented, undocumented version of React.
I didn’t say don’t use libraries at all. There’s a wide spectrum between rolling your own everything and putting a massive abstraction layer framework between you and the platform.
This is a really good article that puts very clearly some of the WTF moments I've had since having to take over a React project. However, if the title is "If not React, then what?", then the author should've answered that question.
I did find some recommendations for other reactive front-ends buried in the article, but I didn't see anything that set them apart aside from the fact that they are smaller projects. Now, if I want to follow the article's advice and get off of React I have a ton of research to do, research that the article's title didn't hint that I'd have to get going on.
Cool project, a mild pet peeve with this type of thing - I have to read 75% of the README before I find out what it even does. The first bits make a huge assumption about what the reader knows.
Good point, agreed. I assumed that most people looking at the repo would already be familiar with Firecrawl, but there should be at least a sentence or two explaining what it does regardless.
I’ve had a project I’ve been doing for ~6 months learning python through Copilot+ChatGPT. It feels like any other project that accrues technical debt, but that debt is just a lot weirder. It was rough at first, but refactoring has gotten a lot better recently with bigger context sizes.
Good one, however, like Google making memory worse, copilot seems to erode knowledge of programming quite quickly. Last week I was with a colleague at my house; when I hired him during covid he knew these things just fine, but after not having to type in a list comprehension for around 2 years now, when my Starlink was down for a bit, he couldn’t for the life of him create one; he asked Claude opus on his phone instead.
For real. I have the same experience. I'm 19, freelance developer writing Python among other things. Except I never learned Python syntax, and maybe never will.
For a senior-level professional? Yes, it does matter.
I wouldn't be comfortable with an accountant who couldn't do practical arithmetic in their head, or a surveyor who didn't have a fluent grasp of trigonometry and the ratios or function values for common angles.
Of course -- I don't care about the people working for them as a bookkeeper or assistent. They can be button monkeys as much as their boss lets them, but I also wouldn't expect those folk to reach very high in their career. Not everyone's going to, and a disinterest in and lack of technical fluency is a darn good predictor.
Your teacher was giving good advice about building skills and internalizing knowledge, because those are what contribute to mastery of a craft; maybe you were just being too pedantic or cynical to hear it?
I think this advice is backwards, as is the problem. I’d trust an accountant’s mind or a builder’s eye if I knew that they are acting from experience. But you don’t wanna trust someone who believes in-their-head is superior or reliable and makes you good.
The core idea is no, calculating in your head doesn’t turn you into a pro. Being a pro makes calculating in your head safe enough to rely on until you get to your desk and double-check.
That said, I was an integrator half my life and seen some accountants, big and small. Everyone used a calculator, it’s right next to their mouse and there’s another one elsewhere. And no one ever tried to talk about numbers afk, except for ballparks. Most of the times they suggest to go and query a db together. I find it very professional.
I just trust my accountant will use excel and what they are doing isn't rocket science.
I have no interest interacting with someone who is going to get into how great the slide ruler is and how kids these days need to learn the slide ruler. When I was younger I thought this type of person was highly admirable but now older and wiser I see how full of shit they are.
>> If you need Copilot to code in Python, have you really learned Python?
> Does it really matter though? It sounds awfully like when a school teacher said you're not going to have an calculator in your pocket.
Yes. A younger me had teachers say that to me, and that younger me thought they were wrong.
But it turns out they were right, and younger me was wrong. Calculator dependence created a ceiling built from "educational debt" that many years later severely limited my mathematical ability.
The problem is focusing too much on getting the "answer," and losing sight of building the abilities that allow you to get there with your own mind. Eventually the need to manipulate your automated crutch turns into a bottleneck.
It’s also kind of annoying to intuitively get to the correct answer and have everyone claim they can’t distinguish between that and you using a calculator.
I wonder if that would be an issue if nobody had any.
Isn't it obvious? If you can't do arithmetic without a calculator, it makes it hard to do algebraic manipulation. (Un)luckly a calculator that could do that arrived in my lap just in time. Then you get to calculus, and it was the same story. I eked by with a lot of furious typing, but the mental workload of that made it untenable towards the end and I wasn't really gaining much anyway because of that. It would have been far better if I'd just hadn't been allowed to use a calculator from the start.
It didn't affect my ability to reason and prove things, just as long those things don't strongly require the knowledge and skills I should have gotten from the calculator shaped gap in my education. I lack a lot of the background knowledge and/or familiarity and comfort with many skills that I should have.
I think we're using the term “mathematical ability” in different ways. For me, it's an ability to prove a theorem, not to solve a differential equation.
Yes, it does matter. While there are plenty of situations where it's foolish to forbid calculators, that's not universally true.
Forbidding calculators and requiring students to do mental math for absolutely everything is unnecessary. But requiring students to solve integrals by hand when they're learning about integrals? Entirely reasonable.
If your goal when teaching coding is to teach the mechanical process of writing code: sure, go ahead and use LLMs for that process. But if your goal is to develop a deeper understanding of how to code, then LLMs can very easily obscure that. The end goal is not always just the answer.
> But requiring students to solve integrals by hand when they're learning about integrals? Entirely reasonable.
I remember having to write code on a piece of paper in university.
Curiously, this lead to a lot of other students not really learning or caring about indentations and attempting to make code formatted in a generally readable way once they actually got access to IDEs and such.
They'd write it much like you would regular text on a piece of paper and would get absolutely stumped with unbalanced brackets whenever some nested structure would be needed.
Not only that, but somehow a lot of them didn't quite get around to using the various refactoring features of the tools, since they treated them like editors for writing text.
Did it help me memorize the basic constructs of the languages in question? Absolutely not, at least in the long term, since nowadays I have to jump between a lot of different languages and none of the syntax quite sticks, rather a more high level approach to problem solving.
LLMs just make that easier for me, letting me offload more work around language constructs and boilerplate, albeit requiring occasional intervention.
AI is not replacing the same function as a calculator does when solving a math problem.
Using AI to “help” learn to program is replacing the person’s effort thinking through the problems fully and is ultimately going to stunt their learning.
A calculator is fine so long as you understand what the operations actually represent. Remembering the multiplication table is not important, but understanding what multiplication actually does is.
The problem with AI-assisted coding is that, applied uncritically, it circumvents this understanding. And without it, you won't even be able to judge whether the code that CoPilot etc spit out is correct for the task.
yeah, at the moment anyway, because if you don't know what the syntax means, you can't tell when the code means something you don't want. that means you can't tell which copilot suggestions to accept and which ones to reject, and you can't debug your code; asking gpt-4 what's wrong with it only goes so far
imagine if the calculator in your pocket gave you subtly wrong answers most of the time
This is my new capability- I am not a coder or a programmer and I can get things built, in my own time, at my own speed, solo.
Would it be better code if someone with 3 years of university and 5 years of coding practice did it? Yes, very probably, but the gap seems to be narrowing. Humorously I don't know enough about good code to tell you whether what I build with llms is good code. Sometime I build a function that feels magical, other times it seems like a fragile mess. But I don't know.
Do I know "javascript" or "python" or the theory of good coding practice? No, not currently. But I am building things. Things that I have personal, very specific requirements for.
Where I don't have to liaise or berate someone else. Where I don't have to pay someone else. Where I don't share the recognition (if there is any ever) of the thing, I and only I have produced- (with chatGPT, Gemini and most recently llama3).
Folks have been feeling superior for 70 years and earning a good living because they spoke the intermediary language of compute engines. What makes them actually special NOW is computer science, the theory- the languages, we have very cheap (and in the case of open source local models free) translators for those now. And they can teach you some computer science as well, but that is still time and practice.
I'm the muggle. The blunt. And I'm loving this glowy lantern, this psi-rig.
One of the lessons that one learns as a programmer is to be able to write code that one can later read back and understand. This includes code written by others as well as code written by oneself.
When it comes to production quality code that should capture complex and/or business-critical functionality, you do want an experienced person to have architected the solution and to have written the code and for that code to have been tested and reviewed.
The risk right now is of many IT companies trying to win bids by throwing inexperienced devs at complex problems and committing to lower prices and timelines by procuring a USD 20 per month Github Co-Pilot subscription.
You individually may enjoy being able to put together solutions as a non-programmer. Good for you. I myself recently used ChatGPT to understand how to write a web-app using Rust and I was able to get things working with some trial and error so I understand your feeling of liberation and of accomplishment.
Many of us on this discussion thread work in teams and on projects where the code is written for professional reasons and for business outcomes. The discussion is therefore focused on the reliability of and the readability of AI-assisted coding.
hmm.
I ended up with a few 750+ line chunks of js, beyond the ability of chatgpt to parse back at me. So my go-to technique now is to break it into smaller chunks and make them files in a folder structure, rather than existing inside a single *.js
So readability is an issue for me- even more so because I rely on ChatGPT to parse it back- sometimes I understand the code, but usually I need the llm to confirm my understanding.
I'm not sure if this scales for teams. My work has sourcegraph, which should assist with codebases. So far it hasn't been particularly useful- I can use it to find specific vulnerable libraries, keys in code etc, but that is just search.
What I really need is things like "show me the complete chain of code for this particular user activity in the app and highlight tokens used in authentication" ... - something senior engineers struggle to pull from our hundreds of services and huge pile of code. And so far sourcegraph and lightstep are incapable of doing that job. Maybe with better RAG or infinite context length or some other improvement there will be that tool. But currently the combined output of 1000's of engineers over years almost un-navigable.
Some of that code might be crisp, some of it is definitely of llm-like quality (in a bad way)- I know this because I hear people's explanation of said code and how they misremembered it's function during post mortems. Folks copy and pasting outdated example code from the wiki etc. ie making things they don't understand. I presume that used to happen from stackoverflow too. Engineers moving to llm won't make too much difference IMO.
I agree, your points are valid, but I see "prompt engineering" as democratization of the ability to code. Previously this was all out of reach for me, behind a wall of memorization of language and syntax that I touched in the Pascal era and never crossed.
12 hours to build my first node.js app that did something in exactly the way I had wanted for 30 years. (including installing git and vscode on windows- see, now I am truly one to be reviled)
The problem I currently have with AI-generated code, as an experienced programmer who can read and understand the output, isn’t that the code quality is bad, but that it’s often buggy and wrong. I recently recommended in my company that if copilot is allowed to be used, the developers using it must thoroughly understand every line of code it writes before accepting it, because the risk of error is too high.
Copilot may work for simple scripts, but even for that where it mostly for things right, in my experience it still introduced subtle bugs and incorrect results more often than not.
I've been coding Python for 15 years, but I probably couldn't code in Python now without Copilot, or a lot of reference docs. There's so much meaningless trivia and idioms I've purposefully pushed out of my mind so I can focus on other things. If copilot has my back, why do I need to remember that crap?
Learning to be a good programmer is as much about learning how to avoid technical dept as it is about learning to use a programming language. It may take a while until an AI assistant will be able to help with that.
I was trying to be helpful. I was responding to someone else who said they have a Mac. But, if you want to relate it to the title, I don't believe there's any technical limitation to developing an app for Windows that can help you transfer files from an Iphone. And as far as I remember, the Android transfer app on Windows (or maybe Mac) is pretty bad as well. Maybe the issue is that there's no money to be made from this, so nobody develops nicer apps. In general I do agree that Iphones are easier integrated with Macs, I personally don't have a problem with that
"relies on Edge" is a bit inaccurate. WebView2 and Edge ship from the same codebase, and are hardlinked if they both exist, but are separate from an install/uninstall perspective.
It's not Electron, it's using Edge WebView2 which is drastically different from MSHTML.dll in many ways. If you have it installed you can see the msedgewebview2.exe processes in Task Manager.
Agreed that it appears WebView2-based (at least on Windows). I apparently have the new Outlook already on my computer (how? Not sure!) and I see WebView2Loader.dll but not LICENSES.chromium.html.
Huh - okay, I retract my claims about it using Electron.
...which I based entirely off the fact the right-click menu used Chromium's non-native-menu-styling - along with MS' history of using Electron elsewhere.
For your specific question, Wally’s Lights is great, and like others have mentioned, something running WLED to control them is a great choice.