skysight-inc/HackerNews huggingface dataset:
Ask HN: How do you architect software that needs to be maintained for 30-years?
A discussion[0] yesterday got me wondering: how do you architect a software project that you expect will be in service and maintained for 30 years?

How do you decide which programming languages, libraries, dependencies, and tools are appropriate to use? How do you forecast which design patterns are both helpful, yet easily recognized and used by those who maintain the project after you? How do you build in enough flexibility for the project to withstand 30 years of requirements changes and enhancements?

[0] https://news.ycombinator.com/item?id=7142356
I'm typically quite concerned with the opinions of others, and this strikes me as a non-issue.
The Agency I work for built a tool call ElementCSS for the 2013 Rails Rumble. It's currently not under active development, but we're going to begin work on it soon to turn it in to a more usable product.

Link: http://elementcss.com/
Seems as though it supports patching so only the parts that are changed would be synced. Of course, the download size is completely dependent on what parts of the file were changed.

http://forum.bittorrent.com/topic/19228-latest-sync-build-11...
Βίντεο – ParaMarketing Blog: ParaMarketing Blog
Just a heads up for OP, looks like there's a mistake in your matrix of support languages:

https://s3.amazonaws.com/unbabel-assets-production/img/chart...

Italian - Portuguese has a "n/a" style dot, but Portuguese - Portuguese translation says "Can take some time".
Just curious, how is dynamic text handled in the Unbabel API? Can you pass something like "Your score is %1" where %1 would be replaced by the first parameter? Or would you have to request "Your score is 1", "Your score is 2", "Your score is 3", etc separately?
> Apps built on newer front-end frameworks like Angular and React might not need it, for example.

Well, Angular has jQuery (lite) built in.
lots of js libs are for things like webgl that already dictate a recent browser.
everything is traceable.

I mean if I was going to do it, I would actually get a raspberry pi and either a board mounted wifi or a usb wifi adapter and then run this.

portable and away from something silly like you uploading a JPG with EXIF data to a server from the same MAC address.
I don't know who "we" is, but there's nothing abnormal about programmers as programmers. Currently the profession is dominated by a few narrow demographics which have a limited understanding of people outside of those demographics, but that's a social issue, not one that comes along with technical competence.

My major problem with dealing with clients/customers that I'm doing custom work for is that instead of telling me what they do, or what they want to be able to do, in language that they understand, they convert it into their own private techspeak. They incorrectly drop in technical words that they've heard somewhere, and they ask for specific brands of software that they've never seen and often don't understand.

I am a normal person. Tell me your goals and your problems in plain English, and I'll figure out how to get it done. I'm pretty good at it, and if I can't help you I can probably find you someone who can.
Great news. I'm happy to see this program in "public mode" now. GitHub launched this program already as private beta in May 2013.

https://twitter.com/totally_unknown/status/42899282447475916...

Don't expect to earn easy cash here. :)
Looks great! Nice scores.

I focused on getting the minimal passing solutions (e.g. Level 3, the distributed grep problem, only took ~5 LoC changes to pass, Level 4 was 162 LoC additions, 69 LoC deletions).

I wrote up my solutions at http://tullo.ch/articles/stripe-ctf-golfing/ if anyone was interested.
I hear about pair programming first time, what is a typical use of it?
If you want a complete nuts to bolts introduction to web development, I'd recommend starting here:

http://prework.flatironschool.com/web-development/

It's ruby specific, but what you learn in terms of html, css, and git can be ported if you decide to use a different backend language later down the road.

Then just start building things - that when you'll start to really learn.
An award-winning LCD with an Arduino built-in (using only 2 pins)
iOS 7 supports background wake-up-and-do-things for apps, so this problem is actually solved now.
The objective isn't necessarily malicious, for people with very low self esteem and disdain for themselves it can be nice to talk to someone without any personal baggage, it can be nice to be someone interesting for once and once your in too deep there's no coming back, admitting your identity is fictional is a death sentence for the relationship.
Staying Focused and Motivated as an Indie Developer Working Alone
...and they still haven't moved to "sanity" by adding/supporting:

