Kinda a Big Announcement
joelonsoftware.com> almost anyone I talk to is too young to imagine The Days Before Stack Overflow, when the bookstore had an entire wall of Java and the way you picked a Rich Text Editor was going to Barnes and Noble and browsing through printed books for an hour, in the Rich Text Editor Component shelf.
I remember the "Days Before Stack Overflow" and Joel is giving himself a bit too much credit here. Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum. Remember, this was 2008 we're talking about. The UX was undoubtedly less consistent, but it's not like we were rushing off to the library to look up PHP functions and CSS 3-column layouts.
To be honest, Google returning SO answers for something that is exactly not what I am looking for instead of language/library reference documentation as it used to is one the most annoying things for me as a developer today. Though I think that's mostly on Google "optimizing" my queries by dumbing them down.
As an example, try looking for "python setattr" in your search engine of choice, and look for python.org documentation: none of them show it on the first page for me.
I also frequently run into the situation where I Google something, there is a perfect match on a SO question, but then the answer is "Actually, you don't want to do that thing you asked about, here is a different solution for your specific scenario". But often that alternative solution is not relevant in the general case, and there really are good reasons to want to do the thing as originally asked in the question.
Basically there are all kinds of situations where the specific question/answer format is actually at odds with generating good long-term documentation.
But that makes me all the more impressed with the success Stack Overflow has had. In my opinion their key insight is that it can be good enough. If I had come up with the idea for the product I probably would have been discouraged and given up way too early based on the fact that it is and will always be messy and imperfect.
> there is a perfect match on a SO question, but then the answer is "Actually, you don't want to do that thing you asked about, here is a different solution for your specific scenario".
That describes seemingly every Stack Overflow question I've found in the past four years. SO is basically useless for anything advanced enough to need SO.
Perhaps there’s a point at which you become advanced enough to not need SO. I’m certainly not there after a decade of software development. Do I have to dig a bit sometimes and go beyond the first few results on google? Sure. And if that doesn’t work I submit a question. I normally get an answer fairly quickly.
> Perhaps there's a point at which you become advanced enough to not need [something like] SO.
Not really, no, which is why it's so infuriating when people ruin it with "How do I do X?" "You aren't supposed to do X, here let me tell you how to Y instead.". The HTML/regex Zalgo rant at least had some style, even if it was utterly useless at answering the question.
I think the subset of programmers who don’t need something like SO’s value proposition is vanishingly small. Surely there are a few hundred people who have near perfect recall bolstered by perfect reference techniques.
At least speaking for myself, almost two decades in, I didn’t outgrow SO because I don’t need that kind of guidance. I outgrew SO because it doesn’t provide it effectively anymore.
There are topics on which Stack Overflow is worse to useless to me, mostly because I could probably name most of the experts who are better than me in the field and of course have ways of getting in touch with them on that. But I doubt there is anyone out there for which this is the situation for all topics.
Ironically the biggest problem I have today is that a lot of Q/As on SO are old, so it's hard to know if the answer I found is still canonical or if there's a better/different way to do the same thing, and I didn't perform the right incantations into google to find my answer.
> Though I think that's mostly on Google "optimizing" my queries by dumbing them down.
I'd say it's become a lot worse than it was just a couple years ago when you could massage the queries to get you exactly what you want. Now google seems to think it's more clever than you and turns every question into an entry level one.
I’ve used Google’s custom search engine (cse) to help solve this, when working on a project, just make a cse with the main sources of official docs for the stack you’re using; instead of getting 20 possibly related questions with half solutions that you have to wade through, you get straight to the source docs. I guess it works best when those source docs are good, eg postgres, but it’s certainly been a big win for me
On Chrome, go to chrome://settings/
Search for "search engines"
Open "Manage search engines"
Under "Other search engines" click on "Add" (on the right)
Add this custom search engine:
- Search engine: Python docs (first result)
- Keyword: p
- URL with %s in place of query: {google:baseURL}search?q=site:docs.python.org%2F3%2F+%s&btnI=I%27m+Feeling+Lucky
Install the "Redirect Google Redirects" extension https://chrome.google.com/webstore/detail/redirect-google-re... (otherwise you'll see a "Redirect Notice" page)
You can also add this search engine:
- Python3 docs
- pp
- {google:baseURL}search?q=site%3Adocs.python.org%2F3%2F+%s
Now, when you need to search for the Python documentation, just type "p setattr" and it'll go straight to https://docs.python.org/3/library/functions.html or you can search "pp setattr" and it'll show you the search results, filtered only for docs.python.org/3/
Thank you for your elaborate answer. Now please provide it for Firefox.
And Postgresql. And Flask. Now I am using aiohttp here. SQLAlchemy please. Pytest. Sorry, now in the Rust world. Get me some MDN for Javascript. w3.org for CSS3 spec, pleaaaseee!
You see where this is going? Python.org was an example to illustrate a point.
If you’re using a Mac, you might want to try Dash[1]. I’m sure similar tools exist on other platforms, but I’m not familiar enough to recommend them.
I have a few suggestions:
- Dash, the macOS app for language and library documentation is really nice. This is the first thing I go for.
- Chrome notices when you visit a page with a "Search" box. Next time you start typing python.org you can press tab to search the domain. I wish Firefox had this.
- AFAIK, Firefox's version of this is to RMB on a search box (for example on python.org's main page) and "Add a Keyword for this Search..." Set it to something like "py" and you can now type "py http" and it would search Python.org for "http"
- I honestly get better results from DuckDuckGo for stuff like this. Even better, they have bang! shortcuts. "subprocess !py2" will search Python.org's Python2 documentation for "subprocess" https://duckduckgo.com/bang
Those bangs look great. Really useful to know.
I'm not responding to your criticism of Google Search. I'm suggesting to anyone who shares your sentiment something that improved my dev experience.
I also use the uBlacklist extension to hide W3Schools et al. https://chrome.google.com/webstore/detail/ublacklist/pncfbmi...
I actually make these whenever I get frustrated by Google a few times. I have "m" for MDN... It's not hard you just need to pick a keyword. How to modify the URL in the search string should be pretty obvious. I think you'll find you don't need them for every library. It's mostly general tools with large user bases, like Python, where people are trying to make a living shitting up the search results.
If you use DuckDuckGo as your search engine you use the bangs that you add to your query, e.g.
searches for bang on Wikipedia. The list of bangs can be found here [0]!w bangpython: !python !python2 !python3
Postgresql: !postgres
Flask: !flask
SQLAlchemy: !sqlalchemy
Rust: !rust
Javascript: !javascript
CSS: !css
Currently there are 13,564 bangs and you can suggest new ones.
Alternatively: set DuckDuckGo as your default search engine and type `!python setattr`.
But if you're looking for something as specific as the documentation in Python itself for setattr, why wouldn't you do
```
> python
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(setattr)
```
Or if you want the documentation on specifically Python.org, use Google search but type
`setattr site:python.org`
?
The third hit for me is https://docs.python.org/3/library/functions.html
Maybe Googlebot is reading this thread.
Remember that Google is not showing the results the same way to everyone. Maybe others near me are more likely to click on the SO response so I get that one ranked higher, and less likely to click on the reference documentation, so I get targeted the same way.
Maybe if I let Google learn my patterns instead of disabling all the tracking I can, it'd give me better results.
FWIW, I get similar results with DDG, but Google wins hands-down on non-English searches.
I’m still trying to train Google to stop giving me W3Schools results and... I don’t have high hopes.
I see docs.python.org as result 9 (of 10) in duckduckgo. And there's a helper box at the top right, with the summary from and link to docs.python.org
7th on DDG for me.
> As an example, try looking for "python setattr" in your search engine of choice,
!python setattr
Or am I not allowed to add a character? :)
> try looking for "python setattr" in your search engine of choice, and look for python.org documentation: none of them show it on the first page for me.
I was curious and tried exactly that. For me, Google returns python.org as the third hit, above Stack Overflow.
Zeal (if on Linux) or Dash (if on Mac) are a lifesaver for that stuff.
It's ironic that I use Zeal so much but it really does just give me the answers quite often with less hassle than figuring out the search term to tell the search engine to get out the way!.
The sample you gave (and my experience in general) has official docs on the first page, but unfortunately below the fold. Top answers include various tutorial sites and an SO answer.
Ninja edit: my default search engine is DDG.
I just tried this, and the official python language docs came in third with SA just after. Now, for sure, it should be first, instead of the dumbed down tutorials, but it's certainly on the first page.
I've found DuckDuckGo better for searching for specific terms or functions like this. OTOH, google seems better for more vague concepts (like "python add attribute").
I think you might be giving Spolsky a bit too little credit! I remember the days before SO as well, and while you might luck out by finding your answer in some obscure niche blog, there was a relatively high chance that that error message you were staring at wouldn't have an accessible solution online (or at least not one that Google could provide). You could really just get stuck on a problem for a day, or never find the solution at all and have to work around it otherwise. SO was really a night and day change in how readily accessible it made programming information.
And I really did find myself buying a lot more programming books than I do now. When's the last time you picked up a book just to learn how to use a language - just the ins and outs of the syntax? I used to do that all the time, and then I immediately stopped when SO became popular because I could just google for what I wanted and SO would always tell me.
How people differ: before SO, I've rarely bought language books because most of them had reference pages readily available. I've learned and used heavily all of Python, Perl, PHP, SQL (with MySQL and Postgresql), a bit of assembly (NASM and GNU as), low-level details of C too (from ISO C9x draft), JavaScript, HTML and CSS and plain TeX, not to mention structures of x86 and VBE programming (I played with writing minimal kernels).
This was all before 2001 while I was in high school, with books being very hard to get in Serbia, so internet was my go to resource.
Now to be honest, even after SO, I only use it as a last resort. Somehow only 1/20th of the problems I hit match what people seem to hit on SO :/
> And I really did find myself buying a lot more programming books than I do now. When's the last time you picked up a book just to learn how to use a language - just the ins and outs of the syntax?
Perhaps this is an age difference thing? I'm 29 - I learned to program between 2003 and 2010 from online resources, mostly in the pre-SO era. I learned BASIC, Perl, PHP, and Python entirely online. My impulse was always to just Google things, although I fully admit finding results was more time consuming and frustrating back then. The only language I learned from a book was FORTH, and that's mainly because it's an older language and Starting Forth is one of the few good resources on the language even today.
I wish I could say my experience matched yours, but SO is an extremely frustrating place for many of my errors and problems. I don't think it made programming worse, it did make it better...but it's far from a panacea, and often a question has answers that are so outdated that the solutions no longer work, the solutions aren't complete or have bugs, or it's close to my error but not the same error, or a different solution. I'd say that's my experience about 1/2 the time I use SO.
I picked up a book last month to learn Clojure...how does SO help to learn a language start to finish? I don't even typically refer to SO for syntax questions, I'm sure it has that information but it doesn't seem like a very convenient place to index it. But maybe that's my subset of languages...
I probably end up on stack overflow a few times a week, and it is helpful...but I'd be fine without it if Google would just return better results.
> I remember the "Days Before Stack Overflow"
Yes. In the early 1990s I relied on Usenet's comp.lang hierarchy and the awesome FAQs that accreted there. A thorough reading of these could head off a huge number of problems before they manifested as bugs. Here are some examples [0, 1] to give people the flavour, admittedly from about 10 years after I had moved on.
[0] http://www.faqs.org/faqs/C++-faq/part1/ [1] http://www.faqs.org/faqs/C++-faq/part5/
The contrast from bookstore to single site Q&A is exaggerated, but I was around before Stack Overflow. The problem was not just that there wasn't a single (popular, highly active) site, and not just that you had to sift through search results. It's that if you didn't find your answer, you didn't know for sure where to post your problem, and actually expect to get answers. You might post it on a personal blog or forum, and then wait a very long time to see if a response would appear. Often it would not (or it was something you already tried or something else that didn't work), and you'd be on your own, and if other people were lucky, you'd document the eventual solution (but often, you did not.)
Stack Overflow gave you a central place for you to ask questions, and (within a pretty reasonable time frame) start to get suggested solutions to try and consider.
> you didn't know for sure where to post your problem
It depends on the topic/domain, but I have fond memories of being on various mailing lists, and there was also usenet.
Came to say this - the more niche usenet groups were full of helpful people that didn't mind answering questions, and discussing fuzzy issues.
I don't think of the developer eras as pre-SO vs post-SO, more pre-Google vs post-Google, though SO has definitely been a net positive.
For me there were three phases:
- pre-web: experts concentrated on Usenet
- early-web: Usenet decline and counter-productive decentralization
- SO (and others): recentralization
I think the SO guys just had a good-enough formula at exactly the right time and everybody jumped on fast enough
Google was a miracle in 2001. By 2008, ExpertSexChange and others had SEOd the blogs and phpBBs off the first page.
It’s weird he even frames it this way, when the original SO pitch was that it was better than an older, competing website (which they derisively referred to by the disambiguating punctuation in its URL).
On the one hand, there is a slice of history in which SO absolutely deserves this much credit, even if this particular hyperbole is anachronistic. Early on, and for several years, SO did genuinely provide a single place to find relatively high quality/trustworthy answers to a huge range of programming questions.
On the other hand, I think that shark has been jumped for many years since. At least for my usage, I deliberately avoid clicking SO links until I’ve exhausted other promising resources (first party docs, reputable forums and blogs as you’ve mentioned). Because the quality of SO content is generally not just terrible, but because the gamification design they touted as producing quality can’t keep up with volume or time.
Nearly every SO link I’ve clicked in recent months has either been full of garbage answers (with maybe something helpful buried in comments), has an accepted answer years out of date prominently displayed over several more correct answers with no/few upvotes, or tumbleweeds because apparently even moderately difficult questions just aren’t interesting to contributors.
And I’m certainly not retracing my breadcrumbs to try to fix that, which would probably make me feel guilty if I didn’t find the whole enterprise of SO/SE skeezier and skeezier as it grew.
Honestly it’s a shame. I don’t care a bit for their solution, but it was really great to have such a reliable resource when it was one.
I remember the "Days Before Stack Overflow" and Joel is giving himself a bit too much credit here. Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum.
yep, Stack Overflow eliminated a whole ecosystem of fantastic personal blogs. I get a ton of value out of SO, I'm not trying to hate on it unthinkingly, but there's tradeoffs in everything.
Yeah, between various forums and blogs and the later-renamed expertsexchange you could often find answers. It was SO before SO until they started to plaster it with ads.
I've seen plenty of examples on SO where the accepted answers are actually wrong. Not wrong as time has moved on, wrong even at the time. Early SO is especially guilty of this kind of cult of personality that built up around certain people, so whenever they answered they would be given the accepted answer, even if it was wildly incorrect and/or low effort.
It's an incredibly useful resource but it's not as though if it disappeared tomorrow people wouldn't find a way.
Yup. I remember in 2005 I was teaching my fellow students a “debugging” course, which was of course not normally part of a curriculum. It basically involved “copy / paste your compiler error into Google and tada.wav, you’ll have mailing lists or Usenet or blog posts about your issues”.
SO changed some of that landscape, but it was mostly a better ExpertsExchange.
I remember ExpertsExchange. What a PITA. SO is a better ExpertsExchange in the same way a car is a better horse. Not showing me the fucking answer would probably be #1 usability issue for a site I visited to "show me a fucking answer".
I also remember the "Days Before Stack Overflow" and you're not giving Joel (et al) enough credit. It's not like there wasn't any information on the web; it's just that it wasn't anywhere near as organized or as complete as what you can find today on SO. And what you definitely couldn't be sure of is that you'd ever get an answer to a new question if you couldn't already find it somewhere else. SO really did change that overnight.
Am I the only programmer who finds Stack Overflow to be highly overrated? I used it recently for the first time in several years as I was learning a new technology, and the most valuable answers should have just been in the documentation (or maybe they were in the documentation but Stack Overflow covered up the results.) But the majority of the time I find the documentation just significantly better and give up on SO.
To say nothing about how outdated some of the results are. I tried exactly what Joel suggested. I typed "Rich Text Editor" and searched stackoverflow.com. All top three results were at least a decade old (okay, the youngest was like 9 years 7 months, but I'm going to round it up). They were closed, jut clogging up search results with deprecated answers.
In the time before Stack Overflow, I agree there were many good sources online. I also agree that the printed PDFs of sources that some people passed off as books were horrible. But I do remember a lot of very good books at Barnes and Noble.
Even to the extent that was true, you almost certainly could not get back there. Today, a search query that has no good answers tends to throw up lots of SEO tarpits leading to pages containing nothing but the search keywords, some connecting verbiage, and ads/trojans/popovers.
For me it was usenet and IRC... I still remember discovering usenet and the incredible resources on comp.lang.c++.moderated... those were the good ol' days where reputation was based on people recognizing you and not based on some score / number of followers...
I still miss browsing at Computer Literacy in Sunnyvale and San Jose.
I think you're onto something. I remember myself, as a young developer and a fresh university student mostly reading programming forums or browsing newsgroups. Even more so official documentation for a programming language or a library.
Only know, having 10+ years of experience behind me, I find myself stumbling upon SO because I know exactly what I'm looking for. In other words, my path to finding the answer is shorter. So it's just a time saver.
I find issues on Github (for open source software) to be frequently of a similar value to me.
> Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum.
Even more likely, you would get links to Experts Exchange, which was ad-riddled with the actual answer behind a paywall. I'm glad that SO was able to at least kill that business model. Someone should do the same for Pintrest and their dominance of Google Images.
The actual answer was always at the bottom if you scrolled down far enough. Lot of dark patterns on that site.
I personally disagree with tdeck, Joel and Jeff deserve a lot of kudos, as an oldie myself SO was an absolute game changer for programmers.
I think it used to be, but IIRC some time after Stack Overflow became popular they started actually gating it. Probably because there were people researching questions posed on SO and answering them from info on EE.
If so, that was a catch-22 for them. Either leave them available and watch the only thing making your site useful be rapidly transcribed onto a different and now more popular site (whether by people playing into the gamification or scraping as used to be the norm doesn't make a difference here), or close it off and allow their more use hostile experience to force them into irrelevance. That's a tough place to be. By the time it became an obvious problem SO was probably too far ahead to catch even if they pivoted immediately, as I'm not sure anyone ever really felt any loyalty to EE with it's poor usability bordering on UX hostility.
I remember listening to the podcast where they announced Stack Overflow, and cited exactly the problem of walled communities like Experts Exchange as who they wanted to drive out of business.
Stack Overflow ain't perfect, but it's amazing to see how impactful it's been. Especially the unix/superuser stack exchange sites for having useful tips that would be a pain to find elsewhere.
> Joel is giving himself a bit too much credit here
Especially since Stack Overflow was created specifically as a better expertsexchange (with a better name too).
Spolsky and Atwood had a podcast when they were putting Stackoverflow together and they talk at length about what they wanted to achieve. Its amazing actually to see they had a very precise idea of what they wanted to do and they absolutely hit their own objective.
Podcast 1, April 2008
https://stackoverflow.fogbugz.com/default.asp?W6
One thing we are noticing is that the book market, the programming book market has just completely vanished. It is falling apart, catastrophically. The programmers I know don't really learn new technologies from a book any more. What they do is they find a tutorial on the web -- maybe -- and they try to do something and then they page fault in knowledge. Basically, they get stuck on something and they either post to a discussion group, or they type their question into Google.
And those are the two things we want to serve basically is the posting to the discussion group and typing things into Google. Our longer term goal, if we’re successful, is that you're trying to figure out how to do something in Python like how to merge two arrays in Python and you go to Google and you type "merge two arrays python" and submit that, and our goal is to be the number one hit that comes up with a really good edited answer to that question that some individual has contributed and maybe other individuals have edited.
-----
So then you go search on the Internet for "Mac remote desktop connection beta expired" and you get all kinds of discussions; people discussing what to do and how to work around this problem, and "how stupid is Microsoft that they can't solve this problem." What's interesting is that within five days Microsoft had indeed released a new version of it with the expiration removed. So, it is still the beta because they’re still late but it’s not actually telling you that it’s expired anymore.
So that's fine, but here's the point: in the mean time, all those previous blog articles about this thing being removed are still the results you're getting from Google. And so the number one result from Google doesn’t know about the new thing – the fix. In other words, there is something that happens when something is broken and then gets fixed. The brokenness gets into Google and gets page ranked and that tends to sort of dominate the results for a long time because it’s got the earliest dates on it and a lot of the times you're trying to solve something and you find a discussion on the Internet that says "the solution to this problem is there is no solution and you are borked" and you can't do anything about it. And that's wrong, that's no longer correct, you're not looking at the correct information anymore.
One of our goals is to have a place where if somebody posts a wrong answer or they post an answer that used to be right but it becomes wrong that there is a way to remove that and to get that out of the site and to get the new right answer at the top of the page.
--------------------
Podcast 4, May 2008
https://stackoverflow.fogbugz.com/default.asp?W781
So what are we actually going to bring to the table that actually makes us better, or at least different, than these other programming communities? And I think one of the things we have going for us - and it sounds kinda obvious - is when we have pretty large audiences that we're gonna say, "Hey take a look at this thing we're doing." Right, so... you know, it's kind of like when Nine Inch Nails did digital music distribution, and when Radiohead did digital music distribution, all the commentators, when they talked about that, said, "Yeah, that's no problem, you can do exactly what they did if you have a band. Just one: be Radiohead, right, two: put digital music online." So, we've built up...
... Yes, yes, so we're hoping that having large audiences that we're involving in this process, through this podcast and through the blog and so forth, is one of the reasons that it's going to be different...
------
Spolsky: So that was the question, I guess, that everybody keeps asking, "why another one, and how are you going to hit that so called critical mass?"
Atwood: Right, well, first a bit of terminology. So, it's not exactly a forum. I mean, when I thought about this and Joel and I were initially talking about this, I framed my mind in a way that said, "OK, this is a forum that we're building." But the more we looked at it, it's not really a forum. It's more focused than that. Cause forums have a problem, and I've discussed this on previous podcasts, where you can talk about anything, right? And that ends up sort of, you end up chasing your tail in some way. When you can discuss anything, you end up discussing nothing. So, there's a very laser-tight focus on question/answer that I think sets us apart from forums right out of the gate. And then also, and I don't think we've actually discussed this publicly, but there's going to be a Wiki-like aspect to the pages as well. So the questions won't, hopefully won't go totally stale over time. Because once you get enough trust in the system, you'll actually be able to update the questions, point people to different areas as questions get old, and so on. So those are my first two observations out of the gate. What would you say, Joel?
----
See also this "Google Tech Talk" by Joel Spolsky in April 2009 when he talks in detail about the design decisions they made with StackOverflow - https://www.youtube.com/watch?v=NWHfY_lvKIQ - again they knew exactly what they were trying to do
I definitely used to buy and read more books back then, and documentation in general. Maybe that was a good thing.
I feel like this argument is akin to "back before cars, I used to walk all the time, and I was in much better shape." There's nothing to stop you from going and doing it again!
Well, yes and no... As an Apple developer, I used to be able to rely entirely on Inside Macintosh books because Apple’s docs were the best in the business, probably the best ever. Nowadays, even if I wanted to rely on Apple’s own documentation, I can’t, because the docs are just no good any more.
(Their header files are still very informative! But much less so in the Swift era, sadly...)
To use your analogy, I’d really like to walk as much as I used to, but they ripped up all the walkable districts to build highways!
I don’t think things are bad across the board, at least. For example, you can get a very long way in Javascript purely from MDN rather than needing SO.
I think that now, more then ever, any programmer that has started in the last 6-8 years will have the experience that Joel states.
Though for those of us who has been doing this for 15 years, that is not the case.
Most Unix admins will suggest you check the manpages for a utility before Googling what you need. The answer is often on your system, you just don't know where to find it.
Right. I taught myself how to make web sites (both front and back) in 1999 purely online without much difficulty.
Talking with developers who started their career in the early 90's, it seems to me the two biggest changes in software development over the past 30 years are:
- the rise of easily shared open source libraries and applications (supported by infrastructure like CPAN, Maven, and Github)
- crowd-sourced documentation (blogs, forums, and Stack Overflow)
It changed not just the way an individual programmer interacts with the code, but the way programmers work together.
What I love about stack overflow is that you don't just get the answer to your question (usually) but the top rated answers also include the "whys". Meaning you get to expand your understanding of the domain in question.
People who write stack overflow answers really are the unsung heroes of the open source world.
This highlights something I believe to be a deeper truth about programming in general: the whys matter, sometimes more than the hows.
So much of programming is patterns that exist for extremely arbitrary reasons (note: not acausal reasons, just reasons that are unimportant to the immediate problem domain one is trying to solve, or perhaps important in a way one doesn't yet know). Knowing those reasons can give you some mental hooks to hang the arbitrariness off of.
COM, which Joel mentions anecdotally at the top of the article, is a great example of that. I think the biggest challenge people have remembering why COM works the way it does is it's there to solve a problem that primarily the Microsoft software ecosystem had, which didn't show up in other software ecosystems as strongly: Microsoft had a vested financial interest in enabling developers to create closed-source binary blobs that could interact with each other via exposed objects.
Though COM is language-agnostic, most examples from textbooks of the mid-'90s era reveal the big problem it's solving: C++ was the hot language at the time, but C++ doesn't standardize name-mangling, so two arbitrary binary blobs of C++ code from two different compilers weren't guaranteed to be able to use the objects in each other's libraries. This isn't a problem Apple's software stack saw so often (Apple had fewer toolchains, so compiler incompatibility was less frequent a problem) and it was rarely a problem in the open-source OS ecosystems (if you're passing around source code instead of closed-source binary blobs, you don't care about name-mangling issues because you're building the source as a lump under the watchful eye of one compiler). But in the Windows world, with a pile of choices for compiler and a business need to support closed-source binary blobs that could expose objects, it was hell.
It's helpful in understanding COM to understand why Microsoft's ecosystem needed a way for closed-source libraries to expose objects in a language-agnostic way.
> This isn't a problem Apple's software stack saw so often
Apple had the exact same component object model problems which is why it took the long way around discovering exactly the right way to deal with it and eventually gave up and bought NeXTStep. Objective-C exists in large parts to solve the same problems that COM does! It also has a reference counting component memory model and a component message model designed to handle compiler name-mangling issues.
> closed-source binary blobs that could expose objects
Component systems aren't just for closed source, though. They are also for deployment management and trying to solve problems where multiple apps from different teams need to interact and trying to avoid strong coupling to allow better flexibility/resiliency.
Even in Open Source there have been plenty of COM-like projects. Gnome 2 built a lot of early things on Bonobo which was pretty directly a COM clone. Since then things have migrated to D-Bus, and while D-Bus is not a COM clone in the way that Bonobo was, it is still there to solve a lot of the same coupling problems so that individual apps can communicate without directly depending on one another. D-Bus just takes more of a publish/subscribe approach than an object model for components that more directly communicate.
What are you looking up that you get "whys"? I consider myself lucky if SO returns "here's the name of the library function you assumed existed that does what you want."
Stack Overflow destroyed a lot of its social capital and pissed off its own community in the wake of the Monica Cellio affair a little under 2 years ago. (This one was touched off by the Judaism Stack Exchange moderators asking questions about pronoun policy, but ended up with basically every community involved up in arms, including many in their LGBTQ+ community.)
One hopes the new owners will do a better job of managing community relations. It will be difficult for them to do worse.
This is very true. It sidetracked nearly all the communities for a full year, triggered resignations, and caused lawyers to get involved.
They've done other things to cause various 'controversies' with their base... changing the license answers are under, hiding controversial questions, etc... but their amazingly unprofessional treatement of Cellio caused more lasting damage than any of that.
It's interesting, I'm on Hacker News almost every day and have benefited enormously from Stack Overflow yet I have no idea what you're talking about or who Monica Cellio is. My guess is that the vast majority of their users haven't either.
I only mention this because seemingly major events in online communities don't always have the impact that people involved or following closely think they do.
As with Wikipedia, there's a community of volunteers curating and moderating SO. Drama in that community doesn't necessarily bubble up in obvious ways like the site going down, but I'm sure it has an overall effect on content moderation and quality over time.
Yep. Same. Read HN at least 2-3x/wk and use Stack Overflow and a bunch of their related sub-sites about the same frequency. No clue who this is or what the event is referring to.
(Nor do I want to gain any clue)
> (Nor do I want to gain any clue)
OK! Duly noted.
I wouldn't expect you to. HN doesn't report on everything happening in every online community.
It was a thing Stack Exchange did to a Stack Exchange community moderator, that had a big impact on those involved with the Stack Exchange community. I didn't mean to imply that the repercussions were felt around the world; just that it was a big deal in the group that was intimately involved.
There were newspaper articles and half a dozen HN threads about it, though. https://news.ycombinator.com/item?id=21149770
The only way I'm aware of it is prominent users/moderators having changed their display name to things like '<original name> - Reinstate Monica'.
Or maybe I also saw an HN thread about it, but mainly that. (I still see them.)
Same.
Monica was just the spark that lit the fire of the community-management disaster, but they'd been stockpiling fuel. Even the pronoun question itself was only raised as part of a somewhat clumsy top-down directive to move away from the "ideal questions and answers are universal and impersonal" approach that had previously served to render the matter of pronouns a non-issue. As things progressed, it soon became clear that Stack Overflow's corporate strategy was to try its hardest to stick their collective fingers in their ears and throw volunteers under the bus.
A thoughtful reader can imagine how pseudonymous moderators of the LGBT stack exchanges might be shocked by the company itself breaching an expectation of privacy, talking to the press using the volunteer's real name, and radically misrepresenting her position. What might be next? Might some of them be outed? Would a Google search for their name, too, reveal only the Stack Overflow controversy?
One open letter reads: "Stack Exchange has rewarded years of service by putting one of its volunteers in danger – and there’s now a very real feeling that we may no longer be safe on this platform." https://dearstack.artofcode.co.uk/
A resigning LGBTQ moderator wrote of the broader situation, "[Stack Exchange draws] vocal bigots from the woodwork with prompts to discussion, and then [vanishes], forcing us to decide between tacit approval through silence or defense of our own against an unchanging torrent of bigotry." https://meta.stackexchange.com/questions/334575/dear-stack-e...
A lot of volunteers just went straight out the door.
Honestly I've used stack overflow since it started and read tech news daily. I do not know or care about Monica Cellio or internet/twitter drama.
I would bet money that if I asked any of my friends or colleagues they wouldn't know either.
Sure. That's a little like saying you use Wikipedia regularly. I have ~10k rep on Stack Overflow from >200 answers, but I'm still a small fry compared to the volunteer moderators and the true power users.
There are people who spend an insane number of hours closing or editing basic "How do I do this" questions that would otherwise overwhelm the site (whether or not you agree with the standard these users set for the site is a separate discussion). When Monica got removed, the people who had made SO a significant part of their identity were understandably upset (the fact that she managed to raise >$25k to sue SO for defamation[0] should show just how upset). Why should anyone try to make the site better when SO was insulting its most helpful users and self-sabotaging?
I dramatically cut down on my time spent learning by answering questions. It's certainly a minority that did so, but I think it's a formerly-prolific minority.
[0]: https://www.theregister.com/2020/01/02/stack_overflow_settle...
Stack Overflow doesn't run on social capital, it runs on providing ads to people who need to find answers to their incredibly specific problem.
> some things (like handing a file upload, or centering) that were, shockingly, still just as randomly difficult as they were in VBScript twenty years ago.
I don't get why the "centering is hard" trope is still being repeated in 2021.
I'm a recent new grad front end dev and have never had issues with this.
Hasn't it been years at this point since flex-box became standard?
You're not wrong, but you may be reading it in the wrong tone.
There is a certain type of joke where the punchline is something that was true for so long, it's acceptable to repeat it ironically as a sort of inside joke, knowing it is obviously not true any more. Best pulled off if you were actually there, of course. I think that's what's going on here.
To me you proved the point. Centering with Flexbox requires styling the parent and they use two different properties for horizontal and vertical centering.
Truly simple to me would not be CSS but rather an attribute on the element. But with CSS, the simplest thing would allow one to just put a style on the element you want to center.
The other aspect of this is that there are multiple other ways of doing it.
> Centering with Flexbox requires styling the parent and they use two different properties for horizontal and vertical centering
It does require styling the container, to specify that a new layout system (Flex or Grid) is to be used instead of the default. While it's useful to have separate properties for the two directions, you can also use a single shorthand property to set both at once:
Alternately, use only Grid on the parent and place-self on the child..container { display: flex; place-content: center; }.container { display: grid; } .child { place-self: center; }
Google doesn't seem to think it's standard: https://www.google.com/search?client=firefox-b-1-d&q=how+to+...
Do you accept this as relevant evidence about what is standard? (Or would a different search be better?)
I don't understand why this is downvoted. It doesn't look like top results for "how to center html element" show the flexbox method. My example of "center vertically css" also doesn't show the flexbox method.
The first result recommends the ol' "top:50%; transform:translateY(-50%)". [1]
The second result shows the padding method, the line-height method and the translateY method again. [2]
The third result is a complete guide asking you questions three layers deep about what you want to do and gives you the personalised answer for the scenario. [3]
I gave up afterwards.
But the point is people are still learning old ways of doing it. Should they read a guide to modern CSS? Yes, but we all know searching and clicking on the first result is easier.
[1] https://www.w3schools.com/howto/howto_css_center-vertical.as...
Standard? I'd be happy if 10% of my interview candidates could do a flex layout.
Hiring? :)
Is stack overflow even useful anymore? I guess it must be for some.
Personally for me it feels like the content is pretty "stale". E.g. an answer from 5 years ago that uses a deprecated feature in a library that was abandoned 3 years ago etc, a reference to something only working in Chrome v12(we are on v90 now IIRC) etc etc. It seems like a lot of what I come across on there is just so out of date that I personally do not put value on it.
As such I personally avoid it now like I used to avoid experts exchange that was the stack-overflow-before-stack-overflow.
I wonder if I am alone...?
Given you mention Chrome, maybe you are a JS dev, and maybe things move a bit faster for that language/ecosystem than for others (to put it mildly).
I had to figure out how to do something with videoJS and all I could find were answers for the old version of the lib, there were new answers but they were buried and hard to find.
> The biggest problem is that developers of programming tools love to add things and hate to take things away. So things get harder and harder and more and more complex because there are more and more ways to do the same thing
Kind of, but not exactly.
As a given software platform evolves rarely do the defining foundations significantly change. This means there becomes many ways to solve a problem down the line, but the original few solutions typically still work and apply just the same as they did in the early days.
I cannot emphasize enough just how important that is.
The implications of grasping this allow a developer to solve almost any problem like magic. The mythical 10x developer sprinkling their pixie dust like dropping blow at a night club. That is because the developer knows the durable solutions to most problems already and optionally may consider newer approaches when beneficial. They know what works and have the freedom to deviate at their convenience.
The implications of missing this produces infantile developers dependent upon the flavor of the moment. The developer reliant upon a late stage convention or supplemental tool has less flexibility than the developer more experienced with the foundational concepts of the given platform. This is vaguely related to the Law of Leaky Abstractions[1], but that law just describes reactive scenarios.
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
Does it seem like "GRAND" in that last paragraph was a hint at what they're building for the data issues he mentioned in the second to last paragraph?
Still love that guy and his writing.
Went with my current company mostly because they dropped his name in the job description.
(Also: Went so heavily into table tennis that it always seems to me he's holding that table tennis racket a bit awkwardly or like a hobby player in that picture. But great hobby.)
Also discussed here: https://news.ycombinator.com/item?id=27370026
Yeah, what is this all about SO changing things overnight. Exaggering by far. It took years and years before SO became a more useful resource and for a long time (maybe even still I'd argue) was a joke that it was a haven for lame Q's and dangerous A's.
Everyone was referencing blogs and google groups (usenet before) and searches.. hitting sites like ExpertsExchange etc. What code languages/scenes were active around then too -- Ruby/Rails stuff = blogs/groups. PHP? = forums, even the comment sections of the PHP docs.
Alot of what changed gradually around then was the rise in better documentation out there. So much better/more emphasis on writing proper docs etc
Is it just me or is the intro relating to COM a bit off the mark?
The intro is about how some things change slowly. His transition paragraph is how things don't seem to get better. He then does his real topic launch by then identifying something that did change quickly, and did get better.
I've been reading Spolsky essays for 20 years, he really is incredibly talented. So much so that even today, you can reference some of his early essays on "commoditizing your complement" in the tech industry - and there is a better than average chance that the person you are speaking to will be familiar with Joel's essay on this topic.
It resonated for me because 10 years ago I worked on a COM project (browser extension that had to support IE) and the total lack of information for that "pre-internet" technology meant I had to rely on very hard to find books. There was one book in particular that without it, the project would have failed. And that's what everything used to be like (well, more like before Internet, not necessarily before Stack Overflow).
Having stopped writing COM components in the early 2000s, back then there were very good resources at Microsoft's site (MSDN) as well as within the Visual Studio help. It's interesting to hear it got worse just ten years later but kind of doesn't surprise me that they wouldn't upkeep that kind of documentation.
I did a COM project around the same time. It took a little bit of searching, but I found an excellent tutorial on a random site. Something that could not have existed at StackOverflow because it didn't answer a specific question, any question it answered would have been downvoted, and it would have been difficult to find there.
not to us old farts, who get a great feeling of nostalgia when we read about those win32 APIesque topics.
Win32? ...Ha! That's modern stuff. My first thought was "who the heck would need to maintain .COM DOS executables in 2021?":)
That's not nostalgia. Look behind you!!!
My primary use of Win32 APIs now is to scare people away from making anything that byzantine. If the APIs don't do the trick, I start telling back compat stories. [shudder]
> Where are the flying cars?
Understanding why we don't have flying cars will tell you how the entire world works. It turns out that "progress" has nothing to do with "want", and more to do with need, availability, and timing.
> They lack the structure to make the data they contain readily accessed programatically, so step one is miserable screen scraping and data cleanup. That’s where a lot of people give up.
> We think we have an interesting way to fix this.
RDF? OWL? SKOS?
All of those address the issue from the other side.
If I'm aware of the Semantic Web, agree with their conclusions, and wish to do so, I can make my site Semantic. That's true. And if I wanted to publish data and make sure others could access it, I would.
It's not required however. And if I want to make my data only accessible through my portal, I have a vested interest in making my site as anti-Semantic as possible. Like I don't think Multiple Listing Service (MLS) companies would ever make their sites Semantic. Nor would any company that consumes their data (like Zillow or Realtor). It's the data itself that has value, so they want to put hoops in front of it.
But it's technically publically available data that they're publishing for free. Technically, if you acquire the facts themselves, it doesn't matter how, they can't do anything to you if you redistribute that data. The only thing they can do is make their site as difficult as possible to scrape.
Then there are the sites that don't care either way and making their site Semantic is only additional work. For example: Lego's storefront. All of that information is from their databases. They already have the information and don't care whether or not someone else has access to it. The information provides little to no value. So they have no incentive to invest resources in making that data more easily available to others.
So to get the information from these sites, you have to scrape. It's unfortunate, it's miserable, but those are the facts.
That's quite a fatalistic point of view for a non-technical problem. But who cares if scraping is involved? You can still use all the technologies I listed.
Looking at Hash.ai's product roadmap, it looks like they're building a "Splunk for simulations". And probably their big value-add, besides just a flashy tool, is going to be collecting and curating data. But they probably realize how much time and money it takes to constantly curate all that data. So probably what they are doing is building the tools so that individuals can curate their own data, by using a scraping tool, a transform tool, a load tool, etc. And if they want that data to be more useful within their own ecosystem, it would make sense to make all that data semantic, so that data from one customer is composeable for another customer. The more taxonomies and semantic relationships that are built over time would just make the whole dataset more intelligent over time. Enabling customers to build graphs of graphs would turn them into the world's premier crowd-sourced and curated data warehouse, netting them a trillion dollar valuation in 10 years, without ever charging a single person for access, or paying for anything but infrastructure and a couple devs.
Or maybe it's something else, I dunno.
I think we're thinking from two different perspectives.
You're considering about what happens when the data is in HASH's possession. It'll likely be helpful for them to be Semantic, yes.
But that's not the only problem. The problem lies in the collection of the data as well. I'm thinking from the perspective of getting the data from somewhere to HASH. I'm pre-HASH.
HASH does look like a "what if we could just do the fun bit" solution. You do the grunt work of defining the parser and HASH does the fun bit of making the simulation software.
"They lack the structure to make the data they contain readily accessed programatically, so step one is miserable screen scraping and data cleanup. That’s where a lot of people give up."
I've been contemplating the idea of curated data and data provenance. Some data sources are easy to use but some as mentioned need clean up and thus you run into the question of original source vs. "cleaned up".
Curated data where the original source is linked, any tools/scripts used to clean it up (harder when manual intervention is needed), are also included. Maybe even a pipeline setup where original + tools = cleaned outcome is a thought.
It's a pipe dream and many data sources are still too unstructured for such automation.
There is something that irks me the wrong way about this post.
The structure is “remember our past” “we got bought” “This is actually the best thing for everyone (TM)” and ends on a “Anyways, I’m off to do something completely unrelated for completely unrelated reasons and will not have any part in that”
Reading between the lines it sounds like that “this is for the best of everyone” is a contractual requirement or half hearted at best.
The title is a clickbait. For anyone interested, the article is about StackOverflow being sold.
Kinda a huge ego on this guy.
The truth is you got lucky with the timing and capitalized a tech help forum.
The article writer is quite ignorant.
COM is not obsolete at all, it's the main way Windows APIs have been and are provided from the release of DirectX until now, where it underlies the current WinRT API.
The writer is the person who added VBA to Excel + the MS Office suite. Where you used COM to make use of external libraries/programs. I assure you, he's not ignorant.
Is COM obsolete today? For new development, yes. But Microsoft still supports it and you can still write .net code that gets exposed as COM objects.
Indeed. COM provided and provides integration that Unix nerds can only dream of. Windows in the 90s, in general, was technology indistinguishable from magic, compared to the state of the art from the Unix realm. That's why it would have killed Unix entirely but for Linux.
> (Bill Gates, 1990: “How many f*cking programmers in this company are working on rich text editors?!”
Where is this quote from? I haven't read this one before.
This will likely put more pressure on Stack Overflow to monetize their content.
Does anyone know anything about this hash thing that he’s making?
he sell his soul for only $1.8B
What is that supposed to mean? Seems like a pretty good price for a soul.
I would "sell my soul" for a measley $10 million.
Always liked Joel as a writer. I do not foresee this being a good thing though, except perhaps for owners/shareholders. I’m expecting revenue extraction, product stagnation (or worse), communities declining. Some of this seems like it has begun already, I would say I don’t use SO as a resource as often as earlier in its lifetime. Seems like these days the answer is as likely to come from a GitHub issue.
Anyway, congrats to the owners and shareholders I suppose.
The days before Stack Overflow were far better. A search used to return a blog post in which a person described a bug, how they got there, and the resolution.
The net effect of stack overflow was to spam the search engines with non-answers like "you asked in the wrong forum", "you didn't ask nicely", etc.
Long ago I learned to route around it.
Really?? I remember frequently running into a site that was strangely named ExpertSexchange and having to fight through ads to get information.
It was supposed to be Experts Exchange and... yeah, bad choice of domain name, especially since "sex change" is an outdated term now considered a slur, on par with "Eskimo".