One Hundred Ideas for Computing
github.com
github.com
There was a point in my life where I was working on a long-winded, personal project. It really put a strain on my psychological health but I knew I needed to finish it. But as things go in situations like that, suddenly all kinds of other things started to sound so much more interesting (hello, procrastination!).
After too long, I finally noticed that by starting new exciting side-projects all the time, I was just dragging out my main project. So I decided that in order not to get side-tracked any more, I wouldn't jump head over heels right away any more into every "great idea" that popped into my head. Instead, I started writing all these ideas down on a list so I could come back to them after the other project was finally done.
And I actually did go back to the list! It had some 25 ideas on it... and, of course, by then, none of the ideas that sounded so amazing when I first came up with them excited me at all any more. So for sure, I would have never finished any of them-- but I would have started all of them had it not been for that list.
These days, I still stick to that general approach. Writing ideas down on a list is a little bit like not writing an angry reply right away to something that upset you but to sleep a night over it first. It's the short version of the "test of time", and it really helps you focusing on stuff that's actually worth it.
Time is a valuable resource and you only have so much of it. Even if your ideas are better than mine were (and they probably are), it still does not hurt to let them sit on a list for a little while.
As it turns out, we had no choice, and we cut what we thought was “to the bone” to make the schedule. Everybody felt unhappy about the cuts. To assuage our feelings, we simply told ourselves that we weren’t cutting the features, we were simply deferring them to Excel 6, since they were less important.
As Excel 5 was nearing completion, I started working on the Excel 6 spec with a colleague, Eric Michelman. We sat down to go through the list of “Excel 6” features that had been cut from the Excel 5 schedule. We were absolutely shocked to see that the list of cut features was the shoddiest list of features you could imagine. Not one of those features was worth doing. I don’t think a single one of them was ever done, even in the next three releases. The process of culling features to fit a schedule was the best thing we could have done.”
— Joel Spolsky, Painless Software Schedules, https://www.joelonsoftware.com/2000/03/29/painless-software-...
- "5. Life engine" and "92. Personal Data API"
I'm working on this in "Human Programming Interface" :) https://github.com/karlicoss/HPI#readme It's far from solving these in general, but it works for me very well.
- "73. Web Of Trust Recommendations"
Oh yes, I wish this so much -- it's much more meaningful to see recommendations from someone I know than generic ratings on Amazon. Also I don't think it should be limited to products and services -- imagine if you could also have some decentralized reputation framework for politicians/public figures etc.
- "33. Personal infrastructure" and "64. Peer to peer backup"
Syncthing is missing, who have added 'untrusted devices' recently https://docs.syncthing.net/users/untrusted.html This lets you keep encrypted files on the other end.
Great list, also see
Ugh the privacy concerns. Wow the benefits.
It's kind of like what wikipedia did to the "knowledge expert geniuses". Back before wikipedia there would routinely be conversations about some subject where people would argue about their knowledge pools and compare and debate them.
Those convos don't happen anymore. You wikipedia something and its basically settled. Might be why everything is drama and opinion these days.
But that would basically be wikipedia for "I said this" "Nuh-uhh" in addition to a host of other things for recall, tracking, etc.
You should be doing your own lists!
And it course package based programming is a must, just like modular programming.
Even small improvements in those areas would save millions of dollars and countless hours of frustration.
I think the value in what seems a kafkaesque declaration is that long term stability may trump feature turnover in things like OSes.
But, come on. Shells can be so much better.
Github proves that you only really need 2 things: versioning and displaying on the web. Theming, templates, CMS, whatever. Easy versioning + trivial deploys (git push) are a winning combo.
For "social built on email" I think that the Fediverse[1] solves the "nobody owns" part, but there's an impedance mismatch between social networks and email because people want to be able to join conversations with strangers on Twitter, but don't want those strangers to necessarily be able to send them direct messages.
Perhaps what email really needs is a concept like "Following", so you could have an account which only accepts messages from people you've whitelisted, and their mail client could check your server to discover whether they are on that whitelist or not.
But they feel good. Braincrack : https://www.youtube.com/watch?v=0sHCQWjTrJ8&feature=emb_logo