* { box-sizing: border-box; }

the line that I start all my CSS with nowadays.

Quote from their docs:

> Some third party software, including Google Maps and Google Custom Search Engine, conflict with Bootstrap due to * { box-sizing: border-box; }, a rule which makes it so padding does not affect the final computed width of an element.
it removes the information of what is happening at this line of code and I have to look up what type name, pets and owners actually are

My response to this is, why do you care what their types are? What the statement is saying, conceptually, is "if there's a name and there's pets and there's owners, do this". Why should I have to explicitly tell the language how to tell whether there's a name and there's pets and there's owners, when it already knows that? To me that's just extra verbosity for no good reason. Do you really care that name is a string but pets and owners are containers? (And even if you do, isn't that evident from the variable names anyway? Good naming conventions can do a lot of the work of clarifying what's going on while keeping the code compact.)
People don't reproduce in New England apparently
Interesting.

Thanks!
>"Just as valid: peoples votes in elections after 9/11 gave the government power to compromise civil liberties in the name of security."

I agree with you entirely on how the system functions, though not all people want to grant all the powers which the government has collected over the years, and it should not be assumed that a vote is a tacit agreement to the current system.

>"Does your city have a street sweeping service (which are usually publicly funded by taxes approved by ... votes)? Without one, in an urban/suburban environment, your street would be full of garbage in no time, probably too much for you or other like-minded people to clean up."

You assume the street must be state owned and maintained; plenty of private communities do a good job keeping things neat and tidy (though I do not live in one).

>"Votes aren't a solution for every large problem, but it's far fetched to say that don't have any impact. Much of what we take for granted in modern public conveniences happened because people voted for representatives that in turn supported those endeavors."

I never said that elections are bad, but saying that you "voted for 'x'" means that you did very little to actually make it happen, because individual votes are insignificant.
This is definitely not a rule of thumb, but this point of view does fit in most of (small) cases.

Want an example? One of the most beloved practices by the software industry is kanban boards. It's at least curious how people writing systems prefer to have a physical board rather than, well, a system.
"But it's also clear if you document the services used before the class declaration."

Don't underestimate the value of machine-checked documentation.

Of course, one also shouldn't underestimate the value of reducing cruft, but you don't seem to be in danger of doing so.
Insightful post. I wish I'd read something like that years ago, instead of finding out the hard way. Thank you.
Hackathons (really, prototypes) structured to test out different approaches.
I went back to Flex ='(. Like I said, the lack of basic app principles and the fact the JS community wants to fist-fight you for saying there is a better way was kind of off-putting. If you want desktop support, you might want to look at Adobe AIR. There is also JavaFX, but it appears very, very, very half-baked to me right now.
Here's one pair programming tool I'd like to see. Under Xorg it is possible to configure multiple keyboard/mouse pairs, so that a window clicked on by one mouse is active for its associated keyboard, and another window can be active for a different keyboard/mouse. But, I'd like to see some window manager support, such as changing the color of the title bar to represent which keyboard it is currently connected to.

This general setup is really nice when you are working with someone else, they are typing, and you need to do something on the side such as checking your email. Also works good with Emacs with two windows working on different parts of the same file.
>It is, as it makes very easy to blow your leg off.

I have never seen a bug-proof programming language. If a language lets you do anything at all, then it will let you write bugs. So I don't see it as a weakness that C allows you to write bugs. If you have easy access to memory, then you can easily corrupt memory.
Yup, but that was kind of after I didn't have a lot of time to devote to it unfortunately. They did clarify but only after I whined. ;)
My experience has been:

* Google: Delivers incoming messages to whichever client most recently talked; occasionally 'resets' and delivers messages everywhere until a client talks again.

