South Dakota State University offers precision agriculture course work - <AUTHOR> https://www.hpj.com/crops/south-dakota-state-university-offers-precision-agriculture-course-work/article_a44892e5-a14b-528d-8da1-ba6cb5428c8d.html <comment><AUTHOR> [https://www.sdstate.edu/agronomy-horticulture-plant- science/...](https://www.sdstate.edu/agronomy-horticulture-plant- science/precision-agriculture)

 _Agriculture is experiencing a fast-paced evolution as technology continues to develop. Precision agriculture has emerged with an array of new and exciting – and increasingly high-tech – tools. The integration of computer technology with farm equipment, farm sensors, GPS navigation, satellite imagery and drone imagery are quickly revolutionizing agricultural production. While this revolutionary evolution is creating new opportunities within the agricultural industry, it is also generating a need for college graduates, pertinent research, and Extension expertise related to precision agriculture. SDSU is addressing this change in needs by leading the nation with its Precision Agriculture degree._

 _SDSU's first-in-the-nation B.S. degree in Precision Agriculture is a collaboration between the Department of Agronomy, Horticulture and Plant Science and the Department of Agriculture & Biosystems Engineering. Precision technology is the key to increasing on-farm profitability, and will play a major role in ecosystem sustainability. The new degree promises to develop a new generation of agronomists who are well equipped to work with precision agriculture tools and data analytics to make crop production recommendations._</comment>


Silent Weapons for Quiet Wars - <AUTHOR> http://www.lawfulpath.com/ref/sw4qw/index.shtml <comment><AUTHOR> "Experience has prevent that the simplest method of securing a silent weapon and gaining control of the public is to keep the public undisciplined and ignorant of the basic system principles on the one hand, while keeping them confused, disorganized, and distracted with matters of no real importance on the other hand.

This is achieved by:

        disengaging their minds; sabotaging their mental activities; providing a low-quality program of public education in mathematics, logic, systems design and economics; and discouraging technical creativity.

        engaging their emotions, increasing their self-indulgence and their indulgence in emotional and physical activities, by:
            unrelenting emotional affrontations and attacks (mental and emotional rape) by way of constant barrage of sex, violence, and wars in the media - especially the T.V. and the newspapers.
            giving them what they desire - in excess - "junk food for thought" - and depriving them of what they really need.

        rewriting history and law and subjecting the public to the deviant creation, thus being able to shift their thinking from personal needs to highly fabricated outside priorities.

These preclude their interest in and discovery of the silent weapons of social automation technology.

The general rule is that there is a profit in confusion; the more confusion, the more profit. Therefore, the best approach is to create problems and then offer solutions. "</comment>


Looking for entrepreneurial team - have technology and first client. You find funding! - <AUTHOR>

<comment><AUTHOR> Hi. My name is Vinay Gupta. I'm an environmentalist and refugee infrastructure consultant by trade, although I did spend about 10 years doing software including a number of start ups. My projects include minor roles in <http://oilendgame.org/> <http://smallisprofitable.org> and technical lead on <http://database.biomimicry.org/>

My main project is an award winning, public domain / free/libre refugee shelter system called the hexayurt.

So, I've got a technology that I'm looking to get turned into a product. For ethical reasons there will be no patents or IP protection - you could write a closed implementation, patent additional side features etc - but the basic ideas are already disclosed. The cat is out of the bag, because this is refugee stuff which _just happens_ to have some other applications, and so I disclosed it to make sure it would not be patentable from my work. There may be other patent issues, although none have arisen so far - we have yet to hit prior art.

Technologies: mobile phone programming, 2D bar codes, very large databases, and some basic understanding of cryptosystems. Like, how to call the libraries, not how to roll your own broken encryption.

Now, here's the kicker: if I'm not _entirely_ mistaken, I have a customer lined up. A Large Customer. If that turns out not to be true, there's no point starting this thing.

If, however, it is, the gig would start with one large contract, and then if you can then make this into a company, you go right ahead. I'm fully engaged pushing the Hexayurt Shelter System (a free/libre refugee infrastructure system) and don't have time to do a start up. I can advise, and make the introductions. From there in it would be up to you to make it a success, working with that client. My compensation is likely to be largely as a subcontractor to that client, working on the design end.

Interested? email@example.com

<comment><AUTHOR> I can fill in a little more of the technical side of things here. The core challenge is to print a lot of data on an A4 / US Letter sized piece of paper, and then get that data back off the paper and into an application running on a cell phone.

Ideally, this would work on any old phone. Realistically, this would be vertically integrated - you'd get to pick the phone, and the printing format for the page containing the data. From the specs and the initial discussions I've had with companies in the field, the speed of light for 2D bar codes is about 3mb per page (Data Matrix) and the choke point is mobile phone camera quality, particularly focal length issues (can't focus properly on the close page.)

Approaches: using better phones, deconvolution algorithms, c'mon guys, you know how to fix this.

After that, there's some extremely simple large scale database stuff which looks, to my eye at least, to be a natural fit for REST.

Basically:

Yank data off the page

think about it

do stuff over GPRS/3G or - ugh - SMS (yeah... SMS out, SMS back... terse data formats.)

Done.

Nothing about this is difficult. The crypto fits in just to ensure data integrity - make sure that the bar codes haven't been damaged, or that the data on the bar codes isn't stale.

Ok? Enough here to be going on with? Do we need to belabor the point further? For the right team, __assuming __the deal comes through, this would be an easy gig.

If it doesn't, there's no gig, no client, no business, even if I disclosed the rest of the pieces here. So it's a potential and there's not much you can do to make it happen or not. But if it does come through, first plausible team might make a pretty good living for a few months and possibly be left with a viable company at the end of it. Can't promise more than that. In terms of IP, there would be full disclosure, no NDAs, no patents on my work as I described. There could be competition, although probably not, and for other reasons I'm not simply posting the whole damn design on the internet (more on that angle later.)

Ok, done. Nothing more I can think of to tell you, please ask more questions either here or by email.

Vinay

</comment></comment><comment><USER2> The more you say in here, the better chance you have of finding a person. Pitch something.</comment>


Show HN: Introduce Yourself with Kax Card – New Business Card - <AUTHOR> http://kaxcard.com

<comment><AUTHOR> 1\. Kax card is your Mobile Business Card.

2\. Always Free Mobile Application to Introduce yourself better.

3\. It's very Easy to Update your Card & Bio Anytime, Anywhere for any occasion - say in an event or in any Conference. It's that simple.

4\. You Don't need to carry Business cards anymore. Yay!

Please share your Honest feedback and Ideas.</comment>


WSU Researchers Use High Pressures to Create Super Battery - <AUTHOR> http://www.wsunews.wsu.edu/pages/publications.asp?Action=Detail&PublicationID=20580&TypeID=1

<comment><USER2> See also

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

which already has some discussion.

</comment><comment><USER3> "future applications include creating a new class of energetic materials or fuels, an energy storage device, super-oxidizing materials for destroying chemical and biological agents, and high-temperature superconductors."

Other applications of the material include curing cancer, solving the problem of world hunger, and getting fat research grants from the NSF.

</comment><comment><USER4> Why do they keep comparing it to nuclear energy, though? I have 2 questions. First, how would this energy be liberated, and would that be more energy than it takes to run a diamond anvil cell? Second, isn't this similar to making a gun that shoots bullets faster than ever before, and calling that "second only to light-speed?"

<comment><USER5> > First, how would this energy be liberated, and would that be more energy > than it takes to run a diamond anvil cell?

Are you asking if they've violated conservation of energy?

<comment><USER6> Does the nuclear bomb release less energy than was put into it by humans during the manufacturing process?

EDIT: done being a troll :)</comment></comment></comment>


A father's love letter to his daughter in Ruby - <AUTHOR> https://github.com/jpfuentes2/a-letter-to-Augusta#the-letter

<comment><USER2> Beautiful :)

</comment><comment><USER3> Forth might have been easier.</comment>


Google billionaire Eric Schmidt: Elon Musk is wrong about A.I - <AUTHOR> https://www.cnbc.com/2018/05/29/google-billionaire-eric-schmidt-elon-musk-is-wrong-about-ai.html <comment><USER2> Without reading (just by the title): both arguments are Ad hominem.

<comment><USER3> The article gives plenty of reason's that aren't Ad hominem:

AI is good because AI is good.

AI is good because AI will get better

AI is good because it doesn't explain itself, but one day it will.</comment></comment>


CVE-2018-15685 – Electron WebPreferences Remote Code Execution - <AUTHOR> https://www.contrastsecurity.com/security-influencers/cve-2018-15685 <comment><AUTHOR> This is related to the recent disclosure about how open redirects in Google Chat can lead to RCE [0]. The bugs are related to security features not being correctly inherited across child windows (e.g. iframes).

[0]: [https://blog.bentkowski.info/2018/07/vulnerability-in- hangou...](https://blog.bentkowski.info/2018/07/vulnerability-in-hangouts- chat-aka-how.html)</comment>


John Carmack on Android Gaming - <AUTHOR> http://daringfireball.net/linked/2011/04/13/carmack-android <comment><USER2> Please link to source material: <http://www.nowgamer.com/print/feature/1308>

</comment><comment><USER3> "But when I asked how many peple had spent 20 bucks on a game in the Android store, there was a big difference."

I am unaware of _any_ games that cost $20 in the Android Market. Maybe he asked the wrong question.

</comment><comment><USER4> I doubt Gruber would have posted anything about this if the mentioned poll had a result favorable for Android.

</comment><comment><USER5> what games in the android store are worth $20? maybe if developers made them, people would buy them.

though, i don't know anyone with an iOS device that has spent $20 on a single application or game.

<comment><USER6> OmniGraffle for the iPad was $49.99 and no regrets.

</comment></comment><comment><USER7> Just going by the audio, which I am glad Gruber posted, it is pretty clear Carmack's "poll" could pretty accurately be described as a push poll.

</comment><comment><USER8> I must say that is a pretty good troll. Not much I can say except don't feed the troll

<comment><USER9> You're calling John Carmack a troll? The man is possibly the most respected game developer ever.

<comment><USER8> That wasn't Carmack's blog so how could he be trolling? His comment was extracted to troll places like HN. I was trying to head off a long debate from the post.</comment></comment></comment>


Finally a Worthy Competitor to Google Street View - <AUTHOR> http://blog.mapillary.com/news/2015/07/30/viewing-experience.html

<comment><USER2> As cool as it is, the reality is that geography changes: cities evolve, roads are built, closed, etc. Maintaining an up-to-date database of those views can only be done to serve another, very lucrative purpose, the one of which only Google & al. can offer. I don't think a community-based approach can work when the scale of effort is this high.

<comment><AUTHOR> Im not to sure about that. Number of pictures are growing exponentially (28 million an counting) and soon there are more active weekly users than there are google street view cars. The whole point with crowdsourcing is that streets changes.

DISCLAIMER: I work for Mapillary

<comment><USER2> It's one of those situations where I would be very happy to be wrong :)

<comment><USER3> The best world map - OpenStreetMap - and the best encyclopedia - Wikipedia - already prove you wrong :)

