Business Requirements are Bullshit - <AUTHOR> http://steve-yegge.blogspot.com/2008/08/business-requirements-are-bullshit.html <comment><USER2> I have read Steve's articles before with a certain amount of respect, but this time he addresses an area very near and dear to me, and all I can say about this one is:

I call bullshit.

This article was so full of it, the more I read, the more I had to change into higher waders.

As I normally do when responding to a post, I started pulling out the statements I wanted to respond to, highlighting them, and putting my response below. After 10 minutes, I had the Magna Carta. This is simply too much wrong with this article to respond in the usual way.

So instead, I'll just say this...

Get this and get this good, fellow hackers: When anyone says "analysis" or "requirements gathering" is bullshit, there can only be one reason why: _they don't know how to do it_.

Sure, there are antecdotes and case studies of people building great software without talking to users first, but they are in the extreme minority, and anyone proposing doing this all the time is doing a disservice to his readers.

In order to find out what people need from software, you don't "grill" them, "interview" them, or "role play" (whatever that means). You get with them and "live their lives" and suffer with them, understanding what they must accomplish, how they must do it, and what's stopping them now. How do you do this? Any way you can. Change uniforms and shovel shit with them. Do their job for a day. Put them together in a room, feed them, give them beer (optional), and get them to bitch about it. Identify _every single data element_ related to their tasks. Connect tasks and data to objectives (You may find that half of what they already do is a waste of time.)

In short, do _whatever it takes_ to find out what you need to know to develop your software. This is hard work. Hardly anyone does it now, and relatively few have _ever_ done it. Steve Yegge certainly hasn't. If he had, the data in this rant would have been very different.

Sorry, Steve, I normally enjoy your columns. Do us all a favor and don't say something can't be done because you've never done it. Next time, write about something you've already done. Then we can all resume learning from you again.

<comment><USER3> "In short, do whatever it takes to find out what you need to know to develop your software. This is hard work. Hardly anyone does it now, and relatively few have ever done it. Steve Yegge certainly hasn't"

For me, the point Steve makes is that the optimum is to build for yourself. The feedback loop is instant. That's where the best software gets written. When developers wake up at 3am with some idea for a feature that would make the software _they_ want, work better.

If you're trying to write software for others, it's going to end up as mediocre and probably not entirely what they wanted.

<comment><USER2> _If you're trying to write software for others, it's going to end up as mediocre and probably not entirely what they wanted._

Stop for a minute and notice how absurd this statement is.

99.9% of all software ever written was for others. Was it all mediocre and "not entirely what they wanted"?

This is the entire reason for systems analysis and requirements specification. You don't need to do any of this for the software you're writing for yourself. You must do all of it and do it well when writing software for others; that's how you _insure_ that it's exactly what they want.

<comment><USER3> 99.9%? That's just insane. You're saying that all the games developers never play their own games?

How about people writing languages, compilers etc. You don't think they use them??

I'd say the majority of open source software is written for yourself rather than others. People contribute the most when they are using that software.

You don't have to be the _only_ customer/user of your software, but it helps to be _a_ customer/user of your own software. That's what I mean by writing for yourself.

<comment><USER2> There are over 800,000 programmers working in the U.S. alone, an overwhelming majority employed by someone else.

<http://answers.google.com/answers/threadview/id/43888.html>

I'm saying that the ERP, accounting, banking, claims processing, ecommerce, order entry, scientific, etc., etc., etc. software they work on is for someone else. They dwarf those working on games, compilers, and open source.

Welcome to the real world.

<comment><USER4> Most: ERP, accounting, banking, claims processing, ecommerce, order entry software _sucks_.

Scientific software is often started by someone who uses it and tends to work well.

<comment><USER2> _Most: ERP, accounting, banking, claims processing, ecommerce, order entry software sucks._

You're probably right about that.

But _enough_ of it works to run the world. No small feat.

<comment><USER5> There's a yawning chasm between "works" and "doesn't suck".

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I think that Mr. Yegge missed the real question - but the rant was worth it. I particularly liked "The easiest way to build a product that kicks ass is to start with someone else's great idea (camcorders, for instance), and take stuff away."

I suspect what the "business correspondent" wanted to know was something more like:

"My customer wants me to build him a new billing system. Their top managers have some defined strategic objectives but no-one I have met seems to actually know what this system should do in any detail. However, they can all detail the bad things that would happen if it did not do (whatever it is) perfectly from day one. Now how do I find out what to build them?"

Now that question is the one that development teams face every day.

<comment><USER7> And would the answer then be, join the billing the team for while, learn their processes, and then build a system to make your job better and provide value to the project sponsor.

</comment></comment><comment><USER8> I'd like to point out that this article completely ignores most specialty or enterprise markets. As a maker of insurance software, we employ some people who were former insurance agents/adjusters, but none of our developers are, and our only real hope for understanding exactly what has to go into something like a policy administration system is to get out there and talk to customers and potential customers. Even within an insurance company, the developers still won't have a clue because it's not a product they themselves would ever use, and they'll have to rely on someone else communicating the requirements to them.

The same is probably true of just about any other business-focused software; most developers aren't hedge-fund traders, auto mechanics, laywers, hotel managers, etc. yet somehow people manage to build specialized software for those fields. You need people in the organization that understand those fields and what's involved, but the motto of "make something you yourself want" just doesn't apply when you're writing software to run an entirely different kind of business. Developers can be mountain bikers on the weekends, but they're generally not insurance agents or doctors in their spare time.

<comment><USER9> True enough. I deal with "enterprise" software all the time, and I found that it is all horrific. Terrible UIs, almost invariably terrible performance, chronic instability. I'm afraid that, if Steve is right and that to build something good it must be built for the builder, there will never be good "enterprise" software.

Also: requirement gathering in that market is just as frustrating as Steve says it is in the consumer market. I've dealt with lots of people who ask for features and then change their minds or realize they didn't really know what they wanted.

</comment></comment><comment><USER10> He raises many good points in the course of the rant, but I think that "only build for yourself" goes a bit too far than most of us are willing to go. I'd suggest, in the spirit of compromise, that "gathering (and understanding) business problems" is a better practice than gathering requirements, as user- proposed solutions (and the requirements which make them up) are often doomed to failure.

<comment><USER3> Why is only building for yourself a bit too far? This seems like common sense to me. If you're not using your own product day in day out, you should be.

<comment><USER10> Because I may not be in the same line of business as my users. For example, my last start-up develops planning software for large agricultural firms. I don't happen to manage a large agricultural firm, nor am I likely to manage one in the near future.

Still think I should be using my own product day in day out?

<comment><USER11> Nope, but if you can, hang out with the actual users jockeying the software as often as you can. I know that I learn something new almost every time I go out on the trading floor and have a user walk me through the software I'm writing and fixing.

<comment><USER10> Absolutely! And that was my point-- you need to understand the user's problem- space very well, and there are better ways to do this than the traditional "business requirements gathering" process, which tends to focus on the (sub- optimal) solution the users have already imagined.

<comment><USER11> It shouldn't be "business requirements gathering." It should be "business requirements refinement."

</comment></comment></comment></comment></comment></comment><comment><USER11> One of the biggest, most consistent problems I saw as a Smalltalk consultant was simply _poor communication between development and users_. There were inevitably at least two groups or levels of management in the same group between the users and development. The result was always the game of "telephone" or "gossip" -- the one where you form a line and one person whispers a message to the next. Information, filtered through too many minds always gets distorted in the process.

I think you can do requirements gathering. But the right way to do it is to have smart actual users talking directly to smart actual devs. Even here, there is a chance for misunderstanding, but at least it's not compounded. (I suspect that the "telephone" game is an example of a nonlinear exponential process.)

Unfortunately, middle managers defending their personal fiefdom will sometimes actually tell you that it's specifically not going to happen. In large organizations, upper management generally wants their representative to be the filter between the devs and the users, because software is generally an instrument of control. (Through workflow, even if the app has no explicit workflow framework, but that's another story.)

Often in large organizations with a software project, devs and users will find some way to get together and talk face to face. It's a sign.

<comment><USER5> > But the right way to do it is to have smart actual users talking directly to > smart actual devs.

I find in my own software that the best thing to do, if you're improving an existing process, is to watch (or participate in) the current process, with an eye toward the parts which waste time or irritate people.

In any case, after the initial study, it's crucial to back out of the details of the process and think about the overall goal to be accomplished. You don't want to waste effort evolving a process that's been badly distorted by existing software, when you could simplify the process immensely by writing something directly focused on the actual goal. This is an intensely creative/intuitive phase of the process, so it often takes several iterations (from a fresh state-of-mind each time).

Once you think have the perfect solution, go back and make sure that it solves all the problems noted in step 1. If it doesn't, try again.

<comment><USER12> Of course, that assumes you are actually permitted to change the process. The project I'm working on has the constraint that while we are allowed to write less-buggy software that catpures the existing process more effectively, we are not allowed to propose changes to the existing process (which evolved around the existing cruddy software-- 10 years of accumulated process and "feature" cruft, now cast in carbonite).

Corporations sometimes have a funny definition of "risk." Sometimes, Risk(changing to a sane process) < Risk(reproducing unnecessary complexity of existing process).

<comment><USER11> True story: A friend of mine wrote software for NASA. There was an old control system for something that had as its interface a 9 key keypad a numeric readout and something like an enter key. The system was modernized, and its software was ported to Unix workstations. However, to keep it compatible with the operations manuals, the new GUI interface just simulated the keypad and numeric readout.

(This is not software that my friend wrote. He ported the "numerical integrator" program used to track the Space Shuttle in orbit and calculate abort trajectories during launch. And yes, he showed me the program with the keypad! Another thing: as I was walking around at JSC, I saw a "Unix for Dummies" book back there!)

</comment></comment></comment></comment><comment><USER13> Good rant, but I want to talk about dog poop.

Surely there must be an enzyme cocktail that can evaporate poop! You would not use it indoors, only for outdoor use. But there must be something that will decompose dog poo super fast. Any organic chemists here?