* Facebook: Delivers incoming and outgoing messages to web client; incoming messages only to XMPP clients (i.e. no outgoing message sync); occasionally outgoing XMPP messages are never sent or recorded at Facebook (this seems to happen and then stay a problem forever), resulting in your messages being silently lost.
> $("#something") instead of document.getElementById("something")

or even just document.querySelectorAll("#something")
No, quirks mode is triggered by the developer not including a doctype. If you include a properly formatted doctype, you will have JSON support in IE 8.
I didn't know the product by itself, I'm not commenting about the API.

Seems a really good idea, however I looked at:

http://news.unbabel.co/fr/fobo-est-presente-a-san-francisco-...

Vs.

http://techcrunch.com/2014/01/10/fobo/

and the translation, by _5_ people, is really poor:
Just look at the first line :

>Maintenant, vous sauriez déjà que Craigslist n'est pas bon comme un lieu pour vendre votre produits.

This translation is unpleasant to read and has some mistakes. Google translate gave me a better translation.

I guess the problem comes from the fact that translators are not native in the target language. When you use the product, can you request native language translators ?
Three step process:

1) buy perrows book "normal accidents"

2) read the nuclear accident chapters

3) begin marching in the streets at the sign of any new old-style nuclear plants, or the continued operation of the existing ones.

optional:

4) wonder in amazement how a chernobyl or fukushima isn't happening every year. That type of nuclear power generation really is that terrible.

(note - I am actually pro-nuclear-power ... just not the way we do it now)
IE8 is limited to the old CSS selectors so basically it sucks and doesn't really support it.
Seriously? Your concern with this app is what your friends might think if you use it? And having a less fit model would make you more comfortable?

This is just an app that shows a workout. The negativity in the comments around here astounds me.
After many hours I failed to complete Level 4. How frustrating! But what a great experience. I think Stripe did a great job at building a programming challenge. By going through the challenge I learned something new in each of the following: Python, Ruby, Scala, Go, Node/Javascript, Git, Hashes, DDOS, Consensus Algorithms, raft, transactional logs, Inverted Indexes, BitCoin, IRC Chat, and more. Thanks Stripe you made me a better programmer.
The barber may not need software, but the barber's customers do. Who wants to waste time on the phone or sending text messages back and forth trying to find a mutually agreed upon time for an appointment?

With that said, given that the barber in question has tried 10 different scheduling packages, it would seem that he is looking for something better than paper. That says to me that something is needed in his business, and that may very well be software, though the platform on which to run that software is probably not a PC with standard peripherals.
Nice article. I got stuck on level3 and perhaps got close to finishing it, but there were a few unforeseen things that came up. I'm glad I did what I could for this CTF, though. This is the first CTF I've done, and pretty much all the languages were new to me. Definitely a great experience!
"Fill up the cache with mocks of the objects it needs to contain. 10 objects = 10 lines of code."

But then I'm not testing the code that uses the cache, I'm testing the cache plus the code that uses the cache. Which is a valuable test but a separate one.

Regarding your proposed implementation, that sounds like basically what I proposed here:

https://news.ycombinator.com/item?id=7153126
I was going to listen then I saw how the extension was Coldfusion...
If you are in New York, you should subscribe for the Etsy Code as Craft speaker series, and not just because they always have free beer http://codeascraft.com/etsy-speaker-series/

Dan McKinley's talk on continuous experimentation of design is a must-watch http://mcfunley.com/design-for-continuous-experimentation

The last one I went to was a sparsely attended talk on using multiple CDN providers...sparse only because of the specific and technical nature of the talk, but it epitomized the scale and methodology of Etsy's testing operation...most non-massive techs are probably satisfied with moving to a reliable CDN...Etsy seemingly puts as much effort in testing CDN performance as smaller firms would in overall A/B testing. But I still found it to have some valuable insights for us small-operators, such as where the humans are involved in the monitoring process (given the investment they've made in automated systems)

