9 ms·
All Programming Is Web Programming (2009)
- WalterGR 5y ago(2009)
- raxxorrax 5y agoI don't mind older content, but I think on this topic it is pretty relevant because 2009 had different requirements for web devs compared to today. I am no web developer either, but know enough that web projects can be as complicated as any other type of software. The basics are also good to know for any programmer, since web interfaces are a common and universal solution.
- juped 5y agothe year isn't a knock on it for being "old", it's important context
- blasdel 5y agoA programmer that doesn't make websites is like a glass artist that hasn't made bongs
- fian 5y agoYou have mixed present work for the programmer with past work for the glass artist (blower?).
- deleted 5y ago[deleted]
- smitty1e 5y agoNot sure about Atwood's Law. JavaScript has pride of place in browsers for now. But as WebAssembly gains traction, I look forward to avoiding the ungainly JS syntax in favor of pretty much anything else.
- 0x737368 5y agoWhat's wrong with JS syntax? Seems pretty modern and adequate for what it needs to do
- PedroBatista 5y agoMaybe what it needed to do, but not what people do with it now. There are entirely “enterprise” systems coded in that thing. It’s an human problem, original JS syntax was fine imho.
- 0x737368 5y agoPersonally, I think that the original JS syntax is absolutely horrendous and is in no small part responsible for the bad reputation JS is still shaking off. Modern JS in comparison is an absolute dream.
- elevenoh 5y agoI don't think js was ever all that bad, little ambitious however. But modern JS now checks off nearly all my boxes.
- smitty1e 5y agoI find in hard to know where things begin and where I am executing in a JS codebase/library. This may have more to do with the async nature thereof than the syntax specifics.
- NtrllyIntrstd 5y agoI still find it unfortunate that the guy who invented JS originally wanted to make a lisp but was told to make it more like the C family. Would've been interesting to have lisp run the web. A lot of things might be different today.
- dvfjsdhgfv 5y agoIt's interesting. 12 years have passed, and I still prefer a native (not Electron) desktop app to its web equivalent for practically any task, from writing code to working with spreadsheets to PCB design. Even for such a basic task like word processing I prefer to use a local program rather than a web app.
- mech422 5y agoyeah - unfortunately, it gets harder to find native apps every year...
- ho_schi 5y agoEvery Electron App teaches us a story, often stuff like "time to market" and "we cannot provide stable APIs" and "we don't pay your RAM" and "it is okay that it's slow and laggy".
- mattbee 5y agoMe too. But this rant still resonates and speaks to a snobbery that's still occasionally alive. I am surprised that high quality web apps still seem just as rare in 2021 as they did in 2009 despite the explosion of tools. i.e. apps that do something non-trivial, where the network usage disappears under "acceptable interaction time", where the UI toolkit is consistent & discoverable, where nothing is broken. But it's still true - if you want to program software that people use, it's using web technology or it's a video game or it's a tiny tiny niche.
- mattgreenrocks 5y agoYeah. It almost feels like there's a ceiling on quality imposed by the platform. 60fps is still seen as an aspirational goal for webapps, and most apps we use everyday are just...okay. I've yet to use a webapp that I found truly inspiring in execution and design. I may just be a snob. It's possible, but most of the time it always feels like once you're starting to settle in and really use a webapp, the seams show themselves somehow: the browser hiccups, a server is slow, the React filler boxes linger for just too long. However, this doesn't really matter; the real goal of webapps is mostly to generate economic activity. In the past, this caused me some existential grief. I deal with it by simply avoiding any dev work related to the web. For my own projects, I stick to native apps. I think it says something when I choose putting up with Xcode vs developing for the web. :)
- 0x737368 5y agoHuh, if the C guys were laughed at by the assemblies, the pythonistas by the C guys, I can't wait until the day that something emerges that Starbucks-chugging hipster 'React code-artisans' will be able to laugh at. "Oh, you think you could adequately program a neural interface using Scratch? How quaint"
- bitwize 5y agoLow/no code fits.
- austincheney 5y agoFramework fanboys have been comparing writing JavaScript without their stupid framework to writing assembly since jQuery was a thing. https://news.ycombinator.com/item?id=27486041 https://news.ycombinator.com/item?id=27486041 https://news.ycombinator.com/item?id=27450431 https://news.ycombinator.com/item?id=27450431 It doesn’t matter because such comparisons are bullshit posturing by people who are insecurely qualifying their ignorance of how their beloved tools work.
- hawski 5y agoWhere do Cobol, Java, C#, Basic, Object Pascal, C++[0-9][0-9], Tcl programmers fit?
- collyw 5y agoI never get why CRUD work is looked down upon by many on this site amongst others. Most applications are a variation on CRUD. A well done CRUD app should be pretty simple, but simplicity is not something that our industry encourages, the interview process often selects for the ability to produce complexity. As a result most CRUD apps (certainly the ones I have inherited) are an over engineered mess.
- Cthulhu_ 5y agoIt's because people get bored. With CRUD apps, the challenge is (should be) in the domain, wrangling that into a comprehensible shape. The various layers and code should be boring - input, validation, API, business logic, persistence. It's the kinda thing that can already be built using visual programming tools, drag and drop interfaces or a single config file churning out a fully functional CRUD API with all bells and whistles. But that's boring. I'm a software developer, I want to write code. If my code is too easy, if it's just what it's supposed to do, where's the challenge? I know, let's use a difficult language! I know, I'll take this chunk, this is now mine, I call it a microservice and it's my baby. An overview of the whole architecture? Pfft that's boring. Netflix does it like this, look they have over a hundred microservices, clearly they must be doing something right, right?
- collyw 5y agoI am trying to work out if you are being ironic in your reply or not. I am a software engineer. My job is to solve problems, not to "write code". It just happens that most of the solutions will involve code. The less code that can be written to solve a problem the better. More code is a liability not an asset.
- dvfjsdhgfv 5y ago> More code is a liability not an asset. Unfortunately not all managers agree on that point,
- anfilt 5y ago
- openfuture 5y agoWow this is a super hostile sentiment, either web or gtfo. A much less hostile statement that is easier to defend would be "All Programming is Network Programming" - could do an interesting syntax comparison based on what kind of network is in question, but I guess people do that all the time with "monads in other programming languages (than haskell)" kind of posts.
- ho_schi 5y agoI've the same impression. Looking around I see a lot of native host based programming happen, not just Neovim or LSP but also the broad range of apps for smartphones. Usually total statements aren't true. What would people appreciate? A native client for Slack.
- mattgreenrocks 5y agoI like Jeff Atwood’s take on a lot of things, but this article has always been so thought-leader-y to me. Feels like it was written to make a splash rather than convey truth. Computing would be immensely dull if we all fixated on our choice of platform to this extent. Platforms and languages are ephemeral and should be treated as such. The web will not always be the dominant platform.
- danbruc 5y agoThe advantage of web applications is that you do not have to install and update them, that they are inherently sandboxed, and that they are not operating system depended. And even those are not universally good things - server down or no internet connection, no application, feature removed in new version, good luck trying to run an old version, and operating system dependencies give way to browser dependencies. And you have turned even the simplest application into a distribute one unless you put in the effort to make it work offline from the browser cache. Everything else is worse because you are forced to use this single technology stack that the browser offers you. And people are trying to break free of those limitations, WebAssembly, WebUSB, or doing their own rendering into a canvas instead of having a DOM. One size fits all was, is, and will never be true. Are there certain applications that benefit from being web applications? Sure. But is this a panacea? Certainly not. At some point you browser will just turn into another operating system running on top of your operating system. The success of the current situation is, I think, mostly due to the fact that the web browser was a universally adopted least common denominator for running arbitrary code. You could get all the benefits of web applications without the browser, you could have platform independent binaries, you could download them on demand, you could sandbox them. But you probably would have a hard time to invent those standards and get them universally adopted by all platforms and operating systems.
- ttfkam 5y ago> server down or no internet connection, no application Service Workers https://developers.google.com/web/fundamentals/primers/service-workers/ https://developers.google.com/web/fundamentals/primers/servi...
- unknown_error 5y agoI was gonna say that this comment seemed like something from a decade ago... before I realized the article itself is from 2009 (12 years!!) Yes, all of that is true, and arguably none of it matters anymore. > At some point you browser will just turn into another operating system running on top of your operating system. That happened long ago, aside from a few specialized apps in mobile stores. The only time people need those is if they want faster repeat functionality that they use often (email, calendar, some stores, etc.). Otherwise, everything from office work to realtime raytraced gaming can happen in a web browser... and that's great, even if the dev experience relatively sucks and the code is messy. The Web has turned programming from snobby/precise/beautiful/elitist/expensive engineering to arts & crafts and democratized content creation in the process (eh, for better or worse). Nowadays writing a webpage is easier than writing a letter.
- vince14 5y ago> Sorry Jeff, but your post from today is simply stupid. > Think only about the embedded programming… do you really think that you can create a web app to control your washer? > Or do you want a web interface to drive your car?!? > Get out of your cubicle and look around… you’ll see that there is something else running outside your server and browser. > By the way, are you planning to create a web app for the BIOS of your computer? Yes, to all :D Those comments are golden.
- AnimalMuppet 5y agoMaybe yes, but really no. Yes, your washer now has a web app to control it. But the embedded system that actually controls your washer is not a web app - not even close. Ditto with the computers in your car, or the BIOS in your computer.
- true_religion 5y agoWell, web apps routinely interface with lower level systems like databases, and file systems. I don’t see why interacting with an embedded system is any different.
- AnimalMuppet 5y agoOK, but what Oracle does in writing their database is not "web programming", by any reasonable definition. I don't care how many web programs use it as a lower level. Ditto Windows creating a file system. That's not web programming in the same way that it wasn't GUI programming 15 years ago. And that's even if you have a web interface. There's plenty of embedded systems where you don't. Here's an embedded system that run on a spin of an 8051 with some extra on-chip peripherals. (Why? Because lower hardware cost.) It's never going to support a web interface. Over there, there's an embedded system that controls the wing surfaces on a jet fighter. It has to adjust the wing surfaces every 1/40 of a second. A web interface will never be allowed anywhere near that. And so on.
- locallost 5y agoI read the interview of Philip Greenspun in Founders at Work recently and in it he says that he realized applications will be written for the web in the future because you don't have to deal with different operating systems. This was early 90s. It's really amazing that this had actually happened by 2009, and the author of the quoted blog did not yet get it. It could be that "web programmers" are not smart enough to understand all of what was listed. It could also be that the listed stuff does not actually matter, as it's just one way of doing things. I don't think that having a job that is difficult to do is something that you should wear as a badge of honor, if it can be done in an easier way. The important thing is what you're able to do with the skills and tools you do have, and how much the people that use it like it. The cynic in me thinks some people spend a long time to understand difficult things and concepts, and therefore don't want to let them go because it will effectively mean that they'd wasted their time.
- ascotan 5y agoThere was a time back not so long ago when there was a craze to rewrite every desktop app as a webapp because the web was going to eat everything. It was the hype cycle of web 2.0. Those days are gone imho. Instead it was mobile that ate everything. The OP that Jeff is commenting on isn't wrong. I see it everyday with junior devs that have very little practical experience with real engineering but they know a little python, maybe a javascript framework and can figure out AWS well enough to deploy it all using serverless. This has been going on in multiple tech stacks - not just desktop programming. There was a time, for example, when people didn't use ORMs or nosql. Working with a real database is becoming a lost skill. One of the dirty secrets of the success of nosql is frankly because new developers are just bad at databases and don't understand fundamental skills. Ditto for AWS and application architecture. I see it as somewhat inevitable that the next gen of developers want to do easier development. The logical conclusion of this will be 'point and click' (LCARS from Star Trek?). 30 years from now we'll be complaining that our kids dont know the 'complexities' of python/javascript development and do nothing but 'low code' development.
- arbol 5y agoI remember agreeing with most of this post when I first read it but I don't think we'll see a continuing dumbing down of code. Blockchain, whatever your view on it, is forcing a lot of developers to write low level code with an understanding of garbage collection, abstraction, etc. This is also being felt in data science in which AI models are getting more and more complicated and the only way to scale them is to write lower level code. Point and click coding will never replace actually typing. Think about how much you can express with your hands versus speech. Unless you're versed in sign language, the gap will be very big.
- pornel 5y agoIt has happened. These days desktop apps are Electron. Even in the mobile apps the native UI parts are mostly navigation between various WebViews.
- Byamarro 5y agoWhat's worth nothing, nowadays most of the concepts "that are too hard for web developers" In the quote are already part of frontend programming. Concurrency - web workers Compilers - technically you can write compiler, but it's a very specific use case and I think that web is simply not a proper platform for writing them usually 3d - webgl Class inheritance - classes in js (they're not identical to i.e. Java classes but they provide a very similar abstraction on the first glance) Abstract classes - Typescript has it Pass by value vs pass by reference - something that js programmers had to always understand in the past for the sake of handling primitives and objects in js Garbage collection - weak references in js Software development methodologies depend highly on team
- chakkepolja 5y ago> Pass by value vs pass by reference - something that js programmers had to always understand in the past for the sake of handling primitives and objects in js. Noob question. Aren't primitives immutable? Does it need distinguishing between Value & ref types?
- pornel 5y agoCompare: function(x) { x += 1; } function(o) { o.x += 1; } The first one behaves like passing by value, the second like passing by reference. Under the hood the `Number` x may have been passed by reference and changed by creating a copy, or it may have been JITed to be an i32 actually passed by value, or optimized out of existence entirely. How it is actually passed ends up being an implementation detail that you can't observe from high-level perspective.
- Byamarro 5y agoObjects are always treated as a reference, primitives as a value. To say they're immutable requires a bit more of a context - immutable in what sense? You can reassign a different value to a variable that stores a primitive, so it's not like variables that store them are immutable. I guess that the simpliest explanation would be by code: let x = 4 let z = x z = w // x is still 4 let x = { b: 3 } let z = x z.b = 2 // x is { b: 2 }, because x and z hold reference to the same object