<comment><USER14> Genetically engineered dogs that excrete sealed tubes will put you out of business.

<comment><USER15> Robot dogs will put you out of business.

<comment><USER16> Virtual Reality (plus an exercise pill) will put you out of business.

It doesn't mean that there isn't money to be made each step of the way.

</comment></comment></comment></comment><comment><USER17> I think what the article was saying is: Use common sense

And: People do not know what they want, or to be more precise, decisions of liking or not liking something are made seconds before the person becomes concious of their choice, so most of the people's desires are subconscious and what they say they like is simply a justification and not their true wants. (which has been proven through psychology research)

Of course both the advices are sound, but man what awful and utterly terrible writing.

The guy is patronising, his speech is in your face and he has no consideration whatsoever for my time. He babbles and rambles about useless stuff when I simply want to get to the point of what he is saying and move on.

So to give him a bit of his own medicine, was he actually writing for himself? Or was he writing for others?

The answer is rhetorical of course, he knows his stuff so there's no need to write what he knows unless it is aimed at others. So he is not writing about himself he is writing about others.

Now that he wrote for others was his writing mediocre?

Perhaps, I certainly think so, but was it how should I put it, popular? Well 64 comments from fellow hackers, loads more in his own blogg, probably loads of nutters linked to it.

So would he care to define mediocre?

I just do not know how anyone can read his blog to be honest.

Hello by the way, my very first comment, I'm Andrew, Nice to meet you all :)

</comment><comment><USER18> Steve has obviously never had to develop software for the life science industry. My response to any such post is simple. It depends. It depends on the kind of application, for what kind of market, etc.

I've seen more than my share of applications done in the "this is how I would use it" fashion and the results have been disastrous. I am sure there are examples, perhaps a first take or prototype that reflects what your ideal it and then you whet it with people out in the market, but you have to ask yourself "what problem am I trying to solve?". You have to ask yourself (cause if you don't someone else will) the "so what" question.

It's not about the process, which is where a lot of requirements gather bogs down (IMO, every time you talk with a current or potential user, or even a hater you are collecting requirements). It's about really caring about the problems you are trying to solve and why someone would care about the way you want to solve it.