http://velocityconf.com/velocityeu2013/public/schedule/detai...
Except Android 2.3 and below.

Compatibility issues still exist.
Not only can you mock it for testing but it encapsulates the system better, there is no reason for straight access to C.get with this pattern you can easily drop in a brand new system for caching and not break your original code. Some might find that a bit too much like coding for the future, but in my case that is quite a likely situation to occur especially if you ever run into scaling issues.
Google image search the user images
Get Email Alerts From Your Important Web Services
What do you mean? I can't find anything about that and Kurzweil on google.
What a wonderful idea. This fits so well with the torrent protocol (maybe even philosophically speaking).
Walk me through the mathematics of why an Employee at a startup they believe in and have vested equity in would sell that pre-IPO to an investor?

Can you provide a few scenarios? I imagine other HN readers are curious too, especially given our(collective) lack of experience with IPO's....well at least mine.
​How Nintendo Plans on Tackling Its Toughest Year
Sure there is. The second law of thermodynamics (which I am assuming you are referring to) only applies to an isolated system and describes its tendency toward thermal equilibrium -- it doesn't apply when you are able to add energy to the system.

Am I misunderstanding you?
> I’m now 33, happily married with two kids

Then you are now part of a team, that has at least two goals: Raising Kids, and Keep Being Happily Married.

Reaching those goals needs teamwork. Every minute you cannot spend on your goals is a minute your teammate has to compensate for.

Balancing the need to succeed and family is now a team-problem, that requires a team-solution.

I would not try to solve this issue solo.
Sure,

But why listen to a "Rolling Stones approximation" when you can listen to the Stones.

As far as I can tell, a large of portion of bands aiming to make it are indeed good or bad approximations of existing pop bands and mover over, entirely aimed at satisfied the fairly uniform taste of mainstream audiences.

Most are poor approximations of this but a few are indeed good approximations of this. But it doesn't matter.

The problem is that none of these develop anything creative or more specifically, they aren't serving any taste pool but this wide mainstream (this is arguably necessary for their success - they are practicing at being good at specific skill, being alternative wouldn't be the same practice).

So even, especially with even, bands being "almost good", there's still no reason for me to listen.
It's a scoping thing that has no direct relation to static/dynamic typing, though probably has plenty relation through the underlying philosophies of many lanaguages which motivate them to choose particular typing and scoping rules.
Clearly we have differing interpretations of that document. I don't think everyone can get the sec. 251 exemption, just for a start. It is certainly possible to de-anonymize individuals if you know enough details to get a correlation, but how many people do you know sufficiently well to work backwards through that process? If your goal is to sell more shampoo by working out who has dandruff, for example, the marginal cost of de-anonymizing your potential customers is likely to drastically exceed the marginal benefit of each additional sale. Fishing expeditions by Fleet street or private detectives targeted on a particular individual are likely to either raise red flags if too obvious or be wildly expensive if sufficiently stealthy (multiple pull requests followed by client-side correlation) - cheaper to go the traditional route of bribing the nanny or suchlike.

On the other hand, the increased risks of malicious de-anonymization (risk, not certainty) have to be weighed against the obvious benefit of having a portable health record and reducing duplication and administrative overhead if you are taken ill and have to visit a hospital or a doctor who's not your GP.
> cash costs the employer more vs something you can expense like health insurance

I don't think that's how it would work. The company would include the extra cash payment in the employee-compensation category of its profit-and-loss statements. The extra cash payment would likewise be tax-deductible for the company (that is unless your salary is over $1 million).
As AppUp closes,innovation lives on.
First, I find that most people (including myself) talk louder on the phone or headset than to an adjacent person. I attribute it to a combination of lousy acoustics and a lack of visual cues. If you talk at the same volume, maybe you just have a better phone or headset than most people.