</comment></comment></comment></comment><comment><USER4> This is really interesting, but I'll second the intuition that building a critical mass for StreetView-like data is probably one of the hardest thing to crowdsource.

It's just not fun to be driving each and every road around where you live. Besides, without an hemispheric camera data is really limited.

<comment><USER5> Actually, building a critical mass of streetView-like data can happen while having other goals in mind.

For example, I live in São Paulo and I'm a member of OpenStreetMap. Every time I ride in a bike lane, I take photos of it with mapillary, so it gets way easier to map them.

By the way, the OSM coverage of bike lanes in São Paulo, because of the help of mapillary, is the best one in all maps available (even the city hall ones)</comment></comment>


Editing the Software of Life, for Fame and Fortune - <AUTHOR> https://medium.com/backchannel/editing-the-software-of-life-for-fame-and-fortune-adda86dcc2

<comment><USER2> Hi, I'm coming across CRISPR articles on a regular basis and was curious if any professional molecular biologist wet-lab peeps can give any pointers for DIY hobbyists if it's possible to do any DIY CRISPR experiments at any of the DIYBio hackerspaces around.

So I believe the CRISPR reagents/plasmids can ordered here: [https://www.addgene.org/CRISPR/](https://www.addgene.org/CRISPR/)

A very rough guide for designing the experiment is shown here: [https://www.addgene.org/crispr/planning-your- experiment/](https://www.addgene.org/crispr/planning-your-experiment/)

I'm curious if it's possible for a layman to design a simple experiment say to 1) introduce the photoflourescent gene to bacteria via DNA recombinant techniques and 2) then maybe knock out that gene later via CRISPR by inserting some arbitrary nucleotides into the coding sequence of the photoflourescent gene, with visual confirmation; 3) and then re-enable photoflourescence later by deleting those arbitrary base-pairs with visual confirmation.

Would love to learn more and do some hands-on stuff since I'm hearing so much about CRISPR everyday!</comment>


Man carrying umbrella, not rifle, was on his usual route - <AUTHOR> http://www.thenewstribune.com/2013/03/20/2521320/man-mistaken-for-wielding-gun.html

<comment><USER2> False headline. They weren't hunting for a man with an umbrella, they were hunting for a man with a gun, who turned out to only have an umbrella.

Here's the much more comprehensive reporton which it is based: [http://www.thenewstribune.com/2013/03/20/2521320/man- mistake...](http://www.thenewstribune.com/2013/03/20/2521320/man-mistaken-for- wielding-gun.html)

Strangely, although some sentences are lifted word-for-word, there's no link to or credit of the original article, which a) amounts to mild plagiarism and b) prevents many readers from getting valuable context (such as the explanation of a 'partial lockdown' being that schools merely locked their outer doors until they received an all-clear from the police). to provide only half the facts while omitting any link to the source borders on dishonesty.

</comment><comment><USER3> Text-only Google cache: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://freedom- or-safety.com/blog/citywide-multi-jurisictional-manhunt-swat-teams- helicopters-schools-closed-over-man-with- umbrella/&hl=en&client=opera&hs=zEX&channel=suggest&strip=1).

</comment><comment><USER4> It's a shame the phrase "police state" has been so abused. But this is quite an adequate moment for its usage.

<comment><USER5> What exactly is "police state" about this situation? Police reacted on a tip and it turned out the tipster made a mistake. I didn't get the memo that we're now calling "police state" every time the police actually do their jobs.

<comment><USER6> The job of the police would seem to me to be "exercising appropriate discretion" rather than sending an army to any place where there's vague implication something bad might happen.

<comment><USER5> It wasn't "any place" it was a school, and it wasn't a "vague implication" but a rather specific report (guy, black mask, gun) (the fact that a report is wrong does not mean it is vague). That seems to warrant a pretty serious reaction.