</comment><comment><USER19> this (<http://kerneltrap.org/node/5725>) is soo much better.

<comment><USER20> More succinct, yes, interesting too, but I'd disagree with "better." It's like saying an apple is better than an orange.

<comment><USER11> Linus has an easier task. The hardware the kernel runs on and the software running on it act as an ironclad, rigorously defined spec. Dealing with human users is something else.

<comment><USER19> not really true. what would you say about git ? it has no kernel components, no spec (at least not that i am aware of).

<comment><USER11> Linus wrote git for himself.

</comment></comment></comment></comment></comment><comment><USER21> His post is bullshit, opensource software sucks for this reason ... its built by a bunch of hackers that don't know anything about interaction design or what customers want and need, don't know much about much of anything other than the technical.

Its great when the users are all techies ... but in my opinion most of the desktop apps suck ... openoffice is a piece of shit.

I totally agree with edw519 ... this guy just doesn't know what a product developer does or how to do it. Contrary to the elitist hacker opinion that these people don't know what they are doing ... effective, methodological product developer actually do contribute significantly to finding out what people want. A lot of programmers need to let go of their egos and realize that they are not know-it-alls.

</comment><comment><USER22> Over complicated business requirements are bullshit. But starting a product without researching first is a recipe for disaster, particularly if you are entering a crowded market.

<comment><USER2> _Over complicated business requirements are bullshit._

What if the requirements _are_ complicated?

Go ahead and develop an arbitrage system, a medical claims processing system, or a repetitive shop floor control system without "complicated enough" requirements and see how far you get.

<comment><USER22> Over-complicated is the same thing as too complicated, which does not put a limit on how complicated a system can be.

<comment><USER7> Over-complicated is also a tough guideline to follow, because how do you when you have "too much" complexity?

</comment></comment></comment></comment><comment><USER23> We, the hoi polloi developers, work for industries (retail, transportation, insurance, etc.) we hopefully know some thing about, yet without having the same level of expertise (or even the same point of view) as our customers.

He should get himself familiar with the concept of division of labor...

</comment><comment><USER24> Hmm, I'm not convinced about the "only build what you are going to use" argument. The best example I can think of is pace-makers (or any other form of life-saving equipment). A manufacturer of these devices cannot be a user, because they'd be dead...

<comment><USER11> I'll bet that a pacemaker embedded software developer who personally knew patients with a pacemaker and hung out with them every day would be a whole lot more motivated.

<comment><USER25> Just to add to that: I imagine that the makers of the first pacemakers were doctors who were better in tune with the need than the patients. In fact, I'm pretty sure that doctor, not the patient, really counts as the target market. He's the one the diagnoses the problem (and understands the need); he's the one that actually orders the devices; he's the one that actually orders the devices. The patient generally only needs to know that he needs one, and that it's going to be installed.

In the same vein, I'll bet that if actual accountants were to design a piece of accounting software, it would probably rock pretty hard. (Assuming of course, that the accountants in question were also competent designers/developers.)

</comment></comment></comment><comment><USER26> After reading the discussion, is anybody else wondering _why does this have to be so hard?_

There has _got_ to be a better way to find out what the user really wants. Tools like balsamiq are a start, but it seems like this is a HUGE area that needs improvement.

</comment><comment><USER27> I'm gonna quote Bruce Lee and apply it to everything here.

"Take what's essential, discard the unnecessary, and make it your own."

That's the point I got from Steve's post.

And that's how I dealt with his rambling.

Meta-great post.

</comment><comment><USER28> can someone provide a cliff's note version of what Yegge wrote? I tried reading what he wrote, but there is too much rambling.

<comment><USER3> Don't try to find out what potential customers might want, just build something where you are a potential customer - Build for yourself.

That's what I took from it anyway :/</comment></comment>


SOPA and PIPA both shelved for now. - <AUTHOR> http://arstechnica.com/tech-policy/news/2012/01/internet-wins-sopa-and-pipa-both-shelved.ars

<comment><USER2> "Shelved" just sounds like they're waiting for attention to die down so they can quietly sneak it in. The party starts when they're eradicated.

Unfortunately, I don't see that happening. They'll probably just change the name and try again.

<comment><USER3> It's been said it'll be attached to the back of an anti-child porn bill so it can't be opposed next month.

<comment><USER4> This is scary; these "riders" often get very little to no attention.

</comment></comment></comment><comment><USER5> What can be done to keep it dead in the future?

</comment><comment><USER6> Shelved is good, but they will pass eventually. The cloud is becoming the wild west where anything stored there may be seized without due process in the never-never land of international copyright law. Foreign hollywoods will claim you are copyrighting Indian, Chinese, German or Russian property.

All good admins should have daily backups (encrypted onto a medium you actually own) so that when nations all over the world seize your property because some competitor complains, you don't lose your entire business for years while authorities strong arm the ISP's and Web Hosts to make you invisible. Your original site will be invisible and blocked, but while you are waiting years and years for the copyright carnival to play out, you have a 3 step process where you can re-deploy your entire business on a new web server. A new business name, a new website name on a new server in a different nation. A nation who might care a little bit more about businesses than USA. When enough 20 something startup people full of energy start a mass exodus, moving their businesses to foreign countries, congress will take note that the draconian measures are hurting tax revenues.

It means you need a business recovery plan when foreign nations attack your business. The sovereign was supposed to protect us unlawful search and seizure, but appears these rights are going away. If you are my competition and I can squish your business by adding some material to your site then alerting some company somewhere to shuts you down without due process... I will.

Summary, Lets cause a ruckus that we are all moving our businesses overseas because of what congress is doing. Lets see how fox news spins that.

<comment><USER7> >The cloud is becoming the wild west

The whole internet is currently the wild west, where companies and people handle their own problems largely without government intervention and there is more illegal activity then more regulated sectors.

Eventually the government will reign in the internet and stop these illegal activities, making it safer for business. This will most likely ruin the internet as we know it.

</comment></comment><comment><USER8> Im sick of people going on about SOPA and PIPA. Take the recent megaupload incident, the American government wanted the site down, the site is now down. No new law needed, simples.

<comment><AUTHOR> Megaupload is one website ( angry hackers responded ). SOPA and PIPA means mass takedown. ( imagine the state of angry hackers all over the world )

Morever Kim Dotcom has done more than just Megaupload to take him down. American government probably was waiting for a perfect reason to take him down.</comment></comment>


Pivotal CRISPR patent battle won by Broad Institute - <AUTHOR> https://www.nature.com/articles/d41586-018-06656-y <comment><USER2> What would a world with commercialized CRISPR technology look like? Will they just sit in the back and collect fees like the MP3 patent owners? Or will they spin-off and became the Google of DNA editing?

<comment><USER3> It's good to keep in mind that CRISPR is but one technique to do gene splicing, it's not the concept itself. Different ways will be discovered now that it's proven to be viable.

<comment><USER4> It is also worth noting that TALENs were implemented for genome editing [0] before CRISPR/Cas9 [1]. And that there are ongoing trials in human subjects that use TALENs for editing instead of Cas9 [2].

Though I agree with a sibling comment that we might not find another system with the same advantages as CRISPR/Cas9 (ie, only having to generate RNAs to engineer site specificity, rather than the more intensive task of generating a protein coding sequence like you do with TALENs).

[0] [https://www.ncbi.nlm.nih.gov/pubmed/21179091](https://www.ncbi.nlm.nih.gov/pubmed/21179091) [1] [https://www.broadinstitute.org/what-broad/areas- focus/projec...](https://www.broadinstitute.org/what-broad/areas- focus/project-spotlight/crispr-timeline) [2] [http://www.sciencemag.org/news/2018/09/new-gene-editing- trea...](http://www.sciencemag.org/news/2018/09/new-gene-editing-treatment- might-help-treat-rare-disorder-hints-first-human- test?utm_campaign=news_weekly_2018-09-07&et_rid=414499691&et_cid=2356431)

</comment></comment></comment><comment><USER5> I'm wondering, is there a hacker news for biohacking related stuff?

I have the feeling that there is a lot of progress being made in gene therapy technology these days. Having a friend who's life would be enhanced by gene therapy, I'm highly interested!

<comment><USER6> Closest I know of is Fierce Biotech [https://www.fiercebiotech.com/](https://www.fiercebiotech.com/)

<comment><USER5> thanks a lot!

</comment></comment></comment><comment><USER7> Sucks for UC, but I'm sure if the situations had been reversed they would've fought as hard for the patent as the Broad has.</comment>


Connecting to the Internet – Finding My 15-Year-Old Website I Built at 16 - <AUTHOR> http://randomdrake.com/2014/01/22/connecting-to-the-internet-finding-my-15-year-old-website-i-built-at-16/

<comment><USER2> I'm kind of amazed that the two links to Amazon and Barnes & Noble still work. Talk about backwards compatibility! Amazon has probably changed dozens if not hundred of things server side since 1999.

Old link - [http://www.amazon.com/exec/obidos/ASIN/0517149257/o/qid=9295...](http://www.amazon.com/exec/obidos/ASIN/0517149257/o/qid=929505204/sr=2-1/002-9367729-7762218)

New link - [http://www.amazon.com/Ultimate-Hitchhikers-Guide-Douglas- Ada...](http://www.amazon.com/Ultimate-Hitchhikers-Guide-Douglas- Adams/dp/0517149257)

<comment><USER3> Have a read of [http://en.wikipedia.org/wiki/Amazon_Standard_Identification_...](http://en.wikipedia.org/wiki/Amazon_Standard_Identification_Number)

That is how Amazon can maintain such good link backwards compatibility although for books this is even easier as it just has to parse the ISBN and job done. ASIN allows them to tag everything ever on Amazon and keep it linkable. Good future planning from back in the 90s though I guess.

<comment><USER4> Wow, I'd always wondered what the heck obidos was: [http://en.wikipedia.org/wiki/Obidos_%28software%29](http://en.wikipedia.org/wiki/Obidos_%28software%29)

<comment><USER5> Amazing.

I wondered that on just about every link. Same with old BBC News links with /hi/ (if anyone knows what that one is, go ahead).

</comment></comment></comment></comment><comment><USER6> My ISP was Prodigy back in the day, and possibly something else before that. Paying per hour was awful. I spent hours downloading a WAV file of some video game music from Nintendo.com and was so excited when it completed successfully. Little did I know it was a 1-2 second random sound clip - ugh so disappointing! :)

I spent a good month or so (unsuccessfully) changing my modem initialization parameters (?) in an attempt to be able to play Doom 2 (or Duke Nukem?) over the internet with my friends and their fancy Gateway computers. It was so frustrating. I had no idea what I was doing and no Internet to turn to. I upgraded my DOS modem to a Windows modem and it made no difference. I was sent a link to TEN.net on IRC a year or so later and finally got to play my first online game, woo.

Things were much more anonymous back then. I remember applying for a job with XOOM.com - I had been active in their support community for a while and they sent me an employment application. They had no idea I was underage until I sent in my application, haha.

<comment><USER7> lol! I too spent hours tweaking modem params to get the best speeds. Sometimes having to disconnect and reconnect because the ISP connected me at 33.6 instead of 56k (or more commonly 48.8).

</comment></comment><comment><USER8> Oh, the good old memories! Having a seperate phone line just for the internet was a godsend! Also the times you tried to get online and hit a busy signal? During peak times it could take upwards of 30 minutes to connect, yikes!

I have some fond memories of writing "punters" for the AOL kiddies to send instant message bombs to boot people offline. Creating some of my first web pages on Geocities.

Using download managers like FlashGet was helpful to download multiple things on dialup. Not to mention it included a resume feature.

</comment><comment><USER9> I still have my first website that I ran on a web server in my dorm room on a 19K serial connection in 1996. It helped get me my first post-college job at a corporate bank despite having a psychedelic purple background, animated smilies, and a prominent picture of Calvin (of Calvin and Hobbes) burping on the homepage. I think the fact that I was running my own web server in 1996 in my dorm was of more interest than the content... except my resume, perhaps.

</comment><comment><USER10> The biggest change in my mind from 1999 to today is the connectivity of startups.

I was doing my first startup in '99, and we were doing the typical "work out of the owners basement" lifestyle.

We did not have an internet connection.

We had local servers on which we built and tested everything, and then we would email the code to our customers with deployment instructions for their servers. This quickly got old, so we gained access to a dial-up VPN so we could at least deploy the code online.

After about 6 months, we had saved up enough money to get an office. The building had no connectivity. We called and got an ISP to connect a T1 to the building, which we then shared with the rest of the tenants.

Far, far different than today when an internet connection is pretty much a given at any job.

</comment><comment><USER11> My ancient 1996 era website is still up on my old .edu account. It's embarrassingly pretentious, but I can't change it now. (though, in a way, I wonder if my password has been changed. they didn't have ssh back then tho...) In a way, it's nice to remind me how far I've come.

</comment><comment><USER12> Is there a website that collates into a single timeline the information about what the typical home computer hardware configuration, screen resolution, OS, browser, Internet connection type and speed, etc. were for a user of the Internet (or rather, the WWW) in a given year?

I've been looking for something like this for a while and the linked post reminded me of the fact (as well as why such a website would be fun to have).

<comment><USER13> I haven't seen such a thing. The easiest way to come up with something like that would probably be to find a magazine archive of something like PC Magazine and come up with some sort of methodology to pick a typical, say, Dell system for each given year.

</comment></comment><comment><USER14> _" To get all the professional features, you had to pay money for your browser; a ludicrous idea today."_

UK: Yup, I walked into a _software shop_ in Birmingham's city centre just before then and bought a copy of Netscape for around £20 or so. It came on floppies in a box with a short manual, and I installed it on my Pentium with 16Mb of RAM. It has moved fast in 15 years.

<comment><USER15> I mean, floppies cost money. Even if you had a second phone line to tie up downloading a collection of floppies, where would you store it?

(Or did you have an HDD by that time? I forget)

<comment><USER16> Mid-1990s, Pentium with 16MB RAM? A computer back then was pretty much identical to a computer today -- Windows 95 looks and feels little different from Windows XP. The hard drive would've been a ~1-1.6GB 5.25" IDE drive, FAT32 formatted, which will plug right into any motherboard that still has the connector (or an IDE->USB external enclosure, which you can pick up at Staples today for $20). The software on that drive would mostly still run in Win8 too.

<comment><USER14> There may have been a RAM upgrade at some point, I remember buying a pair of 32Mb sticks...

Editing large image files took a long time as you went into swap. Being able to capture, edit and play video (at any resolution!) would have been very impressive on that old Celeron.

</comment></comment></comment></comment><comment> jack-r-abbit Haha. Thanks for the trip down memory lane. I love how many sites (mine included) used the "Under Construction" mention back then.

</comment><comment><USER17> Thanks for the trip down memory lane, randomdrake. I'm the same age as you, and just found my own 15-year-old page (in my case, a Discworld info compendium with game mods I'd built, and walkthroughs I'd written). Hurrah for Geocities mirrors, and embarrassing teenage selves.

Funnily enough, a HN thread the other day made me revisit my first ever web app as well. 'Tis the season?

It feels like today it's pretty easy to get started building things, certainly a lot easier than the PHP mess I ended up in 10+ years ago. On the other hand I think it can get overwhelming, and the complexity of today's web apps and sites make it hard for a beginner to grok how to replicate them. Plus, the design bar is a lot higher, even though there are plenty of off-the-shelf kits to help. The era of self-expression through hand-tweaked HTML is gone, for the most part; cover photos have replaced MySpace layouts, and who needs a personal domain when you have your @-handle?

</comment><comment><USER18> I haven't really had a look for my old fora so decided to have a go using the Wayback Machine [1].

Kinda awesome that they're indexed, cause I lost my own copies:

OneSports: [https://web.archive.org/web/20050409093857/http://forums.one...](https://web.archive.org/web/20050409093857/http://forums.onesports.net/)

Philosophers' Cave (only partially :(): [https://web.archive.org/web/20041024050540/http://www.philos...](https://web.archive.org/web/20041024050540/http://www.philosopherscave.com/forums/index.php?showtopic=323)

I'm Wolverine in both cases :)

[1] [https://web.archive.org/index.jsp](https://web.archive.org/index.jsp)

</comment><comment><USER19> And yet, some things are eerily familiar. In 1999 online life was dominated for non-geeks by AOL. In 2014 replace AOL with Facebook and the dynamic is pretty much the same. The difference is that AOL had to spend a fortune to produce or acquire content. Facebook gets us to do that for free.

</comment><comment><USER20> My first website was on VirtualAve which was the best free service at the time for those who wanted to host their own raw HTML.

I still occasionally hope someone kept the entire archive of that service and someday makes it available. :(

<comment><USER14> Wayback Machine has my first Web page - the then ISP gave out free Web space starting in 1997 or so. 5Mb of space or so...

[http://web.archive.org/web/19970131080252/http://www.xylem.d...](http://web.archive.org/web/19970131080252/http://www.xylem.demon.co.uk/)

My current page isn't so different mind you (HTML -> Greymatter -> Moveable Type -> Wordpress -> back to static but Markdown markup).

<comment><USER21> Ah, thanks for encouraging me to 'go back' :)

[http://web.archive.org/web/19961227103606/http://realms.org/](http://web.archive.org/web/19961227103606/http://realms.org/)

That's the oldest capture on the wayback machine, though I was running that site starting in 1995.

I feel a bit old. :)

</comment></comment></comment><comment><USER22> [http://www.qsl.net/n9wwv/420.html](http://www.qsl.net/n9wwv/420.html)

      -rw-r--r--    1 ftp      ftp          1341 Apr 07  1998 420.html

</comment><comment><USER23> I recently found a forum I had started in 2004 was still "alive" (but empty). I'm incredibly surprised that the host didn't dry up and die. I was even able to get back into the admin account. For the curious(and with much forgiveness for my past self) [http://hackr9483.proboards.com/](http://hackr9483.proboards.com/)

<comment><USER24> > Most Users Online: 27 (Jun 24, 2013 at 9:48pm)

What happened on Jun 24, 2013? Is that the day you found it again?

</comment></comment><comment><USER25> That's funny, some weeks ago I found my first real website from y2k in archive.org, but what I really would love to see is my GeoCities page from 1999 :>

I'm really thinking about making an 90's like Octopress theme for my blog, with a few friendly gif animations and without any kind of grid system... I'm so bored with the current aesthetic trend

</comment><comment><USER26> Not much to say... just got reminded of some of my still extant pages from the last century: www.cem.msu.edu/~cem883/mathematica-instr.html

(SGI Multi processor boxes. Impressive purple boxes doing some amazing graphics on beautiful high resolution displays in the mid 1990's. Oh the memories).

</comment><comment><USER27> Oh, the good old days of 1999. I was 17 back then, and already selling hosting accounts:

[http://web.archive.org/web/19990125091016/http://murzik.com/](http://web.archive.org/web/19990125091016/http://murzik.com/)

</comment><comment><USER5> I had a couple of GeoShitties/Geocities websites around 1998 or so; I never bothered to check if they were in any of the downloading projects, but that article was some interesting nostalgia as I was certainly one of the younger people on the internet at the time.

</comment><comment><USER28> Couple years back, I found my website from 94. Its mostly from an era that I didn't really know anyone on the web, but someone had a shell account somewhere.

Its also nicely pro free software, something that hasn't changed much.

</comment><comment><USER29> I recently found the site I built at the age of 12. It was a animated gif- based "comic" detailing the life of a superhero named Mr. Gullible. i-frames and image maps, with my crude 12 year old humor haha. It's a great relic.

</comment><comment><USER30> lol the domain for the MUD I ran from 1999 to like 2005 still exists, and the person that took it over is still running the site design I made back in 2004.

I'd ask for it back but I have no idea what I'd do with it.

</comment><comment><USER31>
         there was no Google to aggregate and sort through the depths of the World Wide Web

Hmmm, that's funny, I was using WebCrawler, AltaVista, and Google, in 1999.

</comment><comment><USER32> Ah, those time when you had to optimize pics for loading time :)

<comment><USER25> wait, I still optimize my pngs! :)

</comment></comment><comment><USER33> Here's his site: [http://guidetomedievia.tripod.com/main.htm](http://guidetomedievia.tripod.com/main.htm)

</comment><comment><USER34> Small world: It's been awhile since I've last saw that name :) That MUD borrowed almost a decade of my life, and, enjoyed every minute of it.

<comment><USER35> Dagger of Fire > Ki-rin Horn imo.

<comment><AUTHOR> Ki-rin was AE if I recall correctly. Only folks who could get away with amazing AE builds were in 52. Oh Tharghan and his Rogues of the Forbidden Legion.

<comment><USER35> LOSK for life.

</comment></comment></comment></comment><comment><USER7> I still remember the commercials for 56k with some little kid boasting to his friend that he could "stream" videos.

</comment><comment><USER36> that IE window brings so many good memories... I remember hiding phone bills from my parents because dial-up @ local rates weren't cheap at the time!

</comment><comment><USER37> That sure is a boring perspective of the web of the last 15 years.</comment>


The easiest way to keep your web apps accessible: Just use text - <AUTHOR> https://blog.logrocket.com/the-easiest-way-to-keep-your-web-apps-accessible-c2b57506cc2a <comment><USER2> I'm still looking for "just use links". So many frontends I see use fancy onclicks to emulate links (including updating window.location). However they are either not links or are void links. This breaks all sorts of useful things (copy link location, open in new tab &c.).

<comment><USER3> So that's why that happens. Why on earth would you break one of the most foundational aspects of HTML that way?

<comment><USER4> Breaking it is completely unnecessary too, even with single page apps.

It's not all that hard to build a React or Angular apps that use proper links along with the browser history API. Designed properly, the apps should be able to load their state and render correctly even when deep-linked to somewhere other than the app's top level.

This isn't a new concern - I remember paying attention to this back in the old days of SPAs using GWT back in 2009/2010.

Unfortunately, many web apps choose to ignore this. On the bright side, lots of them get it right, too.

<comment><USER5> It's such an extremely simple litmus test: if it breaks the back button of the browser, it's the wrong design. The closest thing to an exception being cases where one needs to be logged in to see a page, or when links are consciously invalidated for some other reason. And even then the website/webapp should still just signal this to the user without a bazillion redirects.

<comment><USER6> Not necessarily: I do not want to click back 30 times to get out of your slideshow and back to my Google results. Thank you.

<comment><USER7> But the problem there is that they used a carousel in the first place. Were it content that justified clicking 30 times into it, it would also justify backing out of it 30 times.

<comment><USER8> The problem is that it might take a half-dozen clicks to realize it's not worth reading the other 24, then you need to click back a half-dozen times (worse if there are page reloads during that).

<comment><USER9> Or, use another built-in feature of the browser's back button. Click-and-hold the back button so that you can see a contextual menu with the steps you can go back to quickly. If I click back more than twice, the third is a click-and- hold.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Ironically, this article was posted on Medium, whose apps are notoriously inaccessible. Despite being a reading-focused app, it does not let you change the text size or spacing in any way. And on iOS, it also ignores the user's systemwide dynamic text setting.

<comment><USER11> Why does Medium need an app in the first place? Is a web browser not a good enough app for reading content on the internet?

<comment><USER12> Apps often are a solution for business problems rather than users. In mediums case, the app solves the ad blocking and retention problem.

<comment><USER11> As far as I am aware of, Medium is not supported by ads, and its popularity depends on the web.

</comment></comment></comment></comment><comment><USER13> It really annoys me when a site that just needs to display some text loads a whole react-redux framework.

When it comes to reading text I honestly prefer the old school academic websites (albeit with a max-width set).

Keeping stuff simple even makes maintaining the site simple, I personally run [https://www.discoverdev.io](https://www.discoverdev.io) and have used _zero_ JavaScript. Inspired by brutalist design principles :)

<comment><USER14> Omg it's glorious. I've gotten so used to pages taking ages to load that your site seemed lightning fast by comparison

<comment><USER15> You might enjoy my small list of lightweight websites here: [https://sjmulder.nl/en/textonly.html](https://sjmulder.nl/en/textonly.html)

</comment></comment></comment><comment><USER16> My biggest pet peeve is when sites use js to try to "help" me scroll. What. The. Hell. is wrong with developers who think their users' browsers can't scroll? Am I the only one?

<comment><USER7> Often the blame will lie with someone else - the designer or the PM. Some webdevs are to blame, but many of us would prefer to work on tasks OTHER than arguing with the browser over how it should do it's job.

<comment><USER17> The most common source of blame for scrolljackers are wordpress template writers. There was a huge surge in developing them a few years ago that happen to coincide with popularity in scroll-jackers actually being considered good. Mostly because of the Windows crowd not actually having a great scrolling experience like Mac. Now windows scrolling is 95% on par with the mac, but alas, the scrolljacking stays with us until people migrate off wordpress or people are interested in developing for wordpress again.

</comment></comment></comment><comment><USER18> Reading this article made me realize what it is that's broken about the concept of semantic markup and why websites even today are div soup.

It's the same reason why divs won in the first place. You can't dictate the shape of a document to people and it be anything other than a kludge.

Take the site I work on, Great Big Story[1]. We have sections and headers, but our content isn't defined by text, it's defined by graphics and videos, with little metadata sections on the video player page that I suppose could be semantic if we had the right descriptive tags. I use semantic markup when it seems to make sense, but we have so many weird little needs to introduce elements just for styling purposes.

Take a recent example, I need four elements to make a styled file input form. Two labels, one to look like a button and can be clicked, taking advantage of the browser behavior of treating clicks on the label to be clicks on the form. The other label is the actual label, could be just a span if I wanted, it doesn't have the htmlFor attribute set. The actual form input button is hidden using CSS tricks because the actual button can't be styled. Finally there's the filename display, which is set to the filename of whatever was uploaded or the existing one if present. This uses Javascript callbacks to get set.

None of these elements are semantic, legacy cruft keeps the markup from being simple and readable. I suppose you could demand our video presentation site to be a motherfucking website[2], but I fail to see how that will actually improve much of anything and would just hurt our brand. I'm getting a little tired of coder hatred for web fashion. It keeps us all employed.

But I think we're at least 10 years out from being able to actually use semantic markup. Web standards and browser vendors still have some maturing to do.

[1] [https://www.greatbigstory.com](https://www.greatbigstory.com)

[2] [https://motherfuckingwebsite.com/](https://motherfuckingwebsite.com/)

<comment> iris-digital > input button is hidden using CSS tricks because the actual button can't be > styled.

Buttons can be styled.

<comment><USER18> Not the file input button, unless things have changed in the last year since I had to build one. Other buttons, sure, but not on file inputs.

<comment><USER19> You realize you don't need input field for file input in any of the modern browsers. Just capture the click event and create input field temporarily.

        let i = document.createElement('input');
        i.type = 'file';
        // other attributes if you like
        i.onselect = ev => {
          // ev.files contains selected files
        };
        i.click();
        i.remove();

No stupid styling hacks needed. At most you may need tabIndex on the <a> or <div> that represents the button for selecting files.

You can leave <input type=file> around if you want to submit data via <form> and not via XHR.

<comment><USER20> >No stupid styling hacks needed.

You've just replaced them with stupid DOM hacks.

<comment><USER19> Not a hack, just regular API.

You _clearly_ never implemented any of the above stupidity with file input styling and overlays and passthrough of events, and different unchangeable widths of file inputs you had to account for in various versions of browsers, and bugs in specific browser versions, and discontinuity in the input field clickable surface so part of the button is not clickable for no reason whatsoever to the user, so that everything works as expected in E6+IE7+IE8+IE9+FF1+Sfari,... to think it's even comparable on the hackiness scale.

</comment></comment></comment></comment></comment></comment><comment><USER21> > You use ALT text by adding the alt attribute with a value of the text > equivalent of your image, like so:

> <img src="[https://example.com/image.png"](https://example.com/image.png") > alt="developer in an office working feverishly to hit a deadline on a > software project" />

Is this actually a good idea?

This sounds like a typical "hero" or "teaser" image, to capture the reader's attention or interest. I don't think the alt tag does that in a comparable way, for a screen reader for example. So I'd just leave it blank.

It's really frustrating: all articles on accessibility mention the alt attribute, and that you should use them. But few give guidelines on how to write a good alt attribute that is actually well thought out.

When I write a website that explains things, and uses images, I (nearly) never use only images, but usually images + text. If I put an alt description in the images, I basically duplicate the text, and I guess that will confuse screen reader users more than a blank alt text.

Am I totally off base here?

<comment><USER22> > Am I totally off base here?

[https://www.w3.org/TR/WCAG20-TECHS/H37.html](https://www.w3.org/TR/WCAG20-TECHS/H37.html)

<comment><USER21> From that link:

> An image on a Web site depicts the floor plan of a building. The image is an > image map with each room an interactive map area. The alt text is "The > building's floor plan. Select a room for more information about the purpose > or content of the room." The instruction to "select a room" indicates that > the image is interactive.

And how does it help any blind person to know that there is a building plan, but none of the contents of the building plan are described?

Or am I misunderstanding the purpose of the ALT text?

<comment><USER23> It's in the last sentence you pasted: > The instruction to "select a room" indicates that the image is interactive.

That assumption is that the rooms are selectable, so "tabbing" with a screen reader will select each and speak their Alt text.

</comment></comment></comment></comment><comment><USER24> The founder of the Tachyons css framework has some very similar ideas on his blog. Well worth the dive - [http://mrmrs.cc/writing/](http://mrmrs.cc/writing/)

</comment><comment> another-cuppa Posted on Medium with a massive pointless image at the top and page loaded asynchronously using JS.

<comment><USER25> For some reason, font sizes have shot through the roof in the past few years. Medium is one of the biggest offenders. You get maybe 2-3 paragraphs per page now, when entire articles would fit on a single screen page with normal-sized fonts.

<comment><USER8> I'm in favor of this. My eyes aren't particularly bad, but I have to use reading glasses in order to read most computer text, and some can get really difficult. Larger fonts are better even for my bad-like-most-other-people-my- age eyes. The tiny text I would have found fine 20 years ago is painful now.

<comment><USER26> There's an easy fix for folks like yourself: most (all?) modern browsers support setting a minimum font size. Jack that up way into the double digits, and stop justifying ridiculously large font sizes for everyone.

<comment><USER27> How about you set maximum font size in your browser? That would be a much better plan. See what I mean?

<comment><USER26> > That would be a much better plan. See what I mean?

No, because there are cases where having large fonts makes sense (e.g. <h1> for article titles, etc) while preserving the ability to display smaller fonts than that (e.g. for article content).

<comment><USER8> ctrl-shift-minus in your browser. Make the font as tiny as you like, if it bothers you.

<comment><USER28> Conversely, you could just ctrl-shift-plus and make the text as readable as you like, since it bothers you and stop justifying the rest of us having to jump through hoops.

<comment><USER27> Who should have to jump through hoops, the person who cannot read text that is too small, or the person who's sensibilities are offended by text that is too large?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> Why would I use LogRocket for my all-text no-js web "app"?

<comment><USER30> They offer some kind of website hosting? I can't tell because the entire logrocket.com domain is blocked by "Peter Lowe's Ad and tracking server list" which I have enabled through uBlock Origin. Not sure if I turned on that list or if it's on by default. Either way, the only other site I've ever get that full domain block warning on is Facebook. I'm guessing they're up to some equally nefarious tracking tactics.

<comment><USER31> Peter Lowe's list is notoriously overzealous and it's enabled by default. It breaks countless websites and I found other lists to be better.

<comment><USER32> Notoriously overzealous? I try very hard to avoid false positives. Which sites does it break?

<comment><USER30> I've been using your list for as long as it's been on by default in uBlock Origin. Facebook is the only other site I've ever hit the block on. LogRocket is such an obvious thing to block, they are selling tracking tools to "replay what users do on your site".

I'm glad this conversation came up. I have your list enable in Firefox Mobile/uBlock Origin too. logrocket.com is in the rule list, but it doesn't stop me from going to the site, or Facebook. I went to "wheniwork.com", one of the "great companies" trusting LogRocket, and it does block their references to logrocket.com. I'm guessing the FF mobile API doesn't allow site-level blocking so sties like Facebook and LogRocket can still run their invasive scripts on their own domains and I won't know about it, unless I find out some other way and remember not to go there. I'm going to have to go NoScript on mobile.

</comment></comment></comment></comment></comment><comment> S-E-P I find the classic 90s webpage still warms the cockles of my heart

</comment><comment><USER33> in the 90s, unix developers built web frontends and they were built in this way - simple, with text. they had no skills in graphic design so they kept it simple.

after 2000, graphic designers took over this work and evolved into "frontend" developers. although there were periodic wins like google maps that would have never been produced by the 90s greybeards...most of it has been an endless stream of garbage. but the goatee crowd should not bear all the the blame, some must also fall on the adtech people who insist I need 15 mb of tracking garbage to read a news story.

<comment><USER34> Every so often I come across a simple, elegant site. Since I bitch about the others, some kudos:

Matt Gemmell, from aa few years back:

[https://mattgemmell.com/staying-creative/](https://mattgemmell.com/staying- creative/)

Matthew Graybosch

[https://www.matthewgraybosch.com/starbreaker/](https://www.matthewgraybosch.com/starbreaker/)

Mark Pilgrim's Dive Into HTML5 is a classic.

[http://diveinto.html5doctor.com](http://diveinto.html5doctor.com)

Outline is a lifesaver: [https://outline.com](https://outline.com)

(Especially for browsers/platforms w/o Reader Mode.)

I've also got an entry in the motherlovin' website contest.

</comment></comment><comment><USER35> What about people who don't read very well? I remember just browsing the screenshots on games domain back when I was a kid and could not read English yet.

</comment><comment><USER36> The easiest way to keep your apps accessible is not making them web apps. Instead of relying on an entirely redundant abstraction layer/OS built on top of your existing one just write native applications.

But if you _have_ to do it in a browsers then at least make it so the actual content (text/images) do not require JS to load and display.

</comment><comment><USER37> Reminder that lack of accessibility causes legal risk:

[https://en.m.wikipedia.org/wiki/National_Federation_of_the_B...](https://en.m.wikipedia.org/wiki/National_Federation_of_the_Blind_v._Target_Corp).

<comment><USER38> Trailing period gets stripped

[https://en.m.wikipedia.org/wiki/National_Federation_of_the_B...](https://en.m.wikipedia.org/wiki/National_Federation_of_the_Blind_v._Target_Corp.).

<comment><USER39> Would it make sense to add a redirect on Wikipedia for this?

</comment></comment></comment><comment><USER40> I like the content of the article but did not appreciate the out-of-place call to action to try their service right in the middle of the body ("LogRocket is working on ... Click to check it out.").

In my opinion, those call to actions are helpful when in the similar context with the content itself, or when placed outside of the content. Otherwise they are just intrusive.

</comment><comment><USER41> At the very least gracefully degrade back to just text. Here is an example: [https://russell.ballestrini.net/capability-driven- presentati...](https://russell.ballestrini.net/capability-driven- presentation/)

</comment><comment><USER42> This page is blocked by uMatrix (pretty rare that it happens to me)... but it sounds like they are talking about the opposite of Angular.

</comment><comment><USER43> How about:

1) Just use text

2) Make all your graphics into an otf font

3) Use CSS to style everything including backgrounds

The ONLY place you may need graphics is user submitted content like profile photos.

</comment><comment><USER44> [https://motherfuckingwebsite.com/](https://motherfuckingwebsite.com/)

<comment><USER45> [http://bettermotherfuckingwebsite.com/](http://bettermotherfuckingwebsite.com/)

<comment><USER46> [https://perfectmotherfuckingwebsite.com/](https://perfectmotherfuckingwebsite.com/)

<comment><USER47> [https://bestmotherfucking.website/](https://bestmotherfucking.website/)

<comment><USER48> I can appreciate hn is mostly humor intolerant but these are all basically right on point. The web experience is now akin to walking the mall; loud, expensive, garbage.

<comment><USER49> Pretty much, I just said "haha" and I got 5 downvotes in 20min. :)

<comment><USER28> because just saying haha adds nothing to the conversation. its just wasted time and space; this ain't reddit.

<comment><USER49> You mean like your comment?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER50> Also please don't use bad fonts. Someone posted the following article the other day and the font drove me so nuts that I had to resort editing the CSS code to make it readable.

[https://blog.bugsnag.com/bug-day-race-condition- therac-25/](https://blog.bugsnag.com/bug-day-race-condition-therac-25/)

I really wish "reading mode" was a prominent feature in desktop browsers.

<comment><USER51> it's pretty prominent in a lot of browsers, like firefox and safari (from the top of my head)

<comment><USER52> Dunno about Safari, but at least for me the Firefox one lacked two features:

An official keyboard shortcut for going to reader mode.

The option of having the browser send all articles to reader mode when detected as possible.

<comment><USER53> F9? [https://support.mozilla.org/en-US/kb/keyboard-shortcuts- perf...](https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform- firefox-tasks-quickly)

</comment></comment></comment></comment><comment><USER54> So much unnecessary reading to figure out what this is. I gave up.

<comment><USER55> I'm not sure that this comment is serious, but I think it illustrates exactly why text isn't more prominent in modern websites.

<comment><USER50> I noticed a similar comment here the other day:

[https://news.ycombinator.com/item?id=17721496](https://news.ycombinator.com/item?id=17721496)

 _Blogs are such a waste. I dont need to hear your life story and opinions. Post the situation, the plan, and details /documentation.

I do not have the time to read a literal 6,000 words._

I for one, do enjoy reading a long article and if I'm busy I will bookmark it/add to reading list for later. Everything doesn't need to be crammed into 280 characters or less. Maybe I'm just old fashioned and should embrace our race to the future presented in the movie Idiocracy?</comment></comment></comment>


Death to C - <AUTHOR> http://techcrunch.com/2015/05/02/and-c-plus-plus-too <comment> vezzy-fnord I think what a lot of people don't realize is that, at least if you're writing Unix userspace code that mostly interacts with POSIX and/or kernel-specific interfaces, C remains the most convenient because the API/ABI standards are all designed with C semantics in mind, and a lot of wrapper/binding libraries in other languages are either too clunky or too abstracted, unless you decide to roll your own... and depending on the language, FFIs can be quite a nuisance.

The only languages so far that seem to have really gotten this are Go... and OCaml, to some extent (see the "Unix system programming in OCaml" document). Go in particular bypasses libc entirely by directly using the syscall interface, from what I recall.

<comment><USER2> > FFIs can be quite a nuisance

Understatement. Every time I've tried to use a FFI I ran into either a show- stopping bug or a show-stopping feature limitation. My first few open-source contributions were patches for these bugs, as it happens, but the whole process was a massive slog that ended in repeated failure. I now loathe them with a passion.

Still, this all happened before LLVM-languages came around. Maybe things are better now. I look forward to the next time I have to use a FFI with both hope and fear.

> Go in particular bypasses libc entirely by directly using the syscall > interface

That's nifty, but a big chunk of the reason for having C compatibility is that many higher-level libraries are written in it. How easy is it to talk to, e.g., the window manager using raw syscalls?

</comment></comment><comment><USER3> The problems described are accurate. From a modern standpoint, C and C++ are terrible. The only problem is that most new languages are more terrible along other axes, making them unusable for what C and C++ get used for.

The author is accurate that Rust may be a substantial improvement.

I don't necessarily want to program in Rust, which is why I am designing my own alternative, but I think if you are building safety-critical software than something Rust-like is a pretty good idea.

For my own experiments I am going more in the direction of giving the programmer auditing power, rather than just having the programmer have to silently worry about what code may or may not be doing.

</comment><comment><USER4> Extensive discussion: [https://news.ycombinator.com/item?id=9477006](https://news.ycombinator.com/item?id=9477006)

Nice to see all the same arguments from just 4 hours ago being repeated again here.

</comment><comment><USER5> I'm almost tempted to pull out the old adage "if you can't stand the heat, get out of the kitchen". Yes, the C family of languages allows you to do many terrible things. It also allows you to do many great things. It is up to the programmer to decide what path to choose.

While the appropriate territory for the C family has decreased with the increase in processing capacity, there are still many areas where these languages are the right tool for the job. When another language family finally arises which offers the flexibility, conciseness and low-level access which characterises C (and its siblings, to a lesser extent) it'll be welcomed as a saviour, until that time they're the right time for the job.

</comment><comment><USER6> Not gonna happen.

We need close to the metal tools for a whole pile of things, and that's not going to change.

If anything, tools to help write C, or find errors, test, etc... are the more likely path.

That said, we could reduce the number of use cases for C now, and not lose too much, but that's not going to be the death of it by any means. More like a rational pruning.

<comment><USER7> > If anything, tools to help write C, or find errors, test, etc... are the > more likely path.

Ugh, _as if_ we haven't been going down this path for three decades. We're still getting shit like heartbleed. When can we admit that path doesn't work and start trying other things?

<comment><USER8> Heartbleed is a symptom of bad programming, not a bad language. C is "less secure" because it allows the programmer to do possibly-unsafe things at their own discretion. The alternative is to flat-out ban those things. Which is appropriate for some use cases (the kind where performance doesn't matter). Inappropriate for others (the kind where performance does matter).

<comment><USER7> > Heartbleed is a symptom of bad programming, not a bad language.

Okay, so your claim is tantamount to "every major C program is badly programmed", because every major C program has memory related bugs. If it's really bad programming, not a bad language, why is it that C is so much more often poorly programmed than, say, Python?

If it's C programmers, not the C language, then we should avoid C because that's the easiest way to avoid these terrible C programmers.

> C is "less secure" because it allows the programmer to do possibly-unsafe > things at their own discretion. The alternative is to flat-out ban those > things.

That's not the only alternative, you're just ignorant of the alternatives.

<comment><USER8> >why is it that C is so much more often poorly programmed than, say, Python?

It's kind of like saying: trauma surgeons must be more dangerous than pediatricians, because so many more patients die in the care of a trauma surgeon than in the care of a pediatrician. It ignores the fact that you wouldn't send a pediatrician to such a difficult patient as you'd send a trauma surgeon to. You wouldn't use Python in a lot of the places you'd use C because the performance would be "shaggy puppy meets Godzilla" lousy.

>That's not the only alternative

Suppose I've established that the fastest way the computer can do X involves having the CPU (which only knows machine code, no magical languages) access a memory location without checking if it's in bounds. Either the language allows me to program that, or it doesn't. If it does, then Heartbleed-like bugs are possible. QED.

Alright, there's technically one other alternative, require the programmer to formally proof-verify that the code does as it's supposed to. I hope that this will become more practical within my daughter's lifetime (it probably won't within mine).

<comment><USER7> > It's kind of like saying: trauma surgeons must be more dangerous than > pediatricians, because so many more patients die in the care of a trauma > surgeon than in the care of a pediatrician. It ignores the fact that you > wouldn't send a pediatrician to such a difficult patient as you'd send a > trauma surgeon to. You wouldn't use Python in a lot of the places you'd use > C because the performance would be "shaggy puppy meets Godzilla" lousy.

You can make any argument by analogy.

> Suppose I've established that the fastest way the computer can do X involves > having the CPU (which only knows machine code, no magical languages) access > a memory location without checking if it's in bounds. Either the language > allows me to program that, or it doesn't. If it does, then Heartbleed-like > bugs are possible. QED.

Suppose we don't suppose things that are wrong. Static type checking can check bounds at no runtime cost this in many cases. Like I said, your argument is based on ignorance of the alternatives.

> Alright, there's technically one other alternative, require the programmer > to formally proof-verify that the code does as it's supposed to. I hope that > this will become more practical within my daughter's lifetime (it probably > won't within mine).

I'm not hoping for 100% formal verification here, I'm merely hoping to be significantly better than C. That's a _very_ low bar: C does very little checking. Why on earth would you be opposed to this?

In fact, I don't think we'll _ever_ be able to 100% formally verify that a program does what it's supposed to. You can verify some things, like memory access, but in the end we'll never be able to 100% verify that the thing we are verifying is the desired behavior.

Look, I'm not criticizing the people who made C or the people who wrote tons of code in C. C was a great language in its time. But it's literally 4 decades old: it would be unreasonable to expect it to not show signs of age.

</comment></comment></comment></comment></comment></comment><comment><USER9> Every time I look at it, I have a very hard time taking Rust seriously. I really don't get whoever decided to use the shortest keyword names possible. It looks like a nice alternative to C, but wrapped in a horrible syntax. fn, f64, i32, u8, mut, mod, pub, ...

<comment><USER10> You are probably experiencing a syntactic illusion where it looks like C++ but then it looks all wrong. I've used Rust and it didn't take long to get acclimated.

</comment></comment><comment><USER11> > Can we stop hand-writing parsing code in C please?

I think that tweet is more about using Lex or Yacc instead of hand-coding logic to parse strings.

<comment><USER8> Lex/Yacc are great for parsing things like your own internal files that the end-user never directly touches. But if you really care about your users, there are certain times when you've just gotta bite the bullet and hand-roll a parser. Because when the user mis-places a punctuation mark, it's much better to give them a humanly-thought-out human-readable error message rather than a generic blob of unreadable gibberish.

</comment></comment><comment><USER12> C tooling is much better these days. If you run your code under valgrind or address sanitizer with a good fuzzer, most of these concerns go away. True, you might not need that for a memory-safe language, but you probably still need to fuzz your parsing code if you want it to be any good. And enabling address sanitizer requires adding one flag, so it's not all that much harder.

Hm, this arguments sounds similar to the "you need to write tests with good coverage anyway" argument that fans of dynamically typed languages make when they're told that static typing catches many errors at compile time :-)

</comment><comment><USER13> Who writes this crap?

<comment><USER14> Mainstream media.

</comment></comment><comment><USER15> Problem is: C, while very powerful, ends up being a burden in today's complex software.

It won by being less verbose and "more powerful" (for some uses) than Pascal (amongst other things), however, the way software evolved it starts to pull down.

There's a lot of unmanaged complexity in C (and in C++ it just ballooned); things like Go, Python (and even Java) taught us that managing complexity is important

It's very easy to shoot itself in the foot in C, C++ gives you a laser scope on top.

Some software gets away with C (like the Linux Kernel) by being very careful with it.

[https://twitter.com/id_aa_carmack/status/329210881898606593](https://twitter.com/id_aa_carmack/status/329210881898606593)

Can C be salvaged? Maybe D is the answer?

What I would do: built-in strings into the language (C's strings are pretty much a syntax shortcut to a char array), safe strings, bounds checking, if you want an array of bytes you get an array of bytes, not a string. Type aware allocations (no more sizeof all around), maybe exceptions.

<comment><USER8> When viewed as a performance language, it makes sense why C doesn't come with built-in strings: there would be too much temptation for everyone to use those, instead of the particular implementation of strings most performant for the problem at hand (NULL-terminated or not? Stored with length or not? Support for Unicode or not? Stored in a hash table? A radix tree? Or just directly allocated with no attempt to remove duplicates?)

It's as silly as saying, "Different SQL string types are insecure, make everything TEXT!"

<comment><USER15> > there would be too much temptation for everyone to use those, instead of the > particular implementation of strings most performant for the problem at hand

That's why nobody uses the C string functions, right? Oh wait...

If you need something else just use it, but for the majority of cases you want string functionality that is built-in and works (and hopefully is not a ticking time bomb)

</comment></comment></comment><comment><USER16> Blah blah blah. Another batch of anti-C/C++ propaganda by a technologically illiterate ignoramus. If C/C++ are too difficult for you then stay out of the way and use Ruby.

</comment><comment><USER17> C! Made in AMERICA! (F--K YEAH!)

We can't be using any of those sissy languages made in Switzerland!

The real tragedy is that [Turbo] Pascal / Modula / Oberon / Eiffel never got any traction. We could have been ahead of where we are now for low / medium low level languages DECADES ago.

E.g. - Turbo Pascal:

* Checks array boundaries, but you can cobble up pointer arithmetic if you really need to squeeze something (it looks funny, as it _should_ , but it converts into the same assembly code as ptr += size ; _ptr)

_ references ("var" params) used safely as non-optional values in most cases, using pointers for parameters that are truly optional.

* much stricter type checking and type range restriction allowed - most of which is only paid for at compile time, rather than run time.

* faster compiles, allowing quicker test cycles.

I suppose Ada fits in this group as well, but it was expensive in the late 80s.

Modern GC languages do well for long running application server programs, but they don't make good "transient" utility programs. We still need lower level languages for some types of programs.

Mobile could benefit from smaller memory footprints as well. I'm "gaming the game", but here are some tests on a 32 bit quad core setup, sorting by memory used for something that grinds through a number of connected objects as a surrogate for bulk data twiddling:

[http://benchmarksgame.alioth.debian.org/u32q/performance.php...](http://benchmarksgame.alioth.debian.org/u32q/performance.php?test=binarytrees&sort=kb)

Alas, the Pascal version used 3 times the CPU seconds that the (fastest, but 2x more memory) GCC version did. However, a lot of work has been thrown into tuning GCC. Also, there were 6 C/GCC solutions submitted for this problem, of which 3 were not even correct. Of the other 2 C attempts, one was about the same size and speed as the Pascal version, and the other was twice as big and three times as slow.

<comment><USER18> I don't need array checking, sometimes I might want to use a negative indices to access the last element

</comment></comment><comment><USER19> inflammatory post. but it's techcrutch so what was i expecting?

this is the same as saying "armed concrete buildings fail more often then buildings made of paper and bamboo" while completely ignoring that all the world around them not even being possible without talented people building the armed concrete structures around the ego of whoever wrote this.

</comment><comment><USER20> Yes, blame the language.

<comment><USER21> Why not blame the language?

There are plenty of languages available that are objectively more safe than C. Most of the security-critical memory-related bugs that are written in C (and C++) simply could not happen in, say, Java or Haskell.

By contrast, even though it is technically _possible_ to write safe C, it is mind-bogglingly hard. The problem is too difficult to be solved even by automated static analysis, testing and fuzzing.

The reason those safe languages aren't used pretty much always boils down to either a) legacy or b) performance. Rust solves the latter, but the former is nigh intractable.

Simply expecting programmers to be better or more careful is not a viable solution. The aviation industry knows this - problems can almost always be attributed to a systemic cause, not the one-off mistake of an individual. Problems are fixed by making those mistakes _impossible_ , not by reminding people not to do that, crossing your fingers and hoping for the best.

This attitude is spreading to other industries - primarily healthcare[1]. In the light of the ever-growing digital security threat, I think we should be making the same kind of efforts in software engineering.

C has its niche, but I think it is important to recognise that it has its tradeoffs. We should be trying to make things better.

[1] [http://www.amednews.com/article/20100614/profession/30614994...](http://www.amednews.com/article/20100614/profession/306149945/4/)

<comment><USER22> Exactly, if a language makes a mistake virtually impossible to make, why would you not want to take advantage of that? If there's even a small chance you can make a mistake, it's inevitably going to happen given a large enough project. For issues like security it's not scalable to just "be careful".

Also, as a programmer, I like to automate tedious problems away. I don't understand why a programmer wouldn't want to automate away such a enormously important issue.

<comment><USER8> It's a real dilemma.

Sure, the safeguards make your code 5% less performant; who cares, right?

Now suppose your code has a dependency, which has a dependency, which has a dependency, which has a dependency. And each level introduces a 5% performance hit. Suddenly your product is 28% less performant. This is why you end up with such nonsensical things as, e.g., the OWL API needing 2 gigabytes of RAM to hold an ontology that should take 200 megabytes max.

<comment><USER22> Do you have links to any benchmarks about this? I can't imagine bounds checking in practical programs has that much impact. For what impact it does have you have to weigh that against the impact of security exploits. Most languages with bounds checking have ways to eliminate bounds checks in certain scenarios as well.

</comment></comment></comment></comment></comment><comment><USER23> >> _…Which is why I'm so interested in Rust. It's the one new programming language that might, finally, at last, replace C and C++_

Oh, I see ...

</comment><comment><USER24> All very true, I just think its still a little early to recommend Rust, personally.

</comment><comment><USER25> The ignorance in this article is way too high.

</comment><comment><USER26> I think the only way to end C is to port Linux to Rust/Nim/Julia/Scheme/etc.

</comment><comment><USER27> Ada.

</comment><comment><USER28> what a load of tosh

</comment><comment><USER29> Pathetic human frailty has nothing to do with the validity of syntax. The machines will do as we say, for the most part.

Don't be an ass, and don't whine about bullshit like extra curly braces and semi-colons. Know your memory map. Get your shit together.

<comment><USER7> So your solution is to come up with better humans rather than coming up with better programming languages? Yeah, that will work.</comment></comment>


Microsoft Announces Cortana for iOS and Android - <AUTHOR> http://www.theverge.com/2015/5/26/8659523/microsoft-cortana-android-ios-apps

<comment><USER2> LOL [https://www.youtube.com/watch?v=lt5iLwNChyo](https://www.youtube.com/watch?v=lt5iLwNChyo) on the comments</comment>


The Shadow Project is an open source project aiming to be the core of privacy - <AUTHOR> https://shadowproject.io <comment><AUTHOR> Shadow is a truly unique project, spawned from Bitcoin, over 6+ months of development has transformed the pseudonymous Bitcoin into the first true anonymous decentralized cryptocurrency – Shadowcash. In traditional financial terms, other cryptocurrencies represent the trackable check or card option, while Shadow is cash. ShadowSend's unique zero-knowledge, dual-key stealth address and ring signature protocol enables near-instant, untraceable, unlinkable and trustless transactions.

Urls:

[https://shadowproject.io](https://shadowproject.io)

[https://doc.shadowproject.io](https://doc.shadowproject.io)

[https://bitcointalk.org/index.php?topic=745352.0](https://bitcointalk.org/index.php?topic=745352.0)

Media:

[http://www.sciencemag.org/news/2016/03/why-criminals-cant- hi...](http://www.sciencemag.org/news/2016/03/why-criminals-cant-hide-behind- bitcoin)

[http://motherboard.vice.com/read/the-race-for-the-first- dece...](http://motherboard.vice.com/read/the-race-for-the-first- decentralised-silk-road-is-on)</comment>


Steer clear of Facebook's Home for Android  - <AUTHOR> http://seattletimes.com/html/businesstechnology/2020769323_ptechfacebookreviewxml.html <comment><USER2> All this criticism of Facebook home is kind of ridiculous. It's basically preaching to the choir. What I hear when I've read almost all of the recent criticisms is "Don't use Facebook Home if you don't like the whole point of Facebook Home". Well, duh!

Facebook Home is for people who live on Facebook. It doesn't pretend to be anything different. If you're a Facebook fiend you'll love this. If you read HN you'll love to hate it. This software is not bad. It just doesn't suit the purposes of people who, well, have a different use-case in mind for their phone than the people who would like Home do.

I'd like to see more reviews that are aimed at those who would actually want to use this software. At this point all we get is "hey, people who would never like this thing, you shouldn't use it and hey let's have fun hating on it". I wouldn't use it. I agree with the article completely but my problem is that the point of the article is irrelevant. Instead there should be balanced reviews that weigh the pros and cons of this software for the audience it's aimed at.

This is like going to GNU conference and reviewing Windows as an OS you wouldn't like and shouldn't use.

<comment><USER3> Not sure if you read the article, but it _did_ spend a good while focusing on why people who like Facebook may not like it: in particular it is missing a good number of features we're used to in Facebook. For example, I can watch videos in the Facebook app, but not Facebook home (a little strange). Similarly, you can't share webpages, etc. His whole thesis was that it took over too much of the phone while simultaneously not providing enough Facebook features. Seems like a fair criticism to me.

<comment><USER2> His main thesis focuses far more on why people who don't live in Facebook wouldn't like this ("it took over too much of the phone") than why people who like Facebook will like it. The mention of features Facebook fans would love was really more of an afterthought than the point. It was like saying "all this stuff sucks but I guess it'd be cool if you love Facebook". Articles like this always seem to be written by someone who doesn't understand the audience of the product.

"So while Home offers _more of Facebook than you're likely to want_ , it gives you fewer ways of interacting with the social network than you probably would like." (emphasis mine)

Written like exactly the kind of person I'm describing. I think if it were fair criticism then it would focus more on how engrossing and mesmerizing the author says it is and of course then mention some of its lacking features. If you take out all the love-to-hate-it parts it'd end up being a fairly positive review of the product.

And please don't do that, the "not sure if you read the article" thing. I didn't come away with the same message as you but I read it.

</comment></comment></comment><comment><USER4> Hi folks. I'm one of the engineers on Facebook Home (disclaimer these are my opinions and not those of Facebook). It's been really interesting reading the early reviews. I think we can learn a lot from them.

The goal of the product is to make your phone feel more alive with content from the people you care about while still allowing you to efficiently perform all the typical tasks you use your phone for. The navigation model is a bit different than what people have become accustomed to, so some confusion is very understandable; however, we tried very hard to make access to any task just as efficient on Home as any other launcher. Getting to any app is just one gesture away: swipe up to launcher; swipe right to the last app; or double tap the home button to bring up the switcher. As user feedback comes in we'll continue to tune our model to try and achieve a nice balance between surfacing social content and completing tasks.

Home was designed and engineered by a pretty small team with a goal of releasing a high quality, performant, and beautiful product. To ensure our bar was met, we tried to narrowly focus on doing just a few things but doing them well for the first release. Of course the trade off here is that some features that people value are missing. I hope this first version will be judged on the execution of what we did include as we continue to fill in the gaps in future releases.

For anyone who has checked it out so far Thank you! I'm looking forward to making the experience something you'll love.

<comment><USER5> I'm sure you've already received similar feedback; but still: pressing the home button for me is something that should never result in a spinner showing up for a few seconds. The first time I saw this I had to restrain myself from immediately deinstalling Facebook home (and that's coming from someone who decided to try out the app for at least a few days).

Furthermore I'm missing a way to show the currently showing post in the Facebook app (I want that because home is missing some features).

Finally: I was somewhat frustrated to learn upon release of Facebook home that you guys decided to start out us-only. Understandable of course, but please don't make the rest of the world wait in vain for the arrival of a date (the 12th) that doesn't actually allow you to try out the app (I sideloaded an apk instead).

On a more positive note: ballsy move, and nice execution!

<comment><USER4> Thanks for the feedback. I agree that hitting a loading spinner on the home screen should never happen. Sounds like you might have encountered a cold start. Occasionally the Android OS will kill our process to relieve memory pressure. This tends to happen when you are using an app that consumes a lot of memory in the foreground and then return to Home. Improving our cold start time and adding additional protections to our process to make it less likely to be killed are things we're working on. We're also continuing to tune our ranking algorithms for showing you the freshest most interesting content when you turn the screen on. The fullscreen experience of Cover Feed presents some unique and interesting technical problems to solve, but our goal is that the most relevant and fresh content is always given the highest priority. We'll continue to tune this over time and fill in missing features. We'll be making some blog posts about the engineering of Home soon that will go into more detail on some of these areas. Thanks for your patience on the wider rollout. I'm really excited to get this in the hands of more users.

</comment></comment></comment><comment><USER6> Steering clear of Facebook entirely would be better advice, I think.

<comment><USER7> It's tremendously useful as a global addressbook / Rolodex for someone who's lived in various parts of the world.

The problem of course is that this address book has evil tentacles coming out of it, grabbing at my wallet and other items as I walk down the street.

<comment><USER6> That is an interesting point. I suppose if you were using it that way, you could simply just log in only via Private Browsing or via a dedicated web browser.

<comment><USER8> Try Fluid. It's essentially a webkit-app-creator for OS X, and it can sandbox cookies and the session. It also allows facebook to be fired up from spotlight.

</comment></comment></comment></comment><comment><USER9> I don't think I could be any less inclined to try that app/launcher anyway.

</comment><comment><USER10> Facebook Home could've been nice if there was at least some sign of security. Everybody getting hold of your phone can post all kinds of nasty stuff on your behalf to the world. That's a huge oversight, which made me deactivate Home. It's not so bad otherwise, but having no PIN or password or anything similar is just a no no go for every sane individual.

</comment><comment><USER11> I love it.

</comment><comment><USER12> "Steer clear of Facebook's Home for Android"

I steer clear of Facebook, other than logging in on a separate browser for 10 minutes a day. However, most people are not like me and they are unlikely to care about the "steer clear" advice. They live on Facebook, jut as most people live online /browser (but use a Windows computer to get there)</comment>


Learning Lisp the hard way - <AUTHOR> http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/63d76b19003620d2

<comment><USER2> I was a bit surprised by the nice and polite tone of the discussion.

Has CLL been evolving towards civility, or is this an exception?

Edit: it becomes rougher at the end, in part because someone trollishly cross posted a response to a Java group... but still...

<comment><USER3> Neither. CLL has never been as bad a place as some people like to portray it.

</comment></comment><comment><AUTHOR> Some of the personalities who appear in that thread are mentioned in this list of "Mad people of comp.lang.lisp":

<http://www.tfeb.org/lisp/mad-people.html>

</comment><comment><USER4> This title is going to be misleading to a lot of people familiar with _Learn Python the Hard Way_ , and other variations using the same methodology.

<comment><USER5> The article predates _Learn Python the Hard Way_.

<comment><USER4> And by quite a while, in fact!

Disappointing, nonetheless. Ah, well... Back to _Land of Lisp_!

</comment></comment></comment><comment><USER6> I find it remarkable that the one troll that came into the thread trying to start a flame bait got debunked quickly, but in a rather friendly tone. That speaks for the community.

</comment><comment><USER7> I would love to be in a position when I had to learn Lisp for my job. I struggle to learn it because I never find a good use case for it at work or in fun projects.

<comment><USER8> I had to learn AutoLisp for my job. It wasn't really all that fun because I didn't have to do anything particularly fancy, just a bunch of 8th grade geometry problems over and over and over and....

Mostly, it made me very familiar with why one might want to find the intersection points of two circles.

</comment></comment><comment><USER9> Some of the things he misses have existed in some environments, but haven't become part of the standard toolset that most Lisps provide. For example, the Lisp Machine had a List Callers command that would show you, and then let you visit, every function that called a given function. I worked at a place where we reimplemented that functionality for ourselves, by poking around in the internals of Allegro, but AFAIK no Common Lisp comes with this feature. It's too bad, I think, though admittedly grepping the source tree is usually an acceptable substitute.

<comment><USER10> [http://www.cs.cmu.edu/Groups/AI/lang/lisp/code/tools/xref/0....](http://www.cs.cmu.edu/Groups/AI/lang/lisp/code/tools/xref/0.html)

SLIME has been using that since 2004, ILISP has had who-calls since I don't know when, likewise Lispworks and MCL. Allegro has it too, since at least 1999 according to usenet (it's the :who-calls top-level command).

<comment><USER11> Link to the actual package is unavailable on that page btw.

<comment><USER10> [http://www.cs.cmu.edu/afs/cs/project/ai- repository/ai/lang/l...](http://www.cs.cmu.edu/afs/cs/project/ai- repository/ai/lang/lisp/code/tools/xref/0.html)

</comment></comment></comment></comment><comment><USER12> Well, it is true that CL and most Lisp have a standard library that's about as well-organized as PHP.

</comment><comment><USER13> This article is from 2009. Clojure was not as well known as it is today, otherwise the author would certainly have mentioned it, because he came from Java. There is one commenter who mentions it, but it didn't pick up.</comment>


Termtosvg: Linux terminal recorder to create standalone SVG animations - <AUTHOR> https://github.com/nbedos/termtosvg <comment><AUTHOR> Interesting, as the advantage over [https://asciinema.org](https://asciinema.org) is the SVG can just be placed on a site and it should just work.

Currently seems like it is more limited than asciinema as there are no controls (play/pause/repeat/speed), but presumably not beyond us to add that kind of thing via some simple JavaScript.

Playing recorded sound along with it would be the premium option, but that's probably letting my imagination get away with itself!

Would be interested to see basic analysis of how the SVG file sizes compare to ttyrec files and GIFs etc.</comment>


How to theoretically turn a sphere inside out - <AUTHOR> http://www.youtube.com/watch?v=sKqt6e7EcCs&feature=related

<comment><USER2> BTW, it just so happens that one of the mathematicians who came up with the first solution to Smale's paradox was blind:

      https://en.wikipedia.org/wiki/Bernard_Morin

Something to think about, next time we brood on our own supposed handicaps ("aww, I started my education too late / I'm too slow at reading books / YC rejected my startup / etc etc whine whine ...")</comment>


Yearning for an it-just-works real Linux Tablet - <AUTHOR> Why in 2018, does it seem impossible to buy a purpose-built Linux (distro) tablet from any major computer vendor. A device with features typical to those iOS and Android devices. <comment><USER2> Yeah the best match I found for this was the lenovo t420, costs under $200 on the refurb market but has a core i5, if you get a refurb they tend to have decent battery life. Kind of heavy but since the hardware has been out for ~10 years the drivers are really stable and its an easy install for most distros.

<comment><USER3> I have a t410 and can ditto this experience. You probably could get it for $70 from someone who doesn't know what they have.

I was running Lubuntu on a decently reliable PNY USB stick, but I would probably advise against this because my filesystem corrupted itself and I've since been wayyyy too lazy to reinstall and reformat everything.

I'm not a programmer by trade so I just use my LG Zone4 to do everything digital in my life currently.

</comment></comment><comment><USER4> I honestly would be less ambitious and settle with more it-just-works Linux laptops that devs can trust and maybe mainstream users can learn too.

Currently the only one that fits that bill is Dell XPS13 and that comes with just one flavor (Ubuntu). Most laptops will have random driver issues or another.

<comment><USER5> And the XPS comes with the dell quality gamble. We use them a work, and around 20% of them just don't hold up.

I think it's crazy how bad the laptop market is these days. If you're barred from Lenovo then you only have two high quality options, MacBooks and surface books and neither run Linux out of the box.

</comment></comment><comment><USER6> PostmarketOS is just Alpine Linux for phones. It might be worth checking out the list of devices: [https://wiki.postmarketos.org/wiki/Devices](https://wiki.postmarketos.org/wiki/Devices)

</comment><comment><USER5> Because it's hard to market. I mean, you basically want an Apple device with Linux that works like OS X/iOS.

I wanted one too, but eventually I gave up and settled in the apple ecosystem.

<comment><AUTHOR> Yes, you are correct. Hard to market? On this crazy planet where we market every and anything, tangible and intangible. Methinks not.</comment></comment>