Game Source Code Collection - <AUTHOR> https://archive.org/details/gamesourcecode <comment><USER2> Nice, this also includes the infamous half-life 2 leak from 2007 as well as some other ones that definitely weren't officially released. Or like re-volt, which is now owned by a company still actively trying to take down mirrors of the code that pop up, hence any unofficial port of it only releases in binary form.

But then again a lot of the older leaked ones, nobody probably cares about too much. There's definitely some old, sometimes less popular games where I'd like to get hold of the code and take a stab at porting to something modern.

So if you were a game dev for some now defunct game studio in the 90s and still have some games' source floating around it would be a great coincidence if that would surface somewhere like archive.org... :-)

<comment><USER3> Game companies are learning old IP can be modernized for fresh new profits so most likely a lot of old game copyrights will become retroactively enforced and sources hunted down and expunged as they're remastered and made exclusively available in whatever online shop or subscription service.

[https://www.polygon.com/2018/7/22/17600008/nintendo-roms- law...](https://www.polygon.com/2018/7/22/17600008/nintendo-roms-lawsuit- cease-desist)

[https://www.maxim.com/entertainment/best-video-games- remaste...](https://www.maxim.com/entertainment/best-video-games-remasters- and-remakes-of-the-year-2018-1)

<comment><USER4> People have been reworking old IP, neglecting or enforcing various rights, etc for years. I don't think it's some new trend game companies recently learned or that it affects how aggressive (or not) owners are that much. Old sources in particular are not all that valuable in many cases, beside historically.

<comment><USER3> Right, but at the moment there are dozens of old movies being reworked and dozens of old games being reworked and the volume feels like it's growing with new announcements all the time. Over the last 20 years I have only seen a few games remade to maintain compatibility, usually unofficially patched by fans or as open source homages.

I think this is being fueled by movie and game outliers today being able to achieve their first $billion in their first week. That outsized ROI on gaming, like movies, completely changes the calculus on what old stuff is worth today. FAANG will throw billions into making games as soon as their movie pipelines are sorted.

</comment></comment></comment></comment><comment><USER5> I love the Internet Archive, but I absolutely hate the website redesign they made a few years back. Before navigation was so simple and sane, but unfortunately they had to update because the site was "too old" and this was during the "mobile trend" that was going on at the time, which resulted in infinite scrolling and other mobile stuff that makes using the website a pain, even after all these years.

<comment><USER6> I agree. I also think they need to redo the tagging/category system they currently have in place. It's super unintuitive and there are so many duplicate or useless tags.

</comment></comment><comment><USER7> I've been looking a collection like this, but for startups/sites/internet companies.

Something that would have Facebook's[0] and Snapchat's[1] source code.

Or even something that would have Staffjoy's[2](a startup that shut down then open sourced their source code).

[0] -> [https://gist.github.com/nikcub/3833406](https://gist.github.com/nikcub/3833406)

[1] -> [https://github.com/JonnyBanana/Snapchat-Source-Code- Leak](https://github.com/JonnyBanana/Snapchat-Source-Code-Leak)

[2] -> [https://github.com/Staffjoy/v2](https://github.com/Staffjoy/v2)

</comment><comment><USER8> Gotta love Jason Scott and his work to preserve computer history. From the list:

 _Leisure Suit Larry Source Code Reading Excerpt_

[https://archive.org/details/Leisure_Suit_Larry_Source_Code_R...](https://archive.org/details/Leisure_Suit_Larry_Source_Code_Reading_Excerpt)

<comment><USER9> I'm not sure I understand what he's doing here. Is he reading out the whole source code to the game as a performance art piece so he can share it without infringing copyright laws?

<comment><USER10> I am carefully enunciating the words that will undo the locks on the key to the universe.

</comment></comment></comment><comment><USER11> This is truly one of the treasures of archive.org, which has so much valuable content on it I can't imagine what life would be like without it.

I'm going to present this amazing collection of games and their source code to my local kids computer club and maybe spend a few hours de-tarball'ing and building some of these wonderful games.

To the people who maintain archive.org, I salute you!

<comment><USER12> You can donate here: [https://archive.org/donate/](https://archive.org/donate/)

<comment><USER13> I can't get past the DRM they allow, if they stopped doing that and raised the bar I'd likely support them.

<comment><USER14> I believe their stance on DRM is something like:

• We (archive.org) can choose to either take in these DRMed works, archive them, and publish them online for public consumption (with their DRM intact); or we can _refuse_ the DRMed works at the door, and thus have them _unavailable_ for public consumption, also leaving them unpreserved; or we can _archive_ the DRMed works, but just not publish them (again leaving them unavailable to the public.) The one thing we _can 't_ do, legally, is to just ignore the wishes of the rightsholders and put up a _DRM-less_ version of the content for public consumption. The rights-holders are still out there to sue us. So we have to pick one of the other three options.

• One day, the rights will expire or the rights holder will disappear, and the work will enter the public domain.

• If we had earlier rejected even archiving the work because of its DRM (from some principled moral stance, as you seem to be suggesting), then at the time the work enters the public domain, we won't have a copy, and would have to then acquire one. It might be impossible to acquire a copy to preserve at that point.

• So, it's better to acquire a copy now, under license; and then just crack the work out of its DRM later once the work becomes abandonware. (As the Archive.org staff have proven happy to do and/or support, with e.g. 4am's work on the Apple II software archive.)

• Plus, even if we _did_ wait to acquire the work after its rights lapsed, we would likely have to crack it anyway. Rightsholders that go to the trouble to re-release their own works without DRM are pretty rare. Some rightsholders are so lazy that, in "anniversary" re-releases of their products, they use the community's cracked copy! So it's not like we're making more work for ourselves by choosing to take in DRMed works and then crack them eventually. It's just how it has to go, to ever archive these works at all. The likelihood of ever just "coming across" a non-DRMed version of the work at some point in the future is practically nil. (It would be like hoping that if you left an aged painting on the market long enough, it would just de-varnish and repair itself.)

• And, of course, we can start on the DRM-cracking process as soon as we get the work, and keep the de-DRMed version as the canonical version to do preservation work against, as long as that's not the version we make visible to the public (until the work becomes abandonware.) Museums and libraries have many works in "private archives", and those archives still hold value to the public: academics can usually access them for studies, for example, as this explicitly falls under Fair Use. But more importantly, the private preservation of works that can't be preserved in public, ensures that they're preserved at all.

I hope that makes it clear why either the first or the third options (give the public the DRMed version; or preserve the DRMed version but don't publish it) are better than the "refuse DRMed content at the door" approach. Which of those other two options you favor is up to you. Personally I'd rather the public have _some_ access to this rights-bound content rather than none.

<comment><USER13> The problem is these work owners are using archive.org to play both sides of the argument, even worse consider the Tibetan Buddhist Resource Centern they digitized works they didn't author, don't own any rights to for the works that are 100s of years old, and then put them up on Archive.org under DRM. How is that in any way ethical to take someone's work and do that?

[https://archive.org/details/buddhist-digital-resource- center...](https://archive.org/details/buddhist-digital-resource-center- restricted)

<comment><USER14> Are you sure they don't own the rights?

When you create a "derivative work" of a work under copyright, you're creating a new work that "samples" the original, and then asserting _your own_ copyright to it—that's why you need a license from the rightsholder in the first place, to allow you to claim those IP rights on the derivative work.

In the case of a public-domain work, if you create a "derivative work" from it, you own the IP of that derivative work, 100%. The public-domain parts that you sampled aren't still public domain just because they're copied word-for- word into your work. (I mean, the original work itself is still PD, but the sample of it in your derivative work isn't. It's a "color of your bits" thing[1].) "Public Domain" isn't an infectious copyleft license. You can "fork" and "make proprietary" a PD work, and that's 100% allowed.

Now, I don't know enough about the Buddhist texts in question to say whether their presentation of them here qualifies as a "derivative work"—but usually even just translating a work makes it a derivative, so, if the TBRC were the ones that translated these texts to English? They own 'em.

(If you want a public version, do the same thing FOSS communities do when a FOSS project is forked into a proprietary product: walk back to the last open branch-point of the source, and make your own open fork. In this case: translate the texts yourself!)

[1] [https://ansuz.sooke.bc.ca/entry/23](https://ansuz.sooke.bc.ca/entry/23)

\---

Also, there might be a more interesting consideration at play in this particular case: if a work is never _published_ , then AFAIK, it never _enters_ copyright; its copyright "clock" only begins when someone publishes it. So e.g. the diary of Anne Frank doesn't have a copyright year of 1945, but rather 1947—the year it was found and published. Until then, the work is a "manuscript", equivalent in IP rights status to a draft laying on a writer's desk destined for a publisher.

You can think of such a manuscript as a secret root node in a "derivative work" tree: the author creates work A [the manuscript], the publisher derives work B [the published book], the author assigns work-A derivative-work rights to the publisher, and then _also_ [usually] relinquishes all rights to work A. Because of this, the copyright clock is relative to work B, not work A. If copyright stayed attached to manuscripts, you could run out the copyright [in a pre-Disney copyright regime] by just spending 30 years writing a book!

<comment><USER13> For the Buddhist texts, how could they own the rights to works written hundreds of years ago? They're simply digitizing the work, no translation. Here's an example: [https://archive.org/details/bdrc-W1FPL194/page/n7](https://archive.org/details/bdrc-W1FPL194/page/n7)

<comment><USER14> If the works, before their digitization, only existed in a private collection at a particular Buddhist temple, then their copyright clock wouldn't have kicked off. It would start the moment that the works entered the public sphere in some way. If that happened because of the digitization, then the digitization is under copyright. In this case, the original work is the "manuscript", and they're the "publisher."

<comment><USER13> Obviously at the time the texts were written, they were in circulation, but it predates modern copyright law. So maybe there's a loophole in the law they're exploiting, but regardless it's unethical, and Archive.org has the power to not accept works under those circumstances.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Some of my favorites are not listed. Notably, Jedi Knight: Jedi Academy had some of the best gameplay of all time. I played through a couple of months ago and the lightsaber combat is still amazing by modern standards.

[https://github.com/grayj/Jedi-Academy](https://github.com/grayj/Jedi-Academy)

<comment><USER16> A fun entrypoint to discovery into that repository is [https://github.com/grayj/Jedi- Academy/search?q=FIXME&unscope...](https://github.com/grayj/Jedi- Academy/search?q=FIXME&unscoped_q=FIXME) .

</comment></comment><comment><USER17> Something I want to ask for quite a while: what is the copyright status of Archive.org? Is it legal?

I'm asking not just for this source code collection: they host lots of DOS and console games on their website, which I highly doubt are in public domain or under a free license. They also have lots of scans of some recent publishings (particularly in my mind, I knew they have plenty of Japanese manga magazines from this decade that are definitely not copyright-free.)

<comment><USER18> They're officially a library in California which gives them a ton of carte blanche wrt to copyright. As for the status of their particular actions, I think it's a lot of grey area.

<comment><USER19> I believe they also have a team of lawyers, which helps greatly too.

</comment></comment></comment><comment><USER20> I find the views in the about section to be interesting. Seems this collection has gotten a massive spike of views in the last month of ~9,000 people, which is ~30x that of the last few months. I wonder if this comes down to hacker news, because at ~70 votes this post would have a view / vote ratio of about 125x, which seems in the ballpark but maybe a little high?

As you would guess California is the most common origin for views but surprisingly Alberta comes in second with 1/2 the views of California! Are there lots of fellow Albertan devs here?

<comment><USER21> [https://old.reddit.com/r/gamedev/comments/cdih04/game_source...](https://old.reddit.com/r/gamedev/comments/cdih04/game_source_code_collection/)

[https://old.reddit.com/r/programming/comments/caphdj/game_so...](https://old.reddit.com/r/programming/comments/caphdj/game_source_code_collection_internet_archive/)

It was also reposted on Reddit several times this month, and on Hacker News (before this) as well. Seems to be making the rounds.

</comment></comment><comment><USER22> Unrelated; but I always find myself drawn to game development, yet I have no desire to work in the industry. Does any other programmer feel the same, and do you know why?

<comment><USER23> > Does any other programmer feel the same

Of course.

> and do you know why?

Because games are fun, and programming is fun, and programming something that will be fun for other people is fun.

But the games industry is crowded, and highly profit-optimized, and you just instinctively know that getting a tour of the budget sausage factory wouldn't bring a true sausage lover any significant pleasure.

<comment><USER24> The games industry being crowded is a bit of a myth, though initially breaking into it does present a barrier. Lots of studios seem hungry for anyone with experience. Though, a lot of the actually interesting projects are crowded. Which is a real concern if that's the only type you want to work on (I'm in that camp...)

Like programming, once you have a few years under your belt, things really open up.

<comment><USER25> Really depends, if your a solid game dev and willing to work on the latest Barbie licensed mobile title its not so cutthroat. Profitable indie studio though? Good luck with that

</comment></comment></comment></comment><comment><USER26> I bought and shared the "Space Funky B.O.B." source code (included in that collection) and the "Super Noah's Ark 3D" source code (not in that collection). Both came from 3.5" diskettes on eBay. Both are for the Super Nintendo / Super Famicom system.

Space Funky B.O.B. is interesting due to the amount of swearing in the comments of the source code.

Super Noah's Ark 3D is notable for many reasons. It is an unlicensed Christian game that used a pass through style cartridge. It is based on the Wolfenstein 3D engine, and actually included some emails from John Carmack and Rebecca Heineman from back in the day. A delightful insight into software development decades ago.

[https://eludevisibility.org/2018/super-noahs- ark-3d-source-c...](https://eludevisibility.org/2018/super-noahs- ark-3d-source-code)

</comment><comment><USER27> Good Stuff!

We should augment this page with [https://en.wikipedia.org/wiki/List_of_commercial_video_games...](https://en.wikipedia.org/wiki/List_of_commercial_video_games_with_available_source_code)

and [https://gamehistory.org/](https://gamehistory.org/)

and [https://www.computerhistory.org/](https://www.computerhistory.org/)

</comment><comment><USER28> Perhaps a silly question, but is this entirely legal in the US?

This is, can I just download the source code and look through it without any major caveats like already owning the corresponding game or having permission from the publisher?

I see that some of the source code has a license associated with it, e.g. licenses claiming that the content's in the public domain, but I'm unsure if such licenses are necessarily legitimate.

</comment><comment><USER29> We need also game binary code preservation and how to compile the sources..just the source code without build instructions is also pretty useless for the preservation

</comment><comment><USER30> Heck Yea! I didn't know this was a thing?!

<comment><USER31> Right? Lots of classics.. Half Life, Sim City and Beyond Castle to name a few.

If you like spongebob you're in luck too. Probably gonna spend the next few weekends building these.

<comment><USER32> Good luck building. It's probably going to be a bit more than a few weekends... ;-) if you do get something built, maybe blog it / share it somewhere.

</comment></comment></comment><comment><USER33> Thank you. Terrific list. Bill Gate's Donkey BASIC should be on here too. Actually learned a lot from old BASIC games

</comment><comment><USER34> do you have the source code to FF8 because apparently that went missing

<comment><USER35> It didn't go missing. Square had an institutional policy that had them deleting source once projects were mastered and shipped, through to the early 2000's. FFVII-FFIX, Parasite Eve and numerous other games lost their source.

What's been recovered has been occasionally the code from contracted PC ports.

<comment><USER36> Why did they have such a policy? That seems crazy!

<comment><USER37> That was also their golden era for quality products.

I cannot claim to know why they did this, but my educated/experienced guess as a long-time game developer is that _someone_ thought it would be best for the teams not to rely upon existing projects when creating new ones.

Imagine if painters always started from their previous painting rather than a blank canvas; or if a home developer always started with prefabs of their previous home. You'd get American suburbs and Ikea prints.

<comment><USER38> Imagine if we did this for operating systems. I want to believe.

</comment></comment></comment></comment></comment><comment><USER39> If you slave away at a game (or some other piece of code), over time the fruits of your labor will become worthless.

<comment><USER40> It's not worthless if it gets you paid

<comment><USER41> Not to mention that in game development, the experience from your first shipped title is massively valuable when developing the second</comment></comment></comment>


Radio interview: Peter Thiel talks valuations, investing, economics (10/13/2014) - <AUTHOR> https://www.youtube.com/watch?feature=player_detailpage&v=Ob8stmxfbFg#t=6099

<comment><AUTHOR> Link should skip to 1:41:40 (interview is 40 minutes).</comment>


DIY Short Range Personal Radar: $30 - <AUTHOR> http://www.pyroelectro.com/projects/ir_radar/index.html

<comment><USER2> I've actually used these IR ranging sensors before. They have circuitry built- in, so the interface is really simple (the drawbacks are that the output is non-linear with respect to distance, and the time between outputs is kind of slow ~50ms): [http://www.acroname.com/robotics/info/articles/sharp/sharp.h...](http://www.acroname.com/robotics/info/articles/sharp/sharp.html)

He uses a lot of LEDs. If I were to design something like this, I'd just use a speaker from a PC case and have it beep different tones depending on the distance to the object.

<comment><USER3> Also sonar is a lot better choice for this application.

</comment></comment><comment><USER4> This title is very misleading--it's not actually radar at all. The described system uses a very short range and simplistic IR transceiver.

</comment><comment><USER5> $30 can buy a cheap bluetooth webcam that could do the same job (given that you have a ... laptop on your car), but cool nonetheless.

<comment><USER3> How would that give you the range to an arbitrary object - like a white wall?

<comment><USER6> good point but in how many real world situations is this going to be an issue? for situations like measuring distance to a car while parking, a camera works well.</comment></comment></comment>


Ask HN: Systems for supporting Evidence-Based Policy? - <AUTHOR> What tools and services would you recommend for evidence-based policy tasks like meta-analysis, solution criteria development, and planned evaluations according to the given criteria?<p>Are they open source? Do they work with linked open data? <comment><AUTHOR> > _Ask HN: Systems for supporting Evidence-Based Policy?_

> _What tools and services would you recommend for evidence-based policy tasks > like meta-analysis, solution criteria development, and planned evaluations > according to the given criteria?_

> _Are they open source? Do they work with linked open data?_

I suppose I should clarify that citizens, consumers, voters, and journalists are not acceptable answers</comment>


Twitter's CEO Says It's Having an 'Arab Spring' Moment in the U.S - <AUTHOR> http://fortune.com/2017/02/15/twitter-jack-dorsey-arab-spring/ <comment><USER3> "Our greatest superpower is we break news faster than anyone on the planet," said Dorsey

The greatest weakness? There's no money for Twitter in being first.

<comment><USER4> I have an idea, I welcome you to punch holes in it.

Why not charge the sizeable players for that immediacy?

Say you have 500,000+ followers, and you want your tweets to be sent out the second Twitter receives them, you need some sort of premium account for $XXX/mth.

Without said account, your public Tweets have a 5 minute delay.

What am I missing?

<comment><USER5> How many people care enough to pay for it?

<comment><USER4> Only those who care about the immediacy. News agencies come to mind.

If the difference between being seen first and being seen eventually depends on whether you give Twitter $X,XXX/mth, I think it'd be pretty easy to justify the cost.

For everybody else, few would notice or care. And that's fine.

[edit/addition]: The key would be finding what the sweet spot price to delay would be.

<comment><USER4> To be clear, I'm not talking about convincing everyone to pitch in $4/mth - <USER2> one would do that.

I'm talking about collecting a serious fee from established businesses who rely on Twitter for the lifeblood of their own monetization efforts.

</comment></comment></comment></comment></comment><comment><USER6> A CIA backed period of insurgency that will be lauded by the Democrats, but ultimately result in plunging the nation into protracted civil war, drone bombing of civilians and the rise of radically conservative, religious militias claiming the affected countries belong to the new Caliphate?

Which ultimately resulted in Twitter being banned doubleplushard?

Gee, Mr Dorsey, sounds lovely.

</comment><comment><USER7> No.</comment>


Writing malloc wrong, for fun - <AUTHOR> http://jvns.ca/blog/2013/12/10/day-39-i-wrote-a-malloc/ <comment><USER2> This is going to be a programming language readability rant - ignore at will! :)

Looking at the code I remember why I hate C. It's because of the lack of memory management, obviously, but also because of the crappy naming conventions. At a glance, disregarding your prior C programming experience, what is "mut"? What is "u8"? What is "putc"?

Why does a language designed in this day and age try to cater to old fogeys pining for C naming conventions if it wants to supercede C? We have consoles with widths >80 characters, we have autocompletion and even Intellisense in any decent programming editor know to man!

Compare and contrast:

putc with WriteCharacter or write_character or write_char

uint with UnsignedInteger or unsigned_integer or unsigned_int

Don't go overboard Java Enterprise edition-style, but stop saving on the "cheap" stuff, sheesh!

I'm also spoiled by Python at this, the epitome of "pseudocode" programming language. What's up with "~"? Couldn't they have found a 1-2-3-4 letter word for the random tilde?

I do understand why they did it - to make it easier to draw the C crowds in. But really, isn't there a lower level (no memory management/optional memory management) language with decent syntax? Why is __everybody __creating lower level languages trying to copy C? C was created in the age of teletypes and it became popular because it was portable assembly.

It's syntax was __not __a forte.

<comment><USER3> Long lines of code _hurts_ readability even with modern displays--there's a reason LaTeX defaults to something like ~60 characters a line. Shorter lines are much easier on the eyes. Besides, I usually like to have a few files open side-by-side, so I don't have _that_ much horizontal space even on a big screen.

I'm not saying this in defence of cryptic shorthand but in defence of sane line lengths and margins.

Also, unsigned_int is not a great name. It's too long and it doesn't make sense--if it can't be negative, it doesn't make sense to think of it as an integer by analogy! I much prefer something like Haskell's Word types: Word, Word32, Word8 and so on. Short, easy on the eyes and clear.

Ultimately, really verbose names like UnsignedInteger and WriteCharacter just add noise to your line and obscure the structure of the code. While it's nice to be clear, chances are you will be seeing these words all over the place so you want them to be short and get out of your way. C goes too far in that direction with incredibly cryptic function names[1], but I think you go too far in the opposite.

Similarly, I think completely eschewing symbols is a bad idea. Symbols give your code structure that plain words lack. With a mix of symbols and names, code is neatly delimited between the parts that specify "stuff" (variable and function names) with the parts that specify "structure" or "operations" (control flow, auxiliary things like variable assignments and pointers and so on).

I think a good example here is bitwise operations. I think C's operators like <<, >>, &, ^ and | make for significantly more readable code than their named versions (shiftLeft, shiftRight, and, xor, or). Compare a simple snippet from _Hacker 's Delight_:

        (x & y) + ((x ^ y) >> 1)
        (x and y) plus ((x xor y) shiftRight 1)

Sure, the first version is cryptic to someone unfamiliar with bitwise manipulations, but I think it's ultimately much clearer. If you're going to be doing more than a handful of bitwise operations in the future, the notation is well worth learning.

Code is read more often than it's written, but it's skimmed even more often than it's read. With a healthy mix of symbolic notation and names, I can easily get the gist of code at a glance and mentally skip around. With just words in the Python style, I have to actually _read_ each line of code--a serious drag on going through a codebase. I really don't want to have to _read_ code unless I really have to!

Words may be clearer to the uninitiated--people without experience in the relevant language or libraries. But for common tasks, I feel this is really optimizing for the short term (learning) and _against_ the long term (working with code). It's worth learning some special notation if it comes up often because that notation can be more succinct, convey information more efficiently and--the most important part, to me--can be easily read _at a glance_.

I certainly don't think C has a good syntax, for several reasons including the fact that it often goes too far in trying to be concise. But at the same time, I hardly believe in the traditions of Java which embraces verbosity and uniformity at the expense of clarity and expressiveness (just take a look at BigInteger!) or Python and Ruby which try too hard to read like English and end up forcing me to _read_ too much.

[1]: Functions like: ioctl, atoi, fputc, strxfrm. Life gets even worse when you get into intrinsics! I wrote more about this in another HN post: [https://news.ycombinator.com/item?id=6717209](https://news.ycombinator.com/item?id=6717209)

<comment><USER2> I agree on all your points and I'd like to add that I don't know of any definitive research backing up an optimum line length. The only thing is that you don't want to be near the extremes - say 40 characters per line or 120 characters per line. Everything in between is acceptable.

80-90-100 characters lines are perfectly readable and also easily diffable/viewable side by side on almost any screen (I hope you're not doing 3-way merges merges on a phone :p).

And thankfully new lines don't cost anything so we can just break up long lines like in this very good example: [http://stackoverflow.com/a/903767](http://stackoverflow.com/a/903767), and we can afford better identifiers.

C/C++ people - break the cycle! Make new, human readable, 2000+ style APIs for C. Death to the fputcs of the world!

(IMO symbol versus word is a personal preference thing and has no actual impact on code readability unless I need to re-read the language spec after 6 months of not using the language).

<comment><USER4> Rust prefers short keywords (e.g. `fn` instead of `function`) specifically to give people more room to write descriptive identifiers while keeping line lengths sane. The style guide also suggests limiting lines of code to 100 characters.

</comment></comment></comment></comment><comment><USER5> My friend suggest as the 64-bit address space is so big you could just throw out random numbers and get a working 'wrong' malloc.

        void* malloc(size_t sz) {
            return rand() << 32 | rand();
        }

Or in rustopia:

        fn extern "C" malloc(len: uint) -> *mut u8 {
             unsafe {
                 std::rand::random::<uint>() as *mut u8;
             }
        }

Insert more so that it actually maps to memory.

<comment><USER6> In fact, with a sufficiently large address space, you can prove that a "random" return value for malloc() is more reliable than a correct implementation, because of the likelihood that a machine failure would return a "bad" (collision) result when running the longer code path of the correct implementation.

256 bit addresses, anyone? Well, maybe 1024... :-)

</comment></comment><comment><USER7> A few months ago, I saw a submission where the standard malloc was replaced by a non-freeing malloc. It never dealocates, just leaks memory. It was faster, and was used in a short lived program (¿grep?) where the leaks are not important. I couldn't find it now. Is this strategy useful here as an easy step towards a real malloc?

<comment><USER8> It may've been the D compiler, described in this article: [http://www.drdobbs.com/cpp/increasing-compiler-speed-by- over...](http://www.drdobbs.com/cpp/increasing-compiler-speed-by- over-75/240158941)

</comment></comment><comment><USER9> The really trippy part of doing malloc (for me anyways) was using extra space around the allocations to store the data the free lists needed to work--it felt like hiding stuff in the margins of a manuscript.

As the author points out, malloc is very easy if you don't worry about free'ing anything. :)

</comment><comment><USER10> So what other mayhem did you try causing with your WRONG malloc?

</comment><comment><USER11> rusty seems needlessly verbose... never tried to read any code in it before this post... which I fail to see the purpose...

<comment><USER12> That verboseness allows you as a programmer to get the compiler to do exactly what you want, safely. I'm not really a fan of the syntax, but I totally get why it is the way it is; it's hard to do that while keeping the ALGOL/C styled syntax. Nimrod is another way of tackling it, with a Pascal/python influenced way of attacking the problem. It can also be a bit verbose, but trades that off for not having some features that Rust does.

Tl;dr - it's worth it, IMO :)

<comment><USER13> Are there any homoiconic "get the compiler to do exactly what you want, safely" languages?

<comment><USER14> [https://github.com/eudoxia0/Hylas-Lisp](https://github.com/eudoxia0/Hylas- Lisp) is one example, targeting LLVM</comment></comment></comment></comment>


Ask HN: Why can't programmers get along with business type people? - <AUTHOR> <comment><USER3> I believe it's largely down to short term goals versus long term goals.

From the business perspective, the company should do things quickly because that means the jobs are more profitable, cashflow is stable, and the business team believe that they can always find more clients even if the product is horrible. This is the short term outlook.

From the programmers perspective the company should do things slowly because that leads to more maintainable software, less technical debt, and higher quality products with fewer faults. Less money comes in, but the clients stick around for the quality goods. This is the long term outlook.

The thing that leads a company to fail is when neither side recognises is that both outlooks are wrong. You can't run a company churning out bad code forever because your technical team get annoyed and leave, but equally you can't build things forever because clients don't have unlimited money.

There is a balance. If one or both sides don't understand that then the business is not going to work well - it'll churn through developers or it'll never make much money.

If you find a job at a company that recognises the problem and attempts to resolve it you will be happy as a developer.

<comment><USER4> Also, programmers are usually "to the point" people, while business people love buzzwords.

<comment><USER5> Condescending remarks like this don't help the issue. A business person can also say "Business people are down to earth, while programmers love to use jargon that nobody understands."

There are good and bad communicators on both sides.

<comment><USER6> There is a reason why anybody who works in a job in which he faces the laws of nature, will prefer a very precise vocabulary and will shy away from using words that could not possibly have an unambiguous meaning. It is exactly the opposite of what for example advertisers, politicians or business people do. They want to keep everything as ambiguous as possible. They do this because in their jobs they do not face the laws of nature but other people. So, it is way less of a problem for them than for an engineer. The bridge will simply collapse if the computations are ambiguous.

</comment></comment></comment></comment><comment><USER7> Doing things right often sounds more complicated.

Business people who don't take the time to listen and understand what they're managing will pick what sounds like the path of least resistance.

If the buisness people cannot be reasoned with this will result in staff not telling them what they're really spending their time on.

At this point management either a) steps back or b) buckles down and micromanages.

Results: a) Unless there is some internal leadership within the team or you have rather good and motivated people, this will result in the team doing what they want, which will mostly be CV-Driven-Development or playing with the new shiney.

b) Important steps will be skipped, likely the team will feel the decisions are made outwith the group, yet the group suffers from the results of said decisions. Moral of the team will go down.

This isn't specific to programmers, any time you get management that's willing to bury their head in the sand and not understand their subject matter, you've got this problem. Team performance will go down and if this results in rotating non-technical management who all end up going down this road, you'll breed programmers that simply think all managers are useless.

This is the with career managers. The problem with technical managers is they often simply don't know how to manage. You want someone who can do both and who actually cares about delivering value to whomever your customer might be.

</comment><comment><USER8>
       "Oh, East is East, and West is West, and never the twain shall meet."
       Rudyard Kipling

Jokes aside, I think the OP is generalizing. Personally I get on fine with the vast majority of business people.

I don't get on with people that are incompetent. I also don't get on with people who have a lot to learn but pretend they don't. Some of those are business people. Some of them are fellow programmers.

Normally business people (sales) have features in mind that they know (or think) customers want. Customers often think they want something to deliver a business process that solves a particular problem, but might not be the most efficient process. Programmers are concerned with the management and control of their code-base. Often programmers cannot see the financial or business case for a new feature request. In many cases, it isn't really their job to do so, but it does help to understand the requirement.

As a result the two parties often have problems seeing eye to eye. However, this is a good thing. If we agreed with everything business people wanted then we'd have applications full of features, many of which nobody wanted. If programmers got their way then we'd have applications that no clients would want to use and buy.

In general each party has a niche of knowledge that the others don't. When each party can learn to appreciate the experience and knowledge of the others, then they can work together successfully.

</comment><comment><USER9> There definitely is a schism, and I think it's largely down to different mind sets. Business people, have to be people people. They have to be able to manipulate emotions and be persuasive.

Whereas programmers tend to be more absolute, more black and white. We haven't evolved our skill sets to include persuasiveness or the businessman like people abilities, simply because we haven't had to.

Both types have adapted to their own environments, and they're entirely different environments.

I think a big part of the problem with programmers and business types is both parties not understanding each other psychologically. Programmers are strange creatures, often stubborn, highly intelligent, don't like being told what to do.

Project managers however are highly motivated, hard-working and like to push things forward. But you have to know how to speak to programmers, we're good at figuring out the 'how's' but we also need to know the clear 'why's'. They need to make the case to us instead of just telling us what to do, we like to feel in control. But they often give orders and we get defensive.

In summary, programmers need to understand that project managers and business people are just trying to push things forward, it's their job to try to get things done (let's face it, a lot of us would be sat on here all day without them). But business people need to understand what they need and be able to explain it properly to us without giving us direct orders.

</comment><comment><USER10> They do - frequently and often. If you see a deep and non-personality based conflict it means there is a political disjoint within the company - <USER2> incentives for either side are misaligned - either because one or both sides have lost contact with customers and that having to clearly and logically spell out the disjoint is raising up a political problem the hierarchy is unwilling to deal with.

In short, if we don't address the difference in strategy represented by the Sales Director and the Operations Director then when the two different strategies and priorities are given to a programmer to implement - we can blame their kvetching on "IT guys"'instead of the two directors.

As for a solution: I would abandon Agile in such cases (!) and ask the board of directors onto a two day coached off site where we will address the issue. And suggest everyone polish their CVs in case.

<comment><AUTHOR> Really interesting way to look at it, I think theirs a generalisation amongst businesses to think that the programmer is just a function rather than an opinion/craft i.e. putting a paper inside a printer, thats it just code.

</comment></comment><comment><USER11> They can, and they do. Sometimes they are even the same people. Where are you getting your premises?

If what you really meant to ask is "Why do two groups of people who operate differently sometimes operate differently?" then I think the answer is obvious.

<comment><USER12> >Where are you getting your premises

years and years of Dilbert, for one.

</comment></comment><comment> Jean-Philipe In my experience, the gap was more between "people that do things/makers" (designers, hackers, texters, testers, linguists, statistics people) and "people that talk" (aka business type people, usually economy students). It occured that the talking-only people where at some point so out of touch from the work that actually happens, but yet in charge, and interfering with everybody.

<comment><USER13> Sounds like broken company culture, not a general truth. I've never experienced that problem anywhere I have worked. The only problem I've seen is that the "talkers" often do not know what is possible, and the "makers" often don't know what the business needs to actually make money. The big moves come when both sides get together to determine the company's direction.

</comment></comment><comment><USER14> Ego.

"Not getting along" is what happens when one believes that "I" is more important than "we".

Once one gets beyond themselves, one can "get along". They still may not agree, but now they've put themselves in a position to solve problems, not perpetuate conflict.

This is also true in the general class "Why x can't get along with y," not just for programmers and business type people.

</comment><comment><USER15> Many can. And they're the ones who make a _lot_ of money, especially if they're consultants who align with the goals of the business. I think patio11 has written on this topic several times.

</comment><comment><USER16> They can; where they don't, it's usually due to a dysfunctional organization that means their incentives are misaligned.

<comment><USER17> It seems to be a philosophy endemic to embedded IT: "us" vs "the business".

<comment><USER5> And it's quite visible in some of the comments here.

</comment></comment></comment><comment><USER18> Sometimes IT staff don't get on with people from "the business" and sometimes people from one department of "the business" don't get along with someone from another part of "the business". Usually stems from a lack of empathy. Often people get so wrapped up in their own department's work that they don't stop to consider how things are working in other departments and what pressures the other person may be facing.

Totally frustrating for all concerned. It so often feels like everyone has forgotten why they are there (to define, build, test and ship something) and just spend their whole time butting heads against each other because the other person is not doing things exactly the same way as they do.

<comment><USER19> You are not in business to "define, build, test and ship something". You are in business to make money and the development process helps with one of the ways to make money.

The first paragraph is spot on.

</comment></comment><comment><USER20> Ethic. First.

People constructing are accountable for being able to build on time (announcing fair informations). Constructing/building a product (not only coding) require the most accurate information possible and accountability. People are paid mostly with a (lower than business) fixed amount of money.

People selling relies on assymetry of informations. They are paid on commission (often not on the benefits but a percentage of the gross sell).

The business are hired with an incentive to lie, the builders are fired if they do so.

Business makes all the more money that coding costs less, and vice versa. And both coders and business are understood to be valuable and listened to. This is a classical conflict of interest.

If you had the classical Babel tower problem, some social origin issues (business schools are expensive), and what could be considered an unfair share of the values regarding the costs for persons (remember a coder lose all IPs on its works and his paid less than a business person making money on their relation ships that they are «free» to keep), than you have also a very simple marxist doxa (know how to make money) vs praxein (how to do) problem of unfair repartition of value. And according to marx it results in conflict between proletarian (coders) vs capitalists (business).

To sum up, take whatever explication you want it is a stupid logical conflict: a power struggle (that need no symmetry) because as pointed here and there by other contributors the incentive/goals are differents but they share the future/resources of the same company.

</comment><comment><USER21> The relationship between technical and sales is always going to be complex.

A salesperson has to not only sell, but retain customers. It's their job, regardless of where the product is at. Customers are not easily acquired and the position is unforgiving.

As a hybrid sales/development guy, I was always conflicted selling products that I found myself having to convince users to stick with it on the renewal, because the product is not performing as it should or as promised. It was the technical side of me knowing this product is not really where it should be, just good enough.

And the clauses, yuck!, cancellation fees to end contracts, worst conversation to have with someone you're trying to build a relationship with. For anyone with a conscience, it's a hard position to be in but that's what you are being paid to do, sell. To survive you have to be at peace with the process and have a long term outlook that the product will get better.

It's crushing to have to sell a not so great product just as much as it is hard to push one out. I think what really makes the difference is the company culture and shared vision. If people are not ultimately working toward the same long term goal, there is going to be a disconnect.

</comment><comment><USER22> I run a software house and work with programmers every day. I'm a business type person (I guess?) in that I'm the CEO, but I'm an ex-programmer, so I'm a weird hybrid of the two types of person you're trying to draw a line between.

I think the question you're asking leads us to look for reasons why ALL business people can't get on with ALL programmers, which is simply untrue. There's lots of business people around the world happily working with programmers, and I'm one of them.

For me a good programmer is not good just because they can rattle off reams of beautiful code and fix bugs insanely quickly. A good programmer must also be able to prioritise their work, manage their time, communicate effectively, understand the wider context of the work they do and much much more. These skills outside of their core skills I refer to as "soft skills", and they're necessary in all walks of life not just programming.

In the same way, a good business person is not a good business person just because they can run a business that makes money. To get along with their employees they will need to be able to delegate work, communicate effectively, plan ahead and so on. Again, these soft skills are just as important as the ability to make money.

So if a business man who is only good at making money works with a programmer who can rattle off code, and they lack the aforementioned soft skills...they're going to have a hard time working with one another. Equally, if either of the two individuals lacks soft skills, the relationship is going to suffer.

What's really interesting (in my experience) is that a rockstar programmer without soft skills isn't just going to struggle to get along with business type people, she's going to struggle to get along with everybody!

</comment><comment><USER23> Misleading question since it implies that all programmers dont get along with business types.

Clearly a subset of programmers DO get along with business types after all most established companies have programmers working for business types. Similarly many startup founders are BOTH a programmer and a businessperson.

A better HN question IMO would be: How do programmers and business-types communicate better?

</comment><comment><USER24> A very generic question, so I'll put out a very generic answer.

"Business" is about making stuff people want. Business folks work with each other -- many times under low levels of trust and high levels of risk -- to make something people want.

"Programmers" already know what they're doing: programming. Therefore programmers really don't care so much about what people want. Somebody is paying them, so they program. They work inside a tight domain and usually with a small number of people that they get to know over a long-ish period of time.

These are two vastly different universes. Business folks are always using business skills to interact with coders: negotiation, price commitment, conflict facilitation, and so forth. They don't care what whiz-bang you are using to do the job. They just want the value.

Programmers are always applying programming skills to non-programming domains. Why doesn't the business know exactly what it wants? Why do they keep hassling us with providing estimates? How can people who are so clueless about things actually be running the marketing department? Why do they keep pushing for unrealistic schedules? And so on.

Very early on, organizations start stove-piping jobs. Bill is a CPA. He should only do accounting stuff. Joe is really good with people. We're just going to have him do pre-sales. Amit is a database guru. We'll have him do all the DBA work. We need to have some defined roles around here! Where's my job description?

This seems to make sense, but over and over again, this logical separation of concerns comes back to bite. After a year or so of doing just the "DBA work", whatever that is. He starts viewing things not involving database administration as a waste of time.

You keep that up over many years, and allow the company to grow? You've got a bunch of folks who all like the folks they interact with and see everyday, but are deeply suspicious and completely clueless about everybody else. Not a good thing.

</comment><comment><USER25> I'm with onion2k on this one. It's mostly do to with differing mindsets and world views. I'm not a coder, I'm in Digital Marketing, but yesterday I had a meeting with management regards their Google Ads campaign. A simplistic overview of the dilemma I had yesterday: We need to collect data on how well their site is performing for which we need to run trial campaigns so that we can analyse data. The management team see it purely as an expense and don't see the value of the "learning" exercise. That causes a struggle. Now the result is that the campaign that will be run is already compromising the quality of the learning that we can do, and this because the "Business" people have to be answered to.

</comment><comment><USER26> For me the division is mostly centered on quality.

The sales I'm working with want me to ship whatever, ship fast.

I want to ship quality.

Since money always wins, this usually ends with me giving in, feeling bad about it and .. blaming the sales people for being short-sighted/focused on the immediate return only.

<comment><USER27> Something to keep in mind about quality - sometimes programmers spend ages doing something in a way that seems like the right way, and the end result is either unimpressive, or a disaster. That destroys goodwill.

A project manager who had a history of working with unreliable developers may be drawn to a mindset of only trusting near wins, or even distrusting elegance-based arguments.

</comment></comment><comment><USER28> It comes down to 3 things: 1\. Communication 2\. Different incentives/goals 3\. Modus operandi

@1 Tech people speak tech - no marketing bullshit. Business people often don't understand what programmers are saying and it causes the frustration. Mental models are skewed by marketing and sales.

@2 Programmers want to build things properly, use cool stuff and develop skills. Business guys want to meet their quarterly targets.

@3 Business people want to solve problems with money. A lot of problems cannot be solved that way. They have a internal voice whispering "reduce cost and increase revenue", but it doesn't say "technical debt".

PS This is not binary. Programmers can behave like business types and vice versa.

</comment><comment><USER29> Here are my 2 cents, since i am involved in both management and programming.

Developers and programmers are often right about their opinions. BUT, that opinion is not always the output that company wants. Here is a simple example;

\- Company wants to get rid of one of their products. (not enough sales, a new better product is planned, etc. )

\- Dev lead wants to have extra resource for his/her team because of deadlines etc.

\- It gets rejected

\- Dev lead warns the company that releases will be delayed and customers will not be happy (true)

\- Manager doesn't do anything about it because product's future is already decided.

\- Dev lead is not happy about this decision.

It is kind of hard to satisfy both management and employees at the same time but that is the nature of it.

</comment><comment><USER30> One source of conflict is that many "business type" tasks/projects can be fairly easily time-scoped: "a report about opportunities for our product in Poland" can be a 5 minute comparison of populations, or a multi-year PhD dissertation.

Technical work often has a more rigid "minimum viable solution": a civil engineer can't just give up on a bridge halfway over a river, nor can he say "I just skipped the wind loading calculations and hope the school buses don't run on windy days." Some types of software (especially embedded e.g., aerospace and automotive) have similar concerns about safety and warranty.

</comment><comment><USER31> Business people are only in for the money (and power). Programmers are little artists interested in something that in it's core has nothing to do with money. Programming is about a passion for creating things with technology. The main problem is that most people are taught, and still think, that money makes things possible, while in reality money is the most destructive thing mankind has ever encountered. Money hinders development in so many ways, not to speak of the horror it causes like: wars, poverty, abuse, pollution and much more. Business people do not understand this.

</comment><comment><USER32> Sure they can. In fact, many programmers are business people.

That said, there are plenty of conflicts between programmers and their managers. Usually, it's because the management doesn't understand programming.

</comment><comment><USER33> Huh? Working means getting along with different kinds of people.

I think that if you aren't getting along with a business person, it is incumbent on both of you to discover what the disconnect is. What are you each missing? Maybe it is an understanding of technical limitations on their part, or a blind spot about the business on yours.

Except in the case of ill will on someone's part, discussion between adults should resolve the problem. If there's ill will, that's a good job to leave.

</comment><comment><USER34> When I've seen problems before, it's usually due to a lack of mutual respect. Either you have the business people thinking of the programmers as relatively useless nerds who can't do anything right on their own, or you have the programmers thinking that the business people basically sit around and do nothing.

I've never seen any real problems if both sides realize and understand that what the other side is doing is important and not easy.

</comment><comment><USER35> Looks at what they do, and you'll find the source of their biases.

A coder works with objects that are between math and infrastructure. From math, he gets the logical reasoning. From infrastructure, the long term need for solidity. A coder is also much product oriented.

Bizdev works with more fluid concepts (perception and human psychology) and focus more on the cash flow. Time is essential in business, a good product late rarely succeed.

</comment><comment><USER36> This is silly, and untrue. Any business where this is a case,is a business that is doomed in the first place - the best people get along fine across the spectrum.

</comment><comment><USER37> I don't get along with most people I meet and their behaviour seems silly to me.

Like the cool guys at school back in the days.

</comment><comment><USER38> For me,im implement accounting.most customer want to follow their rule.no gap no frs or whatever.just request.customer need third party accountant to consult so smooth project.i see havoc in oracle e business and baan implementation.internal staff request non functional and destroy the good base erp.their vendor everyday meeting and meeting and day by day programmer left..

</comment><comment><USER39> Maybe because business people request "non-sense" stuff, by non-sense I actually mean, non-logical, not fitting the system.

<comment><USER40> I hope you're being tongue in cheek, because if not you've missed the point that while you think that, business people will think exactly the same about you from the other side.

</comment></comment><comment><USER41> Bit of a generalisation...

</comment><comment><USER42> But we can get along with business people, it is opposite way around:

b> How long it will take?

p> About 2 months.

b> We need it in 1 week.

....

</comment><comment><USER43> Aspergers.

<comment><USER44> Asperger's is gone, and not lamented.

[http://www.nytimes.com/2009/11/03/health/03asperger.html?pag...](http://www.nytimes.com/2009/11/03/health/03asperger.html?pagewanted=all)</comment></comment>


Autonomous Robots Plant, Tend, and Harvest Entire Crop of Barley - <AUTHOR> https://spectrum.ieee.org/automaton/robotics/industrial-robots/autonomous-robots-plant-tend-and-harvest-entire-crop-of-barley <comment><USER3> The amount of labor involved in grain crops like barley per dollar of output is minimal already - the guy running the tractor/combine/etc is mostly making sure nothing breaks and keeping an eye on things (which is important when you're operating $N00,000 worth of heavy equipment on open ground). You do need guys, however, for when things do go wrong, and for all the other farm tasks (equipment maintenance, fencing, maintaining irrigation, and so on).

<comment><USER4> Imagine, though, a time when the automation reaches a stage where all weeding and most insect killing can be done mechanically with a robot instead of chemically with pesticides. That will be a huge boon for the environment and for farmers' bottom lines.

<comment><USER5> Insects are never gonna be killed mechanically, those are too small and too many in count. Modern trend is to use biological controll: you "plant" organism that eat them or eat their eggs.

<comment><USER5> Just to expand on my comment, biological control is quite varied, but the main theme is selectivity: you don't want to destroy all the insects or butterflies, just those who do harm to your produce.

So you basically have couple of forms, either some microbes, viruses or some form of insects that eat on just one type of insect or of insect class. Another main form is pheromone confusion thingies: you put them in your orchard/vineyard/market garden and it make hard for males of your target pest to find female and procreate.

</comment></comment></comment></comment><comment><USER6> While in rural Japan, I noticed a lot of tiny combine rice harvesters in tiny rice paddies, as opposed to mega-scale American agriculture: [https://en.wikipedia.org/wiki/Rice#/media/File:Rice- combine-...](https://en.wikipedia.org/wiki/Rice#/media/File:Rice-combine- harvester,_Katori-city,_Japan.jpg)

Perhaps these would be a model for smaller autonomous combines.

</comment><comment><USER7> There were a series of talks at the Royal Society about Robot Farming a few months back.

This video, by the head of Harper Adams College, goes into a lot more detail:

[https://youtu.be/OU8nwf2UI8g](https://youtu.be/OU8nwf2UI8g)

Agricultural machinery size is now limited by train tunnel size for delivery.

Larger farm vehicles, although more productive per person are heavier and cause soil compaction, which then requires further treatments to fix. Mention was made of light robot tractors able to work wet fields earlier before they are dry enough for a heavy human tractor so extending they growing season. They show an example of a light weight tractor that can drive up and down on a wet field without turning it into mud.

</comment><comment><USER8> _> There's still dirt, early mornings, dirt, more dirt_

I have always wondered who are these farmers in the dirt in the early morning? Where I farm the environment is rarely suitable for 'being in the dirt' in the morning. Typically the field work starts in the mid-afternoon after the sun has had a chance to dry up the morning's dew or previous days rain. There are definitely some late nights though.

<comment><USER9> Im on a small hobby farm outside Brisbane. Mid afternoon you want to be inside to get out of the heat. Mornings are prime time to get things done. Or later afteenoon.

<comment><USER8> _> Mid afternoon you want to be inside to get out of the heat._

That's what air conditioning is for!

</comment></comment></comment><comment><USER10> what I am interested in is robots that can reforest unused land. Imagine the possibilities with having armies of robots re-establishing green cover in Amazon delta. kinda like this but with robots:[https://en.wikipedia.org/wiki/Project_GreenHands](https://en.wikipedia.org/wiki/Project_GreenHands)

good thing is that would be not require nearly as much 'babysitting' as growing crops just ability to charter uneven terrain.

<comment><USER11> Reforestration with drones: [https://www.biocarbonengineering.com/technologies](https://www.biocarbonengineering.com/technologies)

</comment></comment><comment><USER12> It said that the capital to do this was $200,000 -- what was the inventory of robots required to accomplish this.

What will it take to have a small fleet of robots to manage small farms - <USER2> many small farms.

What if a community of gardens and farms were dispersed around a neighborhood/small town - and the town shared the use of the autonomous robots wherever possible.

Which robots are common to all farms and which robots are specific to a given crop?

Also, the downplay the robot-management tasks (refueling, recharging, interceding in really bad weather to tell the robots "that'll do robot, no farming today" sort of stuff)

An open library of farm robots, the tasks they can do, their cost options, how much crop area /number of farms/acres they can manage, if they can multi-task between activities specific to tomatoes in one farm and corn in another etc...

That would be interesting data.

Then couple that with the open source civilization plans - and update those to make those items more intelligent for efficiencies in their designed tasks.

In 100 years, if we can get an atmosphere on mars, we just send a fully automated pre-colonizing farm fleet to prep our invasion.

<comment><USER13> It will take way longer than 100 years to gey an atmosphere ready to grow earth crops on Mars, if at all possible.

<comment><USER12> I know that, I was putting a random number.

Regardless, we could still have a fleet of robots go build structures there, then another that will grow things in the structures...

We talk about sending men to mars, but I think it's short-sighted to not first figure out how to send and deploy resources and robots to pre-build infrastructure for said humans - and we should be practicing on the moon.

Or why is it that nobody seems to be talking about this? And specifically talking about practicing in the moon?

Spacex is really focused on a rocket that can get to mars, how much more quickly can it get to the moon?

<comment><USER13> > We talk about sending men to mars, but I think it's short-sighted to not > first figure out how to send and deploy resources and robots to pre-build > infrastructure for said humans - and we should be practicing on the moon.

As far as I know SpaceX is focusing on sending "stuff" to Mars, not just humans. Humans are better than robots in many ways though, as in they can do a lot of more versatile stuff. We can build rovers to explore and take pictures, but building a robot that can mimic the palette of actions of a typical human is far beyond our reach at the moment.

</comment></comment></comment></comment><comment><USER14> What I really need is an autonomous slug-killing robot on my allotment. Everything else I can handle. I've tried most existing controls, short of toxic Metaldehyde pellets, with little effect on the little buggers.

I estimate they destroyed over 50% of my (potential) crop this year, which makes you wonder how much toxic stuff goes on all those perfect field-grown cabbages etc you see in supermarkets...

<comment><USER15> Chickens are the answer my friend ;)

Seriously they are brilliant and the eggs are just this great bonus. The more insects they eat the tastier the eggs! You do need to visit them at least once per day, however auto-feeders and automatic coop openers do mean you are only going to collect eggs and maybe refill water. They also have amazing characters.

If you have a good relationship with other allotment holders then they can also collect eggs and look after them for you if you go on holiday.

If you do consider getting some, get point of lay chickens as they will give you a lot more eggs in the long run. Rescue chickens are a friendlier than some of the pure breeds but you do not get the variety of egg colours.

You do not need a cockerel but do expect hens to crow after laying. They love shouting about it.

<comment><USER14> Unfortunately animals are not permitted on my allotment (except bees). Also the visiting-every-day requirement might be more of a commitment than I can muster.

But I'm curious, how would the chickens get to the slugs? Don't they have to be kept in a fenced off enclosure, away from the plants - otherwise they would damage young seedlings etc?

We do have a population of toads which I think eat the slugs, but they just don't eat enough of them! And the local cats, in turn, seem to be quite interested in eating the toads...

<comment><USER15> I used to keep young seedlings covered, but anything big they ignored but happily hunted all day. On an allotment I would suspect you would need to pen your allotment using a flexible electric fence IF people objected to chickens invading their allotment.

</comment></comment></comment></comment><comment><USER16> Do this for small scale non-monoculture farming and I will be impressed. This is just a marginal productivity gain for factory farming.

<comment><USER17> You're right... it's just like how early commercial computers were productivity gains for large corporations.

New tech is expensive and not very good - only big businesses see positive ROI. As some technology matures, it becomes a commodity for everyone.

Small farms could go do this right now. It just wouldn't make financial sense.

<comment><USER16> Yeah I mean if you think improving ethanol and malt production is cool.

As far as actual food I'm more impressed by small scale open source farm bot projects and some of the innovative stuff permaculturists are doing without tech.

Factory farmers = Microsoft/Windows

Small scale farmers = Open Source/Linux

</comment></comment></comment><comment><USER18> > Moonshots like this are understandably expensive, though, and since a huge > chunk of that money went to capital costs (like buying a tractor and a > harvester), the next crop will be vastly cheaper.

They would get a more accurate number if they calculated how much these machines depreciated over that period instead of just throwing in their total cost.

<comment><USER19> Not really, they should theoretically handle a lot more than a hectare with these things.

<comment><USER20> And over time you don't need machines that accommodate humans anymore making them even cheaper to produce. This is the future.

</comment></comment></comment><comment><USER21> I have an acquaintance who works for a huge manufacturer of agricultural machinery. His stories about adventurous technicians who have to parachute into remote Australian farm lands to repair a stuck self-driving combine are always nice to hear.

<comment><USER22> That sounds like an awesome job.

</comment></comment><comment><USER23> If anyone is in to this I write speculative fiction about this kind of thing:

[http://tlalexander.com/sanctuary/](http://tlalexander.com/sanctuary/)

(I also build robots) :)

<comment><USER24> Any tips for people who want to start writing speculative fiction (or just short stories), other than to just practice a lot?

<comment><USER23> I think my best tip is both to read (for amusement, education, and inspiration) and to write (as in - just do it, and if you're stuck silence your inner critic and just DO IT).

I'm just some engineer. But I'm a really imaginative and passionate person and I have a lot of ideas I care about. And so I write about those. I was inspired by reading The Martian, which was an amazing book written by a Software Engineer. It was after reading The Martian that I began writing.

Have you tried writing? What has been your blocker?

</comment></comment></comment><comment><USER25> Somewhere out the back is another bunch of fields where they test the robots, they're probably full of crops in various states of destruction

</comment><comment><USER26> Automate the supply chains. Start with what is essential then move on from there.

<comment><USER27> Disagree. Automate the production, which democratizes the supply.

Minimal supply chains are necessary if you can produce crops autonomously at the point of consumption (think rooftop solar). It would be wildly inefficient to grow in each person's backyard, but not so to grow in the outer rings of urban areas.

Automated production is essential. Supply chains for abundant, distributed resources are superfluous.

<comment><USER28> I think you might be correct in some domains, but farming isn't one. You simply can't grow all crops in all places, nor is that allocation of land a good use. Barley grows well in flat fields. Not so well in the wooded hills outside Atlanta. Hops won't grow at all where it doesn't freeze in the winter, and basil needs lots of sun and water. We've mostly optimized where we grow crops for land use and yield already, so, it is indeed a supply chain problem to move them to where they need to go.

Also, I'm not sure how automation of labor democratizes supply. supply isn't constrained by labor. It is constrained by yield. Automation won't solve that as much as chemical engineering or more land would.

<comment><USER27> > I'm not sure how automation of labor democratizes supply.

It puts the control back in the hands of consumers of the product, instead of producers (which is more often than not, multinationals or large corporations who are motivated to extract as much profit as possible from their business transactions).

You do not have time or resources to farm your own plot of land (generally speaking, hand waving away the homesteaders here). Your ag co-op [1] does. This is to farming as AWS was to infrastructure (if I may be permitted to torture an analogy).

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

<comment><USER29> Who do you really think will own the robots? It will be the multinational corporations again. Food is decently cheap already considering I have to eat multiple times a day. People will just spend their money on some place else. Like you said another corporation will extract profit from other transactions.

<comment><USER27> > Who do you really think will own the robots?

Well, society gets a say. Witness how both Canada and India have invalidated pharma patents, and how the US DoD is permitted to nullify patents when it suits them for strategic purposes [1].

Also, the US government can infringe on a patent with limited resource of the patent holder.

"Can the U.S. Government Infringe a U.S. Patent? (The U.S. Government Says it's Impossible)"

"Although a patentee can sue the U.S. government for unlicensed use of its invention, Congress requires that those cases be filed in the Court of Federal Claims (CFC) rather than in district court. No jury trial is available, and the only remedy is a reasonable royalty." [2]

I think its a bit defeatist to throw your arms up in the air and say "there is no hope, big companies will always win", but I'm an optimist.

[1] [https://www.wired.com/2013/04/gov-secrecy-orders-on- patents/](https://www.wired.com/2013/04/gov-secrecy-orders-on-patents/)

[2] [https://patentlyo.com/patent/2015/09/government-infringe- imp...](https://patentlyo.com/patent/2015/09/government-infringe- impossible.html)

<comment><USER29> Just because something becomes cheaper doesn't mean someone isn't profiting. Unless the government owns the production and historically that doesn't work out so well. We live in a capitalist society. For thousands of years there has been a chief, king, family, and now corporate entity profiting off another group. Humans are not even close in our lifetimes.

I won't even source anything I can look around. Applaud your optimism.

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> Man that is a cool site, all the robotic articles thanks for sharing

</comment><comment><USER31> s/barley/weed/gi

<comment><USER32> my man!

</comment></comment><comment><USER33> I love this so much. This is the coolest thing in the world.</comment>


North Korea fires missile over Japan - <AUTHOR> https://www.theguardian.com/world/2017/aug/28/north-korea-fires-missile-japan <comment><USER2> This leads to the next thing. Violating Japan's airspace with a missile may be a provocation for war. If that's the case, you're going to hear from our (US) president that we're officially going to war or conflict with North Korea. Unfortunately, in this case, I believe that Bannon is right. (We're screwed in that situation)

<comment><USER3> We aren't going to war, at least not intentionally. The downsides of a conflict with a nuclear state, even one with questionable capabilities like the DPRK, vastly outweigh the upsides. And Kim knows this, which is why he feels free to continue to call our bluffs.

Trump's inability to bluff (or communicate with precision in general) has really messed things up at this point. I mean, taking his words as spoken he has already threatened to nuke them if they even so much as continue issuing threats. Not only did they up the threat ante within hours of that remark (c.f. "attack the waters around Guam"), they've now put a weapon straight through an ally's airspace. Where do we go from here?

<comment><USER4> Where do we go from here? To the very brink, at least if Trump is left to his own (mobile) devices. My guess is he will reroute a CBG or two towards the Korean peninsula and make a lot of bluster about whatever new line he is prepared to draw.

Meanwhile, everyone else works frantically on a backchannel plan that allows both Kim and Trump to save some face. I don't see how this happens unless brokered by China, who emerges the big winner on the world stage.

<comment><USER5> As much as I hate Trump, none of this is his fault. If we have to address this at the root, it's China, the pink elephant in the room. China, our biggest trading partner and also an authoritarian government (US is probably kicking itself allowing such a horrible actor to be so powerful), is propping up this vassel state and prevent any progress made in the peninsula. If China wasn't propping them up, North Korean government would have already fell long time ago.

So what happens now? Do we just let China keep protecting its puppet until the puppet has shipped a nuclear bomb to a port in Los Angeles? I hope not. I hope the world takes action before then.

<comment> Ting-wei That is it. China has full control over its huge border to NK. No way for them to import missile parts unless China is OK with that. _Everything_ of value that NK has and that its elite enjoys is imported from China: Cars, buses, flat-screen TVs, mobile phones...

Plus, China could cut or reduce the oil/gas supply any day to zero.... if they wanted.

<comment><USER6> I agree. DPRK should keep its nuclear weapons. I am more concerned about nukes in the Indian peninsula when it comes to world security. How good is Pakistan at keeping its nuclear arsenal safe? How good is India? Can we trust them to be competent?

What we should focus on is strengthening the democracy and the economy of ROK so when DPRK fails, ROK can be independent and strong like Germany was in the nineties in its unification. We are nowhere close.

</comment></comment></comment></comment></comment></comment><comment><USER7> Many people are blaming China for the whole NK situation for their "support" and asking for a regime change.

What do you propose that China can do after the regime change?

Afghanistan, Iraq and Libya and great examples that you cannot just throw away a dictatorship. What follows is practically a game of thrones of powers in the region which is a lose-lose situation for everyone, specially people of the "free'd" country and the neighbors.

<comment><USER8> > Afghanistan, Iraq and Libya

I think it's wrong to compare North Korea to those countries. For one, the post-regime change problems in those countries have been caused by Islamic insurgencies, which is not something I'd expect to happen in NK.

<comment><USER9> What, because East Asians are incapable of armed insurgency?

Are you forgetting the Viet Cong so quickly?

<comment><USER8> They certainly are, but I think it's foolish to think that a regime change would play out the same in NK as it did in countries with very different cultures. I'm skeptical that NK's ideology would be able to sustain an insurgency after too much contact with the outside.

Also, the Viet Cong were supported by a state, North Vietnam. They also weren't able to defeat South Vietnam; that took a withdrawal of US support and the actions of the regular North Vietnamese Army.

</comment></comment></comment></comment><comment><USER10> First thing on the BBC article:

> No effort was made by the Japanese to shoot down the missile, which was > launched early in the morning local time, triggering safety warnings.

Isn't that odd? Why mention this up front? Why _not_ shoot this down given the warnings to the public indicated it was serious and a threat to life?

What tech do Japan use to shoot these down? Is it the same as the Yanks? What happens the moment they try to shoot one down and it sails right by?

<comment><USER11> Most ballistic missile defense (BMD) currently deployed is designed for a shootdown in the terminal phase, ie after the missile has reentered the atmosphere. Destroying a missile in the boost phase, before it leaves the atmosphere, is the best bet, but that requires advanced intelligence of when and where a launch will happen. If I recall correctly, there's currently no good midcourse BMD for when the missile is out of the atmosphere. Aegis has some midcourse capability, but it's for lower and shorter range missiles, I think. That just leaves terminal defense, like THAAD and the Aegis system, and terminal defense is the hardest phase. So there's no real good option to shoot it down, especially if it turns out your interceptor has a low probability of kill (pk). If a missile was actually coming down into Japan, you can be sure that there will be several interceptors on their way.

As for tech, Japan mostly uses the same tech as the US, including THAAD, which is a ground-based radar and launcher, the Aegis system with the Standard Missile-3 (SM-3) which is a ship-based radar and launcher, and finally the Patriot system of ground-based radar and launcher. However, the Patriot's PAC-2 and -3 missiles are designed for missiles with a shorter range than ICBMs. All of them have data-sharing, so you can use an Aegis radar to track a missile for a THAAD battery to launch.

If you try to shoot a North Korean missile and miss, then either morale goes out the window if it was an NK test, or you have to fall back on the next line of defense (Aegis -> THAAD -> Patriot) and hope that it hits. The further the ICBM goes though, the lower pk you have since it's going faster and potentially has better maneuverability.

</comment></comment><comment><USER12> What does the Japanese Self-Defense Force's charter allow in cases like this? Are they allowed to launch attacks on foreign soil in response to immediate threats, or do they need to appeal to the US/allies to do it for them?

(Not that there's much they could usefully do to NK, AFAIK, but I'm curious about the principle.)

<comment><USER13> Not in the current form of the constitution, but this kind of 'trial' will sure be used by the prime minister to push his article 9 reform.

</comment></comment><comment><USER14> Is there any way an amateur can verify claims of a missile being fired? Does it appear on radar at all? Thinking one of the flight tracking sites.

In today's world I'm skeptical to say the least.

<comment><USER12> Certainly NK has every reason to lie, but I can't imagine why Japan would. Open war with NK would be very dangerous for them.

<comment><USER15> Not saying they are lying but Abe has been continously playing with the fear of NK to push his military agenda (the change of constitution and surveillance laws).

</comment></comment></comment><comment><USER16> I'm less worried about NK missiles than I am about a boat with an NK nuke on board, detonated in a harbor. A "smugglers war".

I'm assuming the US Coast Guard is all over this kind of threat, but I don't know how hard it is to detect a bomb hidden aboard in some cranny, shielded by multiple layers of inches-thick steel.

<comment><USER17> >I'm less worried about NK missiles than I am about a boat with an NK nuke on board, detonated in a harbor

How does North Korea benefit from an attack like that? The regime isn't suicidal, every move they make is to strengthen their own position.

<comment><USER18> That's assuming it can be traced to NK after detonation.

<comment><USER17> What is the benefit in that situation? They know any attack will make the US more hostile, whether they're involved or not.

</comment></comment></comment></comment><comment><USER19> This is terrifying in light of watching simulated WW3 this morning this morning: [https://www.youtube.com/watch?v=HbB0srzLuuo](https://www.youtube.com/watch?v=HbB0srzLuuo)

</comment><comment><USER20> I wonder if China could just annex NK a la Russia and Crimea, but in this case bring them into the modern age. The world would probably breathe a sigh of relief.

</comment><comment><USER21> Kim in the North: winter's coming!

</comment><comment><USER22> I'm more worried about Trump escalating than Kim.</comment>


Ask HN: I must be missing something about WannaCry etc. - <AUTHOR> I understand that the massive WannaCry propagation is thanks to unpatched Windows systems such that, once the malware is inside a given computer, it spreads across the LAN that computer is part of.
But as for the initial "infection", it's caused by merely opening a dodgy email attachment. In which case it's no different than any other crap one gets to their computer by recklessly opening attachments.
So what's so unique about this one that makes it spread so widely? <comment><USER2> 1) Protocols that are designed for LANs are often exposed to the public Internet. This means that it can spread from one LAN to another by scanning the entire public IP address range for the vulnerable service. This happened in 2003 with the Blaster worm. [https://en.wikipedia.org/wiki/Blaster_(computer_worm)](https://en.wikipedia.org/wiki/Blaster_\(computer_worm\))

2) LANs can be very big (thousands of computers) and span multiple buildings or cities, and many LANs only have firewalls at the "border" with the Internet (instead of per-machine). Windows machines in particular, tend to have shared network drives (CIFS or SMB) enabled so you can log into any computer and continue working (and to avoid viruses spread by floppies and USB keys).

</comment><comment><USER3> If you have open ports and SMBv1 is unpatched/enabled, I believe you can randomly get from a random scan of your ip by the worm.</comment>


Shoply: Selling Online The Simpler Way - <AUTHOR> http://technorati.com/technology/article/shoply-selling-online-the-simpler-way/

<comment><USER2> "Unlike Shopify, there aren't any bandwidth or storage limits, not even a setup fee; it's just a simple way to sell your wares online"...."The premium version in a nutshell, allows you to post and sell up to 50 products at a time (10 in free)"

Saying there's no limits of one specific type, followed by another type of limit (a prohibitively small limit at that) seems a little disingenuous.

</comment><comment><USER3> They need a better value prop than unlimited bandwidth or storage limits - those are near the bottom of the list of importance for a small-time eCommerce site.</comment>


Argoledo now has the ability for posts to be read out loud to you - <AUTHOR> https://www.argoledo.com/read.php?post=102 <comment><USER2> Doesn't appear to work on mobile/brave.</comment>


Making our pageview data easily accessible - <AUTHOR> http://blog.wikimedia.org/2015/12/14/pageview-data-easily-accessible/ <comment><USER2> > [http://top.hatnote.com/](http://top.hatnote.com/)

Wow, it's like a window into the zeitgeist.

</comment><comment><USER3> edit: Added the use of `date` to automatically return last 120 days of data, and crudely label the axes

edit: Here's a gist [https://gist.github.com/dannguyen/f415b1797f686f995f8e](https://gist.github.com/dannguyen/f415b1797f686f995f8e)

I thought there's a Bash one-liner in there somewhere to read the API and convert it to a Google Static chart...but I haven't had my full cup of coffee this morning. Also, my Bash-fu is weak, so here it is as a partially completed function...I'm sure someone here can turn it into a one-liner:

Given a user argument, such as "Star_Wars" [0], the JSON response is parsed with the jq tool [1], then wrangled into a series of comma-delimited values to be passed into Google Static Charts API [2]:

Resulting URL which is a timeseries of the past 120 days of daily pageviews for "Star_Wars":

[https://chart.googleapis.com/chart?chs=800x200&cht=bvg&chd=t...](https://chart.googleapis.com/chart?chs=800x200&cht=bvg&chd=t:26867,21185,19318,18070,18024,20756,22056,18436,18098,17767,18672,21258,22884,24471,24350,19195,18220,18934,26076,27259,29547,27867,23664,19716,19332,19375,22766,25316,20725,19062,18836,18509,19057,21748,23147,18438,18824,17608,18556,19966,19937,22061,18896,18428,16753,14423,16903,29012,24012,17570,15676,15587,16551,19074,30278,36592,23440,19306,18325,18281,19491,28537,33151,41537,185853,111159,72979,61927,68754,57846,46054,38470,77358,104545,33733,41420,45332,37476,32674,34710,37770,43845,58388,59431,47990,44572,41607,39417,47977,46063,52561,40330,36673,35941,38812,44684,49243,58960,58053,50050,52144,61630,71900,72059,75722,64551,65993,63971,63492,70945,84578,98991,93108,86095,84668,87699,111377,142213,175058,202539&chds=0,202539&chbh=5,0,1&chxt=x,y&chxp=0,0&chxl=0:|2015-08-17|2015-12-15|1:||101269|202539&chtt=Last+120+days+of+pageviews+for+Wikipedia+page+on+Star_Wars)

Here's the bash function

        function chart_wpgviews(){
          # first argument is article name
          # eh, too lazy to look up string comparison, so hardcoding the start and end date vals,
          # since it seems to be locked at a max of 4 months anyway...and hard-coding en.wikipedia
          PAGENAME="$1"
          PROJECT="en.wikipedia"
          ENDTIME=$(date +%s)
          STARTTIME=$(date --date="@$(($ENDTIME-120*24*60*60))" +%s) # 120 days ago
          ENDDATE=$(date --date="@$ENDTIME" +%Y-%m-%d)
          STARTDATE=$(date --date="@$STARTTIME" +%Y-%m-%d)

          RESPONSE=$(curl -s https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/$PROJECT/all-access/user/$PAGENAME/daily/$(tr -d '-' <<< $STARTDATE)/$(tr -d '-' <<< $ENDDATE))
          VALS=$(jq '.items[] | .views' <<< $RESPONSE | tr '\n' ',')
          MAXVAL=$(jq '.items[] | .views' <<< $RESPONSE | sort -rn | head -n1)
          echo "https://chart.googleapis.com/chart?chs=800x200&cht=bvg&chd=t:${VALS%?}&chds=0,$MAXVAL&chbh=5,0,1&chxt=x,y&chxp=0,0&chxl=0:|$STARTDATE|$ENDDATE|1:||$((MAXVAL/2))|$MAXVAL&chtt=Last+120+days+of+pageviews+for+Wikipedia+page+on+$PAGENAME"
        }

[0] [https://wikimedia.org/api/rest_v1/metrics/pageviews/per- arti...](https://wikimedia.org/api/rest_v1/metrics/pageviews/per- article/en.wikipedia/all-access/user/Star_Wars/daily/20150101/20151215)

[1] [https://stedolan.github.io/jq/](https://stedolan.github.io/jq/)

[2] [https://developers.google.com/chart/image/docs/data_formats](https://developers.google.com/chart/image/docs/data_formats)</comment>


How I Read Programming Books - <AUTHOR> http://www.simplyahmazing.com/2013/01/how-i-read-programming-books.html

<comment><USER2> I do it a bit differently:

Read 0 is basically just thumbing through the book and absorbing its "natural structure"

Read 1 is a regular cover to cover but oftentimes I only pick specific chapters that looked interesting from R0. Important: With pencil and marker in hand to highlight interesting stuff. I selectively pick examples and exercises and work through them. At the same time I start building a mindmap on the topic (I use FreeMind). If the language has a REPL I usually play around a bit and copy/paste interesting building blocks into the map.

"Read" 2 is working through a bigish project I made up+additional internet research. Always growing that mindmap.

<comment><AUTHOR> That's a really interesting way of reading a programming book. I think one thing on the back of my mind w/my reading style is I want to know as much about the language at any given time so that if I wanted to spin up quick code to do something I don't have to research for it.

I also have this question in the background, if i was at an interview and I had to use this language, am I fluent enough to get around w/access to search things?

I'm going to download mind map and try your way of learning things, I may like it more. It seems to be quicker.

</comment></comment><comment><USER3> upvote</comment>