Very funny, gdb. Ve-ery funny - <AUTHOR> http://www.yosefk.com/blog/very-funny-gdb-ve-ery-funny.html <comment><USER2> It'd be nice to know what version of GDB this was.

Years ago, I used to be the C++ maintainer for GDB. By the time I left, things like doing this on a live process worked about 90% of the time (up from 0%). It turns out what he's trying to do is harder than one would think, but it should actually work.

Part of the reason it doesn't really work all that often on coredumps is because you often need access to vtables, thunk functions (which you could theoretically execute without a live process in most ABI's, but it doesn't know this). Depending on the class, there may also be runonce constructors (for static data and associated guard variables), etc.

<comment><USER3> [https://stackoverflow.com/questions/253099/how-do-i-print- th...](https://stackoverflow.com/questions/253099/how-do-i-print-the-elements- of-a-c-vector-in-gdb/253101#253101) I _think_ this _might possibly_ work for the core dump? I don't have time to check now myself...

<comment><USER3> Took the time to check and it doesn't work with a core dump. Oh well.

</comment></comment></comment><comment><USER4> In the hw world we debug with waveform viewers (Simvision, DVE, and the like). You can see the value of any signal at any point in time. Move forward and backward in time. Search for when a bus switches, or even for when it switches to a particular value. You can even say "show me all points at which foo == 16'hdead and bar == 16'hbeef and x is high but y is not 8'h7."

Now I understand it's a different problem, but sometimes I think you sw guys live in the dark ages.

<comment><USER5> Oh come on. HW developers don't even use source control.

<comment><USER4> Well, things have improved a lot, but there's way more truth in what you say than there should be.

</comment></comment></comment><comment><USER6> > There is this crazy effort underway to make every linux process > serializable: allow not only memory be [un]dumped but all open file > descriptors status (including bringing socked in the same mode) and other > environment too.

Anyone got any pointers on this?

<comment><USER7> This is called application or process checkpointing. There are/were lots of attempts to get it working under linux, some are more some less complete. It was a hot topic several years ago, but the interest sort of fizzled out since then because virtual machines sovle the same problem. A vm has more overhead but freezing a vm is also much more reliable.

This wikipedia article mentions few approaches: [http://en.wikipedia.org/wiki/Application_checkpointing](http://en.wikipedia.org/wiki/Application_checkpointing)

This page has many more projects, though most are probably dead by now: [http://checkpointing.org/](http://checkpointing.org/)

Both are incomplete, googling "linux checkpointing" returns things not mentioned in either, like [https://ckpt.wiki.kernel.org/index.php/Main_Page](https://ckpt.wiki.kernel.org/index.php/Main_Page)

<comment><USER8> Yep, this is very important for grid computing where a user may log into an organization's workstation and the grid job running on the workstation needs to be evicted. With process checkpointing, you can resume the work later (perhaps even on another node). Without it, all of the intermediate progress is discarded.

</comment></comment></comment><comment><USER9> > still-not-boundary-checked [...] std::vector

Huh? vector::at() is boundary-checked. So you can choose whether you want to pay for boundary-checking or not.

<comment><USER10> You can't switch between .at() and [] between two builds. There is a lot to be said about MSVC's checked iterators, but it sure does catch a lot of mistakes during debug builds. Any sane STL implementation should have something similar.

<comment><USER11> FYI, with libstdc++ (GCC) you can define _GLIBCXX_DEBUG and get a lot of runtime checks too, including bounds checking on vectors.

[http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch30s...](http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch30s04.html)

</comment></comment></comment><comment><USER12> _> Nobody's holding a gnu to your head._

comment reproduced here without further context

<comment><USER13> I noticed the same and was resisting the urge to post it here. :)

I certainly hope it was intentional. :D

</comment></comment><comment><USER14> Yes, GDB can feel a little crappy at times. But on the other hand it is quite versatile in that it can debug programs written in several different languages running on several different hw architectures, user space or kernel space, code running on bare metal or in QEMU, etc and remote debugged over a serial line or network. All this comes at a price.

GDB can never be as nice as a language specific, graphical point and click debuggers that some programming environments have which are built in conjunction with the compiler/interpreter for that language.

And the problem is not only GDB, it's the whole infrastructure that is involved, binary formats, debug symbols and protocols, binutils, etc. It is easy to point the finger at GDB but there's only so much that GDB can do in the environment(s) that it works in.

There's plenty of room for improvement but it's not only GDB that would require work, it's the entire software ecosystem.

<comment><USER15> Well, I guess it fits right in with GNU: If it sucks, add more features and port it to more platforms.

</comment></comment><comment><USER16> From the comments:

 _Debugging std::vector isn 't too bad. You can dig in to the... _

Whenever a programmer says "[X] isn't too bad" this is the possible signature of an opportunity.

</comment><comment><USER17> Yet, C++ debuggers on Windows and Mac OS X do this since ages.

<comment><USER18> Yeah this is clearly a problem with gdb, not std::vector. Really gdb is pretty rubbish and hasn't been improved for many years. LLDB should be much better.

<comment><USER19> That's a "problem" with the compiler, not gdb. Also, the "problem" is that the compiler actually optimized the code, when ordered to do so, instead of just pretending it did (like MS tools do when debuging). It's also a very usefull "problem" to have around.

I really doubt LLDB can discover what code operators execute if the compiler does not include it at the binary.

<comment><USER20> Probably the compiler should both inline it and include a standalone version when debugging is enabled.

<comment><USER21> No, because you need to debug the code you're actually running, not some other code that's easier to debug.

<comment><USER20> I believe we're talking about a function such as std::vector::operator[]. You wouldn't usually be debugging a particular attempt to access an element of a vector, you'd have a vector and want to easily see what's in it, using a debugger-constructed call to the function.

</comment></comment></comment></comment></comment></comment><comment><USER22> don't know how others do but I find I have to recompile a program without optimization flags in order to be able to fully debug a live C++ program. Understandable but annoying.

<comment><USER17> This applies to any language with AOT compilation to native code. There are lots of optimizations that cannot be properly mapped back to the original source code.

In most languages compilers are allowed to do whatever they want as long as the semantic outcome stays the same.

</comment></comment><comment><USER23> Yeah I avoid gdb like the plague. Any other platform, any other debugger. Even Microsoft VS does better.

<comment><USER24> "Even Microsoft VS does it better?" I have yet to see any debugger that's better than Microsoft's. Their compiler is behind GCC, clang, and others, but their debugging environment is unmatched.

<comment><USER25> JVM code hotswapping is still more feature complete than edit and continue for managed code, which is still way too conservative to be very useful. It is not a clear overwhelming win for VS (perhaps it is for native, but I don't work with C++).

</comment></comment></comment><comment><USER26> "Unices"???

<comment><USER27> Plural of Unix.

</comment></comment><comment><USER28> "No really, there used to be Unices with a program called undump that did just that."

Isn't that how they used to build emacs, there was some multistage bootstrapping procedure that culminated in undump'ing a thing that got turned into a binary.

<comment><USER29> emacs and some of the TeX programs worked that way. Maybe they still do. I haven't looked at that in a quarter century.

To elaborate: the programs would do all of their initialization and loading of things that would be used in any run, then dump themselves. The result of undump was an executable that had already done all of its boilerplate loading and was ready to process its arguments and inputs. It was bigger, since it had a bunch of heap stored, but it was better than hammering away on your CPU at 1 million instructions per second.

<comment><USER3> That's pretty cool. Is there a way of making a java program do this? The JVM startup time on a desktop kills me.

<comment><USER30> Java Web start or similar. It was called TSR in the DOS world "terminate and stay resident".</comment></comment></comment></comment>


Hacker Dojo's Katy Levinson interviewed - <AUTHOR> http://venturebeat.com/2012/08/10/hacker-dojo-interview/

<comment><USER2> This interview really helped me feel the excitement Katy has for Hacker Dojo and all the awesome stuff they do, as a result I backed the Kickstarter even though I don't live in the area. It would be a shame for a great place like this to be shut down due to bureaucratic nonsense.

</comment><comment><USER3> Hacker Dojo is awesome. To help the team: [http://www.kickstarter.com/projects/384590180/an-events- spac...](http://www.kickstarter.com/projects/384590180/an-events-space-and-a- design-studio-for-hacker-doj)

<comment><AUTHOR> It looks like the $30,000 funding goal has been reached, although I'm sure they'd appreciate more donations/backers.

<comment><USER4> Yeah, our total goal is $250, and we are at $165 of that

</comment></comment></comment><comment><USER5> In-depth interview (e.g., not a lot of editing from VB) that explains what Hacker Dojo is doing and trying to do going forward as well as a calm look at what the City of Mountain View is asking the Dojo to do to fully occupy its space.

</comment><comment><USER4> [I am Katy.] If you'd like to listen to me say more derp shit, want some help with robots, kickstarters, startups, running communities, or just want me to cook you dinner, my time is being auctioned off to benefit the Dojo at <http://goodwillion.com/lot/14798>

</comment><comment><USER6> I like the interview, but the transcription is annoying whenever it discusses dollar amounts. So I present my hacker's guide to pronunciation:

      Phrase          How it's pronounced
      </comment><comment></comment><comment>    </comment><comment></comment><comment></comment><comment></comment><comment>---
      100             One hundred
      $100            One hundred dollars
      $100 dollars    One hundred dollars dollars</comment>


Kickstarter - Social Lending Meets Venture Capital? - <AUTHOR> http://kickstarter.com/

<comment><USER2> It isn't lending when you are giving the money away.

</comment><comment><USER3> No, because that would break even more laws than social lending did in the first place.

These are donations apparently. I don't get it.</comment>


Silicon Valley unemployment rate jumps to 'frightening' 9.4 percent - <AUTHOR> http://www.mercurynews.com/ci_11847980?nclick_check=1 <comment></comment>


Ask HN: How best to introduce young children to computing? - <AUTHOR> I have a four-year-old child who I'd like to gradually introduce to computing. I don't have ambitious dreams of creating a coding prodigy; I do remember a (late) childhood of games and tinkering and would like them to be able to explore the possibilities.<p>How have my fellow HN readers attempted this? Games first? Edutainment <shudder>? Start with an emulated Apple II and advance the state of the art at twice real-time from 1977? I'm at a loss. Your expertise or war stories would be appreciated. <comment><USER2> I think that's putting the cart before the horse. With adults, strong math and language skills have been much stronger indicators of coding performance than specific training. So pin-down the basics, and you get a potentially great coder for free!

If I recall childhood correctly, they dumped BASIC/LOGO on the class, had us grind through a few cookbook recipes, and none of it was particularly inspiring. To a kid's mind, it's like, " _So, I type all of this into the computer, and all I get is a stupid circle?!_ " Papert is a dead-end.

Fast-forward to high school--after algebra, geometry, and calculus--and the value of the computer becomes apparent.

</comment><comment><USER3> I really liked playing with Legos when I was super young (idk maybe 5 to 12?) I feel like that primed me a bit in terms of assembling various components to achieve an end-goal. Actual computing stuff? Consider that young saplings don't have the intellectual maturity to actually grok computers until much later.

Sorry my comment doesn't help more.</comment>


Practicality hacks - <AUTHOR> http://rulesofthumb.org/ <comment><USER2> is the url broken? what are you trying to show us?

<comment><AUTHOR> What do you mean? The url works for me.

Practicality hacks = rules of thumb</comment></comment>


Show HN: Get an alert when unknown devices join your network - <AUTHOR> https://github.com/joarleymoraes/net_guard <comment><AUTHOR> I know there are probably many other tools for the same purpose, but just built this while learning about ARP protocol.

</comment><comment><USER2> ifplugd may be similar tool, or a tool to execute a variation on this tool.

<comment><AUTHOR> Could not find the same use case on that tool. But it's interesting anyway.</comment></comment>


$1B solar plant was obsolete before it went online - <AUTHOR> https://www.bloomberg.com/news/articles/2020-01-06/a-1-billion-solar-plant-was-obsolete-before-it-ever-went-online <comment><USER2> Kind of sad that the founder feels obligated to say it's a "tragedy of mismanagement" or a tragedy of _anything_... as if the story is any more dramatic or Shakespearean than the simple truth: Probably this method just isn't as efficient as others. And I mean, we had to actually try building this thing to find that out, so there's no shame in that.

<comment><USER3> From what I gathered, it seems like it would have been great if it could have been created in a couple years. But it took too long to the point where it became less efficient than alternatives.

</comment></comment><comment><USER4> Money well spent IMO.

<comment><USER5> Money terrible spent, just another billion poured down the drain on inefficient renewable energy technologies that would have been much better spent developing better technologies.

For a billion dollars you could hire five hundred brilliant (or at least clever) scientists and pay then each $200K pa for ten years to work on promising technologies in photovoltaics, ranging from sexy stuff like multiple exciton generation to prosaic stuff like how to make silicon sheets cheaper.

<comment><USER6> building this thing is part of the whole "developing better technologies" thing

<comment><USER5> Sure, in the same way that trying to build a ladder to the moon might eventually lead to inventing rocketry.

</comment></comment></comment></comment><comment><USER7> Most of the article is behind a paywall, so I couldn't find out: More efficient solar panels have been made since, but has the price of electricity dropped so much that this plant is now not economically viable?

<comment><USER8> The plant requires more upkeep than most solar plants.

It sounds strange that a staff of "dozens" would make it unprofitable, though — most coal/oil/gas plants employ dozens of people _and_ pay for their fuel.

<comment><USER7> But it's not competing directly with solar plants, but only with the price it's able to sell electricity at. That there are some new solar plants being built that are more efficient is irrelevant, at least until there are so many of them they push down the price of electricity.

<comment><USER9> > at least until there are so many of them they push down the price of > electricity.

Which will happen long, long before the capital cost of this plant could be paid off.

<comment><USER8> Which ought to mean that the company that owns the plant goes bankrupt, the plant itself is sold by the receivers, and the new owner runs the plant profitably... IFF its operating cost is low enough, which ought to be those dozens of staff and the materials they need.

</comment></comment></comment></comment></comment><comment><USER10> paywalled?

This seems interesting, though. Does the plant just become a stranded asset or is there still a way to get returns out of it?

<comment><USER11> TLDR

> Its power cost NV about $135 per megawatt-hour, compared with less than $30 > per MWh today at a new Nevada photovoltaic solar farm, according to > BloombergNEF, which researches fossil fuel alternatives.

There's also a graph that adds to the sadness but you know don't get too excited.

</comment></comment><comment><USER12> Taxpayers remain on the hook for $737 million in loan guarantees. Another one that left taxpayers on the hook for $530 mm - Solyndra (1)

(1)[https://www.factcheck.org/2011/10/obamas-solyndra- problem/](https://www.factcheck.org/2011/10/obamas-solyndra-problem/)</comment>


The Mystery of the Phantom Page Turner - <AUTHOR> http://www.collectorsweekly.com/articles/the-mystery-of-the-phantom-page-turner/ <comment><USER2> Most people apparently don't get the "uncut pages" joke in the Great Gatsby.

But I'd never heard of a page turner (except when describing a book itself). It's hard to imagine how it could be useful!

<comment><USER3> That's because people don't understand how books are made.

They were printed on a long paper then folded onto itself which creates the pages and then stitched in the middle, the folds are then are cut on the sides to free the pages.

Books today are usually precut and then glued, I did however encounter a few books with the odd uncut page usually texts books.

Other than that page turners were and are used for high value books and in some cases sacred books to avoid damage (or if touching the book is taboo) Jewish synagogues for example use a "pointer" to read from the scroll it self because those scrolls are usually to valuable to touch. [https://en.wikipedia.org/wiki/Yad](https://en.wikipedia.org/wiki/Yad)

<comment><USER4> >Books today are usually precut and then glued,

Actually, most books are still printed from folded sheets. The folds are shaved off the signatures in the bindery (3 sides for a sewn binding, 4 sides for a glue bind).

</comment></comment></comment><comment><USER5> When I was in college I found a number of books on the shelves which had uncut pages; I used to just use my student ID to open them up. It'd have been great to have had a paper knife to do the job.

Funny how folks forgot so quickly what uncut books were like, when we still have them on our bookshelves today!

<comment><USER6> Yeah, our extortionately expensive physics text books at university came completely uncut, as they were printed as cheaply as possible - didn't have a paper knife, so ended up doing it by hand - ragged and torn pages everywhere!

</comment></comment><comment><USER7> Ivory and otter foot, together at last.

</comment><comment><USER8> I had never heard of a page turner before in my life and know nothing of antiques in general. Yet, my first guess looking at the picture and before reading the article was that it must have been some kind of dull knife for opening uncut book pages.

Now you're telling me antique dealers couldn't figure this out before that guy came in? I call bullshit.</comment>


Tracking the World's Appetite for Innovation - <AUTHOR> http://bits.blogs.nytimes.com/2008/01/23/tracking-the-worlds-appetite-for-innovation/index.html?ref=technology

<comment><USER2> Their methodology is explained here: <http://www.iii-p.org/news/iiip-080122.html>

_The IIIP Innovation Confidence Index was developed around three questions incorporated into the annual GEM survey of individual entrepreneurial activity worldwide. The questions were added in selected countries representing diverse size and income in Asia, the Middle East, South East Asia, Europe, North America and South America. Representative samples of adults between 18 and 64 years old were asked if, over the next six months, they were likely to buy products or services new to the market, they were likely to try products or services that use new technologies for the first time, and whether new products and services will improve their lives._

That last sentence is crucial. If I had to explain the results I wouldn't say people over 40 have less confidence in innovation. I'd suspect that they have a better understanding of the things in life that do matter to them and can be more selective in their choice of innovation.

</comment><comment><USER3> The article's mention towards further research on if the drop in people over 40's innovation confidence is due to exhaustion or wisdom is cool, but I'm more interested in if those differences will extend over time or will, as more people who have grown up in the technology generations, push this distrust of technology up in age.

From my perspective it is generally the older you are the more you don't understand technology (yes I know there exceptions but in general). Besides 40 seems like a random age for people to start becoming wise to technology suddenly. I haven't heard of research into brain physiology that fundamentally changes after your early twenties.

It seems a lot more likely that every one born after forty years ago grew up with a more technology than older generations, who just never figured out what the deal is with technology.</comment>


We Survive the Surveillance Apocalypse - <AUTHOR> https://www.thehour.com/business/article/How-we-survive-the-surveillance-apocalypse-14943110.php <comment><USER2> You're missing the very key word "How" at the beginning of that sentence.

I'm not convinced the author is correct that we can recover our right to privacy, but I do remain hopeful.</comment>


The Transhumanism Revolution: Oppression Disguised as Liberation - <AUTHOR> https://quillette.com/2018/07/11/the-transhumanism-revolution-oppression-disguised-as-liberation/ <comment><USER2> > removing reproduction from our bodily purview does not only liberate us from > the body, it also subjects us to the tyranny of the mind.

The "tyranny of the mind"? Being completely subject to one's mind without outside constraints (or, realistically, bring subject to one's mind with fewer outside constraints than in the _status quo ante_ ) is not reasonably described as tyranny. And there is no argument advanced for this description, it's just tossed out as if tossing out the word tyranny is sufficient to establish the claim.

> Liberation from reproduction is liberation from sex,

While obviously reproduction is a central (though arguably not the sole: it's social role cannot be ignored) evolutionary function of the sex drive, the human sex drive isn't restricted to a reproductive context on a way that even the total elimination of a bodily role in reproduction would eliminate the drive or function of the sex act, so the implication claimed her I'd not justified.

> At which point, gender truly becomes fashion with no remaining foundations > in the story of human origins.

Ascribed gender and gender identity are already separate things from sex (well, ascribed gender is, there is actually a strong reason to believe that gender identity is in part an element of the complex of sex-related inborn biological traits that come in a wide variety of combinations but two dominant clusters which have been labelled as typically male and typically female.)

<comment><AUTHOR> > the human sex drive isn't restricted to a reproductive context on a way that > even the total elimination of a bodily role in reproduction would eliminate > the drive or function of the sex act, so the implication claimed her I'd not > justified.

This is counterfactual, of course, and very "tossed out" and suspect; it seems reasonable that if we can cleave the body from the mind, then we could ablate the sex drive from the mind. But all of this is moot; the liberation she speaks of us there regardless. We don't have to have sex to reproduce anymore; that's certainly liberation.

</comment></comment><comment><USER3> It's awesome to see that even Hacker News isn't immune to transphobia and falling into the lie that being transgender is ignoring biology. What a load of trash.

I looked up the author, and discovered that Libby Emmons is a transphobe (or more accurately a trans-exclusionary radical feminist), at least from reading this one in which she tries to posit that trans women are just in it because we're objectifying misogynistic parodies of women. Great. [http://thefederalist.com/2015/06/03/how-the-hypersexual- tran...](http://thefederalist.com/2015/06/03/how-the-hypersexual-trans- movement-hurts-feminism/) (check out that weak attempt to reference Kant's thing in itself near the end and how it completely misses the point that it is non-physical- which is exactly what gender is insisted to be by many trans people)

<comment><AUTHOR> It's awesome to see that a mere post of an article is enough to conclude that the whole of Hacker News is transphobic, let alone the poster. Mia culpa—I will delete the post soon; I will also burn the article if I can by some means find it in book form.</comment></comment>


Ask HN: LDAP as a service - <AUTHOR> Hi. I'm contemplating the idea of a Saas business, a LDAP as a service : a LDAP server and a web interface for account admin and users self servicing (password update/reset with tfa, account editing, org chart viewing, directory index..)
The idea it to help medium sized orgs to centralize credentials for third party solutions (like every oss project with LDAP integration) and reap the benefits : better security, less admin tasks, etc. It won't be something like a captive portal, or a complete SSO solution.
Each customer would get its own VPS instance with the solution deployed on it (LDAP server, web server..), for $149/m.
Suggestions ? <comment><USER2> Medium sized orgs that want LDAP (and might not have the necessary Linux / Unix skills) just use Active Directory. Also, if you don't wrap it in Kerberos, it might be difficult to gain adoption. I say this as someone considering themselves a LDAP SME having setup multimaster openldap with 68 slaves globally using delta syncrepl

Good luck!

<comment><AUTHOR> Orgs do really expose their Active Directory server on the internet, to integrate with external servers ?

<comment><USER2> Not entirely sure of your question. I'd think exposing your ldap service to the open internet is asking for very very bad things to happen.

I'd expect a service like this would use Amazon VPC, a secure VPN to access it, or something like that. What kind of data do you envision being stored in this directory, user credentials, or other things?

At $last_job, I was on a mission to put everything in LDAP. There is a custom OpenLDAP schema that the gnome.org sysadmin team (which I am an alumni member of) which allowed users to put in their ssh pub key via a webui. Hosts then run a cronjob every XX time period that put those ssh keys down (in a root owned directory/file so users can't change them), and was pretty slick. I also put DNS zone info and sudoers information into LDAP, as I already had a badass distributed datastore, ldap :)

That being said, can you come up with a real use case where your service makes sense? Active Directory is hard to compete against, it is super cheap and a pretty solid kerberized ldap for SMBs.

<comment><AUTHOR> Classic use case: org want facilitate+centralize users management on owncloud+apache webdav+other oss app on external server (internet). I only saw AD used in intranets, if orgs would expose it on external servers (with/without VPN), then I'd better find an another idea.

<comment><USER2> Capitalism has a way of weeding out bad ideas. I say go for it and see if there is interest.

FYI for that use case, most companies (mine included) use SAML ([http://en.wikipedia.org/wiki/Security_Assertion_Markup_Langu...](http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language))

In specific, we use SAML to have our internal AAA LDAP infrastructure validate logins for a few cloud services such as workday and attask.

Might be worth looking at saas (saml as a service :D) as well.

Edit: This company does SSO with SAML 100% and they support pretty much all of the big apps you'd expect. [http://www.onelogin.com/partners/partner- up/](http://www.onelogin.com/partners/partner-up/)

<comment><AUTHOR> I looked at SAML, it's a possible addition to the service. It may be touchy to integrate (opensaml-java), but definitely doable.

</comment></comment></comment></comment></comment></comment><comment><USER2> HN won't let me respond to your last comment, but I think that's a reasonable plan. Using LDAP directly over the internet in general sounds like a bit of a risky proposition. Perhaps do both that and SAML, then you make everyone happy. Again, good luck, I hope I was able to help you firm up your ideas.

<comment><AUTHOR> I digged some docs, I think I'll do LDAP+web for user self-servicing+SAML with Shibboleth+maybe OpenID. That will complicate the automated customer setup, but it'll cover many use cases.

Thanks for the help!</comment></comment>


Ask HN: IaaS/PaaS providers for India region - <AUTHOR> I am working on a mobile app for the Indian subcontinent and I need to locate an IaaS/PaaS provider for the backend. Anybody have any first-hand experience with deploying on such a platform? I am trying to minimize network latency. <comment><USER2> You can go with DigitalOcean Singapore Location. Pings under 100ms.

You can use my affiliate link to sign up: [https://m.do.co/c/4d7fb2079a96](https://m.do.co/c/4d7fb2079a96)

<comment><AUTHOR> can you speak to why digital ocean over other providers?</comment></comment>


How China Took Center Stage in Bitcoin's Civil War - <AUTHOR> http://www.nytimes.com/2016/07/03/business/dealbook/bitcoin-china.html?module=WatchingPortal&region=c-column-middle-span-region&pgType=Homepage&action=click&mediaId=thumb_square&state=standard&contentPlacement=6&version=internal&contentCollection=www.nytimes.com&contentId=http%3A%2F%2Fwww.nytimes.com%2F2016%2F07%2F03%2Fbusiness%2Fdealbook%2Fbitcoin-china.html&eventName=Watching-article-click&_r=0 <comment><USER2> See [https://news.ycombinator.com/item?id=12007376](https://news.ycombinator.com/item?id=12007376)</comment>


Uber's actual contribution to American employment is relatively trivial - <AUTHOR> http://www.theatlantic.com/business/archive/2015/11/uber-is-not-the-future-of-work/415905/?single_page=true <comment><USER2> So let's have a look at one quote by Uber:

 _Most tellingly, Plouffe said that "for most people, driving on Uber is not even a part-time job …it's just driving an hour or two a day, here or there, to help pay the bills."_

...and let's compare it with another associated statistic:

 _The Bureau of Labor Statistics reports that from 2007 to 2014 the bottom 87 percent of workers faced falling or stagnant wages, and the bottom 80 percent endured falling or stagnant compensation (which includes wages and benefits)._

Yeah, does kind of sound like the "gig economy" is the future of work, because if there's such a blatant stagnation of wage growth, then it's not surprising people will look to any low-barrier entry point to making some money. Pretty disheartening situation that I don't see changing any time soon. I thought the white-collar "independent contractor" scenario wasn't very appealing, and watching it seep into a bule-coller, low-skill business model doesn't sit very well with me. YMMV.</comment>


What The Heck Is Responsive Web Design? - <AUTHOR> http://johnpolacek.github.com/scrolldeck.js/decks/responsive/

<comment><USER3> Wow, what a nice surprise to see my creation on HN.

To all the critics, I built this to be a slide deck on responsive web design, not a responsive website itself. Its main purpose is for me to launch full screen on Chrome and show on a projector or tv. Its for educating my co- workers on the subject (haven't even had a chance to actually give a presentation yet). Can I at least get some points for using rem's? That's pretty cool, right? haha

Anyway, I did this over my winter break - as well as creating Scrollorama and scrolldeck.js and taking care of a new baby (yay! my 2nd son was born dec. 6). Thanks for checking out my stuff. Hope it is useful for some of you!

By the way, I'm currently rebuilding this using Bartek Szopka's excellent impress.js framework. <http://bartaz.github.com/impress.js>

</comment><comment><USER4> For a web design to be truely responsive and mobile friendly you need to do more than just move pixels about and change the size and layout of DIVs with media queries. A truely mobile-friendly site will serve a more contextually sympathetic experience to a person holding a mobile device, an experience that avails of all the additional contextual hints that you have available to you on mobile: location, heading, device orientation etc.

You can ignore all of this and create something that will render on a small screen, and say your mobile site is "done" but to do so is to miss out on the opportunities that mobile web presents. Doing this right is much harder of course, but there's a reason why almost all of the Alexa top 100 sites serve entirely different HTML to mobile devices, rather than taking a media queries approach.

There's a summary of all the ways to achieve these goals here: [http://mobiforge.com/starting/story/mobile-web-content- adapt...](http://mobiforge.com/starting/story/mobile-web-content-adaptation- techniques)

<comment><USER5> The thing is: the stuff you serve for mobile is the only stuff worth serving. Anything else is noise and filler.

<comment><USER6> This is said a lot, and I have to disagree. The content I serve to someone on a large monitor is going to be different than what I serve up to someone on mobile because I understand what the different needs and desires are for the user groups on each device, not because anything else is noise and filler.

</comment></comment></comment><comment><USER7> Wow. For an article with that topic, that sure was painful to read on an iPad. Since a bunch of content entered the page on scroll (and iPad pauses DOM changes while scrolling), I had to constantly scroll small amounts to make sure I wasn't missing anything.

<comment><USER8> It was painful in a desktop browser too.

It's ironic really that such terrible layout was born from a document detailing optimal layout concepts

<comment><USER9> What I find the most ironic is that such new and hip technology (neat javascript tricks) is used to imitate the lamest and most boring forms of presentation (powerpoint) ever.

<comment><USER10> What I find the most sad is that someone will think this is a really good presentation technique and start using it, while clients will not know what hit them.

This is a really good example of all that can go wrong when HCI is done this way.

</comment></comment></comment></comment><comment><USER11> I figured out you could use the space bar to advance through the "slides", which made the presentation just about usable. I then instinctively - <USER2> possibly stupidly - tried to use backspace to go back a slide. Obviously, I arrived back at HN. I didn't go back to finish reading.

Interesting subject matter, poor presentation.

<comment><AUTHOR> just use the arrow keys to navigate back and forth trough the slides

<comment><USER12> Ah. Much better.

I had the same problem as other posters--this presentation more or less breaks scrolling (it still works, but is very awkward).

Using the left/right arrow keys to navigate the presentation works quite well. To bad that navigation tip isn't included on the first slide or on that persistent gray bar or something. It makes a huge difference.

</comment></comment></comment><comment><USER13> Terrible website, I gave up reading in frustration.

</comment><comment><USER14> It wasn't until I came back here that I found out you should use arrow keys to navigate. Scrolling with the scroll wheel is so bad most people would think it was broken. With the arrow keys it works but doesn't make up for the first impression of it being broken.

<comment><USER15> The effect is not bad if you scroll with the touchpad, but in a couple of slides I thought it was stuck.

</comment></comment><comment><USER6> For those interested in some neat examples, <http://mediaqueri.es>

</comment><comment><USER16> For anyone having problems with that site, check out these examples. It should convey the idea:

<http://mediaqueri.es/>

</comment><comment><USER17> _"Stop Thinking in Pages. Start Thinking in Systems."_

I actually prefer browsing pages than systems.

</comment><comment><USER18> Oh my, this site failed so miserably on my browser (luakit)... All the animations just went wrong, bits of the page were missing or cut beyond the screen, stuff got jumbled and hid the text... Maybe I'm just too textually oriented, but that's not the way I would like to browse the Web.

</comment><comment><USER19> the content is great, but presentation annoying as hell. should have just put it as static text.

</comment><comment><USER20> Anyone have any thoughts or opinions on the books listed in the presentation?

<comment><USER21> Ethan Marcotte's book (<http://www.abookapart.com/products/responsive-web- design>) is pretty good. Not too long, and yet goes over a lot of theory and examples on how to achieve a responsive design.

</comment></comment><comment><USER22> Good ideas, I've been trying to get my company to jump on this bandwagon but they haven't been too 'responsive'... seriously.</comment>


I Broke the Official Jeremy Renner App by Posting the Word "Porno" on It - <AUTHOR> https://theconcourse.deadspin.com/i-broke-the-official-jeremy-renner-app-by-posting-the-w-1837804181 <comment><USER2> Wanted to read and enjoy this, but in typical Deadspin fashion, tons of superfluous unfunny writing built in.</comment>


Do you use blank lines in your code? - <AUTHOR> http://programmers.stackexchange.com/questions/17305

<comment><USER2> No. I also write pre-minified code. Whitespace is for amateurs.

<comment><USER3> At the risk of sounding humourless, this a joke right?

<comment><USER2> Lol, yeah only kidding - I don't write minified code. No, I just skip that layer entirely and type pure gzipped data.

edit: but seriously, yeah I use tonnes of whitespace and bucketloads of comments. No point making things harder than they need to be. Also commenting helps you solidify your understanding of the code.

I tend to write like this:

      while(foo) {
        code;
      }

rather than

      while(foo)
      {
        code;
      }

I use newlines to separate tasks in the code. Example:

      // do the foo check
      if(foo){
        removeFoo();
      }

      // now perform the bar operation
      if(shouldDoBar) {
        performBar();
      }

      // now return
      return fooBar;

<comment><USER4> Remove every comment in your last example and see if you can still read it.

I believe you will find it easier to read.

<comment><USER2> just an example, but thanks for your valuable opinion.

</comment></comment></comment></comment></comment><comment><USER5> What's the difference between programmers.stackexchange.com and stackoverflow.com? Aren't they pretty much the same?

<comment><USER6> I am not sure this is not out of control already.

In my opinion, there are too many sites under this umbrella and when I have a questions I am not sure where it shall be posted anymore.

<comment><USER7> I find the "stackoverflow" style app to work pretty well regarding getting and finding answers, but it seems like Jeff/Joel don't trust it to work when they break things out into all these other sites like this one. Do people really just browse these type sites? And even if they do, doesn't tagging solve most of that?

</comment></comment></comment><comment><USER8> I don't agree with the space in the users given example. If those were each 4-5 lines of distinct functionality it makes sense but if every line gets called "distinct" and you have almost as much white space as text that's silly.

I definitely think it improves readability to break up these chunks of functionality. The problem, though, is I can't think of a good example that I don't think will have someone tell me to put them in two different methods...

<comment><USER9> Maybe different philosophies apply to newer languages, but I've heard it said that in C your main functions should be more than just a list of function calls, and a function should only be extracted if it's either impossible to read otherwise, or used more than once. Maybe that's less important now that function call overhead is minimal compared to everything else __ _.

_ I will note, however, that function call overhead still adds up. Qt4 on GNOME is significantly slower delivering events than it needs to be, as every single call stack is over 50 methods deep.

</comment></comment><comment><USER10> I think that's like asking if you use salt when you cook. I can't imagine how you'd get things done any other way.

Here's a quick & dirty Java class file parser I have open in the other window, a representative sample of how I work. I can't imagine how such a thing could be written legibly liberal use of blank lines.

        sub parse_class_file {
          my($fn) = @_;

          my ($name, $super);
          # my $interfaces = [];  # Not used yet

          my $constant_pool = [];
          my $fields = {};  # Referenced by name
          my $methods = {}; # Referenced by name_description

          open(C, "$fn") or die("Could not open '$fn': $!\n");

          # Cafebabe
          my $magic = read_field(\*C, "H*", 4);

          # Class file format version
          my $minor = read_field(\*C, "n");
          my $major = read_field(\*C, "n");

          # Load constant pool
          load_constant_pool(\*C, $constant_pool);

          # Class name, inheritance
          my $access_flags = read_field(\*C, "n");
          my $this_class_index = read_field(\*C, "n");
          my $super_class_index = read_field(\*C, "n");

          # Load interfaces -- just throw them away for right now
          my $interface_count = read_field(\*C, "n");
          for(my $i = 0; $i < $interface_count; $i++) { read_field(\*C, "n"); }

          load_fields(\*C, $fields, $constant_pool);

          load_methods(\*C, $methods, $constant_pool);

          close(C);

          return( { name => $constant_pool->[$this_class_index]->{name},
                   super => $constant_pool->[$super_class_index]->{name},
                   fields => $fields,
                   methods => $methods } );
        }

</comment><comment><USER11> I code like this. It is easier to identify code structure.

      for (int i; i < 10; ++i) {
        if (i % 3 == 0) {
          continue;
        }
        array[i] += 2;
      }

I use blank lines to separate declaration and other codes, and logical block within a function, and also between functions.

It is no use for me to put blank lines between statements. It would better to view structure in one screen. Scrolling between pages make me tired too.

<comment><USER4> I also like code like this. Sometimes a closing curly brace will pass for a blank line.

And ya, scrolling is the enemy.

</comment></comment><comment><USER12> Yes I use blank lines.

On a related note though, there's a lot of code in my current work project, and my previous one, where people separate every function definition with a comment line like

//</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>====

Some files even have two lines like that between every function. It drives me nuts, in a minor way. I don't feel like I've ever had a problem seeing where functions begin and end, so I don't understand the point of those comments.

We have a coding standard document, and there's nothing in there about doing this, yet there are several slightly different styles of it than people seem to have picked up independently. Is this a game industry quirk? Is it common elsewhere? When did it start, and WHY?

Emacs can be set up (with Cedet) to draw lines between functions without any comments needed (so no wasted space either). I've had that on before too just to see if it changed my mind, but no, I don't like that either. But at least if everyone's IDE would do that, it could be a personal preference.

<comment><USER13> I know what you're talking about pretty well (I used a macro to generate those things). I always figured it was a trace of a more rigorous documentary scheme used for automatically generating scripting documentation or something. Like once you get used to seeing them, you want them between every function, or if you start writing a function you always start with the hedgerows. Not sure.

I hadn't seen those specifically at other developers, but I had seen a row of slashes between functions at a couple of other PC developers. I don't recall seeing them with console folks, though.

<comment><USER12> My background and current project are PC-centric, but there are some folks here who came from console development who have that style too.

And yeah, the instance where there are two lines of this are actually lines of slashes, the line of = is just one of several versions.

I do remember some old IDE (Metroworks on Mac? I barely used it) would recognize a particular comment style like this and create a kind of table of contents dropdown list, using these to break the list into sections. But putting them between every function would have removed the value in that too.

<comment><USER13> That's right, the line of == is just in the engine stuff, wasn't it? The tools guys always do slashes for their Doxygen stuff. I remember seeing the == when I worked on Daikatana, but now that I think of it, it was in the Quake 2 source between sections. So actually I guess that does explain things...

I never saw it in console work but that was all pre-Xbox. The Xbox was much, much nicer to program on than the GameCube or PS2 because it was all integrated into Developer Studio and fast instead of in some crazy flaky debugger. So a lot of places went to Xbox as their primary development console. As a result, I presume many recent console programmers are much less divergent from the PC-centric world anyway.

</comment></comment></comment></comment><comment><USER14> Inside of my JavaScript functions I use a blank line to separate my declarations (var) from the body and then my body from the return.

</comment><comment><USER15> In my CSS and javascript, I use a couple blank lines to separate major sections of my sites, and a single blank line to separate widgets in a section, so that when I'm quickly scrolling through code, I can tell when I'm going from one widget or section to the next. In my HTML, I only put blank lines between major sections, and use comments like "end of superwidget area" to denote the ends of complex widget areas.

So when the code has an apparent structure, like the nested divs of HTML, I figure the lines are superfluous, as the fine structure is somewhat obvious, and I help myself with comments where it gets hairy. When the code is a big pile of CSS or javascript, without the obvious structure of HTML, a good spacing system really helps me keep tabs on where I am and quickly scroll to the section I'm looking for.

</comment><comment><USER16> Of course. But I never grew up in the days of ttys or 80x25. By the time I started using unix, Linux and FreeBSD had framebuffers and even on the console I had something like 132x43.

I did edit some HTML with edit.com in DOS but I switched to notepad after a couple of months.

<comment><USER4> I use the 80-col guideline to know when I'm doing something wacky, but I break it often. Not by too much though.

Except in the case of CSS, in which I MUCH prefer 1-selector-per-line over 1-rule-per-line. My CSS lines often go above 160 chars.

</comment></comment><comment><USER17> Maybe. To visually divide sections,

\- between groups of member variable declarations if any

\- between function definitions if defining more than one

\- after local variable definitions if any

\- before a big ugly comment and probably within the big ugly comment, but the big ugly comment needs to be removed eventually, so no.

\- and finally, before the ANSI "return 0;" in main

        int i;

        for (i; i < 10; ++i) {
            if (i % 3)
                array[i] += 2;
        }

<http://hoop-la.ca/software/cat/cat.c>

<comment><USER4> Use curly braces, even for single-line control blocks.

</comment></comment><comment><USER18> I take advantage of Python's docstrings to describe what the following code does to the point where I don't feel the need to add blank lines within a function. It's all explained upfront, which seems to improve the readability of the compacted code. This habit has spilled over to other languages with no implicit structure so that code is organized between descriptive comment blocks. This has been really helpful with markup languages like PHP or Coldfusion, where indentation is meaningless and often negatively affects the quality of the outputted code.

</comment><comment><USER9> Once I outgrew QuickBasic in junior high, I started developing in C in DOS, using RHIDE (it came with DJGPP). RHIDE supported advanced VGA text modes like 128x43, so I've always used blank lines and wide lines when their use made code clearer.

I once had to do maintenance on a Visual Basic project with zero blank lines and minimal comments "to save screen space," even though the developers had decent-sized LCDs.

</comment><comment><USER19> In theory, if I start feeling the need to break up a function body into logical blocks, it's time to refactor, so no, whitespace is not used except to keep functions apart from each other. In practice though, I probably dump everything in main() more often than not, so yeah, whitespace is used.

<comment><USER20> It only sounds. But for complicated algorithms (I wrote a lot computer vision algorithms), there are just too much inter-dependence between two blocks of code making the ideal case of refactoring to serveral small functions impossible. It is OK to write a function with more than 100 LOC.

</comment></comment><comment><USER21> Most programming languages ignore blank lines. One notable exception is Whitespace ([https://secure.wikimedia.org/wikipedia/en/wiki/Whitespace_(p...](https://secure.wikimedia.org/wikipedia/en/wiki/Whitespace_\(programming_language\))

</comment><comment><USER22> I'll use blank lines if there is nothing else, but I tend to find that when you need to use blank lines to delineate function that a refactoring is in order.

The example

      for (int i; i < 10; ++i)
      {
        if (i % 3 == 0) continue;

        array[i] += 2;
      }

Could be rewritten as:

      for (int i; i < 10; ++i)
      {
        if (i % 3 != 0){
          array[i] += 2;
        }
      }

<comment><USER23> That's not really a refactoring improvement. Same number of lines and one more level of nesting. I mean in that particular example it doesn't hurt either way much, but that is the problem with that example.

</comment></comment><comment><USER24> I use blank lines in my code if that's the standard where I work. If not, I grin and bear it. No point in going against whatever style predominates at a given office. But I'm always amazed when I see (often young) programmers trying to cram as much code as they can into a small space, as if the density of text makes it all the more impressive.

<comment><USER23> As amazed as I am when I see 'old' programmers try to justify 100+ line methods because it is 'logically separated'. Just my opinions but I think bad code should say 'refactor me' in the strongest possible terms ;-) (ymmv)</comment></comment>


Show HN: Lumiverse – discover great educational videos - <AUTHOR> http://lumiverse.io <comment><AUTHOR> I want lumiverse to become the perfect place for people to publish, discover and discuss great educational videos. I want to build a friendly and intelligent community, make it easy for video creators to find an audience, and make it easy for viewers to discover awesome videos.

In the future, I want to expand into other types of content(starting with tutorials, art, short films, and comedy), and create the most awesome platform for hosting and selling high quality video series.

I have received a rejection letter from YC Fellowship(you can read the application here - [https://medium.com/@rayalez/lumiverse-yc- application-c66d056...](https://medium.com/@rayalez/lumiverse-yc- application-c66d05688369)), and now I'm trying to figure out what's wrong, and what can be done better.

I would really love some feedback and critique. How would you improve it? What are the flaws in this idea? What would you do with this platform?</comment>


Ask HN: Why No Retina Hacker News Logo? - <AUTHOR> <comment><USER2> If you are going this way, perhaps a better question to ask is why no SVG HN logo.</comment>


Ask HN: Should there be a Hippocratic oath for Programmers? - <AUTHOR>

In the light of Prism, would it be useful for programmers to be able to publically swear an ethical oath? For instance, that they would blow the whistle on, or refuse to create, anything that they have reason to think will be used for a massive infringement on individual liberty. <comment><USER2> So logically we have a function:

      f(oath)-->Binding

Such that

      f(privacyOath)-->privacyOathBinding

And

      f(loyaltyOath)-->loyaltyOathBinding

Maybe I am just not sold on the whole oath thing. Doctors are regulated not by oaths but through licensure. Licensing of computer programmers is a possible future state of affairs with more likelihood than might currently be obvious without looking at historical precedent - e.g. local governments often license all businesses, other professions become licensed as they mature, and as PRISM shows, governments have an interest in the products of programming. The future may inherit more from North Korea than we wish to consider.

</comment><comment><USER3> Engineers generally already have such things.

I don't think "programmer" is a well-defined enough concept to be associated with an oath. You can't go around calling yourself a Medical Doctor or an Engineer if you aren't, but pretty much anybody who codes at all can reasonably call themselves a programmer.

Even with all that aside, such oaths only really work for things like causing blatant harm. Unqualified "freedom" and "liberty" (especially in the USA) are so nebulous they mean almost nothing at all. The overwhelming majority of programmers work for organisations whose goals (e.g. profit, power) are not - and are often directly opposed to - "freedom" by any reasonable definition.

In short, I don't think the answer to your question is "no, there shouldn't" so much as "no, there couldn't".

</comment><comment><USER4> Professional organizations and codes of professional standards (including ethical standards, standards for continuing education, etc.) may be valuable.

An analog to the Hippocratic oath (an oath which is not taken generally in any consistent form [1], which has no binding force, and the form of which that is administered is generally maintained and decided on by individual _educational institutions_ rather than the practicing community), probably not useful.

[1] [http://en.wikipedia.org/wiki/Hippocratic_Oath#Modern_use_and...](http://en.wikipedia.org/wiki/Hippocratic_Oath#Modern_use_and_relevance)

</comment><comment><USER5> "an ethical oath"??? I don't think there is such a thing. What may appear unethical to you may seem ethical to another.

Everybody will find justification for their actions as unethical as they may seem to you.

<comment><USER6> Well, true, but many other professions have an oath of their own. Often times the language covered in that oath is supervised by a committee.

Obviously, there are problems with this. But the point that Martin makes is a really good one. Technology is going to dictate a vast majority of our lives going forward, and programmers are the ones that literally make that technology. A lot like a surgeon operating on a person, a programmer can be neglectful or overly intrusive.

I think an oath is a great idea, actually.

</comment></comment><comment><USER7> Given the evident political power granted by technology, I can see (a somewhat sinister) argument for restricting access to technical knowledge and capabilities. Perhaps a government license required to use a compiler or interpreter? A professional body to restrict access to the profession and bump up salaries for programmers? (And also control them at the same time). Programmers would become a lot like lawyers - privileged, but essentially trapped and under the control of the state (similar personality types & skill- sets required anyway).

</comment><comment><USER8> With how connected we are and how empowered developers and programmers are today. I see many reasons that point to yes.

</comment><comment><USER9> ACM (Association for Computing Machinery) has had a Code of Ethics for a long time. [http://www.computer.org/portal/web/certification/resources/c...](http://www.computer.org/portal/web/certification/resources/code_of_ethics)

</comment><comment><USER10> Doctors take the oath generally upon graduation from medical school. There isn't any regulatory body - unless you make it mandatory to pay EFF dues there is no body to regulate the oath-taking.

</comment><comment><USER11> you don't need an oath for that, being a decent human being already covers it.

</comment><comment><USER12> There's one on GitHub - google Turing oath for programmers</comment>


The Unexpected Benefits of Weekend Projects - <AUTHOR> http://blog.semantics3.com/the-unexpected-benefits-of-weekend-projects/

<comment><USER2> From the article:

 _Pick a project in an area that you don't have much background knowledge or experience in or one that requires a different stack of technologies from what you are familiar with. Use a different kind of database (eg: try a project using a graph database like Neo4j) or a different library/framework or even better, use a completely different language. It will not only make you a better engineer, it might just help you understand and improve your core work in different and better ways._

I think this is a lesson that is critical when trying to get better at anything, programming or otherwise. While researching an alternative to the documentation authoring tool we were using at work, I stumbled upon their training videos, and I have to admit, there were a lot of eye openers on how we could change the way we use the current software. This happens simply because different people have different methodologies, so following tutorials for one language, software, tool, can lead to realizations that apply to all of them in varying degrees.</comment>


Show HN: Get the current version number of common  web software as a JSON file - <AUTHOR> http://getversion.cf/ <comment><AUTHOR> Author here, i just threw this little quick'n'dirty nodejs script together to automate the tedious process of fetching current version numbers for analysis purposes. I hope anybody else can profit from it, too.

</comment><comment><USER2> Looks good so far, but some important Software is missing e.g. Drupal or Magento</comment>


Tony Brooker, creator of Mark 1 Autocode, has died - <AUTHOR> https://www.nytimes.com/2019/12/13/technology/tony-brooker-dead.html <comment><USER3> Wikipedia says of Autocode,

> The first autocode and its compiler were developed by Alick Glennie in 1952 > for the Mark 1 computer at the University of Manchester and is considered by > some to be the first compiled programming language.

which seemingly contradicts the implication in the NTY article that Booker was the principal author of Autocode.

It seems Booker and Glennie were coworkers at Turing's lab. Anyone know more?

EDIT: The Glennie claim is sourced to a 1976 paper coauthored by Donald Knuth, where Knuth says

> The unsung hero of this development was Alick E. Glennie of Fort Halstead, > the Royal Armaments Research Establishment. We may justly say "unsung" > because it is very difficult to deduce from the published literature that > Glennie introduced this system.

[https://archive.org/details/DTIC_ADA032123/page/n43](https://archive.org/details/DTIC_ADA032123/page/n43)

<comment><USER4> There's no contradiction here, because Glennie's first attempt as autocode isn't referred to as "Mark 1 Autocode" (despite running on the Mark 1). Apparently it wasn't an influence on later developments. Wikipedia is pretty clear about this. [https://en.wikipedia.org/wiki/Autocode](https://en.wikipedia.org/wiki/Autocode)

<comment><USER5> Yeah, "autocode" is just an old timey term for "compiled language". Like how "condenser" means "capacitor".

</comment></comment></comment><comment><USER6> global _start

section .text

_start:

      mov rax, 1        ; write(
      mov rdi, 1        ;   STDOUT,
      mov rsi, msg      ;   msg,
      mov rdx, len   ;      sizeof(msg)
      syscall           ; );

      mov rax, 60       ; exit(
      mov rdi, 0        ;   EXIT_SUCCESS
      syscall           ; );

section .rodata

      msg: db "RIP Tony, Father of Assembly Language", 10
      len: equ $ - msg%

<comment><USER7> Always stayed away from Intel assembly, but thought I'd have a go at running this. First issue was this is I think, Intel format, whereas I was using GNU as, so I had to make a few changes:

      .global _start

      .text
      _start:
        mov $1,%rax        # write(
        mov $1,%rdi        #   STDOUT,
        mov $msg,%rsi       #   msg,
        mov $len,%rdx      #      sizeof(msg)
        syscall            # );

        mov $60,%rax       # exit(
        mov $0,%rdi        #   EXIT_SUCCESS
        syscall           # );

      .data
        msg: .ascii "RIP Tony, Father of Assembly Language\n"
        len = . - <USER2>

Then you can run with:

      gcc -c src.s && ld src.o && ./a.out

<comment><USER8> Any chance you can elaborate the reasons for staying away from Intel syntax?

<comment><USER9> Not OP, but I think it is like indentation styles: you learn it one way, then everything else feels weird and ugly.

</comment></comment></comment></comment><comment><USER10> "One programmer was Vera Hewison, whom he married in 1957. (She died in 2018.) Another was Mary Lee Woods, whose son, Tim Berners-Lee, would go on to invent the World Wide Web."

The industry really was (still is I guess) very small.

</comment><comment><USER11> Still so crazy that our field is so young that people like this are only now passing away.

<comment><USER12> 99.9% of tech was developed within about the last 3-4 generations, no?

Maybe arguably not true for scientific progress.

<comment><USER13> Depends on what you define as "tech", no?

<comment><USER12> By value add, I mean. But I don't know what's ambiguous about what is and isn't tech?

<comment><USER14> tech is anything made, invented, not natural. So, the stirrup, eyeglasses, agriculture, our control of fire.

<comment><USER12> Yea. Anyways, what's so controversial about my comment you responded to?

</comment></comment></comment></comment></comment></comment><comment><USER15> Side point, but I found this article to be very well-written and a rather pleasant read.

</comment><comment><USER16> Seems appropriate to me that he died in the city of Hexham.

</comment><comment><USER17>
        LD r0,$TONY
        RIP

</comment><comment><USER18> R.I.P. Tony Brooker

mov ax,0x4c00

int 0x21

</comment><comment><USER19> I think there is a typo here where Kathleen Booth is suppose to be. You know, the inventor of the assembly language.

<comment><USER20> The submitter made an honest mistake. Please don't snark on HN. It breaks the site guidelines: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html).

</comment></comment><comment><USER5> Autocode isn't assembly. It's sort of a proto-Fortran. The title should probably be changed.

Also, his name is Tony Brooker, not Booker.

<comment><USER21> Indeed, the NYT article title: "Tony Brooker, Pioneer of Computer Programming, Dies at 94"

<comment><USER22> I thought Lady Ada was the first programmer?

<comment><USER23> "WE! DO NOT! TALK ABOUT! THE ORANGUTAN!" [https://imgur.com/gallery/lnOAS](https://imgur.com/gallery/lnOAS)

<comment><USER23> (Or, more specifically: [https://en.wikipedia.org/wiki/Ada_Lovelace#Controversy_over_...](https://en.wikipedia.org/wiki/Ada_Lovelace#Controversy_over_her_actual_contribution) )

</comment></comment></comment></comment></comment><comment><USER24> It's "Brooker". Someone please correct the title.

</comment><comment><USER25> Typo in the title. Should be "Brooker".

</comment><comment><USER26> Can we get a black bar for this guy?

<comment><USER27> Secular amen. (Not sure what opcode that is. I'll have to look at the datasheet.)

RIP bro. :'(

<comment><USER28> > Not sure what opcode that is...

EIEIO?

[https://en.m.wikipedia.org/wiki/Enforce_In- order_Execution_o...](https://en.m.wikipedia.org/wiki/Enforce_In- order_Execution_of_I/O)

Alternatively,

BR R14 / SVC 3

[https://en.m.wikipedia.org/wiki/IEFBR14](https://en.m.wikipedia.org/wiki/IEFBR14)

</comment></comment></comment><comment><USER29> RIP Mr. Booker.

Will HN host a black bar on its header for a day to honour him?

<comment><USER30> Aside: I understand that the decision to give someone a black bar is a subjective one, but I'm curious as to the criteria. Is it specifically people who have contributed in an important way to the computing community? The scientific community? Society at large? Does the number of upvotes on the "has died" article matter? Would love for 'dang to weigh in.

</comment></comment><comment><USER31> Bad freekin week for famous people. It's almost as if more people die in winter, and this is the leading edge of the people who could reach a global population.</comment>


Microsoft Launches Popfly: Mashup App Creator Built On Silverlight - <AUTHOR> http://www.techcrunch.com/2007/05/18/microsoft-launches-popfly-mashup-app-creator-built-on-silverlight/ <comment><USER2> Boy, Microsoft seems to be really working Arrington.

<comment><AUTHOR> Yep... is it just me or does everything on TechCrunch get glowing reviews? Apollo, Yahoo Pipes, Silverlight, and now Popfly... Arrington touts them all as the best thing ever.

<comment><USER3> Here's what I do: just scan the headlines on TC and go to the sites he links to and make your own opinion about things. Arrington and Duncan don't know what they're talking about and they just regurgitate the PR they're fed. Discount everything Arrington says... he's not a techie (he's a lawyer). TC was cool long time ago when there were no alternatives but these days, it's downright awful and there are a ton of better sites.

I switched to GigaOM as my primary news source and Om Malik is a lot more objective and he actually has a bullshit filter. It's tough to influence him since he's actually a real journalist. And he's also a friend of YC ;).

</comment></comment></comment><comment><USER4> Wow,

Things are developing quickly right now!

I know there are a lot of MS detractors here, I still have to say that this software looks like it's for real. I was able to create an address book mash up in 15 minutes. From zero knowledge of what PopFly was, to maps with Flickr photos in them in minutes. I believe a lot of the "ideas" guys out there, who don't have a lot of programming expertise would be well advised to take a look at this. Couple it with Microsoft's hosting and you can probably make compelling sites with little tech expertise. That is, you can make sites as compelling as a lot of the Web 2.0 stuff you see out there, with little tech expertise. Ask.com would be a challenge to build with this, YouTube would be a cinch.

You know it is occurring to me as I write this post that we first saw the value of consumer software trend toward zero cost with open source. Then we saw the value of consumer content trending towards zero cost with Napster and later YouTube. I wonder if things like PopFly will make even the value of offering consumer services trend towards zero cost. I am hard pressed to believe that we all can survive on web advertising with 100 other "little guys" doing the exact same thing, only with Microsoft shunting the pure user to their web sites.

So if we can charge for very little of this what is left? I guess the model of grabbing the largest audience possible and selling it to Google or Yahoo doesn't look so bad after all.

</comment><comment><USER5> "web-based graphical interface"

How is it "web-based" when you need silverlight - which is client side software - to use it?

</comment><comment><USER6> I suppose it makes sense for their first Silverlight project to be focused towards techies because they would be the most likely to install Silverlight.</comment>


Wendelstein 7-x stellarator puts new twist on nuclear fusion power - <AUTHOR> http://www.gizmag.com/wendelstein7x-fusion-stellarator-plasma-tests/40014/ <comment><USER2> Previous discussion just a few days ago (different article, same press release): [https://news.ycombinator.com/item?id=10437075](https://news.ycombinator.com/item?id=10437075)

<comment><AUTHOR> Ah, thanks. I searched HN for "wendelstein stellarator" before submitting, and got nothing, which I thought was odd, but I see I was only searching titles, not comments.

<comment><USER2> If you'd searched for "wendelstein" only, you'd have found it. :)</comment></comment></comment>


Feds Can't Force You to Unlock Your iPhone with Finger or Face, Judge Rules - <AUTHOR> https://www.forbes.com/sites/thomasbrewster/2019/01/14/feds-cant-force-you-to-unlock-your-iphone-with-finger-or-face-judge-rules/#1e6b598e42b7 <comment><USER2> Already posted here several times, sorry mate.</comment>


Mastering systemd: Securing and sandboxing applications and services - <AUTHOR> https://www.redhat.com/sysadmin/mastering-systemd <comment><USER2> The official documentation on these directives was of great value when I started looking into unit file hardening. There were a few minor cases where I had to, or felt the need to go elsewhere for deeper explanation, but for the most part it was readable and comprehensive.

I was able to understand the changes that I made and while carefully testing, few unexpected problems resulted.

The changes that I applied as a result of this has meant the unit files now score around 1.5 from the "systemctl-analyze security" system. Considering I approached the process with almost no knowledge of systemd, this speaks volumes on the quality of the documentation, its timeliness and practical relevance, and the fruit that can be borne of excellent documentation.

<comment><USER3> Was that the freedesktop.org wiki?

<comment><USER2> Primarly the systemd.exec man page at [https://www.freedesktop.org/software/systemd/man/systemd.exe...](https://www.freedesktop.org/software/systemd/man/systemd.exec.html) , as well as the accompanying unit and service file man pages for more general reference.

</comment></comment></comment><comment><USER4> I have to admit, having recently spent some time learning it and updating my Linux skills I really don't understand why systemd seems to have provoked so much hate and controversy in the Linux world. So far I really like it. It makes a Linux server feel more like something designed rather than incrementally patched together out of hacky shell scripts written 20 years ago.

The unit config files are small and simple. Every line makes sense. Things are coherent - learning how to start a service at bootup means you've partly learned how to configure the new equivalent of cron jobs. The same configuration works at the system and per-user level. You can quickly locate logs. I didn't quite like the command line interface at first e.g. why "systemctl" and not "service", plus I always forget if it's the service name in the second or first position. But the basic functionality is all there.

I realise Docker is all the rage at the moment but I've found it kind of flaky and complicated. For my own purposes systemd feels about the right level of abstraction. It's not picky about where software comes from, it just manages it. You can unzip a tarball and make it run isolated, depend on other services, and a whole lot of other neat things. If you've learned it on one distro you learned it for the rest, unlike SysV init. And it seems to constantly get more useful features that are all pretty easy to configure as well.

<comment><USER5> Purely my perspective here, as a 25-year user of Linux and BSD (for context). On the one hand, I very much agree with you that Systemd brings a lot to the table. The files are much easier to work with, the service ordering and integration is logical and works well (to the extent I've beaten on it), and I can't deny that a faster boot sequence is helpful for things that boot often like container images. It's been a lot easier writing systemd config files for my new services than it was to write init.d boot scripts, for sure, and the integration of systemctl is really nice: one command does all the service things from info to disabling.

The flip-side for me, the one that continues to get under my skin, is the approach of the systemd project. It's the habit systemd has of simply subsuming all other system functions into itself (DHCP client? Sure! DNS client? Mine now! Logging? We handle that now. Firewall control? ALL SHALL BE ASSIMILATED.). If the systemd versions of those functions were both obvious in presence and easy to replace with more fully functional replacements when I wanted, I'd feel better about it, but I keep running across cases where system functions that have worked that way since Linus was in knee-pants have suddenly been replaced behind the scenes with a systemd module whose configuration files and knobs aren't obvious or well-documented, it's difficult-to-impossible to uninstall, and trying to disable and replace it leads to cascading failures.

Worse, I keep seeing security issues brought up to the systemd devs and then tossed aside with "well, just don't do that" or "how is that even a problem". It's not pervasive or constant, but it's steady enough to be worrying. Obviously not every security issue raised will be top priority, but it concerns me how much of my systems are being subsumed by a project that seems to prioritize "do all the things now" over "do things securely".

Compare that to the approach taken by, say, OpenBSD, which has also been steadily replacing long-standing system bits with their own custom-developed pieces. Their approach has been "we will provide basic functionality that is iron-clad secure", while leaving you the ability to swap in something else for stuff like OpenSMTPd without breaking your system. And yes, Theo can be just as much an <unprintable> as Poettering, but I'm a lot less worried about the outputs of his work for the above reasons.

Ultimately I think systemd is a good way forward, but it needs someone else to take over the project, rein it in, and keep it focused on being good at what it does rather than trying to be all things everywhere. Or, alternately, it needs to just implement its own kernel and go off to be SystemdOS v1, which seems to be the trajectory it's on right now.

<comment><USER6> >Worse, I keep seeing security issues brought up to the systemd devs and then tossed aside with "well, just don't do that" or "how is that even a problem". It's not pervasive or constant, but it's steady enough to be worrying. Obviously not every security issue raised will be top priority, but it concerns me how much of my systems are being subsumed by a project that seems to prioritize "do all the things now" over "do things securely".

I would be even harsher than that. It's not just security issues that earn "don't do that" from systemd devs - it's everything that doesn't fit their narrowly imagined use cases. You don't even get "do all the things now" \- you just get "do this particular thing now". Generally with no regard for POSIX. And if you want the old behaviour back, expect to boil the oceans. Exhibit A: [https://news.ycombinator.com/item?id=19023885](https://news.ycombinator.com/item?id=19023885)

<comment><USER7> > Generally with no regard for POSIX.

To be fair, if I had to pick the heavily-used specification I'd most like to see ground into dust and rewritten from scratch, it's POSIX. There are several misfeatures that can't be easily undone (fork, and its maddening interaction with file descriptors, for one).

I also strongly dislike the shell-based model of development that people usually appeal to for POSIX. Shell makes for a crappy language (witness how you effectively have to ban spaces in your filesystem paths to make things work). Stringification of identifiers makes time-of-check-time-of-use attacks possible. I suspect it's also a driving factor for some of the misfeatures, because terminal programs and the shell need to implicitly share a lot more OS resources, so programs end up doing weird things like passing all open files to your children by default.

Were I to write my own operating system in 2020, I'd not think at all about POSIX until I finished the design, and relegate it to a compatibility layer for people who want to write programs as if it were 1970. Amusingly, when I looked up Fuchsia last week, it does seem that they designed the OS APIs along some of the ideas I had (e.g., ditching signals; handle-based API), so maybe there is some hope for a better-than-POSIX future world.

<comment><USER8> > fork, and its maddening interaction with file descriptors

What's maddening?

</comment></comment></comment></comment></comment><comment><USER9> This sandboxing for services provides similar isolation as various container runtimes. Plus due to integration with systemd things like live update without dropping a single connection is possible to implement with straightforward application code.

<comment><USER4> If I understand Docker correctly, it's not actually intended to be a sandbox and wasn't designed as such (e.g. the daemon runs as root, or at least used to). It's not clear to me what the threat model for running untrusted Docker images is, or how you'd know what the expected set of permissions were except by reading a README.

Whereas this feature is explicitly a sandboxing feature, and the needed permissions are enumerated by the service file.

<comment><USER10> Cgroups limit the impact anything inside the container can do to anything outside the container.

It doesn't matter that the daemon runs as root, it starts processes in an a way that prevents them from interacting with other daemons, filesystems, etc. resources.

You don't quite understand docker correctly :)

<comment><USER11> It's not cgroups, but rather namespaces and seccomp (and apparmor/selinux on some distros) that sandbox the processes inside the container.

cgroups are used mostly for resource limits, not for sandboxing (aka namespacing).

docker by default does have a slightly more lax security posture than systemd or lxc (i.e. a default set of capabilities that isn't explicitly enumerated and a focus on UX over tweaking them, no usernamespaces by default, etc), though you're right that it is largely meant to be a secure sandbox for untrusted containers, as long as you know hat you're doing.

<comment><USER10> Ah, I was under the impression that namespacing was a part of cgroups in general.

<comment><USER11> To quote Jessie's blog post [0]: "containers were not a top level design, they are something we build from Linux primitives [Linux namespaces and cgroups]".

cgroups can be used without namespaces, and the reverse is also true. Both of them are part of linux container implementations (like lxc and docker), but for an easy example, systemd uses cgroups for every service, and only uses namespaces for ones you very explicitly turn them on for.

Don't quote me on this, but I also think cgroups landed in the kernel many years before namespaces did.

[0]: [https://blog.jessfraz.com/post/containers-zones-jails- vms/](https://blog.jessfraz.com/post/containers-zones-jails-vms/)

</comment></comment></comment></comment></comment></comment><comment><USER12> This is cool. But how do I use these sandboxing if I want to run a desktop GUI application?

<comment><USER13> you use snapcraft [https://snapcraft.io/](https://snapcraft.io/)

<comment><USER14> Not to start a flamewar, but I'd like to point out why I think snap is not only inferior to flatpak technically but actually a threat to the linux desktop:

Snap is very deliberately centralized, with a single hard-coded repo URL. The server is also closed-source. This is because snap's somewhat transparent primary goal is to give Canonical central control of app installation across all linux distributions. The plan from there will include taking cuts of sales revenue and publishing fees. The pieces for this (like DRM) are falling into place.

Flatpak, because it isn't born out of such business a model, supports an arbitrary number of user-defined repos, which are trivial to host because they are static folders and can be installed with a single-click via a `flatpakrepo` url.

This is on top of other advantages such as upstream support from the likes of GNOME, support for sharing code between apps using "frameworks", supporting themes, using namespaces instead of modified AppArmor, p2p support, a better permission system, etc.

</comment></comment></comment><comment><USER15> What I'd like to know is how whether it's possible run GUI applications in their own containers. From what I understand about X, if a GUI app runs in the same context as the DE, it will have access to all other windows, the clipboard, etc.

That makes me think that Xephyr is mandatory in order to run an app in a container, but I haven't found a satisfactorily easy way to do so. Would systemd be the easy solution I'm looking for?

<comment><USER16> Firejail, mentioned elsewhere in the thread, should do that correctly. Personally though I've been doing docker (substitute with systemd-nspawn or whatever you like) with xpra; not sure it's as secure, but it should block accidental snooping while still supporting clipboard transfers.

It appears that the relevant developers are pushing towards using Wayland for more secure remote windowing, but I do not know what state it's in.

</comment></comment><comment><USER17> Nice - wondering if these are applicable to centOS as well given that centOS is touted as the freeware version of RHEL.

<comment><USER18> I expect that's the case. For the most part, CentOS has feature parity with RHEL.

<comment><USER19> CentOS is RHEL without the RHEL branding.

<comment><USER20> Also, you can update and upgrade without an RHN subscription. Technically, it's a complete recompile of the source code used for RHEL into CentOS rpm packages.</comment></comment></comment></comment>