Ask HN: What database version management tools do you use? - <AUTHOR> A company I work with is looking for a way to track changes made to its developer, QA and production databases and have some kind of systematic approval process built into the tool like how gitlab can require someone to review the code before it can be submitted. Each alter query could be submitted then approved and then "merged" with the main DB <comment><USER2> Flyway. It's super light weight. Works out of the box with Spring Boot and you barely have to change your process. Just write sql scripts in a folder with a convention for the file name and away you go.

The Java migrations are fairly handy for calling web services etc

Good for standing up end-to-end tests too.

</comment><comment><USER3> Hmm one team at work uses python and Alembic to do migrations. It stores a hash on a table in the database so you see clearly what version the database is on. It can get pretty advanced, too: you can state that some revision is dependent on another etc.

But the more involved process you describe above was done manually at the stateside healthcare company I worked for: they had a team of DBAs that would review migrations and design and such and approve them. The chansges would go to staging. QA would test doing integration and other tests. And if passed it would roll out to production and if it failed for whatever reason it would go back to the developers. And then back to the DBAs for review and then to QA etc etc.

Other noteworthy tools include Sqitch. It is a super flexible migration tool. [https://sqitch.org](https://sqitch.org)

<comment><USER4> Alembic looks interesting, I currently use Django where I can for version controlling database changes but it's not ideal. I really want a terraform type tool.

<comment><USER3> A true version controlled database is tough given the nature of the data. A bad migration and you lose data. Being able to do them on a replica and then run tests is cool. If you use MySQL look into Githubs tool [https://github.com/github/gh-ost](https://github.com/github/gh-ost)

</comment></comment></comment><comment><USER5> Phinx for PHP world, if your framework of choice hasn't a migration procedure for itself. Phinx is framework agnostic and allowed us being in control of DB changes for several environments and deployments, ie. several on premise production installs, etc.

</comment><comment><USER6> DbUp, SQL files, and git.

We have the documentation in txt/md files inside the git repo. With a checklist for developers.

Then documentation for DBA to review.

Special attention on UPDATEs/DELETEs on user generated data.

Folders procedures, schema, and data.

Procedures are full, idempotent, execute everytime.

Schema is transactional, files starting with datetime.

Data is idempotent, execute everytime. Using sql server MERGE.

</comment><comment><USER7> I mostly use Liquibase. Flyway is another popular one. Although mostly used on Java/JVM projects that's not a requirement. I have also used it separately where the migration XML and a script to run the migrations is all there was.</comment>


Ask HN: The future of the editor's human touch - <AUTHOR>

Hey all,
Over the last few weeks, I've found myself thinking a lot about what's coming next for the journalism industry – not for the industry itself but for the talented journalists – editors, specifically – still out there who need something to grasp onto.
I've seen a lot of my friends lose jobs at the hands of shortsighted news conglomerates looking to make it through this quarter rather than the long run, and as a result, you have this contraction going on. Creative destruction, if you will.
I still have a newspaper job that pays the bills – I work full-time at the Washington Post Express. But I'm more the exception than the rule. I have friends who have given up on news careers altogether, have had to revisit their small-paper roots, or have been out of work for unbelievably long periods.
My last job showed me all the promise modern journalism still had and the shortsightedness currently at play in the industry. I used to work at this wonderful paper called Link, which was run by The Virginian-Pilot in Norfolk, Va.
The ideas behind it I thought were impressive. A newspaper where all the information was broken down in visual, well-thought-out ways. Where things were made for smart news consumers who knew the Web (we knew it back). Where ideas were thrown at the wall, picked up and put into the next day's paper. And readers loved us for that.
It was the kind of job where the ideas were so amazing and fresh that something catastrophic had to happen to end it. And well, the parent company sold The Weather Channel. And then it laid off hundreds of people across the company. Guess that was that.
When this happens, where do the people go? Do they just pick up their unemployment checks and give up on a future in journalism? Turn to that backup career running a karate school in a strip mall?
Online, it seems like news is becoming more of a democratic, automated thing. Sure, this is true to some degree, but I feel like nuance sometimes gets lost in the Digging and buzzing up of articles. Even Twitter seems to fall prey to some of this loss of nuance. Part of the reason why I like YC so much is that it tends to be a little more than that. It has a brain and heart, too. But it feels like the exception to the rule.
I have a blog of my own, ShortFormBlog (http://shortformblog.com/), that's designed around this crazy idea that the editor should not only have a space in this new journalism environment but that they can be self-contained. I try to make the process of posting things simple, visual and substantive, so that the idea of aggregation by human hand can still have a place.
My blog has weaknesses. It doesn't scale well and hacks up a lung sometimes. It's built on Wordpress, which is the equivalent of trying to turn a Ford Taurus into Speed Racer's Mach 5. (And I've got a redesign ready to go to help turn Wordpress at least into a Ford Explorer, but as you guys know, people aren't buying SUVs anymore.) But I feel like the reason I built it – and what I'd like to see long-term – is that I want to try to find a way that laid-off journalists and editors can still have a life after the media eats itself and turns into something else. And in building up my own site, I'm trying to explore those options so maybe I share these ideas down the road.
For me, it's not about saving newspapers. It's about saving journalists – not the guys out in the field so much as the ones behind the scenes who run the engines. The copy-editors. The section editors. The designers. They have skills that can be translated, but nobody's figured out the best way. And I fear that their careers might be killed off by automation when they could be saved by innovation and careful thought.
Yesterday, Twitter – a democratic place – falsely reported that Zach Braff died. To me, the very fact that something like that happens so easily tells me that there's a need for editors, even if they don't have a tie outside of an industry group that gives them a badge to put on their site.
What do you guys think? Is the art of editing dying in the midst of this mess? <comment><USER2> Like hell it's dying. Or, rather, like hell I'd let it. The entire purpose of Thoughtscream Media was to find a niche for proper, yet profitable, journalism even amidst the collapse of the previous forms of the industry. The struggles in defining such terms with so little to work off of is one of the reasons why we haven't quite launched yet, but that's simply an indicator as to the magnitude and seriousness we treat the issue (and, really, the /main/ reason's lack of an agreed upon site design... and, er, lack of content backlog to start off with. And... ...okay, so we've got a lot of stuff to do!).

Sure, right /now/ "proper" and "profitable" seem like a contradiction in terms - but the era when even print media was wrought with editorial scandals and outright falsehoods is still in the living memory of a rapidly dwindling few (cynical remarks concerning Fox News aside). And the development of the modern editorial board was itself a product of market evolution.

An editor's job is, ultimately, to properly vet information, both in forms of its content and its delivery. And there's always a market for trustworthy information. If we don't find a way to bring it to the digital era, and I'm pretty sure we've at least got a decent stab at it, somebody else inevitably will.

<comment><USER3> "An editor's job is, ultimately, to properly vet information"

Considering the job they did during the Bush years, I'd gladly point out that there are still a few empty seats on that bus full of lawyers.</comment></comment>


Ask HN: I am stuck on Lotus Notes 8.5 – help me please - <AUTHOR>

Our company was recently acquired by BigCorp, which uses Lotus Notes 8.5. We have been forced onto it for all email. Any recommendations / hacks for workflow? Does anyone know of the ability to integrate Vim or Emacs to edit email text? SMTP/IMAP has been blocked. <comment><USER2> I used to work at EnormousCorp and internally there was fetchnotes, a fetchmail-like command line tool for situations exactly like yours. A bit of Googling seems to only show mentions of it here and there but no downloads or links to source so I guess it never made it to the outside world, which is unfortunate.

Lotus Notes 8.0 and later are based on Eclipse though, so perhaps with a little bit of effort one of the Vim or Emacs plugins might possibly work for it?

</comment><comment><USER3> First advice is to run anything you think of doing past whoever you need to based on any policies you may or may not have. Don't get yourself fired.

<comment><USER4> if I could get fired based off the way I input text to my email client, I think I would actually want to be fired.

<comment><USER5> But things like accessing the server directly through a third party program would normally be pretty blatantly against most corporate AUP

</comment></comment></comment><comment><USER6> I wish you luck as I feel your pain. Lotus Notes for email is probably _the_ worst piece of crap (I refuse to call it software) I have used. I dreaded it whenever a company I worked for forced me to use it. To my knowledge, you cannot do anything really. Hope that some day they "upgrade" to Outlook :). I am no outlook fan but in front of notes, it looks like a God send.

</comment><comment><USER7> I worked at a company with a lot of creative types. As part of a business deal we were moved from outlook to lotus, and that was when all hell broke loose. It happened on such a big scale and with such critical teams that management could not be heavy handed.

Creative departments revolted and started using personal gmail account like this (email@example.com). And before you knew it confidential data was bleeding out of the organization.

It was a total DIY google apps. Shared folders for projects, funny photos, and everything else you might imagine.

I setup a google sheet with links to each creative teams google drive.

It was such an interesting evolution of workflow management that came from the bottom up.

It was especially interesting to see how non-technical people (designers, account people, etc) used the suite of google tools to self-organize into their own data ecosystem.

So the moral of the story here, kids, is dont use Lotus notes because the minions will revolt.

</comment><comment><USER8> I hear it has a web interface now, maybe someone could write something using phantomjs/casperjs that could push and pull mail.

I Used Lotus Notes at three successive companies, from 1995 through 2010, excluding when I went to college. I went through this. If they're blocking pop/imap, there's nothing (good/worth doing) you can do.

</comment><comment><USER9> I have been in exactly the same situation. I quit that job and now ask in job interviews whether they use Notes for email.

My view is that Notes use is a symptom of much bigger underlying problems. No- one that has to send or receive email would ever make the decision to use it, so why are they in the position to make that decision?

</comment><comment><USER10> We used 8.5 here as well. Its a piece of crap. I've worked in places where we had total Outlook integration with Lync and I enjoyed using that stuff much more. 8.5 is pretty much from the time of XP and it shows. Plus, we handle a bunch of very important things through Notes, like purchase approvals.

Recently, we've had to renew a license on this software we are integrating into a product for a customer. Except we can't get a renewal because someone can't approve the order because they don't use Notes. Why is everything handled within this aging ecosystem? I have no clue. IBM really made something awful here.

</comment><comment><USER11> Can't help you with workflow, but I was on Notes for many years and to be honest, while the actual client is pretty terrible, the webmail client was OK. Not great ... but bearable.

</comment><comment><USER5> Use SwiftFile [1] to help soft emails into folders. Based on a few things like sender and subject it will suggest 2-3 folders that you've filed similar emails into.

[http://www-01.ibm.com/support/docview.wss?uid=swg24019219](http://www-01.ibm.com/support/docview.wss?uid=swg24019219)

</comment><comment><USER12> Random keyboard shortcut I use multiple times per day: paste plaintext with ALT+e,s,t,<enter>.</comment>


Darkness on the Edge of the Universe - <AUTHOR> http://www.nytimes.com/2011/01/16/opinion/16greene.html?ref=opinion&pagewanted=print

<comment><USER2> His statement about the observations intelligent life in the future is poignant. At some point in the future, it is likely, that an intelligent species would never have known and could never possibly know about all the hundreds of billions of galaxies that once were visible.</comment>


Prose, a content editor for GitHub - <AUTHOR> http://prose.io <comment><USER2> Prose.io is a completely client side editor that authenticates against github to allow you to directly edit your markdown files in the repo.

It has a tiny tiny server-side component that exists only to complete the oauth handshake (for the remote server to have something to call back to), called gate keeper.

It's completely open source and self-hostable. They also make a webhook so you can trigger rebuilding on your own server.

They built it to be able to replace their need on a traditional CMS when they switched from Drupal to Node.JS many years ago.

[http://developmentseed.org/blog/2012/07/27/build-cms-free- we...](http://developmentseed.org/blog/2012/07/27/build-cms-free-websites/)

DevelopmentSeed was the company that eventually spun off into MapBox.com, the open source open data map tile hosted service.

They have a long history with the open source community, and are spearheading a lot of the open source mapping stack by employing the lead developers of mapnik, leaflet and much more.

Other than Mapbox.com and Prose.io they also built :

TileMill - [https://www.mapbox.com/tilemill/](https://www.mapbox.com/tilemill/) \- An node-webkit based map designer

Id - [http://ideditor.com/](http://ideditor.com/) \- The OpenStreetMap editing interface

(disclaimer: I used to work for them, and left around the time they spun off into mapbox)

</comment><comment><USER3> Could anyone provide screenshots? I hate to be a hater but authorizing an app to access all my private repos is little too much (not sure how GH allows OAuth scoping)

<comment><USER4> Couldn't agree more... Do we really need to grant read and write access to all repos? Sucks if GH's scoping is that coarse.

<comment><USER5> It definitely isn't that coarse: [https://developer.github.com/v3/oauth/#scopes](https://developer.github.com/v3/oauth/#scopes)

<comment><USER6> GitHub are also working on enabling users to accept just a subset of the requested scopes, like just access to public repos, which will make using all of the more fine-grained scopes easier: [https://developer.github.com/changes/2013-10-04-oauth- change...](https://developer.github.com/changes/2013-10-04-oauth-changes- coming/)

</comment></comment></comment></comment><comment><USER7> Prose is made by Development Seed (the company behind the healtcare.gov frontend, IIRC).

There are screenshots here: [http://developmentseed.org/blog/2012/june/25/prose-a- content...](http://developmentseed.org/blog/2012/june/25/prose-a-content- editor-for-github/)

Prose is an open source node.js app, and can be self-hosted: [https://github.com/prose/prose](https://github.com/prose/prose)

<comment><USER8> Actually, it's a Backbone.js application. It uses the browserify library to load other modules, which is what the "require('blah')" bits are. this confused me too when I first read it. so essentially you can run this on a static file server like GH pages.

As far as I remember in order to get the GitHub authentication piece working you need to use an external app simply for the authentication with GitHub. DevelopmentSeed also wrote an app for this called gatekeeper (I think) which I believe is a node.js application.

impressive stuff.

<comment><USER9> Yes: [https://github.com/prose/gatekeeper](https://github.com/prose/gatekeeper)

I believe all the gatekeeper does is forward the oauth confirmation callback to prose so the client side app can use it.

So, anyone worried about security can run their own gatekeeper and their own prose without having to worry about the NSA (oh, wait…)

</comment></comment></comment><comment><USER10> Two Things: 1\. The link to view the Github projects sites are wrong, they attach the prose.io domain to the actual domain.

2\. It's cool that there is a publish button that shows if it has been published, but then when I clicked on it, it said it would be unpublished. I know I have to save first, but that was kind of bad UX. Also when I click it again to set it back to publish, the record still appears to be dirty, with changes to save. Kind of unsettling since I was just browsing to see the functionality.

One more thing: Is there a service (hosted or otherwise) that has this kind of web based editing with a preview of MY website, not just the plain Markdown? I like that non devs could edit it, but we also have our own CSS that could change the way it looks (video embedding, etc.).

</comment><comment><USER11> It seems nice, but I'd like to know more about where the UI is hosted and whether I can easily host it myself. Is there an architecture diagram somewhere?

(Ideally I'd run it on App Engine.)

<comment><USER12> The UI is hosted on Github pages: there's no server-side code. The only required server-side component is [https://github.com/prose/gatekeeper](https://github.com/prose/gatekeeper) \- an app that makes OAuth possible with CORS.

</comment></comment><comment><USER13> This is another of those websites that asks you to sign up without explaining what it does

... except for the "learn more" button which takes you to a page which explains very very little.

nice font.

</comment><comment><USER14> Why does this show up once a month on Hacker News? Seriously. We've discussed this tool to death. And every time, the same discussions follow:

"Hi! I'm a purist. I use VIM to edit my Github textfiles. If you configure VIM correctly, it'll work better than anything in the world!"

"Hi! I'm a non-purist and have tried 50 different tools, let me list them out!"

I don't ever see any other tool or article reposted as much as Prose.io

<comment><USER15> I think you're sort of missing the point.

It's not about 'editing your github files', and anybody who brings up VIM is _definitely_ missing the point (it's not for you!). As I understand it Prose is about the potential to host totally CMS-free sites (e.g. Jekyll sites) on Github and give your customers a decent editor to alter their content.

It's potentially combining the best of the 'push to git to deploy static site' ethos with 'CMS-like editing capabilities so your customers can reasonably edit content'. I think that's why a lot of people are watching this project closely.

I personally would be happy to see this reposted once a month so we can see its progress and maybe encourage more competition in this space.

<comment><USER14> I'm not here to discuss the tool. It's a good tool. Nothing wrong with it. It's a great tool, worth discussing. It has its uses etc.

However, there's nothing visibly new with each repost. If someone posted like a release, or maybe a changelog, or a blog post with some feature updates, sure. But as of right now, I see Prose get reposted monthly, with no visible changes. And THAT'S annoying.

<comment><USER16> Is the same person reposting it? If so, its spam and should be reported. If it's a new person each time, and each time it continues to get up-voted, then you're going to have to just live with it just like we all have to live with articles we don't care for making it to the front page. Obviously HN has consciously made a decision to allow reposts after some cool-off period.

</comment></comment></comment></comment><comment><USER17> This seems like a great product, but the fact that they include no product details or information doesn't meet the high bar that should be met for someone to provide OAuth access to GitHub.

</comment><comment><USER18> "This application will be able to read and write all public and private repo data. This includes the following:

Code, Issues, Pull requests, Wikis, Settings, Webhooks and services, Deploy keys"

...nope!

</comment><comment><USER19> Use this all the time to update READMEs and documentation

Great, clean interface

<comment><USER20> Could you tell me how this differs from githubs own markdown editor. I played with this for a bit but I failed to notice anything.

</comment></comment><comment><USER21> Too bad the site doesn't work on my phone _at all_. Xperia T using Dolphin Browser. Gives me all kinds of floating boxes and a useless progress spinner.

</comment><comment><USER22> I used Prose before. However, after Heartbleed incident, I removed many OAuth tokens in GitHub, including Prose, and now the site won't load for me at all.

</comment><comment><USER23> I don't understand how anything like this could just assume that I'm going to give it access to my private repos. Do people seriously do this?

</comment><comment><USER24> this is really good stuff, its very fast to navigate through different files and edit content. it will work really well with my up coming gem.

</comment><comment><USER25> How is it better than github editor?

</comment><comment><USER26> Nice,definetly a nice idea.

</comment><comment><USER27> While the design looks nice, what does this offer that GitHub's editing functionality[1] does not?

[1]: [https://help.github.com/articles/editing- files](https://help.github.com/articles/editing-files)

<comment><USER28> Prose is tweaked specifically to offer additional features to sites built with Jekyll.

They have a markdown editor, similar to the one github offers, but have a few extra features to deal with Jekyll specific stuff like drafts, image uploading and a distraction free writing mode.

<comment><USER29> I don't know much about Jekyll, but vanilla Github offers a distraction-free editor called "zen mode".

</comment></comment></comment><comment><USER30> The editor is content? Absolutely anything you are editing could be described as content. I edit the contents of my editing buffer.</comment>


How to travel the world while freelancing as a programmer - <AUTHOR> http://bkpk.me/programmers-its-time-to-pack-your-bags/

<comment><USER3> Seriously, what's with the adverts on that website? I get a pop-under, multiple flash banners, and in general it slows my work PC to a crawl.

I can imagine this guy is making more money from adverts than from freelancing...

<comment><AUTHOR> Author here. Really ? :( I didn't think the ads were intrusive because they're set to not run any popups. That website doesn't make any money, well, it makes like 20 cents a day but I don't think that counts.. :S

I remember there was a post on HN a few weeks ago about how devs using macs is causing serious usability issues. I think I just got bitten by that :S I'll try and boot up Virtualbox and look into it. Sorry for the bad ads.

<comment><USER4> popup on linux also. is 20 cents/day really worth the ux mess?

<comment><AUTHOR> No it's not and I would fix that given the chance. I just wish people wouldn't flag this down. Infact, it should be fixed now.

<comment><USER5> I just opened and read the piece on your site, I did not find the ads intrusive (any more, perhaps?) nor did I get a pop-up/pop-under advertisement.

But, the site is still massively resourceful - Firefox, at least, is having massive troubles rendering the site. Scrolling is _really_ painful - <USER2> with a scrollwheel or with up/down keys.

I havn't tried to debug the site, but I thought the above might be of interest to you anyhow.

I'm on Firefox 13.0.1, running Ubuntu on a Intel i5 first-gen.

</comment></comment></comment></comment></comment><comment><USER6> What antennas do you use for connecting in each country? I'm a programmer working remotely primarily, but would like to start doing it while travelling around the world. Would love to chat with you more. Do most countries have stupid issues with multiple internet network types such as in the US, or can any 3G modem work in most places? And is 3G enough? I find I'm mostly comfortable with around 7 Mb/s down, 3Mb up

<comment><AUTHOR> I use my iPhone 4S and tether it to my laptop. Most countries do have different frequency bands but an iPhone or newer Android will work just fine.

7Mb/s down and 3Mb up would be too much to expect off 3G. Even over Wifi in many countries, that would be too much. You could realistically expect about 2Mb/s down, but this really varies from country to country.

3G is enough for keeping track of things, pushing changes to github, uploading a few facebook pictures, etc. You can't really do much more than that without wifi. But thankfully that's available almost everywhere!

<comment><USER6> For my remote job, I need to have daily skype conferences with up 4 people.. have you found that you can use skype reliably over these 3G connections, or is that something that you haven't really done much?

<comment><AUTHOR> I've used skype over 3G. Infact, I've used skype with video over 3G as well. However, a 4-way Skype over 3G is probably very difficult in most countries (but hey, choose Japan and South Korea and you should be able to 16-way skype on their mobile internet ;)).

What I'm trying to say is that you could move to Brazil, rent an apartment with a 10 Meg line, and carry on with your work. I know a day trader (he calls himself the wandering trader..) who did exactly that.

</comment></comment></comment></comment><comment><USER7> Thanks for sharing your experience with us.

Any issues with the Visas? I guess you can't stay more than certain amount of time in most countries, right?

Also, what about health insurance?

<comment><AUTHOR> I usually travel on tourist visas but it's easy enough to apply for visas up to 90 days in each country. Most of these visas are extendible for the same duration exactly once. Of-course it varies from country to country. But 90 days gives me plenty of time to see a lot in most smaller countries.

Health insurance is usually issued for 6 months and travel health insurance ends up costing me about $130 per six months and this does not include treatment in the US (I'm not traveling in the US so it doesn't matter to me..).</comment></comment>


The Giant Black Book of Computer Viruses (1995, DOS) - <AUTHOR> https://web.archive.org/web/20130731222702/http://vxheaven.org/lib/vml01.html <comment><AUTHOR> >"This book will simply and plainly teach you how to write computer viruses. It is not one of those all too common books that decry viruses and call for secrecy about the technology they employ, while curiously giving you just enough technical details about viruses so you don't feel like you've been cheated. Rather, this book is technical and to the point. Here you will find complete sources for plug-and-play viruses, as well as enough technical knowledge to become a proficient cutting-edge virus programmer or anti-virus programmer."</comment>


Medium.js: Make contenteditable beautiful - <AUTHOR> https://github.com/jakiestfu/Medium.js

<comment><USER2> Great work on this. As someone who has spent countless hours slaving over contenteditable issues (even with the help of great libraries like rangy.js), I can definitely appreciate the work you put in here.

I did notice a small issue, which I've logged here: [https://github.com/jakiestfu/Medium.js/issues/6](https://github.com/jakiestfu/Medium.js/issues/6)</comment>


Ask HN: What are good resources on web development? - <AUTHOR> I am learning Python and wants to build career in web development. <comment><USER2> [https://www.codecademy.com/learn/learn- python](https://www.codecademy.com/learn/learn-python)

[https://www.w3schools.com/python/](https://www.w3schools.com/python/)

Hope these help! Both Codecademy and W3schools cover html, css, java, javascript...</comment>


Problems with Computer Science Education - <AUTHOR> https://www.fusionbox.com/blog/detail/problems-with-computer-science-education/567/ <comment><USER2> This article has, as an analogy, a premise similar to: "Materials science graduates make rubbish bricklayers."

Computer science _is not software engineering_ , just like materials science is not structural engineering, and neither of those is that closely related to building a bridge or a building. Most of what we call "software engineering" is actually closer to what an engineer would call a "technician" in any other practical field.

I've met many, many "computer science" graduates who are barely aware of the "science" element of what the field contains. This isn't helped at all by those of us in the field (and our academics who teach us) happily mixing up the terms "computer science", "software engineering" and "programming".

Scientists expand the range of human thought in the field by discovering new truths, such as algorithms, design patterns, and conceptual relationships. Engineers turn these truths into techniques and building blocks/frameworks, and maybe designed solutions. Technicians take the building blocks and techniques and make artefacts, hopefully using best practices.

We're suffering from the fact that our field is less than a century old, in real terms, and neither the terms for these things, nor indeed the techniques and literature, have become concrete.

<comment><USER3> You're unlikely to find a scientist or structural engineer that designs a bridge physically putting it together, but the best or only implementation of an algorithm is often made by its' inventor. The line that separates technicians from designers and scientists is much blurrier in computer science etc. than most other fields.

<comment><USER4> > The line that separates technicians from designers and scientists is much > blurrier in computer science etc. than most other fields.

I think that the GP provided a reasonable explanation for this situation by saying that the "field is less than a century old". If you go back in time you are more likely to find one person inventing a new brick, designing a house with it and then building it. But later when the body of knowledge was too big for one person, specialization started (the same happened in medicine and many other fields).

And actually it is already happening in the IT area. Just several years ago it wasn't uncommon that a game or any other non-trivial piece of software was created (including some clever "inventions") and marketed by one person.

</comment></comment></comment><comment><USER5> These aren't problems, these are things you learn in a matter of weeks/months from on-the-job experience. Why would you expect a recent graduate to have that? And why would it even matter?

If someone is smart enough to talk about data structures competently in an interview, don't you think they could learn git?

I swear people must be conducting interviews to try to feel smarter than the candidate rather than to find a person who can do a job.

<comment><USER6> I would argue you can learn the efficiency of a binary tree search in a few months on a job too. And no, often times those people can't learn git on the job because in so doing the mess things up so thoroughly in the repo half the time you have to rewrite history to clean up a bad push.

I've seen it happen and this is not an issue of people trying to be smarter than the person they're interviewing. In point of fact, I just had an interview with a company where I'd be forking and improving open source code for building modular website content blocks and they asked me to write a bubble sort algorithm.

Trivial, but I hadn't done it in 12 years since college. Now quicksort, that's actually useful, but a bubble sort? I got a little tripped up, remembered it eventually, but the whole time the "bad cop" in the interview was checking his phone, sitting cross legged on the heater and talking about his adjunct position at local, minor university. Who's trying to look smart?

</comment></comment><comment><USER7> All I learned from this article is that the University of Maryland's computer science program is terrible compared to the University of Arizona program I graduated from more than five years ago.

Using version control, working in teams (using version control!), working with other people's code, and designing software to meet requirements (in teams!) were all part of the core curriculum. The curriculum even used Extreme Programming (which seems, in my experience, to differ very little from agile methodologies like Scrum) as the model for guiding group/team projects. Not to mention projects where we had to complete assignments on top of provided 'nightmare code' written by a professor.

And pretty much every grad can still tell you the Big-O complexity of the major sort algorithms. Or anything else you'd expect from a "more academic" CS program.

However, I believe the UA program very much tried to combine practitioner knowledge with academic knowledge. (And once again, my experiences were more than 5 years ago.)

<comment><USER8> A co-worker's kid is about to graduate from UMD with a B.S. in Computer Engineering. He has one very good job offer and is likely to have more. He worked on research projects steadily in the school and had internships during the summers.

I don't suppose that he is a typical graduate of the program, but perhaps the one cited in the article isn't either.

<comment><USER7> Computer Engineering is also a different thing than Computer Science.

<comment><USER8> Quite. But I don't know how much overlap there is between the programs at UMD. Do you?

</comment></comment></comment></comment><comment><USER9> Computer programming isn't what Computer Science courses are attempting to teach.

You're describing a Trade School. I think Trade Schools are a decent idea.

But learning the trade SHOULD NOT be what they teach in a Computer Science curriculum.

<comment><USER10> First, a more minor point: Mechanical engineering is a university subject, even though it isn't physics. What you call "Trade School" is really software engineering; it is properly also a university subject, rather than something that should be dismissively consigned to trade schools. (It could be taught there as well, of course, to the same degree that mechanical engineering is - which I suspect is not much.)

My larger point: According to your thinking, then, we need to take the people who are studying computer science, and move maybe 98% of them to a software engineering major. If CS is what you define it to be, we absolutely do not need as many CS graduates as we have people enrolled in CS.

What we currently have is that the schools think they should be teaching CS (per your definition), and both the students and the outside world are expecting the courses to teach what is actually useful out in industry - software engineering. I could actually see this as a useful split (we separated physics from mechanical engineering). But then CS becomes "that computer thing you take if you want an academic career", not what you teach all the people who are trying to get a job. CS loses the vast majority of its students, and with it, much of its prestige.

<comment><USER11> In general, you're right.

But I think you're underselling the value of pure computer science compared to the software engineering discipline. Physicists don't have to go into academia, they can ply their trade applying physics, collaborating with engineers on the cutting edge of semiconductor manufacturing, aeronautics, space exploration, and so on. Before a field is ready to be turned into engineering, the early work is usually done by physicists.

Sure, there's hopefully no need to account for novel physics when you're building a bridge - all the theoretical models engineers need have been worked out long ago (by physicists). But if those same engineers were working on a space-elevator? They'd bring along some physicists to help figure out the new stuff they were going to encounter.

The same applies to the software domain, too: before something like deep learning can be engineered into regular products, it's going to be computer scientists who work out all the details - and not just in an academic environment, they're doing it in industry, working with engineers to turn theory into practice.

</comment></comment></comment><comment><USER12> I learned a lot in my CS program I probably never would have discovered by myself and much of it is foundational skills I subconsciously use when solving problems. I also understand what the trade offs that need to be made and where my optimization time should be spent.

When in college I did a whole lot of programming using version control (CVS in my time, kids have it good today!), API's and various programming languages. I didn't need my college to teach me these things. It was the application of what I was learning in school.

Also, in college we had a Software Engineering course elective, a Testing course elective and some other more practical course electives that most people took because it was, well, practical skills.

So I think a decent mix of theory and practical skills are best but the it is also up to the student to engage themselves outside their program to learn "real world" skills. That's especially easy for students today with tools like Github and OSS becoming such a huge thing.

</comment><comment><USER13> > _A CS education is great for those who wish to pursue it as a purely > academic exercise, but a person with solely a formal CS education is > woefully under prepared for employment as a software engineer._

This sums up the root problem, to me. Many comp-sci programs are run with an eye towards arid, abstract wisdom, not marketable skills. That's not inherently bad, and it's true of many degree programs--no one goes into a philosophy major thinking that it'll be a good career move; they do it because they love philosophy. The problem is that the philosophy department is honest about that fact. Advisors tell bright-eyed would-be programmers that they'll just love the CS program when they should be telling them to turn around, walk out the door, and check out the technical college across town. By the time the kid discovers the lie, he's down five years and $30,000 will not much to show for it.

<comment><USER6> Well said, and honestly, I think this goes deeper than just CS. It's probably a shitty thing for me to argue standing here with a BA, but I don't think the vast majority of people earning BA's today are actually using universities and colleges for what they were designed for. We need voc-ed and technical schools to not be shameful any more. There is nothing wrong with wanting to learn how to code without wanting to learn higher level mathematics along the way.

I promise you that not every electrician understands the subtly of homogeneous layers in high frequency integrated circuits. Nor do the vast majority of people actually building things with computers need to understand the draw backs to using a binary tree over a hash table. Sure, it'd be nice to be curious and want to learn more, but you don't need it to be competent.

</comment></comment><comment><USER14> Sometimes the unfortunate part of the education system is that you have to teach yourself a concept or skill. It's admirable that the individual mentioned was a straight-A student, but its almost meaningless compared to the people who have been teaching themselves how to code, hack, tinker with hardware, etc, since they were a kid.

I read Sean Parker's bio on Wikipedia sometime back and it explained his "autodidacticism". It got him far very early in his life so much that he didn't have to attend college. Granted not everyone has the kind of innate skill that some of these so called geniuses or prodigies do, but you can certainly learn a thing or two from them.

As far as working in teams go, again, nothing is preventing you from gathering two or three of your good friends and building something together, no matter how useless the end product turns out to be in real life. This way, you are not restrained on your idea or your methodology in building, you learn from trial-and-error and build on your experience, and if the product does turn out to be something remotely useful then that is one more thing to write on your resume and talk about in your interviews. Work towards getting your degree and do well, but always work towards making yourself better; don't solely rely on coursework and professors, because that won't take you very far.

</comment><comment><USER15> Looking at my brother, who is about to finish CS at Columbia, I don't recognize the criticism. He seems to have a good mix of theory and practice. There's a fair amount of grinding ("argh why won't it compile? / Google the error") as well as working with other students. There's also a huge amount of data structures and algorithm stuff that you expect in this sort of course. I didn't see a lot of reading other people's code, but maybe that's in there as well somewhere. I definitely get the feeling there's a lot of mini-projects.

Of course there are things that are much easier to learn on the job, such as how to navigate a huge codebase. Because you'll have time to do that. Also architecture decisions are hard to get right as a novice. You can read around, you can ask people questions, but in the end you need to make mistakes and rebuild to appreciate some aspects.

<comment><USER16> I just graduated from CU, and I'd agree. Just based on anecdotal evidence comparing w/ friends from Cal, MIT, Harvard, etc, I think all of these 'top' schools do a pretty good job of mixing theory and practice within the required/core CS classes, and then allow the students to decide for themselves which track they want to follow. For instance at Columbia, we have tracks in AI, Applications, Theory/Security (forget the exact name but this is theory & algorithmic heavy), Systems, etc. These tracks comprise several senior / master / phd level courses which you usually take in your last year or two. No matter which track you go into, all CS majors take the same core CS classes in data structures, basic CS/compiler/language theory, statistics, linear algebra, etc.

I can't say that any of the core classes involve navigating a huge codebase... there are certainly some upper level track classes (especially in Systems) that give you that experience, but I do agree that is relatively uncommon.

Honestly so much of the learning happens in extracurriculars (Hackathons, CS/tech clubs, etc) that it's hard to keep track of which skills you learn in classes vs just doing other activities with friends. I think the power of college resides in the strength of such extracurriculars.

</comment></comment><comment><USER17> FSU CS grad here. FSU offers a BA in CS. Basically it allows you to substitute a minor of your choosing for some of the more academic CS courses (theory of computation, algorithms II) and pure science courses (Stats II, 3 semesters of physics/bio/chem, Discrete II etc).

I minored in business but then transitioned to double majoring in CS and MIS. MIS was more focused on teaching you how to build systems.

My take is if you want to work for one of the big firms tackling problems at scale, then you need the CS and math rigor to get in the door. If you're OK building websites or mobile apps, then most of that CS knowledge is going to go to waste.

For me, machine learning has been the catalyst for getting deeper into math and science. I decided that I'm more interested in ML/AI than building business systems, so I'm going deeper into CS/Calculus/Linear Algebra on my own and I really enjoy it.

</comment><comment><USER18> On the other hand: [https://www.youtube.com/watch?v=Lb- cKVxmVGk&spfreload=10](https://www.youtube.com/watch?v=Lb- cKVxmVGk&spfreload=10)

(The article begs the question that undergraduate computer science programs are a good idea in the first place)

</comment><comment><USER19> The complexity of searching a sorted list is only logarithmic if you have positional random access (it is implemented as an array or an array-like structure). If it is a linked list, the sorting doesn't help; you have to traverse all predecessors of an arbitrary item in order to access it, and that is linear: the sorted order doesn't help.

Usually when we say "list" we mean "linked list": a flexible structure with poor random access, though sometimes the word is an implementation-agnostic designator for any sequential structure.

</comment><comment><USER20> As a recent computer science student graduate I can relate to this. It's worrisome how many of my classmates are graduating with very little knowledge on how to actually build something, rather than solving little math/CS problems. I was lucky to have taken a startup programming course they taught for one term, in which we were required to build a scalable startup from ground up. Wish me luck finding employment now!

<comment><USER21> It's nice your college cared enough to offer a startup programming course. If I was looking at CS degree, I would want to see a few courses like this(practical experience) required for the major?

A lot of degrees don't offer much practical knowledge for the real world? With what you people are paying for tuition; I would demand it from your university though? You students have so much more power than my generation had.

I picture a lot of tenured professors thinking, "Woa--I got them through the textbook! I'm not really prepared to deal with real life situations? After all, I been holed up here for years, and my sabbaticals were basically vacations?"

I understand why most majors can't really prepare the student for the real world, and real world problems. Years ago, I got a degree in Business Administration/Management. It was a joke, and there was really no real world/relevant courses offered. I had one Econonomics Professor give some real world advise, he told us, "If you want to get ahead in business; you will need a red nose--"

He was a returning to teaching from a long stint in the private sector. . His last job was working for Texas Realestate company? He said at lunch--it wasen't uncommon to Have to drink 3-5 cocktails--just to fit in with the guys. I really dated myself with that comment? It's probally the opposite today? Maybe not in Texas though?

When I was in college, I thought General Education courses were a waste of time. I now look back, and I am so glad I was forced to take so many, seemingly random courses. The courses for my major we a waste of time. I picked business because I was young, and very poor. I was about to drop out, and I figured I needed a degree in anything--so I wouldn't resent paying back those student loans, and maybe go to a professional school? In the 80's, Business Administration was considered a safe degree in terms of employment. If I was to do it over, I would have majored in something I was really interested in! Geology? Engineering? Art? Philosophy? Biology? Yes--we had CS, but I just wasen't interested in it.(It's such a better major today!)

</comment></comment><comment><USER22> This issue's been around for awhile. See this post ([http://blog.codinghorror.com/why-cant-programmers- program/](http://blog.codinghorror.com/why-cant-programmers-program/)) from 2007. The problem actually inspired me to create a piece of kinetic sculpture I'll be offering as a series later this month on Kickstarter.

</comment><comment><USER23> Is the author of this article suggesting that learning about version control, working in teams, and reading new code will help someone with an interview question about how to design a software system? These seem to be two different things to me.

</comment><comment> andrew-lucker Computer Science is to Programming what Anatomy is to realist painters.

No, learning anatomy will not make you a good painter. However if you are already a painter and want to become great, then you will need to learn anatomy.</comment>


Ask HN: Immutable data structures for the back end? - <AUTHOR> Immutable data structures are being adopted on the frontend with frameworks like redux. Can this same concept be applied to the server? An express like framework that works with immutable state? <comment><USER2> Well it is trite to say it but Haskell has many examples of servers and idiomatic haskell will almost always use immutable data. Examples are web frameworks like Yesod and web servers like Warp.

I'm working on a toy stock exchange app to learn haskell and of course it will be mostly immutable. It will use some shared global state. This will have mutable reference using mvars or transactional memory but the "objects" themselves will be immutable.

Communicating between threads makes total immutability hard (maybe impossible?) unless you have a very clever threading model.

</comment><comment><USER3> Sure they can. You can use server side languages like Clojure, Erlang, Elixir, F# and a few others I'm sure I'm missing.

There also exist libraries for some languages that introduce immutable data structures, like pysistance for Python.

</comment><comment><USER4> You can check out Datomic[0], a database built on immutability, championed by Rick Hickey of Clojure.

[0]: [http://www.datomic.com/](http://www.datomic.com/)

</comment><comment><USER5> See the event sourcing pattern for an example of immutability at the backend.

[http://martinfowler.com/eaaDev/EventSourcing.html](http://martinfowler.com/eaaDev/EventSourcing.html)

[https://msdn.microsoft.com/en- us/library/dn589792.aspx](https://msdn.microsoft.com/en- us/library/dn589792.aspx)

</comment><comment><USER6> Did you just learn about the concept of Immutable? It's a very simple concept, it seems to be the buzzword lately, especially with JavaScript libraries.

</comment><comment><AUTHOR> Are there any examples of this being done?

</comment><comment><USER7> What do you think would be the benefit?</comment>


Cronlock: distributed cron in 300 lines of bash - <AUTHOR> https://github.com/kvz/cronlock <comment><USER2> So this is like flock with an nfs share, but using redis instead?</comment>


AMD's Epyc Pummels Intel's New Xeon-W Workstation CPUs - <AUTHOR> https://www.semiaccurate.com/2017/08/29/amds-epyc-pummels-intels-new-xeon-w-workstation-cpus/ <comment><USER3> I think one of the best outcomes of a competitive CPU market is that the artificial limitations Intel introduced to segment their CPU market are going to have to die.

It's pretty clear that now AMD is speed competitive, people will look at features and this artificial segmentation will push more people to AMD.

Eg, from the article:

 _You may notice the Silver and Bronze tiers of Xeons are gone, as are the -M SKUs. This leaves the workstation parts crippled, you can't get more than 768GB per socket on parts meant for heavy memory intensive tasks like CAD, FEA, and modeling large data sets.... AMD's Epyc on the other hand can put up to 2TB in a single socket, 4TB with 256GB DIMMs versus Intel's 756GB, an artificially enforced cap so DIMM side is irrelevant._

Also, the Xeon 8180 is $10,000?! I used to spec servers, and I don't remember seeing CPUs anywhere near that price. Is that common in the workstation market?

<comment><USER4> About a decade ago, the top proc's were 4-6k. They've trended up. 8k was the top for awhile and now 10k+ is the new norm. It's definitely Intel abusing their position, in this case.

Also, the $10k one isn't even the most expensive. The Xeon Platinum 8180M is $13,011.

</comment></comment><comment><USER5> This is a poorly-written article with no benchmarks – so I think it might be worth reserving judgement until we have a better idea of how this all plays out.

It will definitely be great for competition if AMD can become more competitive with Intel's latest chips.

<comment><USER6> Yeah, that article is shit, so here's some real data.

Benchmarks:

\- Top AMD Threadripper model vs Top Intel I9 X-series currently being sold (same cpu as Xeon W-2155, just without ECC): [https://www.phoronix.com/scan.php?page=article&item=amd- tr-1...](https://www.phoronix.com/scan.php?page=article&item=amd-tr-1950x)

14 and 18 core Xeon-W and i9 processors have only been announced, but are not available yet.

We already know that the Intel 18-core parts will have a base clock of 2.3 GHz vs 3.3 GHz of the one tested above, both parts have 4 memory channels.

The 16-core AMD Threadripper from that benchmark runs at 3.4GHz base clock and has 4 memory channels, the 32-core AMD EPYC runs at 2.2GHz base clock and has 8 memory channels.

\-- Educated guesses and extrapolation starts here--

Intel 10-core vs 18-core:

+80% more cores

-30% base clock

Assuming perfect core & clock scaling: 1.8 * 0.7 = 1.26

AMD 16-core vs 32-core

+100% more cores

-35% base clock

Assuming perfect core & clock scaling: 2 * 0.65 = 1.3

Even ignoring double memory bandwidth AMD is likely to increase any advantage (or catch up in AVX2-heavy workloads) over Intel.

I'm only looking at base clocks, because Intel CPUs are not able to maintain boost clock for any meaningful amount of time, even with water cooling - <USER2> package doesn't transfer heat from the die fast enough. AMDs fare quite a bit better, but few people will bother with water cooling their workstations.

<comment><USER7> I thought all the AMD CPUs supported ECC, if the motherboard does?

<comment><USER6> I was talking about Intel i9s, which don't.

Ryzen CPUs support ECC if mobo does, but were not formally validated for that.

Threadripper and Epyc both support ECC and have been validated.

</comment></comment></comment></comment><comment><USER8> This line:

> Intel doesn't want to be put in the position of admitting they are charging > significantly more for a new product that runs about half the speed of their > cheaper competition.

Unfortunately, people are locked into the Xeon line - so it doesn't matter a ton for now. In the coming years if AMD can keep up, they'll win - over and over time.

<comment><USER9> It does get them a foot in the door though since most people never considered anything but Xeon. Personally I'll get an AMD the next time I upgrade just for variety; even if Intel would take the performance lead next generation.

(Currently sitting on two E5-2660v2 for reference)

<comment><USER10> I'm not running workstation hardware, been on an i7-4790K for a few years now, but sometimes constrained on ram at 32gb, and recently went to a 1gb nvme for my primary drive + gtx1080. I will say that even Threadripper is compelling on value, and Epyc equally so. I'll probably go Threadripper for my next system, depending on how the next year or so shape up. Everyone using these systems has different needs, some need raw CPU power, others more memory, some max both. Intel has carved out too many parts to maximize profits and confuse customers. AMD seems to be sized "just right" on their parts, without killing features.

I'm still pretty happy with my ~3yo pc, I did ditch windows as my desktop OS earlier this year. (aside: win10's aggressive advertising in the OS finally irritated me too much, and I'm not the only one).

<comment><USER11> Dunno, I think talking myself into a Ryzen, but I wanted ECC and not some hand waving that it might work. Intel's coffee lake i7 6 core/12 threads (i7-8700) is looking like it will beat the ryzen on single thread and multithread workloads. At least that's the leaked benchmarks so far.

I'm hoping that the Xeon E3 flavor of the i7 is out shortly afterwards. Should make for a great workstation and guarantees ECC.

I was shopping for ECC threadripper boards and they often don't mention ECC. I'm hoping AMD fixes that and brings out a threadripper down to $350 (with the Intel x-series starts).

</comment></comment></comment></comment><comment><USER12> Its nice to see AMD competitive again.

<comment><USER13> It's nice to see that AMD is still around so this day could come. Things looked pretty grim in the Bulldozer era when they were being pounded by Intel on one side and slammed by NVidia on the other.

</comment></comment><comment><USER14> > There are a few things to note here. First take a look at AMD's 1S Epyc > pricing, specifically the 32C 7551P. It costs $2100 or a mere $101 more than > the 28C Skylake-X for 14C more, 1.25TB more addressable memory, and no > artificial fusings of bells and whistles.

The math doesn't work out here: 32 cores isn't 14 cores more than 28 cores. I think this was a typo and the author meant to compare with the 18 core Skylake-X, which exists (whereas there is no 28 core model).

</comment><comment> dis-sys Intel wants $1,440 for its 10 core and $1,113 for a 8 core Xeon-W? Is Intel in self-destruction mode? 4 memory channel, less PCI lanes, 8 less cores, but $120 more when compared to Threadripper 1950x?

You really need to hate your hard earned $ with a passion to buy such rubbish with an Intel logo on it.

</comment><comment><USER15> The author sounds like they have an axe to grind with Intel. That's totally understandable, since Intel really has been soaking the server/workstation market, but it's not appropriate for a comparative article, especially one with no actual benchmarks. Just the facts, ma'am.

<comment><USER16> Of course Charlie Demerjian has an axe to grind with Intel. He was the reporter who broke the news that Intel threatened Taiwanese motherboard manufacturers to _not_ release motherboards for the then new AMD Athlon 64 CPUs. The manufacturers had to _leak_ this info to him in fear of Intel's retaliation ("Ops we have a shortage of north bridge chipsets, guess you guys aren't getting any chipsets allocation for the next three months.")

He was also one of the first reporters to report Intel's secret paymenst to Dell to not use AMD Athlon CPUs, that ultimately greatly limited AMD's ability to generate revenue to increase its production capacity at its fab.

Believe it or not, Intel acted like a mini-Microsoft back in AMD's Athlon heydays, and that pissed off a lot of people in the industry.

[https://arstechnica.com/uncategorized/2005/06/5047-2/](https://arstechnica.com/uncategorized/2005/06/5047-2/)

<comment><USER17> Intel lost a lawsuit to Transmeta for similar nastiness [1] (of course the latter went out of business before the total could be collected).

Charlie holds many grudges; he pissed NVIDIA off enough that they denied him access after which his been dumping dirt on them whenever he can, justified or not.

"Semi-accurate" is an appropriate name. He's sometimes right.

[1] [https://en.wikipedia.org/wiki/Transmeta](https://en.wikipedia.org/wiki/Transmeta)

<comment><USER11> Similar with Dec/Alpha.

Amusingly they are suing Qualcom for doing the same thing to them in the mobile market.

</comment></comment></comment></comment><comment><USER18> What is it with this author and the word "mere". At first I thought it was legit because the AMD chip was cheaper, then sarcastic because a purely inferior Intel was more expensive then it was used everywhere so now I think the author doesn't know how to use it.

</comment><comment><USER19> I'm confused. Xeon-W more directly compares with Threadripper. Xeon-SP compares with Epyc. Why is this comparison even a thing?

Also, I need to bring this up every time we have an "AMD is destroying Intel" post: Intel's per-core performance is still higher than AMD, somewhere around 10% depending on the application.

AMD is competitive again, which is great. But I'm still buying Intel because my use-cases demand maximum per-core performance.

<comment><AUTHOR> You don't need to bring it up, is right there in the article.

There are many use cases, and maybe to you per-core performance is paramount, but he's making the case that for the market Xeon-Ws are aimed at, cores are more important than 10% peak performance, otherwise you wouldn't be buying a 36 core monster to begin with.

</comment></comment><comment><USER20> Semiaccurate is at best a clickbait hardware site. So this article is to be laughed at. AMD's new server line is not to be laughed at but intel still commands the edge in cases where AVX is used and in gaming. AMD has become so much more competitive of late but intel can throw sheer cores and with those cores their improved IPC at the issue and enterprises will pay because of name recognition.

<comment><USER21> Intel's domination in gaming and "low level" workstation is getting tenuous at best, and that's why they need to shake their entire lineup at that level too and doing several line release in a single year (which is hilarously obvious as to how unprepared they were).

Yes, in pure per core performance intel still has a nice edge of roughly 10%, and yes games mostly care about single core perf, and yes if you want to make the best gaming machine money can buy you still go for intel.

But gaming has not been CPU bound for quite some time, and amd's proposition there is not "the same thing, little bit less expensive and little bit less powerful", it's "the same price, little bit less powerful by core but still not cpu bound, and we give you twice the cores". Intel might very well fix that by the end of the year but right now you want a 600 - 1000 € gaming machine there is a very good chance you go for Ryzen.

And of course that's why AMD did that, they did not go crazy with core count to be nice, they did it because that's what they finally needed to get over that "but intel's still ahead and there is no reason to go with amd if you don't need to save fifty bucks".

<comment><USER22> I mean, they also were able to cheaply increase core count by not stuffing an iGPU into the chip. Outside of HEDT CPU's on the Intel side you have no choice on whether you get HD/Iris/Iris Pro graphics, even if you're going to put a gaming GPU in the system anyway. Meanwhile, the mainstream AM4 platform is based around the assumption you'll be sticking a GPU in already so space on the CPU die is better used for more cores.

<comment><USER21> Which is kind of funny given that intel's "iGPU everywhere" was triggered by AMD APU strategy a few years back after they bought ATI.

</comment></comment></comment></comment><comment><USER23> IPC, clock speed and core count don't tell the whole story any more.

All these latest generation chips boost clock speed ("turbo" mode) the fewer cores there are in use. AMD is far more generous with its turbo modes at multiple tiers (read: higher percentage of top turbo speed at the same active core count) although at a significant TDP cost

</comment><comment><USER24> A lot of water without actual benchmarks.

<comment><USER18> Per Phoronix[1] AMD's threadripper does really good against Intel's workstation and HEDT CPUs. How could two more core complexes make it look less onesided. A Ryzen is one core complex, A threadripper is two Ryzen and an Epyc is 4 Ryzen. It is going to be the fastest until we look at Intel's highest end server chips.

1 - [https://www.phoronix.com/scan.php?page=article&item=amd- tr-1...](https://www.phoronix.com/scan.php?page=article&item=amd- tr-1950x&num=1)

<comment><USER24> This is not even the same processor series and number of cores. Article is about Xeon, and this benchmark is about iX

<comment><USER25> Xeon W is the same as Core i9.

<comment><USER20> No Xeon W is a fully baked core i9 where's the I series is gimped for mainstream use

<comment><USER26> So the comparison becomes even more lopsided when put against the I9?

<comment><USER20> I think so.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> I really wish AMD would fix the nested page tables bug in iommu...

<comment><USER4> Epyc is a stepping above the early Threadripper's and Ryzen. Other errata have been patched, and knowing the influence virtualization has on the server space, I'd hope they'd fix this one as well.

</comment></comment><comment><USER28> Domain name checks out.</comment>


The insecurity of OpenBSD - <AUTHOR> https://allthatiswrong.wordpress.com/2010/01/20/the-insecurity-of-openbsd/ <comment><USER2> Date: 2010</comment>


The narcissistic nature of being an entrepreneur - <AUTHOR> http://blog.quixoting.com/2009/02/the-narcissistic-nature-of-being-an-entrepreneur.html

<comment><USER2> Quote "I've learned that if you are not self-focused to some extent, the 40 ft wave will pick you up, drop you in the sand and drag you out to sea. OK, that's a bit dramatic, but it can feel that way." I'd argue one's genuine style and force of will to pursue their passions are anything but narcissistic. Once a concept takes off, you can let go of the reigns and let the greatest folks do the job. They'll be here long after your gone and still plugging away with a vision you helped found.

If it's important enough, you'll make the sacrifice to build a lasting entity dedicating to solving a problem or inefficiency. Just recognize the end of yourself and the beginning of a larger community that forms the extent of a business (or non-profit foundation) you start.

What else can inspire us to work so hard, but something aligned directly with our passions and internal compass?</comment>


ChurnBee - Dashboard for startups - <AUTHOR>

Hey there, my name is David. More then a month ago with two entrepreneurs that have build https://www.newscurve.com/ & https://managewp.com/ I had an interesting discussion about issue that most entrepreneurs have. Entrepreneurs that chose subscription based business model and SaaS, end up building custom solution for dashboard where they could track business health and metrics.
ChurnBee - Dashboard for Startups www.churnbee.com
I would like to hear you thoughts about this. We have build landing page and developing team have started building the MVP. On 1st of September we will launch our public beta.
What do you think about the problem we are trying to solve?
Best regards, David <comment><USER2> Clickable link: [http://www.churnbee.com](http://www.churnbee.com)

Sounds like a good idea and we could really use something liek this for our upcoming product, [http://checkqm.com/](http://checkqm.com/) which is our first SaaS product. There are other dashboarding apps out there but I don't know of anything specific for SaaS startups.

Looking forward to hearing more and helping out with ideas/testing if you need it!

Mark

<comment><AUTHOR> Mark,

I'm so glad to hear that. Yes, you hit the point. On market you can find huge number of dashboards but our focus is on specific business model, SaaS. Our plan is to build developer friendly API so that you would be able to start tracking you business growth within few clicks.

Mark for now please subscribe and we would inform you about the progress.

If you are interested to take part in customer development interview please mail me at email@example.com I would be happy to talk with you.

<comment><USER2> David - Already subscribed :)

I will reach out to the non-tech guys on my team and potentially be in touch for involvement in the customer development interview phase.

Good luck!

</comment></comment></comment><comment><USER3> Is your twitter button supposed to stick to the left of the screen alone ? :)

Seems like a cool idea :)

<comment><AUTHOR> Hey,

sorry for the late reply. We are using kickofflabs solution for landing page because we are focused on product. Twitter button is predefined in their theme, probably that is the best practice :)</comment></comment>


If soccer were reported like science ... - <AUTHOR> http://uffish.net/archives-new/2010/06/if-sports-got-reported-like-science.html

<comment><USER2> The jargon metaphor was promising, but the bit about authority doesn't work. Soccer rules are intrinsically created by fiat; there is no pre-existing set of soccer rules that we have to discover through a contentious, challenging, and unreliable investigation over the course of decades, they literally are handed to us by an authority. Appeal to authority in such a situation is not a fallacy, it is the only proper basis for argument. I see what the author was getting at, but I think it fails to make the point. Did enjoy the "what's this all mean to the common man?" point, though.

</comment><comment><AUTHOR> The one time I've actually made a pitch to someone for money I was accused of using too much technical jargon. Looking back on it now, many years on, and having read so much here, perhaps it's true.

However, sometimes jargon is not avoidable if real communication is to take place, and the listener really does need to learn. This article is just to raise the question, not to provide any answers.

And I found it funny.

</comment><comment><USER3> If soccer where reported like science won't be called soccer. You know, there's a ball that you kick with your foot.

It's football.

</comment><comment><USER4> But you see, the difference is... soccer is _important_. Science is undertaken by and only of interest to krelboynes.

</comment><comment><USER5> The sports report is aimed at sports fans whereas mainstream science reporting is simplified and aimed at everyone.

</comment><comment><USER6> I like the concept, but I think they missed some of the best jokes.

"A group of American football experts claim to have scored the exact same number of 'goals' as their Slovenian counterparts, despite what many believe to be a computational error in recording the data."</comment>


Wikipedia held page hostage to protect captive NYT reporter - <AUTHOR> http://blogs.siliconvalley.com/gmsv/2009/06/wikipedia-held-page-hostage-to-protect-captive-nyt-reporter.html <comment><USER2> This has already been talked to death here:

<http://news.ycombinator.com/item?id=678330>

Salient detail: WP:BLP, the "bio of a living person" rules (which are the strictest rules in the project) already explicitly covered this case.</comment>


Show HN: TextFilter – Convert web pages into e-books and multi-column PDFs - <AUTHOR> https://bookbinder.co/textfilter/ <comment><USER2> This looks really cool. I love to write blog posts and some of those I'd like to sell on Amazon as ebooks.

For me, it lost my images for some reason (they are relative on the site). I didn't check the option to delete them. Here's a "How to Code" page I wrote to teach JavaScript. This is the one that lost the images.

[https://www.joeldare.com/blog/post/how-to- code/](https://www.joeldare.com/blog/post/how-to-code/)

<comment><AUTHOR> > I love to write blog posts and some of those I'd like to sell on Amazon as > ebooks.

Are you talking about a compilation of articles/essay or one post per book (Kindle Singles)?

> For me, it lost my images for some reason

Sorry about that. I have fixed the issue.

</comment></comment><comment><USER3> is it just me or is the conversion really fast? no lag. what's the backend?

<comment><AUTHOR> Yeah, I'm surprised by the speed as well. It's just a WP site with some customized open source scripts.</comment></comment>


CMake Announcement from Boost Steering Committee - <AUTHOR> https://lists.boost.org/boost-interest/2017/07/0162.php <comment><USER2> CMake is a big improvement, but it's a shame they didn't opt for Buck or Bazel. These two build systems are as much an improvement over the previous generation as autoconf and GNU Make were improvements over random ad-hoc configure scripts. Both take pains to ensure that builds are fully hermetic and fully reproducible, support rich introspection, and run very, very fast.

<comment><USER3> Neither Buck nor Bazel have mature support for Windows. And I very much dislike them for the enormous amount of dependency.

<comment><USER4> But unless you are confined to Windows, that doesn't really matter, does it? Most code for Windows seems to be written using Microsoft's own tools as far as I know, which makes both the people asking for FOSS tools and the people that make FOSS tools to begin with less likely to target Windows.

<comment><USER5> The beauty of CMake, for me, is that it can generate both Makefiles and VS2015 files. An example that I've posted here before about was a userland USB driver backed by libusb. I wrote it in idiomatic C++11 (or C++14, don't remember exactly), and amazingly I was able to generate a .so, a .dyld, and a .dll from the same source code, without needing a single #ifdef. Built using gcc on Linux, clang on OSX, and VS2015 on Windows. CMake would output Makefiles on the first two, and a VS solution file on Windows that I could build. I'm still amazed by it a couple years later.

</comment></comment></comment></comment><comment><USER6> make, configure, autoconf/automake, m4 (I know it's just a macro language), cmake, scons, etc, etc, etc.

Can anyone share a good survey article/paper on the fundamental issues related to build systems, or what is the criteria for a good system (other than popularity)?

Is this a tricky issue because it's tangled with configuration-management and package-management, and OS-filesystem-hierarchy in general? (in which case you can not solve this problem without standardization efforts at multiple levels).

I'm not looking whether to chose CMake or its competitors, but looking for insight into the minds of build-system creators (something deeper than just annoyance with existing tools).

(addition of history discussion would be even better)

<comment><USER7> Section 10.2 and 10.3 of this PhD thesis are pretty good: [https://nixos.org/~eelco/pubs/phd- thesis.pdf](https://nixos.org/~eelco/pubs/phd-thesis.pdf)

</comment></comment><comment><USER8> It blows my mind that CMake is the premier build system for C++. I don't miss that dumpster fire.

Too bad that C++ has invested so heavily in modernizing the language, but it can't invest in a sane, standard build tool. :(

<comment><USER9> There is work on a sane build toolchain (build system, package manager, etc) for C++: [https://build2.org](https://build2.org) (full disclosure: I am involved with the project).

<comment><USER8> I've seen a few "promising" build toolchains; the sad part is that they need to get significant traction to make real progress. Sincerely, best of luck on build2.

</comment></comment></comment><comment><USER10> What did they use before? GNU make? (on Windows?)

It seems like CMake is quite popular now, with LLVM having moved to it a few years ago.

<comment><USER11> b2 / bjam, a custom build tool that was bootstrapped via a script that just builds.

<comment><USER12> If they have a tool that builds it, why require CMake? Why add an unneeded dependency?

<comment><USER13> One huge advantage: if your project already using CMake then you'll be able to include exact version of Boost library into your project as git submodule. Then it's will be built hassle-free across all of your toolchains and platforms.

This will of course require some proper configuration on Boost side, but no doubt they'll handle it.

</comment></comment></comment></comment><comment><USER14> As someone with no real experience with make/cmake other than "I've downloaded this thing, these are the instructions for compiling and installing it", what are the advantages of CMake over make?

<comment><USER15> Over _autoconf_ : Windows support. Otherwise autoconf is superior in every aspect.

<comment><USER6> > Otherwise autoconf is superior in every aspect.

Now this is a statement I didn't expect. I currently use make for my simple projects and, as commented a few mintues ago, looking for insight into what makes a good build-system (ignoring popularity).

I used automake/autoconf briefly but it always tripped me up (though I should admit I never learned it properly).

Could you expand on why you think autoconf is superior?

<comment><USER16> I've used autoconf/automake in some pet projects (a combo that's typically referred to as autotools), and I have to say that the biggest drawback of using that build system is its appallingly bad documentation.

To me, the official GNU docs are unreadable, and the only useful and mildly palatable documentation available on the web comes in the form of blog posts published by people who managed to learn how to get autotools projects to work and took their time to tell the world how they managed to accomplish that feat of technical prowess.

Once that initial part of the learning curve is surpassed, autotools presents itself as a remarkably robust and resilient build system which is highly extensible, which supports virtually all use cases that any user may need to implement.

Build systems such as CMake are started as better alternatives to autotools, and they do succeed in that venture by providing better documentation and presenting a smoother learning curve to accomplish basic tasks. Yet, once a project grows out of the scope of basic use cases.... Everything starts to break, while autoconfs soldier on like a champ.

</comment></comment></comment></comment><comment><USER17> This is the first time I've thought about Boost Build since leaving my last job about 18 months ago. The selection by a few of Boost Build for internal projects at the company was easily one of the most divisive, time consuming, and frustrating decisions I've encountered. Even after lots of wiki docs and training, no one understood that thing. Probably <10% of devs could do little more than tweak existing .jam files without all sorts of problems. And probably <1% actually liked the tool, but it got wedged into a process and stayed there.

</comment><comment> git-pull Benefits to CMake:

IDE Support: KDevelop and CLion both support CMake as a flag ship project file.

Why? A CMakeLists.txt has all you need: the project's debug/release build commands, include's for completions, and library files.

Growing ubiquity: More and more open source projects are build around CMake

CoreCLR, Swift, lua, SFML, opencv, cafe, zlib, libevent, blender, protobuf

Some fast facts about these tools:

\- CMake is complicated. Sure, there are macros. But it's not a bad thing. CMake's complexity is proportional to what it takes to do the job: finding header files and libraries across platforms, detecting compiler features, and so on.

\- This isn't the kind of a job that can be solved by a simple, beautiful 50 line file.

For instance: Stuff like finding SDL2 header files across platforms is hard because OS leave them in /usr/include, /usr/local/include, then within that, some keep them under SDL or SDL2 within that. Ergo, custom modules need to be built to handle the differences that have organically manifested in distros over the years.

\- In order to have software binaries built for as many platforms as possible, a build system needs to be able to test that certain functions exist.

For instance, tmux: [https://github.com/tmux/tmux/blob/45ee118/configure.ac#L427](https://github.com/tmux/tmux/blob/45ee118/configure.ac#L427). The only way for tmux to know if it should "polyfill" getopt is to run a small snippet of code.

If your system has it, it stores HAVE_GETOPT. If not, it has to get fill in getopt at [https://github.com/tmux/tmux/blob/45ee118/compat/getopt.c](https://github.com/tmux/tmux/blob/45ee118/compat/getopt.c) via [https://github.com/tmux/tmux/blob/45ee118/compat.h#L352](https://github.com/tmux/tmux/blob/45ee118/compat.h#L352)

\- Understand the point of these kind of tools is solve a problem: Getting your source to build across a range of platforms, not just Ubuntu!

\- Not to mention, CMake has compatibility for various generator outputs. For instance, it can output Visual Studio projects, XCode projects, and even more popular, Ninja ([https://ninja-build.org/](https://ninja-build.org/))

\- CMake gives leaves helpful debug output when so you can get help when you're troubleshooting (cmake --system-information sysinfo.txt)

<comment><USER18> > This isn't the kind of a job that can be solved by a simple, beautiful 50 > line file.

As a big CMake fan, I don't think CMake's success has anything to do with their super ugly custom language. What CMake does could be a lot more ergonomic, especially from a typical user's standpoint.

<comment><USER13> Typical user doesn't need project generation for 10 different IDEs, OS and packages formats with multiple backends and built-in test support. If you drop half of features then I guess it's could actually become a lot more ergonomic, but in this case there likely tools with better support.

Real pain is that a lot of CMake features are badly documented and most of available information is outdated, but this is usual problem at least for open source C++ projects so it's doesn't cause a lot of frustration and no one try to fix it.

<comment><USER19> Exactly.

Another point I'd like to add here: CMake basically takes to you what autoconf/automake can do (+ 5/10 years of improvement on UX/UI), but it:

a) doesn't use absurd amounts of slow shell code trying to detect features that no (non-EOL) OS has been missing for the last 20 years.

b) is actually reasonably readable. (Ok, m4 is _sort of_ readable, but it a bit weird in places.)

c) is actually _better_ documented (IME) than autoconf/automake. What people usually do for autoconf/automake is just copy/paste another project/snippet. .. hence leading to the 20+ years problem. (I'll definitely agree that the docs aren't great, but that's at least a problem that can practically be fixed unlike the copy/paste problem of autoconf/-make.)</comment></comment></comment></comment>


Solving FizzBuzz with Hypermedia - <AUTHOR> http://smizell.com/weblog/2014/solving-fizzbuzz-with-hypermedia

<comment><USER2> Oh. My. God. This stretches the upper boundary of uselessness another parsec.

<comment><AUTHOR> (author here) It definitely does! But the point was to play with hypermedia (REST), not really solve FizzBuzz.</comment></comment>


Ask HN: Tools for Engineer struggling to design beautiful products - <AUTHOR> I am a backend software developer. I have always struggled to convert my ideas (of apps, SAAS, websites etc.) mostly because my design sense is poor, I lack expertise in HTML/CSS/Photoshop and I struggle to make changes to templates without messing up their responsiveness and aesthetics. I can code well but I can't design. I am looking for better ways, where I can express my design in code(?). What tools does others here use to design websites? How can I quickly and with less learning curve start designing websites better? I truly suck at it and have struggled quite a lot in the past. Any help is appreciated. Looking for tools, libraries etc that can help me be more coder and less designer to design websites.
Side Note: I have a sense of aesthetics and good UI/UX. I know what I want to design but could not master usual tools to design the same. <comment><USER2> I'd say start with Bootstrap and learn Sass. Out of the box all Bootstrap sites/apps look the same but you can achieve some great results by customising the appearance with Sass and coding up some of your own components.

<comment><USER3> You don't _need_ SASS, you can just use CSS. But SASS would make your life a little easier if you hand the time</comment></comment>