$1 microcontrollers, robotics, hundreds of programming languages that one can choose from, IoT FPGAs, and so, so much more. And what's even better is that computers are now everywhere, so we are no longer building things that are locked in a box on your table. You can command real-world objects, move real money, alleviate a disability, change people's lives, and all through your code.
I also believe that the most crucial aspect in all of this is that there's finally readily available, well-presented knowledge about all those things. Incredible educators and hobbyists in many of the fields mentioned above spend their days trying to get people interested and inspired and help them learn for FREE. Knowledge and expertise on most topics nowadays are just a few clicks away. I LOVE this.
It depends on your definition of fun. This is my blog, so I'll use my definition — "fun" to me is being able to get my computer to effortlessly do things I have to and want to do. Flow state and all that.
To me, I don't find most of these areas "fun". Interesting, worthwhile, valuable? Yes. Fun? Nah. None of these areas reduce the friction of using a computer for the things I use it for — tracking my budgets, life metrics, doing research and tracking my notes/thoughts, and ideally a bit of digital and IRL automation. Most of that (along with my day job) falls squarely in the realm of web development.
Computers and software are tools; they're means to an end relative to my interests. Tools should at least not get in the way, and ideally they'd be a joy to use.
For instance, Excel for me is the tool to use for a lot of numbers work, and I find Excel exceptionally more fun than a PL. However, it's not the way to make apps.
Now, if I wanted to build apps using the fun approach of Excel, then I can do it now with my new and shiny programming language for board games: http://www.adama-lang.org/
Yes, I wrote a language for board games! Why? Well, I'm a dummy. Ultimately, I'm trying to make it effortless to connect people around some state and what-not. I hate databases, and I have spent the last decade in infrastructure understanding the problem space.
Now, I am finding myself want to effortlessly build the user interface to the board game back-end, and so here I am foolishly inventing a new way to think about building products.
I believe your definition of fun is appropriate, but the bad news is that we are living in the dark ages. The only way out is to try to invent something, risk failure, risk scorn from our peers, and hope that we discover something. It's the only way out of the dark ages.
It's technically code, but it's meant for description rather than implementation, and it's designed to be easily understood by people who've never been exposed to data structures or flow control.
Here's what I hope will become the shell for this computer (live-updating, postfix): https://archive.org/details/akkartik-2min-2020-12-06
The big caveat: I have _no_ idea yet how to build a network for this computer. It has a screen and a keyboard, and I can probably get some sort of persistent storage. But that's about it for a while.
Which time in history are you referring to that this was possible?
From what I can tell, it's easier now than all the years i've had a computer to do whatever I want, pretty much whenever I want.
This wasn't the case for most of the 90's and 2000's.
Not only that, but the sheer amount of things I can use my computer to do has sky rocketed.
>tracking my budgets, life metrics, doing research and tracking my notes/thoughts, and ideally a bit of digital and IRL automation. Most of that (along with my day job) falls squarely in the realm of web development.
I disagree that most of those things are 'squarely' in the realm of web development. You could do many of those things without web development.
The friction you're experiencing may be in fact trying to use the wrong tool for the job.
>Tools should at least not get in the way, and ideally they'd be a joy to use.
Again, to reiterate my point, hammers are fun to use as long as you're hammering nails, trying to hammer screws is much less fun, likewise, trying to screw in a nail isn't very fun. It's an exercise in frustration.
Maybe exploring different technologies to achieve the tasks you want rather than dropping into a web development mindset for every single thing you need to do on a computer will make computers fun again?
Zero local tools required to code and deploy a URL from a reactive notebook.
I made this as soon as I discovered the environment was fun, my contribution is extendeding it to serverside programming.
So it's a live coding environment and web development platform. Fun and pragmatic, exactly coz I felt the way you did, I don't anymore.
Computers were never fun in that sense. Probably never will be.
no offense but this is a weird definition of fun.
If it's fun and easy then you're probably not solving any hard problems or building products that people want.
I've never considered computers to be fun. As you mentioned, they are tools to solve some problems. Some are interesting and challenging, most are tedious and grinding.
Computers and software engineering is a craft, way to make money.
For the first kind, I'll make a single fullstack repo that hot-reloads both server (maybe F#, Kotlin, Go w/Generics?) and client (Vue/TS) locally on autosave, and deploys on commit/push. That's fairly frictionless to my expectations.
You could also solve the metaproblem, make things more fun, streamline out all the unfun things in your toolchain/process.
Most of that 1) relates to web development in some way (i.e. you get the data from a website), and 2) has gotten harder over time as software gets in the way.
If it's all you live and breathe, I'd probably feel the way you do.
I spend less time worrying about browser compatibility, I have better tools now for building things, Javascript is faster. And if I want use the old methods, they still work. You can still deploy a website today using mostly the same methodology that you did in the past.
But very little of that stuff was fun. I remember trying to absolute-position images on the page because CSS didn't reliably support border-radius. That wasn't fun. I remember wondering how to embed Flash into websites because I needed a completely separate language to do something that can be hammered out in a day in a Canvas now. That wasn't fun.
Building a website is way lower friction today than it used to be. It's just that we have higher standards today, many people over-complicate it more than they need to, and our understanding of what is easy and low-friction has evolved and we can more easily see the problems of modern web dev. What was easier to do in the past on the web than it is today. I can set up a static Netlify site to serve images in 5 or 10 minutes, it's drop-dead simple.
In terms of treating computers like tools, this is something I actually do agree with, and do agree that if you stick with mainstream tools you're going to continue to be frustrated in that area. Everyone is different, this is not a universal suggestion. But my minor suggestion is that what you're feeling is the same frustration that has made people like me get progressively more religious about Unix philosophy over the years.
This is maybe not useful advice, but I just spent the weekend configuring the i3 window manager on Linux to integrate with all of my applications and handle modal keybindings, and it is genuinely the most fun I've had on a computer in a while -- it's so well documented and easy to work with and flexible and controllable that it really did feel like just chaining everything together and trying things out and seeing what did and didn't feel good. i3 is an absolute joy to configure.
There are programs out there that don't fall into the data-silos you're frustrated with. Matrix is a fun protocol to build on top of if you're sick of Slack. Image viewers like sxiv are really composable, tmsu is enabling some really powerful workflows for me with how I manage files. I love that when I buy ebooks and load them into Calibre I can edit the layouts and fix typos directly in my ebook manager. There is a world out there of programs that work well together, that are designed to adapt to your preferences and then get out of your way. They're just often not the popular proprietary apps.
Computers are not tools for programmers, they are augmentative systems for all activities of human intellect, or, they should be. In contrast, my feeling is that most of @malux85's tech laundry list are implementation details, research areas, maths: support systems & tech-wonky technics.
More tech for techies is not fun. More tech for industry and dollars is not fun. We need a real return to "create more value than you capture," (Tim Orielly) we need to be opening up potentials & possibilities, that others might roll with & explore. I thought you expressed that well, with this humble core statement:
> Of course you have an extensive list of things you wish your phone/computer/most-used apps could do; everyone does. You know the majority of it will remain a wishlist; there’s almost no hope of the feature you really want being implemented. This isn’t empowering.
Here here.
I have my own pet theories. Applications have gotten too big, prefigured too strongly. Computing itself, general systems research, has suffered greatly. The tides have been going the wrong way for years. Spotify used to have some really amazing plugins, with all sorts of awesome wild experiences. Closed. G+ social network launched so very long ago with only one api call: read posts. And it never grew another capability again. Applications have become totalizing experiences, where-as in the aughts there was this vision of intertwingularity, of interconnectedness, where each piece of computing was a reagent among a greater sea of computing systems, and that the user would have powers to shape the world about them.
Today's PG "what i worked on"[1] has one strong lesson that shows up a couple times, and it jives with this way things have gone: "the low end eats the high end." 'Worse is better,' (1989, in a book on lisp) in another form sort of/not really/but similar.
But I think our quest to build low systems has peaked. We've consumerized our industry to death, driven the ambition to compute better out. Everyone will swear to you that users want simple, but the whole paradigm is a black iron prison of a reality few have tried to escape from or even picture alternatives to. It's been profitable to industrialize, to take, to capture the softness of computing, and turn it into hard, simple, product. And with communications technology we've arisen radical new communicative capitalism, kept the simplified computing engaging by having it global-brain sized. Yes, I think it's ever so "realistic" to put forward "worse is better." But I continue to believe that computing is a much more broadly interesting & engaging medium, if we can undo some of the shackles that our assumptions have lead us towards, if we can build bold open exciting programmable-for-everyone malleable end-user-programmable information spaces. Make things live, data-oriented[2], record the events/processing that happen as more logged data... some possible suggestions. Towards expanding user agency, radically, across systems.
Computing needs to go high road, some day. Fancier forms of computing need to emerge, not for techies, but for us all; computing where humanity has agency & power & respect, can monitor observe & see the systems in action, the pitri dish of computing unfurling around them, and where they can replicate & experiment & test their agencies & powers. Computing must again fight for the user. Thank you for this wake up call Feifan, for identifying our disconnects, the impotency we have wrought.
I'd say it's more analogous to saying: Earth isn't fun anymore because I'm tired of North America, Asia, Europe, and Africa.
Web development takes the lion's share of computing people pay for which translates to the work people will do (we need money for survival). There are opportunities outside of it but they're few and far in between and highly competitive because few people want to deal with the monstrosity web development has turned into.
I've worked in niche industries that typically avoid touching web development for quite awhile and even I'm being pressured to reimagine these efforts as web applications, containizered, and deployed as microservices even when that approach is non-sensical in context. It's pretty difficult to avoid anymore from my experience. It used to be incredibly easy.
This just isn't true. There are so many systems where the web component is just the tiny part of the iceberg you can see, but underneath some form of browser client there's a huge mountain of computer-based technology. Concepts like containerization and microservices are far bigger than the notion of current web development.
This is a big area to wrap your head around. Best practices continue to change, risks change, technologies change, the scale of demand can change. It's complex.
As someone who's been working from his bedroom for the last year, this actually seems kinda true in a pandemic-induced depression sort of way.
But the computer industry as a profession, certainly way less fun. In the 90s Silicon Valley was places like Sun, SGI, HP, Cisco; building custom hardware and software. One got to work on compilers, kernels, server code and network stacks and all kinds of projects where correctness and performance mattered. Rewarding fun work.
Today Silicon Valley is Google (ads), FB (ads), NFLX (movies), Apple (cool, actual hardware and software product, but IMO too tightly walled-garden to be any fun).
Now, of course, yes there are people still working on hard problems and low level systems but those jobs are few and far between, have no recognition anymore and don't pay well. To follow a path of career progress, it's just adware or dumb webapps.
What he did was giving an incomplete list of troubling components for illustration and not picking the key and only components to improve for final resolution.
Also escaping to fun areas will leave all the rest - which are the overwhelmingly dominant part, used everywhere, everyday, by everyone - the same. Will not solve a thing but give the personal comfort of avoidance.
Go invent your own filesystem and write a driver with FUSE. It will probably take a week of work and will be pretty impressive to most people. Go reverse engineer the protocol for your rgb keyboard and write a program to change the colours. It wasn’t so long ago that I was blown away when I managed to make a crappy forum software in php.
If you think computers were boring, it’s not a reflection on computing but on you.
Point being, it’s not that things got boring, it’s just that boring is just how we feel about things that we have had for a while.
You keep implying that i hold the view that modern technology is boring. I never say that.
> I used to think the iPod touch was the most exciting thing in existence, mostly because I didn’t have one.
Perhaps you don't have much to compare the status quo to. I would hardly describe the iPod as old enough to be part of the bygone era. Hell you can still buy the modern version of one.
> Point being, it’s not that things got boring, it’s just that boring is just how we feel about things that we have had for a while.
I'd be curious how you define becoming boring if not a feeling that the novelty wore off. That's pretty much a dictionary definition of "becoming boring". Regardless i think we fundamentally agree, as my take is that people view things as being boring largely because so much programming has become commeditized, where back in the day the field was less mature, so everything seemed like an adventure regardless of if you were looking for one.
Edit: reflecting on this perhaps my view has changed, maybe the difference is the slowing down of moores law (and knock-off effects of that), especially for single threaded performance. I could use a computer from 10 years ago now without much trouble (ignoring certain specific workloads like video games). I think it would have been much more of a burden to use a computer from 1990 in the year 2000. Even just look at ui differences, windows 2000 is a big leap forward compared to windows 3.0 (which didnt even have real multitasking, only cooporative!) or MS-DOS. Windows 7 vs windows 10, not that big of a difference. Things used to change rapidly in leaps and bounds. Now its slow (albeit still steady) progress.
SIGH.
Why doesn’t the author try many of the other areas of computing?
Game engine development, live coding environments, artificial intelligence, virtual and augmented reality, Theoretical computer science and algorithms, embedded hardware and low energy computing, mobile development, compiler design, FPGA development, computational finance, distributed computing frameworks, blockchain development, automated theorem proving.
All of these areas are super interesting and fun,
The author saying “Computers aren’t fun anymore” and then whining about web development is like me proclaiming that Earth isn’t fun anymore because I’m tired of my bedroom.