VSCode January 2019 (version 1.31) released - <AUTHOR> https://code.visualstudio.com/updates/v1_31 <comment><USER2> VS Code always has such wonderful release notes. I don't think I use 10% of the features mentioned, but I love reading about them and learning about them in these notes anyway.

</comment><comment><USER3> I tried VS Code early on and decided I'd give it a serious shot when I could modify the color scheme without having to go through a whole page of notes, download and install something like 3 other programs and practically learn a whole new language.

Is that possible yet? In other words, is there an actual GUI for configuring color, or at least a config file that's not some cryptic format for a program I've never used?

<comment><USER4> Yes - [https://code.visualstudio.com/docs/getstarted/themes](https://code.visualstudio.com/docs/getstarted/themes)

(I also recall the process being rather user-unfriendly in earlier versions)

</comment></comment><comment><USER5> Fun fact: this is the first stable version that can start even without internet (LAN) connection on latest Windows 10 update 1809. (Mentioned as first Notable fix [0], fixed by updating Electron to v3.)

[https://code.visualstudio.com/updates/v1_31#_notable- fixes](https://code.visualstudio.com/updates/v1_31#_notable-fixes)

</comment><comment><USER6> As a Linux user, MS Code is one of my favorite MS products.

<comment><USER7> As a Windows user VS Code is my favourite MS product

</comment></comment><comment><USER8> Not reloading when adding an extension is a long-overdue feature, in my opinion. What were the technical reasons for needed to reload?

<comment><USER9> It's easier to write correct code when you know certain state changes always entail a full reload. Extension installs are rare enough and VSCode reloads quick enough that the tradeoff seems sensible.

This change introduces a new "extensions changed" event that extension points must (correctly) implement, so the cost is more code i.e. more opportunity for bugs. The essential question is of course, _how much_ more, and I have no answer to that.

</comment></comment><comment><USER10> Have they fixed keyboard shortcuts to actually match OS X shortcut semantics? Eg cmd-f/g not focusing the search field? Or using the system search text properly? (Cmd e iirc - I thought about it so that memory is now gone :) )

</comment><comment><USER11> Did you guys noticed the Marie Kondo reference?

<comment><USER12> She keeps popping up: [https://twitter.com/iamdevloper/status/1090617583433404416](https://twitter.com/iamdevloper/status/1090617583433404416)

</comment></comment><comment><USER13> Can someone recommend a good tutorial on getting started with VSCode? I downloaded it and it feels overwhelming to develop C/C++ code compared to Sublime Text. ST has simple build system (just path to compiler) and it runs out of the box. With VSCode, there are extensions and .json files for configuration and it is all extremely complex and overwhelming.

<comment><USER14> One place to start is that the official docs do have some per-language guides. The C++ guide:

[https://code.visualstudio.com/docs/languages/cpp](https://code.visualstudio.com/docs/languages/cpp)

</comment></comment><comment><USER15> Vscode is great, but it's a pitty they are running it on electron. 1.3GB of RAM usage for a 8GB machine is not efficient at all.

I switched to sublime3 because of this, sublime is great, really fast, only uses 300mb of RAM, unfortunately the packages and plugins aren't as streamlined as vscode. Hoping they improve this.

<comment><USER16> I think this is only a problem when working unplugged. I have visual studio code sitting idle all the time and it really doesn't seem to slow down my system. It generally only uses about 500MB of RAM with two windows open with multiple tabs on each. I have 16GB of RAM but thats not much compared to today's standards.

Sublime text using 300mb of RAM is a little odd. Generally in my case, its uses around 20-25MB with 50+ tabs opened.

<comment><USER15> Yeah, you are right. Sublime uses about 30MB for me after testing

</comment></comment></comment><comment><USER17> It's still from a UI/UX perspective needlessly complicated. I wish they would make things a bit more obvious.

<comment><USER18> I find that the ability to search through all available actions with Ctrl+shift+P makes things very discoverable.

</comment></comment><comment><USER19> Hey folks, don't forget that these guys still do this:

[https://github.com/dotnet/cli/issues/3093](https://github.com/dotnet/cli/issues/3093)

[https://github.com/dotnet/cli/issues/10497](https://github.com/dotnet/cli/issues/10497)

<comment><USER20> ???

The article is for microsoft/vscode.

Your links are for dotnet/cli.

<comment><USER19> It's Microsoft telemetry in an open source project that doesn't respect the setting set by the user. The lack of a reply as to why should probably set off some alarms for the average tech user when it comes to any project with Microsoft telemetry in it.

</comment></comment></comment><comment><USER21> At this point I am 100% sure, VS code will become a IDE like Visual Studio.

<comment><USER2> I think the key is that it has the potential to be a great platform.

The text-editing "fundamentals" are covered by the Monaco engine. The rest is covered by extensions.

Out of the box, it's not much more than a glorified Notepad. Add some extensions and suddenly I'm stepping through my Rust breakpoints and inspecting values.

<comment><USER22> The language server protocol (LSP) is a massive leap forward. And unlike the Microsoft of Ballmer, LSP is an open standard that any editor designer can implement.

<comment><USER23> Is there any reason to use LSP, rather than simple JSON messages passed between the front-end and back-end? That's the approach that Xi uses.

[https://github.com/xi-editor/xi-editor](https://github.com/xi-editor/xi- editor)

<comment><USER24> > Is there any reason to use LSP, rather than simple JSON messages passed > between the front-end and back-end

Yes, there's a reason to use a documented open standard supported by multiple servers and clients that passes JSON back and forth rather than an ad hoc, client specific mechanism that also passes JSON back and forth.

In fact, the reason is exactly the problem LSP addresses, labeled as "The Matrix" at [https://langserver.org](https://langserver.org)

In short, a problem with N+M cost is better than N×M when both N and M are >2.

</comment></comment></comment></comment></comment><comment><USER25> _This allows you to create a VS Code terminal panel, which occupies the complete editor area as shown below:_

Emphasis on: _which occupies the complete editor area as shown below:_

So finally windows has a decent terminal emulator, will install vscode just for this next time I'm on windows.

<comment><USER26> It's using xterm.js which has limitations on windows, for example PowerShell/cmd.exe will report mouse movement and I have not been able to get xterm.js based terminal emulators (vs code, hyper) to do the same.</comment></comment>


California's next bold step on climate should be building near transit - <AUTHOR> http://cityobservatory.org/californias-next-bold-step-on-climate-should-be-building-near-transit/ <comment><USER3> A better rule than SB827 would be a rule for every office worker employed in the city, there must be an equivalent housing unit provided by that same city such that the jobs per resident ratio is maintained.

If Menlo Park wants to allow Facebook to build an office complex to support 2,000 more Facebook employees than it needs to create 2,000 more residential options for those employees. Otherwise Redwood City and East Palo Alto have to shoulder the burden of housing, education and other services for those new residents without the benefit of the tax basis.

Or if San Francisco wants to build 5 more Salesforce Towers, San Francisco should be required to present a plan to build 5 neighboring residential towers to support those office towers. Or pass on the opportunity and encourage Salesforce to take a look at Oakland/San Jose/Sacramento/Fresno.

Let's put it this way, if Wiener really had concerned about housing, then the really good solution would be to let Brisbane build the Salesforce/Uber office towers in Brisbane and then for Wiener find a transit rich location within San Francisco for the housing development to support those office towers. From an outsider perspective, it just seems like SF is perfectly happy to scoop up the office/commercial rent tax revenue and let Brisbane do the heavy lifting of housing those office workers [1].

[1] [https://sf.curbed.com/2018/1/16/16897174/brisbane-city- counc...](https://sf.curbed.com/2018/1/16/16897174/brisbane-city-council- silicon-valley-land)

<comment><USER4> Central planning is almost assured to fail miserably tiling the power more into the hands of rich people while screwing up small people. There is nothing wrong in some cities specialising in industrial buildings while other cities focus on residential projects. Cities should have all this freedom.

The best solution is to relax zoning laws so that the average rents go down till they reach a point where they meet the average.

The real problem with California is that the politicians have put ridiculous elitist objectives such as climate change over sensible and practical objectives such as roof over the head of working middle class people. Somehow some godforsaken fish needs conservation but the minorities in most cities are forced to live in petty ghettos with conditions worse than animals.

P.S. Note that the real victims of these policies have been minorities. I rarely see blacks of hispanics living in better areas of any bay area town. In fact you can guess a neighbourhood is hispanic by just looking at the school ratings. They live in ghettos and their schools tend to be the worst as a result they are perpetually trapped in poverty.

<comment><USER5> There is no trade off between climate change and housing. Those are entirely separate things.

SFO is way too hung up on its past and the citizens living within need to get over themselves and allow "evil" developers to tear down all the old crap and build up. They live in a city. Shit changes.

It is astonishing how many two or three level buildings exist even within the most dense part of the city. Even more amazing is how even 5 minutes away from market street exists two story houses with garages in front.

Seriously. It isn't historic. It's just old crap. Tear it down. Build up.

Only gonna work if government can tell all the existing residents to fuck off and allow more development.

<comment><USER6> Governments should work for the people, and specifically, for the people they govern. Telling "existing residents to fuck off" falls somewhat short of that.

<comment><USER4> That begs the question of which people ? Only the homeowners ?

</comment></comment></comment></comment></comment><comment><USER7> More housing would also massively improve the cost of living in California. Estimates put housing expanse at nearly 50% of monthly income in San Francisco. The usual is 30%.

High housing cost is also the cause of all the other high costs. It's a regressive expense, so all workers need much higher incomes to live here. It makes restaurants, grocery, and car mechanics more expensive.

CA taxes aren't even that high, the total tax by percent of state income is only 11%, rank 6 in the nation. "Low" tax states like Arizona and Nevada are 8.8% and 8.1% respectively.

 _Dropping our housing cost to the national average would save you twice as much as eliminating all California income and sales taxes._

[https://files.taxfoundation.org/legacy/docs/State- Local_Tax_...](https://files.taxfoundation.org/legacy/docs/State- Local_Tax_Burden_FY2012.pdf)

<comment><USER8> Nevada figure probably includes taxes paid by casinos. Income taxes are closer to 5%.

<comment><USER9> Nevada state income tax is 0%. One of the few without one along with Alaska, Florida, South Dakota, Texas, Washington and Wyoming.

</comment></comment></comment><comment><USER10> Building housing near transit isn't nearly as important as building offices near transit, if you want to make transit (more) viable.

I can easily drive to caltrain and walk to work from the station, if my office is walkable from the station, and my house is drivable from a station with sufficient parking. It's much harder to walk to caltrain and then drive from the station to the office.

<comment><USER11> But if everyone drives to the station, you need to build parking for them all.

Garage parking efficiencies run around 350 - 500 square feet per car. So if you are your spouse drive to the train separately, you're taking 700 - <USER2> square feet of space. It seems better to build 1000 square foot apartments on that space instead of wasting it on parking.

I say, get rid of segregated zoning and build more mixed use residential+retail+commercial developments and put everything closer to transit.

<comment><USER12> > But if everyone drives to the station, you need to build parking for them > all.

If no one takes the train you need to build parking for them all, this is significantly cheaper and easier outside the city center.

<comment><USER11> But one thing that's cheaper than building parking lots and garages for thousands of cars is to use zoning to encourage developers to build dense offices and housing close to transit so you don't need to build parking at all.

</comment></comment></comment></comment><comment><USER13> I remember hearing how in Japan the railway company builds a new line to somewhere then owns and develops the land itself, is that really true? Is a neat idea.

<comment><USER14> That's mostly true - JR develops the land _above and around the stations,_ but not huge tracts like you'd think of an American subdivision. The MTR in Hong Kong has a similar grant of rights, but invests mainly in shopping malls rather than residential or office developments.

<comment><USER15> Almost every single shopping mall in HK seems to have residential on top of it. It leads to massively good flow and all the good things that come of that - the customers come to you (assuming you don't completely suck).

</comment></comment></comment><comment><USER16> Why not just build a new lines of subway and other means of public transportation in those newly populated areas? Like every big city in Asia does?

</comment><comment><USER17> See [https://en.wikipedia.org/wiki/Transit- oriented_development](https://en.wikipedia.org/wiki/Transit- oriented_development)

</comment><comment><USER18> that was already struck down by california voters who value sparse, low populous neighborhoods more than the environment.

[https://sf.curbed.com/2018/4/18/17250876/california- senate-b...](https://sf.curbed.com/2018/4/18/17250876/california-senate- bill-827-housing-transit-vote-wiener)

<comment><USER19> It was struck down by reps, not voters directly. Make a note of yes and no votes and now you know who to vote for or against next election.

<comment><USER20> Not even. It was killed in _committee_ , as only two of _nine_ Democrats supported it. Half the Republicans on the committee voted Aye; only one voted against.

</comment></comment></comment><comment><USER21> I think doubling down on mass transit is a mistake with automated vehicles on the horizon. It doesn't make sense to incur massive debt when the customers are going to drive away.

We should instead think about a system of tolls that has demand-based prices and that takes into account vehicle size. Tiny one person vehicles are going to be way cheaper than mass transit and there'll be no waiting, missed connections or end of service. They'll be as cheap as mopeds to operate.

Point to point will work if we have a sensible pricing system. Instead of waiting in traffic, we'll wait at home until there is space for us. If we can buy a subscription and get paid to wait or go earlier, we can put an end to most traffic jams and keep people from driving into those that do occur.

You might normally leave the office at 6:30 and drive 10 miles to your house. But if there's an accident and the "spot" price of your trip goes up, you'd be able to sell your trip for that day. You could make money by waiting. Or maybe you just take a bus.

And by reducing the number of people that jam the roads at peak time, we can spread out the load and spend less money building for peak traffic. This is how many markets work, like the hotel market. They don't build a hotel room that sits idle 90% of the time so that nobody ever has to pay a high price for a room. They charge more at peak times and that makes some people change their plans to avoid the peak price.

<comment><USER22> I think that the approach you outline doesn't effectively consider the waste and emissions of everyone having their own car (even single person), nor the increased inequality of paying more for peak times (you can only commute at reasonable hours if you're rich enough to pay for it.)

<comment><USER21> If it costs more for someone to start work at a specific time, employees will demand more to work for you.

In fact, if you were to require employers to pay for that peak travel, it wouldn't really make a difference. Most employers understand that such costs affect wages and how much money they'll save due to having a road system that breaks twice a day.

And most employees will think they are getting something for free. It's win/win. Or neutral/fooled into thinking you won. And these same employees don't realize that their commute is currently costing them a lot more in opportunity costs than whatever the toll might be.

</comment></comment></comment><comment><USER23> I'm interested in the time frame some YIMBY supporters expect radical new housing laws to be passed in California? It's obvious locals don't want things to change, especially for tech workers.

<comment><USER24> Why would they. They're sitting on million dollar shanty houses because of tech workers. Start actually using the technology, empower remote work and they'll come begging to build more housing and get workers forced back into paying for their overpriced garbage homes.

</comment></comment><comment><USER25> Encourage remote work. Dont we all just work in front of computers?

<comment><USER26> No. I'm a programmer - I need more peers around constantly to bounce ideas of them, to learn from them, to mentor them etc etc. The source code is much bigger than I can fit in my head alone. I need to work as part of a team.

<comment><USER12> I do this remotely everyday. Email, IM, and voice chat can do this, many of the people I interact the most with are on other continents. Unfortunately I do this from my office to remote offices because we can't work from home, but that's a stupid corporate limitation, not a technological one.

<comment><USER27> Seriously, people act like verbal communication is the only way office workers can communicate.

</comment></comment></comment></comment><comment><USER28> This would be great. We also need to take away local housing regulations and give control back to the state because all that has led to is NIMBYism and blocking new construction.

</comment><comment><USER24> What a revolutionary idea? Common sense how dare ye!

</comment><comment><USER29> SB827 is dead, this article seems kind of pointless. At this point it's neither "next" nor "bold."

</comment><comment><USER4> Yaawn...

The last thing California needs to do is to battle climate change. When poor residents of your state are unable to find decent housing despite having reasonable income, when your farmers are paying highest energy prices in USA, when you state has major inequality problem the focus should be on increasing housing, simplifying zoning laws so the poor working middle class Californians could afford a roof on their head first.

This climate change rhetoric is being peddled by fat-cat rich people who have got rich on tech or hollywood and have absolutely not compassion for ordinary working class people.

<comment><USER22> You're constructing a false dichotomy; battling climate change isn't mutually exclusive with reducing housing inequality. In fact, this article specifically highlights how the two go hand-in-hand.</comment></comment>


What It's Like to Fly the $23,000 Singapore Airlines Suites Class - <AUTHOR> https://medium.com/travel-adventure/what-its-like-to-fly-the-23-000-singapore-airlines-suites-class-17d9f3fee0d

<comment><USER2> Also posted about 9 hours ago at [https://news.ycombinator.com/item?id=8387276](https://news.ycombinator.com/item?id=8387276) , linked to the author's own web domain rather than through the author's publications on Medium.

</comment><comment><USER3> So I just went to Singapore for the F1 with a friend for his 40th, in peasant business class! Need to figure out away to go this way next year! :)</comment>


The problem with blogging - <AUTHOR> http://swombat.com/2011/5/26/real-value-web <comment><USER2> So there are at least two separate use cases that get shoved into blogging.

The first (and probably most useful) treats the blog as something like a diary: commentary on current events at some scale, e.g. personal, professional, news, et cetera. In this case, older content really does have much less relevance because the events themselves now live in the past. Your friends /might/ care about what you drank last night, but they almost certainly don't care about 5 months 12 days ago. You might want to comment on Linus' latest mailing list screed, but it might not matter for kernel-dabbling four years down the road.

The second use case seems to be where Daniel Tenner really is chewing on something. If you're writing new stuff that doesn't necessarily live in the moment - musings on philosophy or cool data structures or life advice or Paul Graham's articles - then the blog model doesn't fit as well. Newer posts don't matter more than older posts, and in fact might matter less.

Thinking on this, we also have the issue of serendipity. The writer has probably created other stuff that you might like reading even if it's not directly about the exact same topic. Seems like the sort of thing attacked by collaborative filtering and other methods. Combine that with a CMS-style knowledge architecture (e.g. structure by something other than chronology if chronology doesn't make sense), and you're getting somewhere.

<comment><USER3> Very well analysed. And I definitely agree about serendipity. That's a huge concern for me, and one reason why I haven't categorised the Founder's Library section yet. Splitting it into categories like the excellent <http://www.gabrielweinberg.com/startupswiki/Ask_YC_Archive> makes a lot of sense, but it almost completely takes away the serendipitous aspect, which is essential for startup advice.

The article you really should read is often not the one you're looking for. A system that makes it too easy to find what you think you need might paradoxically make it harder to stumble onto what you actually needed.

I also think that almost every great blogger who starts with the first use case ends up posting numerous timeless gems that get lost in the diary format. DaringFireball is, again, the obvious example.

<comment><USER2> So maybe we as bloggers need to think more about curating our content. Organizing past posts into relevant series, maybe: if I've written several times about reverse engineering malware in a blog that ranges widely over the topic of incident response, then readers who like one post would probably like pointers to other posts. Having one or two "possibly related posts" doesn't seem to really cover the need here. So I'm not quite sure how to go about fixing the issue.

<comment><USER4> Series was one thing I added to my blog as a way to group posts into a ordered series and so to let people see related content. I think its become very useful.

</comment></comment></comment></comment><comment><USER5> This is something Patrick McKenzie has been saying here for almost a year now, and is part of the reason we stopped blogging despite having developed an audience.

Another thing that devalues blog content, where the same ideas and prose would be more valuable in another venue, is that they present pieces as inherently incomplete. Example: blog commenting, which encourage readers to see pieces not as fully developed ideas but simply as fodder for a conversation. That's great when a conversation is really what you wanted, but it's terrible when it results in your work being scored by the lowest common denominator of your comments.

Daring Fireball works because _that's his job_. It is the point of the site to be a carefully analyzed news bulletin.

But when you're (say) a software company with a product and, possibly as a result of that product, some interesting ideas about software, technology, products or what-have-you, a timely news bulletin is not your job, and if you're going to publish, you should do it in a way that optimizes the value of those ideas.

For our part, I'd like to reorganize and rewrite our blog posts into a book; start with a TOC, fill in the blanks with posts, let it be incomplete, and build it up over time. But I'd also like to get product shipped.

<comment><USER6> I'm curious when Patrick changed his mind or what the nuances of this strategy are.

<http://discuss.joelonsoftware.com/default.asp?biz.5.463855.7>

<comment><USER5> When I first met Patrick in person, 2 years ago, he was at pains to demonstrate the power of the "linkerati" --- the fact that when a term was used in one way by 99.99% of people, and in another way by Internet people, the Internet people way would dominate Google. I remember blogs being pointed out as a way to capitalize on that trend, because of the outsized search impact of being part of the blog network.

Since then, Patrick has discovered his bill rate, and I'm just speculating here but I'm guessing he's discovered that the value of being "of the linkerati", while palpable, is _way way way_ below his bill rate, or the value of his work product when he builds scalable link generation systems.

<comment><USER6> I get your second paragraph - it's more effective for him to use his time to programatically generate thousands of pages then to write one, but your first? If 99% of people use a certain terminology, and if you are selling, don't you want to speak their language since they constitute the market? Or are you saying you need to speak the blogger/technocratti so they'll link to you?

</comment></comment></comment></comment><comment><USER7> Stop treating your posts chronologically, then. Call them essays and make a categorical listing.

<comment><USER8> I remember being really confused over the chronological ordering for non- diaries when it first become common, and am still not that sure it's the right thing, though it does have benefits for technological convenience (blog software) and lower activation energy (just "write a blog post"). It used to be common to have websites, and then a website might have a "recent updates" or "new articles" page with a reverse-chronologically-ordered list of recent updates, often named new.html or updates.html or something. But it wasn't the main site; just something for frequent visitors to check.

But sometime around 2000-2003 or so, people just started throwing up _everything_ on the equivalent of the "new articles" page! Seemed sort of a strange way to organize anything that wasn't a livejournal. Also seems to indicate a bit of a reduction in long-term ambition: people used to see building a website as an incremental endeavor, where you were slowly building up an edifice, so there was a clear separation between the long-term goal for the site (a resource w/ information presented logically) and the order in which you happened to add each piece (the recent-updates page).

Wikis still have that edifice-building angle (the "Recent Changes" page is clearly not the main page), so maybe it's just that they've taken over that role so completely that the only non-wiki things left are blogs and webapps, with no more "regular" websites?

</comment></comment><comment><USER9> Interesting post - completely agree with it. It isn't just with individual blogs, it is with all blogs and content on the web. The number of RSS subscribers has drastically decreased in the past few years - and it has been replaced by Twitter, Facebook, HN, Techmeme et al.

Each of these sites emphasizes the _now_ \- to the extent that a 12 hour old story is old news. An entire story thread can surface and then disappear in a span of time that doesn't even last through the major global timezones (in Australia I often miss big stories because they are only up top for a matter of hours on US time)

So it isn't just the individual blogging model that needs to adapt, it is also the way aggregators and clients work. Everybody seems to be stuck focusing on what has happen in the past few hours.

A few years ago I wrote on Techcrunch about 'relevance over time'[1] and how the blogs, twitter etc. need to adapt. None of the solutions have seemed to work, and all that means is that if you are a blogger and do not have a regular audience that checks your blog regularly, you are only going to get a decent number of readers for the odd post that surfaces its way up onto one of the large aggregators

I think that the new distributed social network will become the new blogging model - where you can pub and sub and not rely on aggregators that are tailored for a mass audience to find content. I am disappointed that all the new 'facebook alternative' projects are just about replacing or complementing facebook, rather than re-thinking the entire space of personal publishing. I miss the old blogosphere and would like to see it reborn in some way.

Edit: and as an example, I to manually tweet this comment. It doesn't appear on my blog, you can't reply to it from your own blog, and within 6 hours it will be long forgotten and we will have the same conversation again in 3 months time.

[1] <http://techcrunch.com/2009/10/12/relevance-over-time/>

and followup:

[2] <http://nikcub.appspot.com/relevance-time-for-twitter>

</comment><comment><USER10> One can tell the difference between spam and non-spam on twitter. It's grossly obvious. We've probably all followed someone and found out a couple days later that they are just a robot spamming machine and un-followed.

I checked out @swombat, and it's clear he's real, and not a bot, so having a bot sneak in a post back to past blog posts of value would hardly, if at all, be considered spam.

Some people get confused, particularly our friends who are just looking out for us, but a little blatant self-promotion is not always spam, and it's often times understood that it's a necessary evil so we can stay in business and keep doing the good we do.

<comment><USER3> I sure hope so! Time will tell. I think one thing I was lucky to foresee right is that I knew I would eventually want Twitter integration, so I saved each of the original tweets along with the article. So when an article gets reposted on Twitter, it's the original tweet that it went out with when it went up - which should help make it feel even less spammy.

</comment></comment><comment><USER11> I think the lack of timeless* articles in content streams -- HN, Reddit, Twitter, etc. -- is a serious problem. I'm imagining a middle-ground between a subreddit and a longform.org for the topics I'm interested in, and think that would be a significant improvement.

The "essays" format or similar can do a decent job of funneling me towards timeless content once I am on a site looking for it (see Peter Norvig's webpage for another example), but it really doesn't address the stream issue.

Good luck with your tweeting experiment.

*I'm really thinking of something weaker than timelessness: worthwhile over a matter of years, at least.

</comment><comment><USER12> Very true; I realized this myself a couple of months ago, and reorganized my blog as follows:

\- main page shows categories _and_ a chronological list of posts (I don't post that often; if you do, maybe list the last 30-50 only ?) in the right sidebar

\- each category gets an index-page with introduction and 3 articles highlighted, and a a list of all articles in the category in the left sidebar. The highlighted articles (new and old) should change every now and then, maybe somewhat depending on "the latest fads" ?

\- most important (IMHO); go back to your old articles and update them, especially hyperlinks - this will also aid the discovery of "evergreen content"

In addition, you should probably also use tags (I don't, but that's just because I'm lazy and don't have that many articles).

You may also collect related articles in e-books (I've done it with one of the categories, but it is a lot of work) - less SEO value, but maybe more "reader value" ?

(personally, for blogs like swombats and pg, I often follow the timelines and read through the old stuff, bookmarking or saving the "golden nuggets" once and for all)

</comment><comment><USER13> The author makes a great point. I for one constantly find new blogs that I love, but only take the time to go back a few pages. I think a great model to encourage deeper reading is setting up the home page as an index (see: spencerfry.com + paulgraham.com).

<comment> mkr-hn Setting up a landing page on my blog (<http://mkronline.wordpress.com/>) was the best thing I ever did. It gives people an introduction to the place rather than tossing them into a list of posts.

</comment></comment><comment><USER14> In some sense, this is an issue I have been wrestling with for two websites I own. They have been referred to as "blogs" for years when that was never the intent or the technical format of either. I have added Wordpress blogs to both sites and have wrestled with various questions like trying to give an overview (not compatible with chronological/blogging format) and how to marry these unrelated parts of the site. I finally recently came up with the next step forward for how to organize one of the sites but there is still much work to do. Glad to be reading this (both the link and the remarks here).

</comment><comment><USER15> This is what links are for. An evergreen article can be promoted by a tweet or a more recent post that puts it into context and explains why it's relevant today. History needs historians to direct people to it.

</comment><comment><USER16> I think the reason that blogging gets a bit misused as a kind of catchall for content is that it has the lowest barrier of entry to publish. Thus, what used to be a traditional site or magazine or whatever is now just another "blog" running wordpress or tumblr or posterous. Point being, the line gets blurry when you are using a blogging system to deliver both long and short form content on the same site.

</comment><comment><USER17> Lack of complaints are never an indicator of success. For this particular case, I'd look at the total number of followers. It's easier making the bothersome disappear (unfollowing) than to formulate a complaint to the author.

If you want to retweet your old articles, do it in a curated (i.e. human driven) way.

<comment><USER3> My Twitter follower trends didn't change when I started tweeting every article (I did keep an eye on it). Also, the overall trend seems pretty good: <http://twittercounter.com/compare/swombat/3month/followers> \- I will of course continue to keep an eye on it.

</comment></comment><comment><USER18> It seems like a hard but worthwhile undertaking. I just discovered this site through HN and now I'm following you on twitter so I don't think you're going to have a problem

</comment><comment><USER19> This is one of the best reasons to add a "Related Posts" section at the bottom of every blog post.

(WordPress has multiple plugins that can generate this automatically for you.)

</comment><comment><USER20> This is why bloggers add table of contents or getting started pages.

<comment><USER3> That doesn't even begin to solve the problem. It helps new user onboarding, not old content discovery. "Getting started" can fit, what, at a stretch, a dozen posts. A reasonably old, quality blog will have many dozen posts which are worth bringing forward. And a blog with links, like swombat.com or daringfireball.net, will have many more.

<comment><USER21> But nobody uses frontpages for content discovery. The front page of a blog is good for just two questions:

a) For new users: is this site any good?

b) For existing users (who don't grok RSS, sigh): is there anything new?

You can try to do more. Lots of us have category pages[1]. But invariably they get browsed by initial visitors so they fall into category a above.

Perhaps what you're saying is that every website needs a channel to bring visitors back. And twitter may well be that channel. But bricestacey is right that the frontpage is all about user onboarding simply because nobody uses it for content discovery.

[1] Including myself: <http://akkartik.name>

<comment><USER3> Nobody uses front pages for content discovery because the front pages rarely present the right interface or content for that. Maybe that can change...

I think that merely serving current/new users in this way is selling your content short. It's the written equivalent of a news channel, instead of being the evolution of the book. I'm hoping we can do better.

<comment><USER21> _"I think that merely serving current/new users in this way is selling your content short."_

I'm not convinced that's true. The big limitation of the frontpage is that there's no way to remind people to return to it. Without that you'll only get current/new users.

I totally agree we need a solution for content discovery. Like many others I took my stab at building one (<http://readwarp.com>) I'm just not convinced that the frontpage is the place for it.

</comment></comment></comment></comment></comment><comment><USER22> Sounds like he needs a wiki and a blog.

<comment><USER3> A wiki doesn't seem right either. When's the last time you've ever sat and browsed through a wiki looking for awesome stuff you didn't know about?

Wikis, imho, are a bit like search engines. They're great for collecting stuff that you want to find again, and they're great for finding stuff you're looking for. Blogs have something more - they point you to stuff which you never knew you could care about, they expand your interests. Wikis are a very clumsy substitute.

I think what's needed is perhaps an evolution of the blog format.

<comment><USER22> Actually I browse through wikis quite a bit, but maybe I'm not typical. In any event, IMO, a blog (web log) is for just that: logging time-sensitive things, like a journal or news feed. A wiki is for more permanent information, that may be updated as needed, but stays put.

</comment></comment></comment><comment><USER23> The best way to go would be to use a wiki

</comment><comment><USER24> #1 problem with blogging: not including comments on your blog for community feedback.</comment>


Evernote Drops .NET for Native C++ - <AUTHOR> http://blog.evernote.com/2010/10/26/evernote-4-for-windows-is-here/#more-8766 <comment><USER2> Does anyone know what UI lib they used for replacing WPF ? Qt ?</comment>


Paper Programming - <AUTHOR> http://www.sacrideo.us/paper-is-dead-long-live-paper-programming/ <comment><AUTHOR> Also from the author:

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

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

[https://m.youtube.com/watch?v=gcUWTa16Jc0](https://m.youtube.com/watch?v=gcUWTa16Jc0)</comment>


Imageric.com – Thousands of absolutely free photos, vectors and videos - <AUTHOR> https://imageric.com <comment><USER2> EVERY image and vector I found while searching on this site was FOR SALE via ShutterStock (i.e., NOTHING was free)

</comment><comment><USER3> No privacy policy, no explainer of biz model, About page points to FB (I'm not on it), monitored with Avospy.com ..

No thanks, I'll stick with wikimedia :)

<comment><USER4> It's just a huge Shutterstock advertisement.

Search for anything: say, _guinea pig_.

The 'Best Free Stock Photos of Guinea pig' list is just the same set of photos seen on the front page. Not a single cavy in sight!

That is either a huge bug (ouch!) or just plain old bullshit.

They do conveniently show you 'Best Royalty-Free Stock Photos of Guinea pig' which all redirect to Shutterstock.

Screenshot: [https://screenshots.firefox.com/Tt5QMX05ViRMba1Q/imageric.co...](https://screenshots.firefox.com/Tt5QMX05ViRMba1Q/imageric.com)

</comment></comment><comment><USER5> Unsplash [1] is a nice alternative that I've checked out a few times. Use for any purpose is free. No attribution required (though it's recommended). It has proper documentation on the license, privacy policy, etc. There are even apps available to browse, download images from the site and use. Anybody can contribute images to it.

P.S.: I'm not associated in any way, except as an end user, with Unsplash or any other photo/image service.

[1]: [https://unsplash.com](https://unsplash.com)</comment>


Beware of Greeks Bearing Bonds (Michael Lewis) - <AUTHOR> http://www.vanityfair.com/business/features/2010/10/greeks-bearing-bonds-201010?printable=true

<comment><USER2> I found this to be a very interesting article, but doesn't this describe life in 3rd world countries everywhere? Why is it so shocking simply because it happened in Europe?

"It behaves as a collection of atomized particles, each of which has grown accustomed to pursuing its own interest at the expense of the common good"

This is, unfortunately, a rational survival strategy in a 3rd world country.</comment>


Quotably- new website makes following twitter conversations easy - <AUTHOR> http://quotably.com

<comment><AUTHOR> This was a weekend project. Let me know what you all think if you have any questions.

-Ben

<comment><USER2> I really like the size decrease as the conversation goes deeper. Great UI touch.

Is there no way to index old content?

<comment><AUTHOR> It actually is possible to index old content, so I may do that. Thanks!

</comment></comment></comment><comment><USER3> I just threw it up on twitter... it got a big thumbs up and shoutout from Scoble.

edit: and Leo Laporte, and Cali Lewis... I hope you can handle the coming traffic.

</comment><comment><USER4> I think it is a good idea. Contact <http://twitter.com/help/contact> and let them know. They usually post twitter tools on their blog, they might post your tool.

</comment><comment><AUTHOR> example feeds:

<http://quotably.com/TechCrunch> <http://quotably.com/davewiner> <http://quotably.com/Ross>

note, there are also RSS feeds for anyone's conversations, just add a .rss to the end of the URL. ie: <http://quotably.com/Ross.rss>

</comment><comment><USER5> Less useful but related idea: twitterfight. When two people send a bunch of direct messages to one another, that suggests a potential fight. So one day I hacked together a yahoo! pipe to highlight twitter battles. The trouble was that polite conversations kept getting through my filters. Short of manually cleansing the data, I concluded there was no utility. Smart work, Ben, on fixing the larger problem of twitter threading.

</comment><comment><USER6> Very cool. One thing I noticed is that it has "all" messages posted, including ones the user may have deleted off of their Twitter feed... Seems that once it is sent out into the Twittosphere, you can't actually retract the message, even by "deleting" it. So, this makes for an interesting way to see everything ;)

</comment><comment><USER7> I'd like a page that lists all the updates from those that I'm following (like a standard Twitter client) but with a link to expand the conversation around each update

</comment><comment><USER8> Very well done!

It seems a little iffy on associations of tweets as replies... but I guess that's the nature of twitter.

<comment><AUTHOR> yeah, unfortunately it is. At present it uses the same threading algorithm as twitter does, namely: if there's an @username in a tweet, assume it's responding to the last tweet of that user. I may look to do something smarter down the road.. we'll see.

<comment><USER9> here's an idea. Make a message to @B from A be a reply to the last message from B to @A if any.

<comment><USER10> the issue is time decay. The last point in that conversation shouldn't be the parent of a new conversation N hours later.

<comment><USER9> Time decay might be a factor, but I think you'll get better results than making everything be a reply to the last update from that user. Once you find out what the magical N number is you can throw that in as well.

</comment></comment></comment></comment></comment><comment><USER11> Cool. Simple. Clean. Thumbs up.

</comment><comment><USER12> Really cool site!</comment>


Some Thoughts on Education and Political Priorities - <AUTHOR> http://www.theguardian.com/politics/interactive/2013/oct/11/dominic-cummings-michael-gove-thoughts-education-pdf

<comment><AUTHOR> You can download the PDF versions here: [http://s3.documentcloud.org/documents/804396/some- thoughts-o...](http://s3.documentcloud.org/documents/804396/some-thoughts-on- education-and-political.pdf)

Unfortunately, the file is embedded on the Guardian website and can only viewed online.</comment>


How the Human Brain Decides What Is Important and What's Not - <AUTHOR> http://neurosciencenews.com/importance-neuroscience-decisions-5967/ <comment><USER2> > ...we learn about what we attend to, and we attend to what we learned high > values for.

I see this a lot when I'm trying to help people who "should" know what they're doing. I focus on trying to identify what they're not noticing, and then bringing it to their attention. It makes for great light-touch teaching and lets me, in retrospec, provide better introductions/instructions/documentation/whatever by adding in whatever stimuli they overlooked.

OT: the article has a terrible introduction. almost entirely unrelated to the article, and non-sequitorial. It's like they did a keyword search for quotes with "attention":

The Wizard of Oz told Dorothy to "pay no attention to that man behind the curtain" in an effort to distract her, but a new Princeton University study sheds light on how people learn and make decisions in real-world situations.

<comment><USER3> This is a really good observation. I've noticed that people who are successful tend to have an uncanny ability to 'see' the right things. And making good decisions is often a function of a person's ability to be aware of what is happening around them.

It's tricky though because I don't know many techniques for expanding one's field of vision - is it possible to learn to "see the things you cannot see".

<comment><USER4> I think the "trick" (not really a trick) is to learn to "see things for what they are". As simple as that sounds, I'm always surprised at how difficult it seems to be for some people. And how I can easily get caught in that trap if I am not being disciplined enough with my own thoughts / learning.

Especially obvious when that lack of discipline helps shape the foundation of one's thoughts on a topic.

<comment><USER5> Most art courses start with some kind of training in "seeing". What are the real proportions of something? Can we percieve a face as a collection of light and dark areas rather than letting our feature-decoding brain make its own impressions? If you look at the colour of something in isolation, how does it compare to its perception in a scene? And so on.

</comment></comment></comment></comment><comment><USER6> I just read through the research paper[1] and activity in frontoparietal network looks eerily similar to the reticular activating system[2] that heightens alertness and directs attention.

[1]: [http://www.cell.com/neuron/fulltext/S0896-6273(16)31039-X](http://www.cell.com/neuron/fulltext/S0896-6273\(16\)31039-X)

[2]: [https://en.wikipedia.org/wiki/Reticular_activating_system](https://en.wikipedia.org/wiki/Reticular_activating_system)

</comment><comment><USER7> _For example, when you order something new in a restaurant – perhaps anchovy pizza — you should learn whether you like or dislike anchovy pizza, rather than attribute the pleasurable experience to the particular table you're sitting at. Or when crossing a street, you should pay attention to the speed and direction of oncoming traffic, while the colors of cars can be safely ignored._

So in these two examples it's pretty obvious to most people what we should be paying attention to. But worth remembering, perhaps, that the same problem of 'what is relevant here' also occurs a lot in situations where it is not so clear what is the relevant factor. e.g. You have problems with asthma, you change your diet, the asthma gets better, was the change in diet actually the relevant factor?

And even in those two 'obvious' examples it's possible to get this wrong. e.g. You decide you don't like anchovies, but actually this is just because you went to a bad restaurant, the anchovies were much too salty, and another time you try better quality / better prepared / better dosed anchovies, and like them.

I guess my point is that the deciding what is relevant part of this is not trivial, and strategies and mechanisms for achieving this effectively are important.

</comment><comment><USER8> TL:DR... It's recursive - we pay attention to the things that affect us, and that attention reinforces what we should focus on the next time.

Nice that someone was able to show this. Might be obvious, but proving obvious things experimentally with the brain often is difficult.

On the downside, that means I'm just a wet neural net. Oh well.

</comment><comment><USER9> This seems recursive or insipid. How do we compute what it is we focus or attend to? Isn't that the real answer?

</comment><comment><USER10> Attention is relevant to artificial intelligence also. See [http://agi- conf.org/hlai2016/](http://agi-conf.org/hlai2016/) conferences and research (some on youtube -- search for 'AGI-16').

<comment><USER11> It's also a large component in many mental disorders (schizophrenia, tourettes, ocd). Attention really comes down the brain filtering out a mess of stimulation. When that filtering malfunctions we see mind do very funny things, e.g. repeated thoughts and delusions.

<comment><USER12> And dyslexia

</comment></comment></comment><comment><USER13> Without having access to the paper, it would be really nice to see what model of attention they're using, and how it relates to the expected-reward calculations they're positing take place for reinforcement learning. I'd also like to see the authors explain whether the model-free or model-based RL controller in the brain is the one operating to update endogenous attention based on expected value.

</comment><comment><USER14> Let me think about this, while driving my car to work, listening to the radio, drinking some coffee, and with my beloved wife next to me.

</comment><comment><USER15> "Error establishing a database connection" haha, site is not working for some reason!

</comment><comment><USER16> I think your brain is optimized around preventing yourself from losing things (such as money, items, relationships, etc.). For example, if the hot water is left on in your house, most adults would rush over and shut it off.

<comment><USER17> If it was really like that, people would not gamble or partake in activities that endanger their health such as smoke.

<comment><USER16> You can win money from gambling. Also smoking makes people feel good and that counter-balances the negative health effect for some.

<comment><USER18> Neither of those sounds like an optimization to prevent loss, so what is your point? That even if you are wrong, you can easily make up alternative theories?</comment></comment></comment></comment>


How long will there be computer science departments? - <AUTHOR> http://www.johndcook.com/blog/2012/09/20/how-long-will-there-be-computer-science-departments/ <comment><USER2> How long will there be English departments? Every professional needs to be able to communicate ideas in writing. One would assume that in time English would be absorbed into other departments that applied it.

<comment><USER3> I'm equally confused by his point about non-statistics departments doing more statistics than their "proper" counterparts. While that may be true, the bulk of cutting edge research in a given field always comes from specialists. I've never heard of substantial statistical advances arising in psychology departments (even though they're arguably one of the biggest "consumers" of statistics out there).

It's a bit like trickle-down economics.

<comment><USER4> I think you have to look 'up' the stream. Physics has given statistics some of the biggest ideas in the recent past. I think biology is relatively mathless unless it's *omics crap, and then again you have non-statisticians contributing to stats. Also plenty of CS stuff for stats.

<comment><USER5> There are definitely other mathy areas: crystallography, biophysics, computational neuroscience, theoretical ecology, and applications of simulation methods like CFD and FEA to physiology, . . .

But yes, most biological research doesn't require much mathematics.

</comment></comment></comment></comment><comment><USER6> From the comments on the linked article's site:

 _> I currently work in a bioinformatics group, and have been in computer applications for science for 20 years. I do not think Bioinformatics will be going back to biology, I see it as going back to computer science and biology. As the tools get better, there will be less and less need for people that understand both – there will still biology computer applications, but it will be commercialized and individual labs will not have their own developers. You can already see the trend starting. Statisticians do not write their own stats programs, they buy SAS or download R, in 10 years biologists will be doing the same._

I tend to agree with this.

More than computer science departments going away, I see other departments following the lead of Schools of Business Administration. Essentially every SBA now offers a degree that is essentially a 'Management Information Systems' degree, which instructs on how to take the specialized applications that exist out there and leverage them in your firm to accomplish any number of organizational goals.

I could see a trend where more and more departments develop their analog to this, suited to their specific discipline.

</comment><comment><USER7> I think that, though computer science has permeated a number of different fields, its core study remains more relevant than ever. There are important theoretical problems in CS and so much more potential to be unlocked in other fields s.t. the core study remains necessary to understand how it can be better applied.

Also, there are areas in computer science that wouldn't be 100% applicable to, say, bioinformatics (e.g. cryptography) but may be very applicable in a much more generalized sense. I don't think we've delved into computer science for long enough that its study can be relegated and subjugated within other fields. That it is taught alongside courses in other fields speaks more to its practicality than its diminishing relevance as a standalone field.

<comment><USER8> I think there is a danger in Computer Science departments trying to become more theory oriented in order to survive. If applications are moving to their own departments in Business and Bioinformatics, CS may decide to become more theoretical. If this happens, though, growth in terms of research money will become even harder to find.

<comment><USER9> I've heard that discussed at some CS conferences as the "mathematics trajectory", which a lot of computer scientists think is best avoided. Essentially, becoming a pure discipline with little funding (because the applications work has gone elsewhere), and with a position in the university that's largely internally funded by your professors teaching intro-level "service" courses for other departments, the way math departments get a lot of their teaching credits by teaching Calc 101 and similar.

</comment></comment></comment><comment><USER10> I don't see the problem here as long as we really are talking about computer science. The University of Cambridge has two departments within the mathematics faculty already, one studying pure maths and statistics, the other applied maths and theoretical physics. Separating computer science research and teaching into a third element doesn't seem inconsistent with that approach to me (though that's not how the Computer Laboratory in Cambridge actually became what it is today).

Now, if we're talking about teaching people to program simple software tools, as a useful practical skill like modelling something using calculus or writing a clear report, that's a different question. There is room in the world both for specialists who are experts in a field and study the hard problems and for practitioners who aren't experts but know enough to get useful things done. A full computer science course in a dedicated department is not a good fit for the latter group, who really need solid basic programming skills and perhaps a little software engineering knowledge.

</comment><comment><USER11> With respect, I think the author confuses the roles of specialization and generalization. There are general skills within the domain of Computer Science that can be applied to other fields. Just like there are general skills from Statistics that apply across other fields, or general skills from English, or general skills from various disciplines of Mathematics. One can apply these skills across disciplines without needing to specialize, per se, in the discipline from which the skill derives.

Alternatively, one can decide that the skill's parent discipline is worth specializing in. If I'm a Biology major, and I discover that I am getting a kick out of the Statistics skills I employ in my major, even more so than I enjoy my major, I can decide to major in Statistics instead. This does not obviate the need for the two fields as separate fields of study. Nor does it present any real indication that one field is going to be collapsed into the other. The sets of Biology and Statistics have many intersections, but they are not the same set.

And that's the key: the fields are intersecting, and occasionally even overlapping, but they're not entirely so.

At the risk of sounding even nerdier, maybe this concept comes more naturally to those of us who've played an RPG or two in our day. Think Skyrim, if you've played it. You can build a melee fighter who draws a few skills from the magic skill tree. Or you can be a pure mage. Or a pure fighter. Or what have you. At the same time, there are only so many skill points you're allotted -- so you can't pick all of each tree. It works the same way in life, really. It's probably better to be a master of one trade with a few skills from the others, than to be a jack of all trades and master of none.

This has been my daily admission of dorkitude. Thanks for listening.

<comment><USER12> While i agree with your point, i think the article(as a whole) doesn't really contradict with your argument. It does presume(nay project) that at some point in the timeline of mankind CS departments will perish. but my imagination tells me that would not be because people don't study it, but rather because there is not enough funding(as dictated by the economy) to support a separate dept. for computer science. Note that doesn't say anything about the scope of work, or scope for the subject to revolutionize the world/science as we(mankind/humanity/perhaps even transhumans :-P ) know at that instant in the timeline. So unless you think it follows from your argument that CS, will never reach a position to be considered by a majority of population to be undeserving a separate department, i don't see a conflict at all. That's all i have to show off my nerdiness..:-P

<comment><USER11> I think that's fair, and well said. But I guess I just don't think that day will come. There will always be people who want to specialize in CS -- in the actual _science_ of computers, and not just coding -- and these people will be different from the people who want to code, but don't want to get too deep into the weeds in the theory. Perhaps we'll see a day where CS and programming are separated out, and CS becomes a purely theoretical discipline, while programming is more like "Applied" CS. It's my understanding that this is already happening at some schools. But I don't think CS is in danger of disappearing as a distinct discipline.

I could be wrong, obviously, and I am not steeped heavily enough in the politics and ways of the world of academia to know for sure how these things go. But the fundamental discipline seems pretty distinct from others, even others like it.

In undergrad, for instance, I had the great fortune to take a CS class from Dr. David Gelernter. We didn't touch a single line of code in that entire semester, but I learned more about the fundamentals of computers than I have in any other class. Conversely, I had friends in the class who were bored to tears, or frustrated to kingdom come, by the subject matter -- who found the whole class impractical and not immediately useful. The phrase "intellectual masturbation" was tossed around pretty frequently. But honestly, different strokes for different folks. And that fact will keep CS alive and distinct.

<comment><USER13> Is there a "science" of computers? Not sure its science, maybe it is Maths? Or a part of Physics?

</comment></comment></comment></comment><comment><USER14> I might imagine one day C.S. departments might merge back into the Maths department, where (IMHO) C.S. most properly belongs.

<comment><USER15> I could see theoretical CS merging back into math, and software engineering being part of engineering. The latter is more likely than the former.

<comment><USER16> I don't see anything merging back. The trend towards more and more specialization and compartmentalization has been going on forever and there's no reason to believe it will be inverted any time soon.

</comment></comment></comment><comment><USER17> Why are math departments still around? My engineering professors insisted on teaching probability and linear algebra.

</comment><comment><USER18> Gosh what a silly argument, claim that 'computer science' as a discipline will fade away based on the evidence that computer classes are taught in different disciplines.

That claim is simple to rebut with the example of mathematics, which are taught in various forms for nearly every department and yet there are still mathematics departments.

It would have been insightful to observe that basic computer science knowledge is becoming an essential part of any curriculum. That elevates it to the level of 'broadly applicable skill' like math, and composition. I believe its important as early as secondary school but those courses are still foundering for direction (I've seen 'intro to powerpoint' as a computer class which is more like 'typing' was than basic computer skills)

</comment><comment><USER19> As long as there are computer science students.

</comment><comment><USER20> Answer: for a long time to come. As long as there are students looking for credentials and certification in the form of degrees, there will be programs that cater to them.

You should see some of the outlandish courses and degrees offered by some schools.

</comment><comment><USER21> As a bioinformatician, I've been asked all of the following questions by (postdoc and above) biologists:

\- What is a binomial distribution?

\- What is the difference between a probability and a p-value?

\- If I have p-values for a case and control group, can I just subtract the log10 p-value for my control from my case group?

From fellow "bioinformaticians", research scientist level and above, I've been asked:

\- How can I load this MySQL dump you sent me into my database? phpMyAdmin doesn't read MySQL dumps.

\- What is a likelihood ratio (from a PI!!)

So, needless to say, I feel that I have some good job security.

</comment><comment><USER22> Does this writer assume CS is simply a tool used in other industries? There should be CS departments as long as we want to advance the power and reach of computing.

</comment><comment><USER23> How long will there be physics departments? Physics is just theoretical engineering and chemistry. Most actual users of physics are engineers or chemists; why would anyone need a separate physics department?

</comment><comment><USER24> So when will job interviews stop asking about red-black trees?

</comment><comment><USER25> > How long will there be computer science departments?

Um...isn't that a form of the Halting Problem? ;D</comment>


Ask HN: Beginner Programmer: Haskell Book or SICP? - <AUTHOR> The extent of my programming involves MIT's Scratch, AppInventor, calculator games for TI83, some limited Javascript & Python from Codecademy, some HTML/CSS, and some CLI experience.
I'd like to learn programming & computer science, so I'm taking an intro programming class (CS 161), which uses Python. However, I want to do some learning before the class starts, and I bought the Haskell Book [1] about 2 years ago. I've completed the first 5 chapters. People highly recommend SICP [2], so I'm wondering if I should do them concurrently, or just pick one. I'd like to continue with Haskell, but if I'd be better off with SICP, especially for the Python class, then I don't mind putting Haskell on hold.
From reading HN over the years, I've gathered that many people believe functional languages better suited to learning CS. So I'm apprehensive about diving into Python and not grounding myself or exposing myself to functional disciplines.
Thank you for any advice
[1] Haskell Book - http://haskellbook.com/
[2] SICP - https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html <comment><USER3> For functional versus imperative programming, don't worry about it. Learn structured, imperative programming in Python. It's a core skill and one of the deep mathematical structures of the field. Learn Haskell or Scheme as you have time and interest. (I say that as someone who was at one point somewhat known for my Haskell work.)

More important than worrying about learning resources is to 1) produce working code and 2) read other code to learn how to improve. It's more like learning to play music. If you don't have the basics of your instrument and ear under control, deep theory and sophisticated analysis do you little good.

So try to produce programs that solve day to day problems for you, even if they're awkward. Read the code for the libraries you use or the Unix command line utilities.

<comment><USER4> I agree: If you are taking a class in python, then its really better to first ground yourself in python. Python is also a great first language to learn. But some people find good books really useful. Here are two:

[https://greenteapress.com/wp/think- python-2e/](https://greenteapress.com/wp/think-python-2e/)

[https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)

> So I'm apprehensive about diving into Python and not grounding myself or > exposing myself to functional disciplines.

I wouldn't be. You can learn FP at the start of 2020.

</comment></comment><comment><USER5> Too bad you're only choosing one.

Haskellbook is my favorite for Haskell. I've read 3 different Haskell books, it's the clearest and has the fewest "and now a miracle occurs" sections.

SICP drops you into more involved engineering domain tooics fairly quickly. It really helps to be able to keep pace with them. I tried working through SICP in Clojure and it wasn't awful.

For my money, I'd work on Haskell first. It's great training for understanding types as well as FP, and the concepts mostly translate to other languages like F# and OCaml. It'll help you reason better in a variety of other languages.

</comment><comment><USER6> You may want to hold off on both. SICP uses Scheme, a dialect of Lisp. Neither it nor Haskell closely resembles Python, and the differences may confuse rather than illuminate.

That said, once you're done with your class, by all means give them a look.

</comment><comment><USER7> I would recommend understanding computer architecture first. The basics of CPUs, memory, I/O and instruction sets. Once you understand the "host" environment which is very real, being cast into silicon, you are in a better position to understand how languages provide you with abstractions for using those resources.

Personally I would recommend SICP since it will introduce you to concepts which are also in the Haskell book. But SICP with Scheme covers a far wider range of abstractions.

Python is a good first language because you can program in pure functional or pure object-oriented forms and by combining the two recognise where one or the other is the most effective abstraction to employ.

In practice I like to define objects which I then use in a functional manner. If you read the specifications for Scheme, you will discover that the functional operations on objects is the most fundamental paradigm that is being used. cf pages 3 & 5 "The Scheme of Programming Language - <USER2> edition".

</comment><comment><USER8> I'm echoing others when I say both! But I know we all have limited time.

For my part I'd just say either would be a great choice. One thing to keep in mind is that if this is your first experience with programming is that you will likely be learning something OOP-ish in class, whereas the books are focused on functional programming.

If you do dive into one or both of these books remember that there's more than one way to approach the underlying objectives that FP solves. After learning an FP approach some iterative/OOP approaches can feel alien, but they're still valid and widely used and that's likely what you'll be learning. I learned OOP first but prefer FP, YMMV, but learning both is always good.

</comment><comment> a-saleh I wouldn't stress about that as much. I.e. I learned programming in Visual Basic for Applications (i.e. did you know Excel 97 had a full-fledged VB6 ide hidden behind a short-cut? ALT-F11 if I remember correctly) and while I could argue that functional language would have been a better entry-point (I remember having problem understanding the meaning of 'x=x+1'), in the end it was fine.

To your point about functional being better for CS, I am not sure, i.e. when I had class on basics of algorithm design, we went through "Introduction to Algorithms" book and the pseudo-code looked much more like Python or Pascal than scheme/haskell/ml. So if you stick to python, you will be fine.

In the end, you already dabble more than four programming languages, I am the sort of a person who prefers breadth of knowledge to depth so I would go through ALL OF THEM :P

(This reminds me I am still only on page ~50 of SICP and I really wanted to return to that)

</comment><comment><USER9> Some great comments here. If you are focusing on Python, here are a couple other suggestions that you might find useful:

Functional Programming In Python free O'Reilly book: [http://www.oreilly.com/programming/free/files/functional- pro...](http://www.oreilly.com/programming/free/files/functional-programming- python.pdf)

Composing Programs, which is somewhat based on SICP, but for Python: [https://www.composingprograms.com/](https://www.composingprograms.com/)

</comment><comment><USER10> [3] Algorithms and Data Structures by Nicklaus Wirth [https://www.amazon.com/Algorithms-Data-Structures-Niklaus- Wi...](https://www.amazon.com/Algorithms-Data-Structures-Niklaus- Wirth/dp/0130220051)

</comment><comment><USER11> Try to get a job where you can do scala/another FP language, gosh, even Ruby/Python/Javascript has good functional constructs and have ways of writing functional code. As they are languages you might know, learn how to explore FP on those langs to the maximum.

I wouldn't overvalue LISP or Haskell, just because it is something that you aren't so used to, or that it gets frequently cited here in HN. I particularly like the SICP book , but think it is a bit silly how some people overvalue this.

</comment><comment><USER12> > From reading HN over the years, I've gathered that many people believe > functional languages better suited to learning CS.

I disagree with this premise. Yes, there is strong FP advocacy on HN, but I don't think the consensus advice here would be "functional programming is better suited to learning CS". Even more, I don't think the consensus would be that FP is the best way to program.

That said, learn FP. But also learn imperative programming. And learn when each is the best tool for the job.

</comment><comment><USER13> I'm going to disagree with most of the commenters here.

Start with Haskell.

"Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming." -Rob Pike

Sicp is great. But sicp won't elucidate the above fact to you which is central to modern programming. Modern programming is about managing things that are complex beyond the ability for a human to comprehend completely.

Too many programmers are concerned with the details. What's even more alarming is that most programmers say they test for how detailed a person is in a time limited programming interview.

Your ability to be detailed will never be able to scale with the complexity of programs so greater ability to be detailed doesn't lead to any benefites in the long run.

To build robust applications you must be able to ignore details.

Learning Haskell will teach you how to ignore details by eliminating detail as a rule. Counterintuitively, Haskell is much less detailed then scheme, python or almost every other popular language out there. I am not referring to syntax here, I am referring to the amount of ways to go from A to B. Haskell makes this dichotomy more evident and the algorithm that takes you from A to B less relevant. Haskell is more restrictive and less expressive, and restriction is power.

Haskell does have issues though, that being the nature of side effects. The abstractions to deal with such things are so mind bending that it might not be good to dive too deep into the world of categories. It depends. But the main point you want get from learning Haskell has to do with the Rob Pike quote above. Once you understand that you'll be better then 99 percent of other programmers on the things that are relevant to modern programming. Then if you're interested you can continue further into Haskell or jump to Sicp as you got the main point.

The study of Haskell eventually leads to category theory which almost looks like a formal theory of abstraction of systems and modules which alludes to the possibility of 'deriving' programs rather then using our gut to 'design' them. It's mind opening to go further but not critical.

Ironically Rob Pike is part of the golang team which is a language that hinders your ability to express all forms of data structures. Json cannot be properly described by the type system of that language so while his quotation is correct I don't agree with many of his decisions.

</comment><comment><USER14> Just do whichever one is more interesting to you. If you like the Haskell, keep going. There's plenty of time to do SICP after Haskell. If you're bored with Haskell, try SICP or whatever strikes your fancy. The limiting factor for learning is interest not time.

</comment><comment><USER15> I'd say Haskell. But please read 'Clean Code' by Robert Martin as well. By reading the first 10 chapters (you can go through them in 2-3 days) you'll be automatically better than 50% of the professional developers out there.

</comment><comment><USER16> If you have the time , work through SICP and do all it's exercises in both Python and Haskell.

</comment><comment><USER17> I don't think there's much difference whether you learn Haskell or Scheme or Python first.

However, I think of the resources available, SICP is by far the most accessible and enlightening book for a beginner. I'd go with that.

</comment><comment><USER18> It doesn't really matter, the main consequence is how efficiently you spend you time. I'd keep going with the Haskell book unless you hit a wall or lose interest. You are using it to actually make stuff, I hope.

</comment><comment><USER19> Choose either one of them to fully understand it, then you will find another one is not as hard as you thought.

</comment><comment><USER20> What do you want to build?

<comment><AUTHOR> Interested in websites, robotics, cryptography, and automating stuff.

<comment><USER21> Python sounds like a good fit for your interests.</comment></comment></comment>