Indeed, there was a report of a gunman in my law school a few years ago. The place was locked down, SWAT came, there was a helicopter, the works: [http://www.nbcchicago.com/news/local/Gunman-Seen-at- Northwes...](http://www.nbcchicago.com/news/local/Gunman-Seen-at- Northwesterns-Chicago-Campus-82798722.html). It's standard operating procedure when dealing with sensitive areas with lots of people.

</comment></comment></comment></comment><comment><USER7> sometimes I wonder if this sort of policing is like an allergy, an immune system gone overactive.

<comment><USER8> More like a metastasizing cancer.

<comment><USER9> I'm glad we're able to pay them hundreds of thousands of dollars to provide them with "trainin" as quoted in the article.

</comment></comment></comment><comment><USER10> While the article at freedom-or-safety.com is down, here's an alternate article: [http://www.spokesman.com/stories/2013/mar/20/umbrella- mistak...](http://www.spokesman.com/stories/2013/mar/20/umbrella-mistaken- assault-rifle-sparks-manhunt-oly/)

</comment><comment><USER11> Anyone else got the feeling that the US still hasn't gotten over a serious case of the jitters yet?

<comment><USER12> You can partially blame the 24/7 news cycle for this. It overstates risks and uses fear to drive viewership.

<comment><USER13> Only partially? I thought that the culture of fear created by sensationalist news was precisely the reason the US has a violent crime rate that's two orders of magnitude above any other functioning democracy.</comment></comment></comment>


Reflecting on 3 years as a founder - <AUTHOR> http://kathleenfritzsche.com/reflecting-3-years-founder/ <comment><USER2> enjoyed the ride we had together!</comment>


Finland Has Second Thoughts About Giving Free Money to Jobless People - <AUTHOR> https://www.nytimes.com/2018/04/24/business/finland-universal-basic-income.html <comment><USER2> Fake news.

[https://metropolitan.fi/entry/false-reports-in- international...](https://metropolitan.fi/entry/false-reports-in- international-media-on-finland-aborting-basic-income-trial)</comment>


Cloudron self hosting on EC2 now available - <AUTHOR> https://cloudron.io/blog/2016-07-05-selfhost-ec2.html <comment><USER2> It is good to see self-hosting options for more app platforms. My question is why one would prefer this over similar platforms which are also open source?

If you're willing to allow self-hosting for free on hosting other than your own paid service, is there anything to gain by remaining closed? Presumably if open, people could contribute fixes and improvements as well as help you identify security vulnerabilities.

<comment><AUTHOR> You are making a valid point and there might be nothing to gain remaining closed. We are not against open sourcing the code either, the main reason is that it is not on our radar, simply because we focus on building the platform and open sourcing it would be a distraction just now. There is no reason this might not happen in the future, but it will require a larger effort to focus on putting processes and tooling for the community in place, to really take advantage of open sourcing it.</comment></comment>


Microchips That Shook the World (2009) - <AUTHOR> https://spectrum.ieee.org/tech-history/silicon-revolution/25-microchips-that-shook-the-world <comment><USER2> The 555 tops the list, as usual. I have a sweet spot for it, since it was the first IC I was allowed to use for my own projects-even if I blame it for ushering in an entire era of blinkenlights...

<comment><USER3> I blew the top of a 555 once! I still remember peering into the whole in the top where I could still see bits of the die left. Most of it was gone! I never worked out what happened and my teacher couldn't shed any light on it either.

Fortunately the ejected packaging didn't hit me in the eye!

</comment></comment><comment><USER4> There's also their "Hall of Fame" updated until they stopped in 2019

[https://spectrum.ieee.org/static/chip-hall-of- fame](https://spectrum.ieee.org/static/chip-hall-of-fame)

</comment><comment><USER5> It's a good list, but, sigh, "key innovation, a circuitry trick called address multiplexing" \-- for anyone "skilled in the art", this isn't innovation. It's an OBVIOUS way to deal with the pin limitation.

I posit that much of what we herald as "innovation" is just what you'd naturally come up with if you work on the problem long and hard enough.

<comment><USER6> Don't be that person, don't diminish previous achievements. You, with all your arrogance, still stand on the shoulders of giants. These "innovations" are so frickin obvious and easy because you've learned about them. Inventing them for the first time is 100x harder.

<comment><USER7> I don't think OP was trying to be arrogant, I expect he would have diminished his own previous achievements as well.

I've had several projects that resulted in "patent pending" applications that I've had to review. It's frustrating to talk to sales and legal folks who want to sell an innovation as if it were some culinary experience for which we've got not only a secret sauce recipe but also world-class chef skills, when I know it wasn't particularly difficult: I just stood in the kitchen with supermarket ingredients, an average palette, and tried variations until it tasted the way I wanted it to.

I'm not cooking, I'm building automation equipment, but the fact that you couldn't buy something off the shelf to do a particular task before my efforts was primarily because the application wasn't common enough yet to make it a commodity, not that it was an insurmountable obstacle that I miraculously overcame.

<comment><USER8> Then why patent it instead of publishing, making yourself a well known leading expert instead of setting a landmine for the next person who does this particular task?

<comment><USER9> Because there is a huge amount of value to extract from the artificial scarcity a patent lets you impose on the world.

</comment></comment></comment></comment></comment><comment><USER10> Imagine refusing to raise the pay of the inventor of the integrated op-amp.</comment>


Trying to build the ultimate Raspberry Pi computer – Zero Terminal V3 - <AUTHOR> https://n-o-d-e.net/zeroterminal3.html <comment><USER2> <grumble>HN has given N O D E love for the design aesthetic of the presentation and video format recently, but it feels like I'm being fed the details via Morse code. It's infuriating! There is no summary, no overview, no block diagram, just a wall of transcribed prose and gamble on a non-indexed, un-subtitled 8 minute video. I imagine many people (myself included!) will just go "Okay, there a black brick and screen thing with an RPi zero (or is it a different model?) in it ... or something" and move on.

Perhaps this is intentional in the same way the OpenBSD homepage is purposefully ugly, to scare off people and create a small effort- moat.</grumble>

<comment><USER3> > purposefully ugly

I've been using OpenBSD for about 20 years so I feel like I can talk about this issue.

If you browse web.archive.org for old copies of the www.openbsd.org site, you'll notice that the current design is from many years ago, back when lots of websites looked like that.

It appears that the current design is from around the year 2000:

[https://web.archive.org/web/20010118233800/http://www.openbs...](https://web.archive.org/web/20010118233800/http://www.openbsd.org/)

And that one of the oldest archived versions of the page, from 1997, already had much of the same information and organization, just with less color:

[https://web.archive.org/web/19970327004719/http://www.openbs...](https://web.archive.org/web/19970327004719/http://www.openbsd.org/)

Over the years there have been attempts by users to redesign the site. Each had their own problems. I think that for a site redesign to be accepted, it would need to be a major improvement both technically and aesthetically, and for maintenance of the new site to be real easy. OpenBSD devs don't want a bunch of churny work hoisted on them.

Just as an aside, I've noticed in this thread that you're making low-effort, kind of rude posts about an important project that's not even related to the actual subject, which is Raspberry Pi. Why are you doing that?

<comment><USER2> > I've noticed in this thread that you're making low-effort, kind of rude > posts about an important project

I'm sorry if it came across like that. I didn't put this comment there to upset you or anyone, but this happens. I was referring to what appeared to be a design choices in how some projects present themselves to the world, not as a judgement around how important they are. I watched the whole video (with some skipping) for this post. My point was many people might not given the design choices made in how it was presented. I guess "important" projects don't even need to be popular or accessible to do what they need or want to do, and I was simply musing. e.g. You have an explanation for why OpenBSD presents itself they way it does because you are convinced of its value, so you see something different when you look at the homepage vs how ... nearly all? ... other people might see it. My point was is looks like it was designed by engineers with more important matters to think about, but that's some encoding not available to everyone. (And maybe that's okay, hence a small moat around the project.)

<comment><USER2> I have realised since writing this that the topic is actually "gatekeeping". It can feel icky advocating for it. OP is a talented and driven creator who owes us exactly _nothing_ in explanation, but if a hypothetical creator would prefer we _at least watch the damn video_ that can be an entirely reasonable cost of entry. I guess my question was whether it was intentional! Sorry if my OpenBSD comparison clanged. That OS is righteous.

</comment></comment></comment></comment><comment><AUTHOR> Now this, this is a project we can all get behind. Adding radio with kill- switch and getting PostmarketOS working on this will essentially make this a smartphone replacement to reclaim mobile computing from the duopoly.

Also, N-O-D-E publishes all the requisite files; Essentially making this a 'Build your own smartphone' project and those who don't want to get their hands dirty could order one from the website when available.

<comment><USER4> > will essentially make this a smartphone replacement to reclaim mobile > computing from the duopoly

I think it's a bit too thick to reclaim anything, to be honest, but its nerd cred is off the charts.

<comment><USER5> I'd rather have a thick phone than a slim chance of not being tracked.

I'll build mine with a metal casing and a GPS for outdoor shenanigans, as sturdy as an AK-47 and as thick as the SCIP

<comment><USER6> Are you going to build your own cell towers too?

<comment><USER7> The top-level comment that was being replied to already specified "radio with kill-switch"

</comment></comment></comment></comment></comment><comment><USER8> This is a superb project, really nice work!

I kept thinking "oh nice, you'd just want to add a---" and you've already done it! Incredible stuff. I can't wait to see how this progresses. The keyboard design is really neat. It reminds me a lot of the old Nokia N900, still the best phone I've ever owned.

Do you have any idea how much battery life you get?

<comment><USER9> I still miss my old Nokia E7 phone with qwerty keyboard.

</comment></comment><comment><USER10> This is impressive work, and I would like to have this, or something like this.

A question is whether the amount of clever effort that went into working around constraints of the Pi Zero, would be enough to incorporate the Pi Zero aspects of this assembly into a single board?

Also, maybe not even an exact Pi, but using a RISC-V core and fully open firmware, even if less powerful at this time?

<comment><USER11> I actually do like the fact that it uses an existing Pi Zero board, even if much creativity is needed to add so much functionality to it in a small space. It reminds me of gopro cameras being taken apart and custom modules added to make it lightweight to use on small drones. I think this is a developing trend, leading to somewhat of an open source supply chain of creative applications for hardware devices. I think we benefit of the economies of scale of the Rpi boards already, just like we do from individual chips, so these custom boards ties that together nicely.

</comment></comment><comment><USER12> I am puzzled why there are no widely available laptop-like cases for the Raspberry Pi, especially considering that now there is a 8 GB version of it. "pi‑top [3]" came close, but it was somewhat childish and apparently it's not sold anymore.

<comment><USER13> Part of the problem is how thick the Pi's are. They're small computers on their own. But in a laptop case, they're chunky. Much thicker than your average off-the-shelf laptop. Plus, there's still rough edges when trying to use them as desktops. The Pi Zero would work in terms of size, but is very underpowered for desktops. The Pi Compute would probably be the perfect fit, but that hasn't been updated in a rather long time. Also underpowered.

So I can see why there's not much of a market. The hobbyists are largely doing something other than standard desktop use, and the people who need laptops (even cheap ones) are better served with something off-the-shelf. The best bet for the future are the handful of laptop-style docks coming out. Just plug your phone or pi into one of the external ports and go.

<comment><USER12> I would be fine if it was bulkier than modern ultrabooks and more like the old-school Toshiba Libretto. The added volume can be used for batteries, overall sturdiness, as well as other creative uses.

P.S. I decided to try and goodle that topic again, and I found one that is coming soon: [https://news.ycombinator.com/edit?id=24092182](https://news.ycombinator.com/edit?id=24092182)

</comment></comment></comment><comment><USER14> 6:55 haha one pixel is a letter, the form factor is really cool I thought it would just be a Pi inside but there is also a bigger board combining functionalities.

I do have a inclination for "disposable" computing (old $50 Chromebooks using i3-wm) though and mostly I notice it's the ram so yea i3-wm is a must. This is cool it's full/has everything.

Needs more compute I think. I've started seeing small form factor builds like this 6GB ram 4K capable cube thing for gaming using Atom processor. Oh Larkbox it's called

</comment><comment><USER15> I'm a bit saddened by the lack of built in keyboard in this iteration. I see the modular bit, but it kinda takes away from the "terminal in your pocket" idea.

<comment><USER16> The sliding keyboard in the video is only like half a centimeter thick; plenty of room in your pocket with for the unit and attached module.

</comment></comment><comment><USER17> Now imagine this, just with the Compute Module in a version with proper PCI-E... sigh.

<comment><USER18> Well, supposedly[0] the next iteration of the CM will be based on the Pi 4 guts, and expose the PCIe capabilities. The maker of the hardware being discussed also mentions that they might try the compute module (it probably makes a lot of sense from the custom PCB side of life?).

0: [https://www.tomshardware.com/news/raspberry-pi-nvme- support-...](https://www.tomshardware.com/news/raspberry-pi-nvme-support- coming)

<comment><USER17> Oh _finally_. That's good news especially for people who'd like to tinker with advanced stuff requiring PCI-E chipsets who don't really have the nerve to risk wrecking a hundreds of dollars worth of x86 mainboard/CPU...

<comment><USER19> > tinker with advanced stuff requiring PCI-E chipsets

What sort of things are you talking about here, out of interest? The only way you're going to wreck hardware is if you're attaching something completely incompatible at the physical level (wrong levels, shorts, etc.); if you're "tinkering" you almost certainly don't have the resources to bring up your own PCIe PHY (there's pretty much no way to do this without custom silicon) so presumably you have some preexisting hardware in mind?

If you just want to play around at the TLP level (for example by using the hard PCIe core in a cheap Xilinx Series-7 chip) then this is all pretty safe: (temporary) catastrophic system instability is one thing (I learned this the hard way when I accidentally had my FPGA spamming MSIs every free cycle), but real hardware damage is pretty tricky.

<comment><USER20> Gamers and crypto miners do various nasty things to PCIe cards in order to use cheapest cable possible to extend it and actual hardware damage resulting from that seems pretty minimal.

<comment><USER19> When I said "incompatible at the physical level" I meant it in the OSI sense of an issue at physical protocol level. An electrical specification mismatch could easily cause hardware damage (but would be very hard to achieve unless you were using your own PHY or literally connecting a power supply to the PCIe lines).

> seems pretty minimal

Is there actually any at all? I can't really see how this could lead to any damage.

</comment></comment></comment></comment></comment></comment><comment><USER21> This seems like a perfect use case for the 3A+ (which is quad-core and only slightly larger than the Zero).

</comment><comment><USER22> The form factor reminds me of the OQO and similar UMPCs from that era.

Edit: It even has the same sliding keyboard as the OQOs! [https://en.wikipedia.org/wiki/OQO](https://en.wikipedia.org/wiki/OQO)

</comment><comment><USER23> Very nice, I can imagine all sort of applications for this. How much is the power usage?

</comment><comment><USER24> That keyboard reminds me of the Nokia N900 <3

</comment><comment><USER25> With that sliding keyboard it reminds me of Nokia N900. I still have one of those .. might dust it off so !!

</comment><comment><USER26> I would love pocket computer that I could use to programming when I don't have access to laptop.

<comment><USER27> i miss phones with slide out keyboards

<comment><USER28> I still have my Android G1/ HTC Dream. If I could get a phone with roughly the same form factor, just a modern CPU/GPU/RAM/camera and bigger battery, I'd be in heaven. Needs to run PostmarketOS or PineOS too.

</comment></comment></comment><comment><USER29> If he's making PCBs, why not base it on a compute module?

edit: He does indeed say he's contemplating this.

</comment><comment><USER30> I wonder what the price range for this would be. I'd readily pay up to 300 but would think twice if it goes above that.

im thinking that this device could be upgraded, modded, fixed, have full control over the software, have privacy and last but not least: no planned obsolesce

</comment><comment> yjftsjthsd-h I wonder if that keyboard module could be reworked to attach to a pinephone; obviously you'd have to replace the actual connection to switch from usb to i2c, but otherwise it looks nearly drop-in.

</comment><comment><USER31> I'd buy this.

</comment><comment><USER32> love your videos</comment>


Windows 7 now on 10% of world's PCs - <AUTHOR> http://www.silicon.com/technology/software/2010/04/26/windows-7-now-on-one-in-10-of-worlds-pcs-39745744/?tag=content;col1

<comment><USER2> I'm working on some plain old Windows software (C/C++) for a niche market, and I've been seriously tempted to make Windows 7 the minimum requirement.

It's an enormous headache to support all those XP machines with a 9-year old OS that has been patched 500 times, creaky drivers, lots of software installed over the years with excessive privileges and DLL versions crapped all over, etc.

These numbers reinforce my impression that Win7 is getting sufficiently established. Those who don't move on to Win7 probably don't care enough to buy software either (at least in my market).

</comment><comment><USER3> Doesn't surprise me - I would estimate:

\- Average life of a PC - 5 years \- Windows 7 has been out for 9 months \- Most purchases will be as part of new PCs

So I would expect by this stage something like ((9/12) / 5) * 100 = 15%.

10% hardly seems surprising - neither good or bad.

Not that I am knocking Window 7 - I use it and think it is pretty good.</comment>


US Customs block Canadian man after reading his social media - grey-area http://www.dailyxtra.com/canada/news-and-ideas/news/us-customs-block-canadian-man-reading-scruff-profile-215531 <comment><AUTHOR> I was recently detained and made to miss my flight during preclearance (I arrived three hours early). They joked about me not making my flight, and locked me in a room with no one present and no explanation (under threat of strip search, or worse). Calling the local police got me out.

The official excuse? Someone else matched some portion of my exceedingly common name in an undisclosed location somewhere in the world.

I'm an American by birth. I live here. But next time I cross the border, I don't think I'll be making the return leg. The world's a big place.

</comment><comment> grey-area _A month later, André attempted to fly to New Orleans again....When he went through secondary inspection at Vancouver airport, US Customs officers didn't even need to ask for his passwords — they were saved in their own system._

So they're saving all the passwords and identifying data they download on a centralised system for everyone who enters the country.

What could possibly go wrong?</comment>


Experimental one-line algorithmic music - <AUTHOR> http://www.youtube.com/watch?v=qlrs2Vorw2Y

<comment><USER2> I think the theory behind this is a great deal more interesting than that video lets on. The idea started out as simple C programs piping characters to a UNIX audio device. But it's grown since then, now there's a web page that lets you create audio with Javascript expressions[1] (one of my favorite tracks from this scene was generated that way[2]).

There's some good blog posts about the origins of this[3], and music theory behind it[4]; both of which will go into more detail than I'd care to for a HN comment[3].

[1] <http://wurstcaptures.untergrund.net/music/>

[2] [http://www.youtube.com/watch?feature=player_detailpage&v...](http://www.youtube.com/watch?feature=player_detailpage&v=tCRPUv8V22o#t=314s) (5m 13s)

[3] [http://countercomplex.blogspot.co.uk/2011/10/algorithmic- sym...](http://countercomplex.blogspot.co.uk/2011/10/algorithmic-symphonies- from-one-line-of.html)

[4] [http://countercomplex.blogspot.co.uk/2011/10/some-deep- analy...](http://countercomplex.blogspot.co.uk/2011/10/some-deep-analysis-of- one-line-music.html)

</comment><comment><USER3> nice use of for loops</comment>


Building resilient services at Prime Video with chaos engineering - <AUTHOR> https://aws.amazon.com/blogs/opensource/building-resilient-services-at-prime-video-with-chaos-engineering/ <comment><USER2> It is nice to see these posted. I wonder if the other engineering related sources at AWS get as much attention.

They have (in my opinion) an extremely good library of articles in their so called builders library.

For example these two below articles.

[https://aws.amazon.com/builders-library/avoiding-fallback- in...](https://aws.amazon.com/builders-library/avoiding-fallback-in- distributed-systems/) [https://aws.amazon.com/builders-library/leader- election-in-d...](https://aws.amazon.com/builders-library/leader-election-in- distributed-systems/)

These topics are extremely hard to solve from scratch yet they are distilled pretty well in the above articles and they include a further reading section.

I would implore others to have a gander. I wish the same could be said for their documentation.

</comment><comment><USER3> Using the Prime video app on my Android TV it seems like some basics aren't really attended to.

The aspect ratio on the thumbnail for film I watched was stretched the other day, which is not the lack of attention to detail I'd expect from such a rich company.

Apart from this, it just isn't a smooth experience to navigate or search in. As usual in development nobody is paying any attention to responsiveness.

There is no reason this app shouldn't work as well as the youtube app in these respects.

<comment><USER4> Amazon products are never polished or fully fleshed out. You can spend a few minutes on their flagship site and find weird design choices or basic CSS mistakes.

A shame considering the amount of money they have. You'd expect a bit more, but then again Amazon are in the business of scale, quantity over quality.

At least it keeps them from having a monopoly on literally everything.

<comment><USER5> Uptime of essentially 100%. Hard to criticize when they accomplished something so rare in tech.

<comment><USER6> _laughs in us-east-1_

<comment><USER5> The whole point is to use multiple Availability Zones across Regions, to protect your uptime from failures in single AZs or entire Regions. Amazon.com does that.

<comment><USER6> And yet, even companies like pager duty, who have "one job" and hire many competent engineers, still struggle with this:

[https://www.pagerduty.com/blog/outage-post-mortem- june-14/](https://www.pagerduty.com/blog/outage-post-mortem-june-14/)

Note that pager duty now weathers Amazon outages beautifully, but the point is that amazon doesn't have 100% uptime and that properly designing distributed systems is very hard.

</comment></comment></comment></comment></comment></comment><comment><USER7> I'm sure now that Amazon Prime Video won't ever get a decent UI, instead the current will remain horrible, but resilient at least.

<comment><USER8> It truly baffles me how one could devise an interface so bad as the PrimeVideo UI. I have yet to discover the algorithm behind the near random search results trows up, and autocomplete for 90% of the cases trows up something 'that is not available in your region'. It's 2020. How hard can it be to serve a small catalogue of available titles and allow some decent parameterized querying?

<comment><USER9> I also always wonder how companies can simultaneously offer to sell their highly advanced AI-bla search, yet utterly fail at searching themselves.

I still remember the time when Google tried to license their search servers to enterprises. It appears that market has now been completely eaten by Algolia. And my hunch is that it's because Google's search results are completely irrelevant for professional users. I search for a Windows API function name, and I get pages of SEO spam trying to sell me an unrelated Udemy beginner's course.

</comment></comment></comment><comment><USER9> Sounds like cloud is getting ever closer to dedicated servers.

One would hope that for the 10x price increase over bare metal, someone would abstract away things like the underlying hardware or OS failing. But apparently, no, you have to pay the premium and do all the work.

The only use-cases that I could imagine for such a tool on EC2 would be if you either don't use containers, or if you oversubscribe your virtual servers by having higher container limits than what the instance can endure.

In the first case, the proper fix is to use containers. Docker can do CPU limiting for you so that one service spiking won't affect its neighbors on the same instance.

In the second case, I'd go bare metal and then hardware is so cheap that there's very little temptation to oversubscribe on RAM or CPU.

<comment><USER10> Hi!

Author of the article here.

The core concern is not about the capabilities of the compute abstraction being used (bare metal, containers or functions) or testing OS capabilities. The aim is to validate mitigations which are in place to counter turbulent scenarios (For example: massive spike in traffic, network outage, dependency is down, etc). These scenarios generally originate outside the given system.

These kind of questions should be asked and systematically validated (quoting the article):

* Have you tested how the system behaves when the underlying instances have a sustained CPU spike?

* Is the system behavior understood under different stress?

* Is there sufficient monitoring?

* Have the alarms been validated?

* Are there any countermeasures implemented? For example, is auto-scaling set up, and does it behave as expected? Are timeouts and retries appropriate?

<comment><USER9> I believe we just have a rather different approach here.

"Have you tested how the system behaves when the underlying instances have a sustained CPU spike?"

Since dedicated boxes are cheap, I'd just buy 5x the CPU resources that I reasonably need and call it a day. If there ever is a more than 5x traffic spike, then docker will prevent it from being a noisy neighbor, so the affected services will just become slower than usual. But even a 10x traffic multiplier would just produce a 2x slowdown, which should be tolerable for most users.

I agree that on clouds you want to save costs by only booking what you need. But bare metal, you can usually afford to keep spare capacity around all the time.

As such, I wouldn't plan for the system to behave well under stress. I'd try to always have enough resources around so that stress never happens. At the end of the day, this seems like a developer time vs. resource costs trade-off and for most companies, developers are sparse and resources are plentiful, so they'll have a very different trade-off from big FAANG companies.

"For example, is auto-scaling set up, and does it behave as expected?"

If your system is usually 90% idle, I wonder if you'll ever need that auto- scaling. Also, I'd say my customers can endure it if page load time goes up from 100ms to 200ms. So in my opinion, there is little need for auto-scaling for most companies.

<comment><USER11> >"Have you tested how the system behaves when the underlying instances have a sustained CPU spike?"

You didn't really address this question, you addressed a different question, which is a traffic spike.

>Also, I'd say my customers can endure it if page load time goes up from 100ms to 200ms. So in my opinion, there is little need for auto-scaling for most companies.

100ms to 200ms average? What about the tail? Your app might go from P99 - 500ms to P95 - timeout. That's when you'll lose customers.

<comment><USER9> If the underlying hardware is a bare metal server, it won't magically turn slow and have a CPU spike. That problem is caused noisy neighbor and kind of exclusive to clouds.

Well, with the 2x example, my app might get from a 1s P99 to a 2s P99 which feels slow, but is still doable. Again, those timeouts are usually introduced by cloud infrastructure. For example, if you use nginx outside of Heroku, it won't have a 30s timeout for file downloads.

<comment><USER11> Your own instances can have an unexpected CPU spike.

Even if you're running on bare metal I find it hard to believe you don't have a layer with short timeouts between your front and backend.

<comment><USER9> Why would I? I have redundant 1GBit LAN cables between front end, back end, and database servers.

<comment><USER11> Because it's bad ux for your users to see a spinning loading icon forever.

<comment><USER9> And a timeout error would be better?

<comment><USER11> In my experience, yes, a lot better.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Is this a case of "netflix did those articles, so we'll do the same so geeks like us too"?

<comment><USER13> It does seem like a fad. Kudos to those who can create a new field and profit from it. On the one hand, "chaos engineering" seem a bit like "we don't understand our architecture well enough to know what its failure modes are, so let's just poke it and see what happens," but on the other hand, it seems at least a little bit analogous to fuzzing, which is certainly a technique that yields useful results that would have otherwise been overlooked until it was too late.

<comment><USER14> My first instinct was to agree with this, but from my experience it's extremely difficult to properly communicate failure modes 100% of the time across different teams in very large organizations. Dependencies that are fuzzy arise for example when a service A proxies data for client service B from some other service C. It doesn't help that the organization of teams in a company often severs lines of communication between teams who explicitly don't have dependencies but implicitly do. As a result, information gets lost in the process. Having a last line of defense in the form of a "chaos engineering" team may actually be the natural response of large organizations to counter the inherent messiness that is produced as a result of bureaucracy.

<comment><USER15> That and additionally it has implications for the development team as well. Using "chaos engineering" shifts the mindset of the developers. As a developer you now expect things to fail. You know that the "we make it work first and make it resilient later" approach will bite you sooner then later so you think resilience from the first line of code.

</comment></comment></comment></comment><comment><USER16> what about disabling the short advertisement preview played before what I actually want to watch?

sure I can skip it, but why should I have to?

</comment><comment><USER10> Author of the article here.

Please take a look at the underlying library here (AWSSSMChaosRunner) - [https://github.com/amzn/awsssmchaosrunner](https://github.com/amzn/awsssmchaosrunner)

</comment><comment><USER17> We tried a similar chaos tool in our company built in-house. Simulated most of the scenarios mentioned here using SSM/other scripts. At first everyone was interested and after some time the interest faded. Our problem was lack of visualization across the app ecosystem i.e how will it impact the app ecosystem when a batch of ec2 instances are suddenly spiking on CPU and what will be the impact to end user.

Turns out people care only if there is an end user impact and doesn't really care about random anomalies.

And to build the capabilities required for measuring the impact + automating the workflow of the actual chaos tests is a lot of work

<comment><USER10> Stress testing a whole app ecosystem end-end and preventing/mitigating end user impact is generally a part of "gamedays" \- [https://wa.aws.amazon.com/wat.concept.gameday.en.html](https://wa.aws.amazon.com/wat.concept.gameday.en.html).

A library like AWSSSMChaosRunner would be a core component of building gameday like capability. But building a full gameday framework is out of the scope of this discussion.

</comment></comment><comment><USER18> You can do Chaos Engineering quite easily with Ruby, because you can raise an exception in a thread from another thread. Many years ago I built a simple tool which allowed you to specify a series of exceptions, and their frequency. The library would run up an extra thread in your process, and simply drop bombs (i.e. raise exceptions according to the required distribution) across the other threads at random.

It worked a treat for ensuring high availability in IoT systems

</comment><comment><USER19> Always start out streaming in really, really low quality on the Firestick and gets stuck there despite us having gigabit fiber. Usually have to stop playing, exit and then go back in again then it works and plays in HD. Never happens on Netflix or Hulu or any other app, just Prime Video.

</comment><comment><USER20> One thing I wonder (and find difficult to simulate) are failures in external services. Sure you can unit test your function with a 500 for example, but you never know in which ways the function/library can fail

(Not to mention the cases where it says everything worked but it didn't)

<comment><USER10> The article does talks about how to inject latency or packet-loss into calls to particular external services. This should help you test many service->dependency failure scenarios around retries, timeouts and circuit- breakers.

Injecting specific error codes or exceptions is a bit more complicated but it is possible with other approaches, for example: Chaos toolkit.

</comment></comment><comment><USER21> I have been getting failed to load error almost every week on Prime Video when I try to load a series at dinner time on weekdays (pacific timezone). Never have this issue with Netflix.

</comment><comment><USER22> >The key to chaos engineering is injecting failure in a controlled manner.

Doesn't that sorta defeat the point of "chaos" a bit?

<comment><USER10> That is more about the "engineering" bit.

</comment></comment><comment><USER23> This mentions it cannot be used against AWS lambda. Not sure why?

<comment><USER10> Hi! Author of the article here.

The AWSSMChaosRunner approach can't be used for Lambda because of what @vasco said.

You can take a look at a different approach here for failure injection in Lambda - [https://medium.com/@adhorn/failure-injection-gain- confidence...](https://medium.com/@adhorn/failure-injection-gain-confidence- in-your-serverless-application-ce6c0060f586)

</comment></comment><comment><USER24> If I use any prime video apps.. they think I'm in Canada(which I'm not).. and only gives me Canadian selections(which are horrible)..

if I use prime video in a browser.. it works fine..

I have no idea why it does this and support has no clue.

</comment><comment><USER25> Just remember anything you purchase on Amazon Prime, you don't technically own it.

<comment><USER26> From my understanding you don't technically own most media (music, movies, software) regardless of the format. It's a license. Even if you purchase a CD or DVD, etc.

<comment><USER27> That misses the point. I have DVDs that I purchased that will work as long as I posses them and they were made before Netflix was even a company.

There may technically be a license attached to them, but there is no practical way for any company to revoke my usage of them and the failure mode if any of those companies cease to exist is for them to continue working.

<comment><USER28> Isn't it exactly the same for a song or movie you purchased from Amazon and downloaded to your hard drive?

<comment><USER29> Can you download prime movies to disk? I thought it was streamed only.</comment></comment></comment></comment></comment>


Reality TV Wreckage - <AUTHOR> http://theabyssgazes.blogspot.com/2010/03/reality-tv-wreckage.html

<comment><USER2> The article is actually worthy of discussion. You can look at both American Chopper and Tiger Woods as a Brand - vs - Privacy - vs - Entertainment trade off. Both parties maximized their value by Branding themselves. Good for your net worth but very bad on your Privacy and eventually as your career turns a entertainment factor kicks in as well. I would say that golfers like Arnold Palmer, Jack Nickolas, a Greg Norman chose different Branding strategies to market themselves with better and more stable results.</comment>


Ask HN: What are some of useful but little-known tools you use for development? - <AUTHOR> Little-known meant little talked about in HN. <comment><USER2> Code generation is a big one for me. A nice thing I like doing is defining "interfaces" for a particular database table, along with the tables definition in a particular format. Then I can generate any kind of access to that table I'm willing to spend time on creating a generator for.

I'm still hoping to find a decent "SQL flavor" interpreter and/or translator. That would be a killer feature, allowing me to define "procs" in vanilla ANSI SQL, and translate them into whatever database's SQL format I need without worrying too-much about syntax and optimizing. Because you know, it's 2016, and I still need to know that fetching N rows of results from a table has multiple syntax forms depending on your chosen database and version.

<comment><USER3> Code generation used to annoy me a lot for some reason, in Java land, I guess that was back when Ant was used and code generation made the build process a bit more annoying. Also somewhat rigid.

I wonder if some of the ORM's would get you to a bit closer to the cross- platform proc. They need to know all of the variances of the db's in terms of the syntax I guess, but I doubt you'd ever get to a stage of writing cross-db stored procs that compiled to TransactSQL etc... or whether the effort would be worth it.

Have you had to do that? i.e. write the same functionality in two different databases as a stored proc? I guess software vendors might face that. I'd probably push the logic back into the app code if possible, unless the amount/processing of data precludes it for whatever reason.

</comment></comment><comment><USER4> Wraith is super useful for web development on existing complex sites and I rarely hear of it or existing tools. Setup a staging site along with your production site, list the important URLs and when you run Wraith it'll compare screenshots of changes between the URLs on staging and production. This lets you update existing pages and verify you've not broken other pages with only a small amount of setup.

See [https://github.com/BBC-News/wraith](https://github.com/BBC-News/wraith)

<comment><USER5> Nice, this looks great for regression testing

<comment><USER4> Exactly, minimal setup visual regression testing.

</comment></comment></comment><comment><USER6> tup [0]. It's a build system. Very fast, plays well with git (can automatically add generated artifacts to your .gitignore file(s)). I only use it for stuff at home, but it's worked very well for me. A few gotchas and a bit too esoteric to introduce to my office (make is everywhere, have to deal with other developers in other companies, migraine inducing IT bureaucracy). The main thing keeping me from using it more is that most of my home stuffs (these days) are straight rust and rust has its own build system (with cargo) that works well enough.

tup only rebuilds the parts that need to be rebuilt. The build files you produce are dependency trees, it can recognize when a node in the tree hasn't changed and won't trigger further actions. Consider: You modify the comments in your .c source file, correcting a typo from "alpabetical" to "alphabetical". There has been no code change. Make will, without additional configurations, build the .o file, and then rebuild everything else down the line to the final lib or exe. tup will recognize, by default, that the .o file is unaltered, and won't trigger any further action.

tup also has a monitoring system that I intended to port to OS X but got distracted on. It will watch the filesystem for changes so it doesn't need to walk the filetree to identify the change when you issue the build command. It'll already know _exactly_ what has changed and be ready to issue the (near-)optimal instructions.

[0] [http://gittup.org/tup/](http://gittup.org/tup/)

<comment><USER6> This one is not little-known or little-discussed, but I found org-mode really nice when paired with tup. I have a small shell script I put in my ~/bin which calls emacs' org-mode's tangle functions on each of my .org files in a project. I write everything (at home) as literate projects. Going back to the nice feature of tup (recognizing that a target file hasn't changed and ceasing build actions) comes in handy.

My .org files may change, but the .c or whatever files don't as often, or they do but it's white space so the .o files don't change, etc. It's all in the documentation or the layout, or changes to the export (as html/pdf) options. So the whole project doesn't get rebuilt (like it might with make) just because I added a paragraph describing an algorithm.

It's also great for source code dissection. Using the noweb aspect I can break a file down from one initial source block into dozens, creating cross references across files and documents very easily, and then export this in a distributable format (currently doing this for a new project at work). I have a 100k SLOC project that we've taken on and while we understand the high level, none of us have ever worked on this source code (we work at the maintenance end mostly, this project has entered maintenance). Technically there's documentation on it. Doxygen can generate nice reports. But that doesn't beat the act of tearing the code apart line-by-line for really learning and understanding it.

This'll be the largest project I've attempted this on, so that's a new challenge. Usually sub-10k projects that I've tried this with, or just small sections of larger ones. But I'll be one of three guys on the developer side of this one (one above me, responsible for more than just code, and a junior dev just out of college with us). So either we fumble or one of us becomes a SME. This work is also shareable by generating a PDF or set of html files from my efforts and distributing it to them so what I learn can be more easily shared with others.

</comment></comment><comment><USER7> \- pex is really nice for packaging up Python applications: [https://pex.readthedocs.io/en/stable/](https://pex.readthedocs.io/en/stable/)

\- Eliot, a project of mine, is a logging system for Python that actually gives you a concept of causality: [http://eliot.readthedocs.io/en/0.12.0/introduction.html](http://eliot.readthedocs.io/en/0.12.0/introduction.html)

</comment><comment><USER8> When you don't want/need full-blown fail2ban:

[https://github.com/sofar/tallow](https://github.com/sofar/tallow)</comment>


Twitter Photos: Put a Filter On It - <AUTHOR> http://blog.twitter.com/2012/12/twitter-photos-put-filter-on-it.html

<comment><USER2> This makes the Instagram pulling of twitter cards look a lot more defensive than offensive.</comment>


Evidence SARS-CoV-2 Emerged from a Biological Laboratory in Wuhan, China - <AUTHOR> https://project-evidence.github.io/ <comment><USER2> Some useful links for more technical background info: [https://leelabvirus.host/covid19/origins- part1](https://leelabvirus.host/covid19/origins-part1) (& parts2 & 3), [https://www.nature.com/articles/s41579-018-0118-9](https://www.nature.com/articles/s41579-018-0118-9) and [https://www.ijbs.com/v16p1686.htm](https://www.ijbs.com/v16p1686.htm).

</comment><comment><USER3> This collection was published on April 16th, but does not seem to have been updated since then. Does anyone know why?</comment>


C4: C in Four Functions (2014) - <AUTHOR> https://github.com/rswier/c4 <comment><USER2> I unironically love this code. We used it as a starting point (or rather, the same design; we wrote in Go) for reversing challenges at our last startup, symbolically evaluating the stack machine bytecode to generate AVR.

The trick to reading it:

* next() is the lexer

* expr() is a precedence-climbing expression parser

* stmt() parses statements and generates code

* main() has the virtual machine loop.

<comment><USER3> C4 really has some good ideas by its own.

* It never bothers to produce a machine code. The use of stack-based VM simplifies the single-pass compilation, and it never makes use of unknown library functions so no machine-specific knowledge is required (like dlsym in Bellard's OTCC [1]).

* It chose its primitives wisely. It never implements structs and returning with values, for example, but the code is carefully structured that the lack of them doesn't make it harder to read.

* And yet it has tons of little tricks. Switching from r-value to l-value (triggered when infix `=` or postfix `++`/`--` are read) is a single opcode fix. Reserved words are initialized from an imaginary source code. The type is represented by a single number 2n+k where n is the number of indirections.

[1] [https://bellard.org/otcc/](https://bellard.org/otcc/)

<comment><USER4> > Reserved words are initialized from an imaginary source code.

What does it mean? Could you point to a place in the source?

<comment><USER3> I mean this part:

        p = "char else enum if int return sizeof while "
            "open read close printf malloc free memset memcmp exit void main";
        i = Char; while (i <= While) { next(); id[Tk] = i++; } // add keywords to symbol table
        i = OPEN; while (i <= EXIT) { next(); id[Class] = Sys; id[Type] = INT; id[Val] = i++; } // add library to symbol table
        next(); id[Tk] = Char; // handle void type
        next(); idmain = id; // keep track of main

Throughout the entire source code p is a source code pointer, but at the very beginning of the program it is a string containing all reserved words and library functions, and they are read with the same lexing function `next` to the symbol table before the memory for the actual source code is allocated.

</comment></comment></comment></comment><comment><USER5> I really like this, but I wonder why somehow "four functions" has to imply "needlessly cryptic variable names". Is that just part of the exercise in minimalism, i.e. art?

<comment> GuB-42 I found the code surprisingly readable.

Most variables names are what I expected them to mean despite their shortness: pc, sp, bp are registers, a is the accumulator, fd is a file descriptor (of the input file, what else?), tk is for the token, t is temporary, etc... For the less obvious ones, it is usually not that hard to infer their meaning from either the code or comments.

Because yes, they are comments, not many, but they are helpful. For example, the VM has unusual instructions (for me) like LEV and ADJ, and they are commented. The "obvious" ones like MUL and SHR are not.

The variable names are not "needlessly cryptic". I've seen (and written, not proud of it) a lot of needlessly cryptic variable names, and believe me, these are crystal clear by comparison. Here, there is a clear influence from assembly mnemonics that really helps understanding.

Now on the why. This is minimalism, and minimizing the number of comments and variable name length is part of it. It is actually a very interesting exercise. The golden rule in making understandable code is making it as short as possible. There is a limited amount of space on your screen and in your mind, and the shorter your code is, the more you can see/understand at once. Of course, too much is too much, you don't want to do things IOCCC style, and striking a balance is difficult. So once in a while, reading or writing very compact code can help you understand where shaving off characters is fine and where it really hurts understanding.

<comment><USER6> Why not just write out ProgramCounter, StackPointer, Accumulator, InputFileDescriptor etc? It doesn't take significantly longer to type. It's faster to read because you can recognize the shape of those words and don't have to mentally substitute the actual works. Code is for reading, not for writing.

<comment> GuB-42 Because it make the lines longer and long lines are bad. If it results in a horizontal scrollbar, it is terrible, but even without it, there is a reason papers are often printed in column format and most coding rules specify a maximum line length (often 80, though 120 is becoming popular these days, with big wide screen and all that).

So long lines need to be split. Which is difficult to do properly and results in more lines, and more lines mean less of the code is visible at once and that makes it harder to see the big picture.

But to each his own I guess. Anyway, you can try it out yourself. Just take the code, do the replacements and see for yourself.

<comment><USER7> Are you reading this on an Apple Watch? I still generally use 80 characters out of habit, but given how monitors have grown, 120 or even 140 should be the new norm.

<comment><USER8> Adding an extra column for code|docs|other context is so much more useful than allowing longer lines for obese identifiers that rarely serve to make a point more clear.

I'll take my four or five columns of 80 chars over two columns of 120-140 chars any day.

</comment></comment></comment></comment></comment></comment><comment><USER9> Clang on my macOS doesn't like the fact that main() takes and returns long long. But it appears GCC on Debian 8 (random linux I have lying around) doesn't mind.

I get it to compile on macOS if I remove the int define but then it segfaults when you run it. I wonder if there is some magic flag to make "main does not return int" a non-fatal error on Clang?

It's fun to read this code but running it is even more fun, you can see the VM code it generates, with source line annotations and all.

<comment><USER10> The "#define int long long" is annoying indeed. A quick hack to make it work is:

#include <stdint.h>

...and then replace the two "int" in main() with int32_t.

<comment><USER11> Doesn't that make it fail to maintain the self hosting property that is most likely behind the introduction of this define?

</comment></comment></comment><comment><USER12> Can someone please explain to me what this code does? I know some C, but I couldn't understand this.

<comment><USER13> A one-pass compiler for a subset of C, relying on a recursive-descent parser, doing the lexing, parsing and code generation in lockstep. The generated code, consisting of abstract machine instructions, is then executed by an instruction fetch and execute loop.

BTW, the code looks relatively short because many semicolon-separated statements are crammed on a single line, and short variable names make that somewhat manageable and even visually symmetric. If you were to unfold it with each statement on its own line, I guess it would be at least 3 times the size.

<comment><USER14> > A one-pass compiler for a subset of C, relying on a recursive-descent > parser, doing the lexing, parsing and code generation in lockstep. The > generated code, consisting of abstract machine instructions, is then > executed by an instruction fetch and execute loop.

This should be added to the README.

</comment></comment></comment><comment><USER15> Am I the only one annoyed by the fact that the main loop has a series of if..else instead of a giant switch statement?

But yes, many people rely on parsers and VMs without really knowing how it works and assume some black magic, whereas it can be really simple and elegant.

<comment><USER16> Wouldn't the compiler optimize it either way?

<comment><USER15> Hmmm, gcc may be smart enough indeed.

</comment></comment></comment><comment><USER17> This is awesome, less than 500 lines for a self-compiling C compiler!

<comment><USER18> ...and virtual-machine.

</comment></comment><comment><USER19> Seeing this made my day. There's something calming about seeing C used so...hmm....elegantly?

Well maybe that's not the right word. But the minimalism of it is soothing.

</comment><comment><USER20> It looks like a great base for a refactoring exercise.

<comment><USER21> I considered doing that once. Trouble is, how do you test it? It comes with one tiny example in the C subset, plus one substantial one (itself). Its behavior is generally undefined when the input departs from the subset. It seemed like more work to address these issues than the fun you could have in messing with the code.

So I sketched my refactorings without bothering to check them or to publish it.

<comment><USER20> This is a way you can approach it.

[https://michaelfeathers.silvrback.com/characterization- testi...](https://michaelfeathers.silvrback.com/characterization-testing)

</comment></comment></comment><comment><USER22> Why all the printf copy/pasta around the opcode enum?

Can't the author use pre-processor string concatenation to write once and then leverage that to map enum to string and back?

At least I'm doing that in a little scripting language parser and it looks portable.

Edit: I'm actually using pre-processor string concatenation for something unrelated. You don't even need that to do the mapping.

<comment><USER23> c4 is meant to be self-hosted and it does not implement a preprocessor. It was easier to re-use printf creatively.

</comment></comment><comment><USER24> Anything like that for C++? /s

</comment><comment><USER25> (2014)?

<comment><USER26> [https://news.ycombinator.com/item?id=8558822](https://news.ycombinator.com/item?id=8558822)

</comment></comment><comment><USER27> I guess switch/case support is in order.

<comment><USER21> An earlier version had this, and basic structs too. It was only a little longer, at least in line count, but harder to figure out. It took me four evenings with a printout and a red pen before I was satisfied with my understanding.

(I have mixed feelings about this code: it has both good ideas and pointless obscurity. I guess the newer version would've taken me 'only' three evenings.)

</comment></comment><comment><USER28> Faster than CPython? ;)

</comment><comment><USER29> Surprisingly succinct.

</comment><comment><USER30> hello dot c my old friend, i've come to compile you again...

</comment><comment><USER31> Thanks for commenting the code. _WTF sarcasm_

</comment><comment><USER32> The repo says "An exercise in minimalism." – Looking at the code, there is nothing minimalistic about it. Perhaps in terms of C it can be called that, but in terms of programming languages in general, this cannot be called "minimal" at all.

The code quality is terrible. Few explaining comments (actually mos of those are only 1 or 2 words, so not explaining anything at all) and almost all variable names consist of 1 or 2 characters, which do not say what the thing actually is. Then to achieve this arbitrary goal of doing it "in 4 functions" (actually procedures) loads of stuff was apparently stuffed into 4 those 4 functions, so much so, that they are longer than a whole page of code. Most of it looks like gigantic switch statements. It's horribly written code. It looks like what I think of as a C nightmare.

I will admit, I could not write such a thing myself. I lack the knowledge for writing such a low level stuff, do not use C, and if I had that knowledge to do it, my inner drive to do a cleaner job than anything remotely looking like that code, would prevent me from ever sharing such a thing with anyone in public. At least group cases into procedures as it makes sense. Even people writing this low level type of code should be aware of how unreadable that code is, right?

<comment><USER33> > I lack the knowledge

And yet you have a strong opinion about how terrible it is.

It is very minimal and it is very readable. It is actually a joy to read. You have no idea what a C-nightmare really is.

<comment><USER32> Yep, I can have a "strong" (what is strong?) opinion about it, because I know what readable code in other programming languages looks like and it certainly does not look like that. I did use C a few times in assignments and still my code had more comments and better readable names for basically everything than the code present in the repository.

Wait, you are telling me, that people write even less readable code in C? Perhaps you are right. Perhaps people can really be that much without care.

It still does not make this code "very readable". If it was very readable, I would have a vague idea about what each of the "functions" does from reading its name or its docstring. Oh wait, there is no docstring at the beginning of each of the "functions" and the name consists of one word, sometimes abbreviated word. And the variable names don't give me hints either. I think our definitions of readable code simply differ quite a lot. When I write code myself, I am unwilling to accept code on that readability level, but we probably have different standards.

Perhaps for entertainment purposes only, you could show me a real C nightmare. I do honestly believe you, that there is worse ;)

<comment><USER8> I don't understand russian, therefore russian is unreadable.

I don't understand mathematics, therefore math is undreadable.

I don't understand music, therefore sheet is unreadable.

That is your problem in a nutshell.

Meanwhile, people here take a glance at the code and immediately get it, because it is written in a language they understand. These people tend to find it quite readable -- not necessarily an example of most pretty code, but nevertheless readable.

<comment><USER32> Still you do not address the simplest of points, which there are: meaningful variable names, meaningful procedure names, explaining comments. All of which are minimum standards for software development these days.

I may be a C noob, as I already and in an honest way stated in the very first post, but my points still stand. Those are not some subjective things. It is very clear, that those things add to readability, yet the code does not have them.

<comment><USER8> I addressed those points implicitly. Those names _are_ meaningful, in context, to the people who understand the language; just as symbols in math are, in context, understandable to those who understand mathematics. And thus there is no need for comments. Arguably, there are too many comments, because I saw many that said something obvious without adding anything useful. Short identifiers aid reading for people who understand the language, because it allows them to focus on what the code does (or, rather, how exactly it does it) rather than what the things in it are (which is obvious to people who understand the language).</comment></comment></comment></comment></comment></comment>


Apple to release Mac OS X Lion through Mac App Store - <AUTHOR> http://www.appleinsider.com/articles/11/05/04/apple_to_release_mac_os_x_lion_through_mac_app_store_sources.html

<comment><USER2> Talking of large things in the Mac App Store, the Xcode 4 experience is a joke.

Even the most minor update requires it download the entire 4.5GB "Install Xcode.app" again. Further, you have to keep that installer around or you'll stop being notified of subsequent updates.

<comment><USER3> To be fair though, on a regular broadband connection that takes around 20 minutes, if you have the top end, its more like 12.

Despite that, I do agree, seems an incredibly wasteful thing to do.

<comment><USER4> Err, except when the server throttles the download to 60-100 k/s. Took me 18 damn hours, not to mention that it failed several times before I could get it all. It's ridiculous.

N.B. - for those having problems, I used this[1] script to download via wget, then after having downloaded everything minus 100megs before the dl failed, I was able to hand the script the -c flag for wget and continue. Lifesaver.

N.B. II - this script isn't written by me, but rather the awesome 'derencius'. All credit to him :)

[1]:<https://gist.github.com/863511>

<comment><USER5> I've never had Apple's server down-throttle me, and regularly see around 2M/s pulling down Xcode.

Maybe your ISP is pulling one of those speedboost scams where the first N megs are at a high speed and then everything afterwards is throttled down?

<comment><USER4> 'tis possible, though judging by googling around on this I am not the only one having trouble downloading xcode in a reasonable amount of time.

Maybe they should put it out as a torrent + simply seed the thing? Seems a perfect fit, given the size of the download + the number of people getting it.

</comment></comment></comment></comment></comment><comment><USER6> I don't want to take the time to upload this OS, and have no way to back it up should things go wrong. Having a DVD I can pop in and a few minutes later, I'm good to go. Reloading the entire OS does not seem fun. What would be ideal would be if I could get Lion on a USB drive like you can with a MacBook Air. Or even better, a special device with Thundebolt. I'd pay more to be able to install the binary faster than I could downloading it, or through my DVD drive.

edit: I know that when you back up your hard drive, you back up your OS as well. Having said that, if my computer gets corrupted, I don't want to lose everything.

</comment><comment><USER7> I wonder how re-installs will work. Will they be creating a utility partition upon installation?

And I guess the days of sharing OS X discs are over.

<comment><USER8> In that case, you could always just log in to your "friend's" computer on the App Store, and there you go. I don't think they verify the downloads afterward.

</comment></comment><comment><USER8> My guess is if they do this, expect to see it relatively cheap. It wouldn't surprise me to see it at $29 like Snow Leopard, though I expect it around $49.

</comment><comment><USER9> One thing is sure, if Lion is an "App", then by the capability for App sharing, OSX will probably have a conversion rate of 80+% within 3 months.</comment>


Show HN: WikiVoice – A lightweight markup language for Text-to-Speech - <AUTHOR> https://github.com/baxtree/wiki2ssml <comment><AUTHOR> WikiVoice is a lightweight but expressive markup language used by voice editors for fine-tuning synthesised speech while editing raw scripts. Wiki2SSML turns WikiVoice into SSML which is a W3C standard widely supported by TTS vendors.

Feedback, contribution and PRs are all welcome.</comment>


The Elon Musk Interview on Mars - <AUTHOR> http://aeon.co/magazine/technology/the-elon-musk-interview-on-mars

<comment><USER2> [https://news.ycombinator.com/item?id=8388156](https://news.ycombinator.com/item?id=8388156)

</comment><comment><USER3> "That story, as it is told, has the fashion of a legend, but the truth of it lies in the occurrence of a shift of the bodies in the heavens which move round the Earth, and a destruction of the things on the Earth by fierce fire, which recurs at long intervals."

"Reeling, he tried to buy a refurbished Russian intercontinental ballistic missile to do the job, but his dealer kept raising the price on him."

Can we paint this Iron Man Bond Villain in more epic terms?! When is 'Elon' hitting theaters?

But in the end he has a good point. It's not about going to Mars in order to get to Mars. It's about creating a forcing function for something much, much bigger.</comment>


Faker.js - generate massive amounts of fake data in Node.js and the browser - <AUTHOR> http://github.com/marak/Faker.js/

<comment><USER2> There's also an implementation in Factor:

[http://re-factor.blogspot.com/2010/05/creating-fake-data.htm...](http://re- factor.blogspot.com/2010/05/creating-fake-data.html)

</comment><comment><USER3> Seems a little weird as most addresses were in the UK, but had zip codes, large house numbers and non UK phone numbers.

Needs a bit more filtering based on locale.

<comment><AUTHOR> I'd like to see better test data for sure. It's pretty easy to add more custom definitions in the definitons.js file.

<comment><AUTHOR> also, it should be noted that online demo creates a contact card that uses every single API call. normally you wouldn't generate a UK address + a US zipcode in one contact

</comment></comment></comment><comment><USER4> This reminds me of <http://www.fakenamegenerator.com/>

</comment><comment><USER5> Do you guys know a java library that would do the same thing ?

</comment><comment><AUTHOR> online demo in case you missed it on the github readme

<http://maraksquires.com/Faker.js/>

<comment><USER6> I tried to generate a "massive" amount of data, but I hit the script CPU usage warning pretty quickly :). Have you tried using Web Workers or perhaps timer- chunking your data generation loop?

<comment><AUTHOR> If you are generating large sets of data you are better off calling the script from node. Also, if you are using the browser demo it's gonna try to append all that info to the DOM.....

I put this together in less then two days, there is a vast amount of room for improvement in this library. I'd be happy to see a web workers fork and streaming async version in node.</comment></comment></comment>


Is the Agile Manifesto dead? Not by a long shot - <AUTHOR> http://techbeacon.com/agile-manifesto-dead-not-long-shot

<comment><USER2> I think the issue with "agile" is that, in practice, it is something different than what it claims to be.

In the field you often see an "agile" practice pasted on to an organization that doesn't really work, where most importantly there is a lack of trust between people. Instead of management making up a bullshit deadline 6 months out, thinking it will make people work harder, there is a bullshit deadline every 2 weeks and we're supposed to be "sprinting" (if any word should die it is "sprint") so somebody key is going to burn out in 6 months. The advantage of agile is that at the end of every 2 weeks they have something that will build and that sorta works, whereas often in the non-agile bad shop after the 6 month project you try to integrate the pieces and find they don't work together and before you know it you've spent 6 months figuring out how to build and deliver your product but you haven't institutionalized it in tools and documentation.</comment>


What is the Apple Star N84? ARM hybrid, touchscreen MacBook, just a new iPhone? - <AUTHOR> https://www.pocket-lint.com/laptops/news/apple/144651-what-is-the-apple-star-n84-arm-hybrid-touchscreen-macbook-or-just-a-new-iphone <comment><USER2> "We've done tons of user testing on this, and it turns out it doesn't work. Touch surfaces don't want to be vertical.

It gives great demo but after a short period of time, you start to fatigue and after an extended period of time, your arm wants to fall off. it doesn't work, it's ergonomically terrible.

Touch surfaces want to be horizontal, hence pads.

For a notebook, that's why we're perfected our multitouch trackpads over the years, because that's the best way we've found to get multitouch into a notebook.

We've also, in essence, put a trackpad -- a multitouch track pad on the mouse with our magic mouse. And we've recently come out with a pure play trackpad as well for our desktop users.

So this is how were going to use multitouch on our Mac products because this (he points at someone touch laptop screen) doesn't work."

 _-Steven Paul Jobs, Oct. 20, 2010_

<comment><USER3> Who says a laptop needs to have a vertical screen.

Invent a better computing device. Leap Motion + eye tracking + voice input + Google Soli + ...

[https://atap.google.com/soli/](https://atap.google.com/soli/)

Even after the stock buyback, Apple has plenty of remaining cash to invent the future.

<comment><USER4> I say it. If it doesn't have a vertical screen it might be a great device but its just not a laptop anymore, as far as I'm concerned.

Before anyone trots out dictionary definitions, I just mean the world identifies a laptop as a device with a horizontal keyboard and a vertical screen. Even ones that rotate the screen aren't called laptops anymore, they're called tablets or convertibles

</comment></comment></comment><comment><USER4> Apple make the lions share of their profit from two lines of arm devices, and they build their own processors. It makes absolute sense for them to start stuffing arm in macbooks, especially given how powerful arm chips are these days.

In five years time we'll probably see the end of Intel macbooks, maybe Intel macs entirely.

<comment><USER5> Thus far we've only seen ARM chips that can compete with the low end of Intel's offerings. An ARM processor in the 12" Macbook makes sense. I don't see Apple switching the MacBook Pro line to ARM in the next five years, though.

<comment><USER6> A dual processor MBP would be interesting. A higher performance Intel chip along side an Apple chip. Would allow for a lot of power savings on the go. It could also take advantage of the AI chip that's included in the iPhone for various things.

Other than that, it's a big jump from the A series chips to something like an Intel i9. Maybe if they can make a 10-20 core version of their chip but I don't know how well high core count ARM chips work.

</comment></comment></comment><comment><USER7> This is not a mystery. It is a new iPhone device. The original reporting greatly misinterpreted some technical information and assumed the device to be something else.

</comment><comment><USER8> Until arm can compete with x86 in single thread performance, which might be never, it won't replace intel.

</comment><comment><USER9> An ARM64 Macbook would be the line where i jump into an apple product.

<comment><USER10> Why would the processor architecture change your mind about it?

<comment><USER9> Because I don't buy intel. Not a single intel chip in my home today.

<comment><USER4> I think that makes you an edge case. Apple are not building an ARM laptop to capture that 'people-who-refuse-to-own-intel-chips' market.

<comment><USER9> Wow what a revelation, thanks for bringing that to my attention.

Of course I am an edge case. I never made a contrary claim, just dropped my two cents in the bin, but of course I've been HNed for doing so.

<comment><USER4> > HNed

Not familiar with that. I know 'slashdotted' but what's HNed?

Why won't you allow intel chips in your house?</comment></comment></comment></comment></comment></comment>


APIs Have Been Copyrightable for 22 Years - <AUTHOR> http://apivoice.com/2012/05/14/apis-have-been-copyrightable-for-22-years/ <comment><USER2> Of course, APIs are copyrightable. Anything written is copyrightable. The question is, what exactly does that mean? If another API uses the same method, type and package names, but has everything that is insignificant to a compiler - the parameter names, order of methods, comments, etc. - different, is that the same expression of the "ideas" embodied in the original or a new expression? Is the .class file version of an API covered by the copyright of the original or a new expression? Can copyright be construed so broadly that it prevents any implementation of the API without permission from the copyright holder?</comment>


Heartbit.io – RealTime Crypto-currencies Data - <AUTHOR> http://heartbit.io/app

<comment><AUTHOR> Real-time data on the most popular platform exchange. Try the click and drag function on the graph to display the price variation on any period ! Check the platform volume widget to see which exchange is bringing the heat!</comment>


Ask HN: Experience with System76 14" model? - <AUTHOR> I'm seriously considering it given the possibility to load it up with 32GB of RAM, but I'd like to hear from someone who actually used it. <comment><USER2> I'd recommend a Thinkpad T series (or even P series if high budget), use the perks code found on the r/thinkpad wiki and you can get a T series at a really good price. Great Linux support, quality build, great keyboards and screens (esp >FHD models), and up to 32GB RAM as well. The new T480 is light and powerful and features Intel's 8th gen ULV quad-core CPU, or you can get a T470s if a dual-core is acceptable.</comment>


Studios (temporarily?) gain upper hand in Blu-ray DRM battle - <AUTHOR> http://arstechnica.com/news.ars/post/20081215-studios-temporarily-gain-upper-hand-in-blu-ray-drm-battle.html

<comment><AUTHOR> I'm pulling for the studios on this one, because it would be a much more interesting outcome from a CS perspective.</comment>


Does your website make you look like a poor loser? - <AUTHOR> http://tracksuitceo.com/2008/06/27/does-your-website-make-you-look-like-a-poor-loser/ I used to be a poor loser, until I visited this website. <comment><USER2> So, Is anyone dumb enough to buy the kit? Is it worth $7?

:)</comment>


GoDaddy Super Bowl Nerd Kiss Ad Boosts Company To Biggest Sales Day Ever: Report - <AUTHOR> http://www.huffingtonpost.com/2013/02/05/go-daddy-super-bowl-nerd-kiss-ad-biggest-sales-day-ever_n_2623541.html?ncid=edlinkusaolp00000003

<comment><USER2> I'm surprised they're not attributing it to their OTHER ad, which was easily their least-stupid ad of all time and ACTUALLY EXPLAINS WHAT THEY DO.</comment>


Ask HN: Are you a generalist or specialist? - <AUTHOR>

This is a discussion that's come up frequently with my peers.  To HN's software engineers, I'm wondering if you consider yourselves to be:
-a generalist / full stack engineer, or...
-a specialist / domain expert.
What led you to this career path?  And what impacts (both positive and negative) has that decision had on your career?
Thanks in advance! <comment><USER2> I'd argue that before one can become a 'specialist' that you should first become a 'generalist'. I would consider myself a generalist - I'm primarily a C# - ASP.NET MVC developer.

But that doesn't stop me from writing WCF services, web services, using message queuing (MSMQ but I prefer RabbitMQ with MassTransit nowadays) or writing T4 templates or custom code generators. I generally do website design (I have worked for a branding/design company previously where I designed websites based on graphic designers' slicing) that includes your typical front-end stuff like JavaScript/CSS with some pre-processing (SASS, Less, CoffeeSCript), AJAX and web sockets.

I would consider myself a 'full-stack' engineer because I am generally responsible from writing everything from the front end to the databases and integration. I consider things like design patterns, wiring up IOC containers, applying SOLID/GRASP principles (ex. abstracting components to minimalize the need for change), managing project timelines, planning and estimates a daily ritual. All my projects use either a N-Tier or a DDD approach.

I have also toyed with a multitude of programming languages and frameworks outside of my scope of 'specialisation'. I'd hence argue that becoming a good programmer would requiring you to become good across the board (and at things outside the scope of the project - ex. I apply similar approaches to what I've learned from writing Scala/Python/Haskell).

I wouldn't consider a programming 'specialist' the same as a domain expert.

You definitely need to acquire domain knowledge to be efficient at what you do, but you shouldn't need to be considered an industry expert. I've only seen bad things happen when programmers are left to make decisions that require domain knowledge because there are no real domain experts around.

</comment><comment><USER3> I'm is generalist, but might be not a 'full stack engineer' - because I person who has and use skills from two different worlds Art/Design & Software development.

Some time ago I realize that the generalist skill set it's give more freedom to me, because if you do only something one, you will going into a trap (you will become very dependent on your employer, tools, industry, market etc. and if something of that is going to fail you be a first who suffer from it). As generalist you have more clear view about any problem that you working on, but you can lack in some areas (in most cases it's can be easy solved by short connections with domain experts).

Generalist skills is very suitable for small cool teams, specialist more in demand to big corporations.

My skill set Art&Developing is very helpful for projects like games, and for any projects what is have very strong connection between graphics and technical parts.

But generally specialist&generalist it's not strong terms because you able to be a generalist on some level but on the more hight level you still be a specialist.

</comment><comment><USER4> Hmm, I guess you are asking about programmers?

<comment><AUTHOR> Yes...my apologies, should have been clearer about this.</comment></comment>


My first 10 days of growth hacking - <AUTHOR> http://timothy.userapp.io/post/67705784777/my-first-10-days-of-growth-hacking

<comment><USER2> I thought this was a really good post, especially considering the term "growth hacking" is bordering on _" buzzwordy skill people claim to know but don't actually understand"_

At the very least, you've got me wanting to follow this series of posts.

I'm particularly intrigued about #4. I'm trying to get users to Tweet or FB about [http://cheergram.com](http://cheergram.com) after they order christmas cards. I'm considering offering a "bonus gift" if they do, but I'm not sure it's worth it since the free gift would actually cost me money (physical goods).

Keep up the posts.

</comment><comment><USER3> I thought the post was good. The short descriptions and images made most of it easy to digest and not so long I got bored.</comment>