Second, I don't think it's a matter of eavesdropping; rather, it seems harder to ignore a half-conversation than a full one, because the latter is normal and expected. Maybe we will eventually become habituated, and in another 10 years we will all be walking around talking to our glasses, watches, or whatever, automatically ignoring each other.
For those who aren't familiar Andrej Karpathy has done a lot of cool stuff with ML in JS. Particularly he has a CNN library -- deep learning comes to JS!

http://cs.stanford.edu/people/karpathy/convnetjs/

http://cs.stanford.edu/people/karpathy/svmjs/demo/

Heather Arthur (npm libraries brain, classifier) has also done a bunch of cool stuff!

https://github.com/harthur
Right now you can pass variables. We tell editors to ignore those variables.
For instance if you text is "Your score is %1" and you wanted to translate to Portuguese, the translation would be "A sua pontuação é %1".
I've never heard of "catfishing" before. I'm inferring it means "impersonating"?
Deployment Tools and Techniques at Spotify
Many styles are implemented that way. Check out Java for (many) examples.[1]

Naively, with Ruby's mark-sweep collector[2], you might want to do the sweep phase in parallel, adding garbage blocks to the free list. You could do the mark phase as well, with I believe a pause to make the marks a consistent snapshot.

[1] http://www.oracle.com/technetwork/java/javase/tech/g1-intro-..., for one.

[2] http://tmm1.net/ruby21-rgengc/
>"However, to invoke your own logic, assuming you've reached age of majority, you've consciously accepted that contract of which you speak."

I have not agreed to the contract. I never have, and I never will. The only way that my actions can be interpreted as acceptance of the offer is that I have not left the nation I currently reside within; and this is not how contracts work.

>"taxes are and always will be a form of mutual coercion, mutually agreed on."

I never agreed.

>"democratic forms of governance have far better feedback systems than others. Their chief advantage isn't that they achieve the best results, but as Plato observed: they avoid the worst."

I agree with you entirely, that democracy is the best type of government available at the moment, but that is faint praise.

>"The efficient-market hypothesis is bunk. See Quiggin, Zombie Economics. Full chapter on the topic."

I doubt we will ever agree on this, and I accept that there are a number of valid criticisms of EMH; but if the market is inefficient, some people should be able to find the inefficiencies and profit from them, of which there are few examples (except ephemeral ones).
> with or without the startup's consent

I'm not convinced this is possible in the long run.

The idea seems to be that employees can't sell the shares themselves, but can sell the kind of derivative around which Equidate is based. That may be true at the moment, in that the employees may not be contractually forbidden from writing such a derivative. But if companies currently forbid sales of the shares themselves, won't they eventually get wise and start to forbid sales of derivatives as well?
Python 3 doesn't dictate that style, just the parentheses
This is the first I've heard the term catfishing. Can someone provide a more concrete definition? Is it simply pretending to be someone else online?
no offense...but you couldn't even reply to him without marketing your book? this also occurred in the OP, where you get to the bottom of his post and it's revealed that the whole thing was supposed to get you interested in his book. this is why i fucking hate marketing. nothing is genuine, everything has an ulterior motive. it destroys peoples' authenticity and trustworthiness.
Why Responsive Web Design is the Future
In my case a cache could be something remote, having any calls directly to that will slow down unit tests a lot, having one or two calls to it unit testing the cache implementation it self is OK, but having every method which makes use of it make those calls isn't going to work.

In reply to your original question, its not extremely bad if you can't unit test that class alone , but in this case you wouldn't be able to unit test anything which uses it either.
Everyone believes in their company, even the people who work at companies that turn out to be duds.

If 90% of your wealth exists only in the theoretical value of your pre-IPO stock, that's not a good balanced portfolio.
There are a bunch of these... One recently on HN was http://devdocs.io/

I personally use Dash.app (http://kapeli.com/dash).
> I'm 37, not paralyzed by mortality, but sickened by the purported invincibility of 30 year olds. :)

It starts long before age 30. Just wait till your kids get older, Thomas ....