Duplicate your House Keys with your Phone - <AUTHOR> http://shloosl.com/ <comment><USER3> Linking a picture of your house keys to your house address - what could possibly go wrong...

<comment><USER4> My immediate thoughts as well. Perhaps a different scenario.

eg- Anyone can easily just take their friends key, snap a pic and have creep access to their house/car/locker/safe/etc.

I am not sure if this kind of easy service is a good one to have around. Do not forget real-world security too!

<comment><USER5> The "Security" page addresses this very concern:

> Keyjacking is not allowed

> Worried someone's going surreptitiously copy your key with our service? Not > to worry. We don't accept surreptitious or flyby pictures of keys. The key > must be held in the person's hand, with their fingers visible. In any case, > we require a credit card to ship the key, so in case of fraud, identity can > be traced back. We respond swiftly to all inquiry from law enforcement > agencies.

<comment><USER6> The victim wouldn't even know the key was cut by this service. So the friend/plumber/handyman or whoever could just take the picture, get the key cut and then raid the place without anyone knowing.

Seems legit.

<comment><USER7> Indeed. In Germany for example, employees of this company could be tried as accomplices to the crime if it was found that they had duplicated a house key without asking for proof of residence.

</comment></comment></comment></comment></comment><comment><USER8> Someone pitched me this idea a few months ago and I urged him to pursue it. I'm glad to see that it's being done by a super technical team who seem to know what they're doing.

Here's why I'm so excited:

1\. Shloosl solves a small but acute problem that nearly everyone in the country has.

2\. It's a big FU to a fragmented and unevolving couple billion dollar industry. I don't want to find a locksmith or go to Home Depot. I just want a duplicate key. And I don't care whether I pay $1.50 for it or $10 for it.

3\. It's going to have some interesting implications on physical security in society. Locks are already useless to any unskilled criminal with a $100 lockpicking gun. But now, any clown with an iPhone can take a picture of a set of keys and have a working copy sent to anyone in the country within days. I certainly hope the security industry responds with something good.

I'd like to think the solution is a better kind of lock, but I don't know. Credit cards have been vulnerable in the same way for a while, but the networks or merchants essentially insure fraudulent transactions so it hasn't resulted in a real problem for people.

Either way, I'm looking forward to trying this out this weekend.

<comment><USER9> > I certainly hope the security industry responds with something good.

Security industry? As you said, it's unlikely they'll be surprised. I'd say if it catches on then we're much more likely to see legislation against these sorts of services unless they enforce valid IDs– hell, give it a month and I'm sure someone could find a way to spin it as a DMCA issue. That seems a whole lot easier to them than _actually trying to solve the problem_ , which is that the locks we use are fundamentally insecure.

All in all though I do think it's a great idea, and I hope it does happen. I might even give it a try since I just welcomed a new roommate and it turns out I didn't have as many spare keys as I thought I did...

</comment></comment><comment><USER10> This exact concept was done very well by a HNer two years ago:

<http://dittokey.com/>

<https://news.ycombinator.com/item?id=2391571> \- Show HN: DittoKey - <USER2> keys copied from a photo app.

For my money it's a cool idea, but an overtechnical and imperfect solution to a rare and cheap problem. Keys are cut in minutes, cheaply, with professional guidance at tens of thousands of places around the world.

<comment><USER11> iPhone app no longer in the store? Is this one dead?

<comment><USER10> Founder went on to found CircuitHub (YC backed)

</comment></comment></comment><comment><USER12> Does this really solve a problem? The only time I've needed to get keys cut was when I've either lost a key or moved house and needed a copy immediately.

Why would I risk my security and have to wait for the mailman? I can get a key cut at one of 10 shops near my house, door to door in 15 minutes.

And in the case of a lost key, I'd replace the barrel of the lock too.

<comment><USER13> Nail on the head. I can only remember one or two occasions where I've needed to copy a key and waiting a couple days for delivery would have been practical.

That said, I had a clever idea on my way to work this morning.

They've already got automated kiosks[1] all over the place, why not network those, give customers a login and let them save their keys to a centralized location. You'd then be able to get a copy of any of your keys without having the original present. You could even share keys with another account - visiting friend, whatever, so they can get a copy cut in their hometown. No need to save any info besides login credentials and keys (ie. nothing that could allow someone to trace a key back to a lock via a billing address).

[1] <http://www.minutekey.com/>

</comment></comment><comment><USER14> Oh, this is _so_ going to be abused for copying other people's keys. You can now even Photoshop the "DONT COPY" embossing away. Very cool.

<comment><USER15> I've never had a problem having "DO NOT COPY" keys copied. When I was the manager of a store I had to get multiple copies of the door keys and case keys at various times working there. OSH, Home Depot, etc didn't ask me any questions, just made my copies and sent me on my way.

<comment><USER16> Interesting. I once tried to get a copy of a key to a security lock (a fact I didn't know) in Germany. The guy in this tiny little shop (which I'm sure would otherwise be happy for every customer) had one look at the key, then handed it back to me straight away. He wouldn't do it.

Maybe I should have just gone to a couple of other shops?

<comment><USER17> Same sort of experience in the UK, when trying to get a copy of my front door key made. You needed the original barcode that came with the keys to order copies.

<comment><USER18> That's probably the reason why a lot of keys here in Switzerland nowadays have chips on them as well.

</comment></comment></comment></comment></comment><comment><USER19> I'm actually more worried about this[1]. I don't want my key and associated information stored with bank-grade cryptography, I want it deleted after it's cut and sent out. It's easy enough to change a password if you get hacked, it's slightly more difficult to change a credit or debit card but it's more hassle in "changing all the places it's used" than anything else. But changing locks is a huge pain, and not always possible to do depending on what the key is for. I'd far rather take a picture of a key, save it somewhere secure myself, and send it in when I need a copy made. Having both my shipping address _and_ the key to that address stored on a remote server is particularly worrying to me.

1\. <http://shloosl.com/#Security>

<comment><USER20> In general I agree for the sake of security, but in all fairness, the types of locks for which they are duplicating keys are pickable in under 60 seconds. It is essentially a waste of time to go through making a duplicate key - it is quite a sobering moment for me when I realized how easily I could defeat the locks on my house.

High security locks whose keys need protection, such as BEST Locks, are probably outside the scope of this service, and are not normally available to consumers anyways.

<comment><USER21> There is a vast difference in the number of people who can pick locks and the number of people with cameras.

<comment><USER22> Not when you correct it by the subset of people who would consider breaking into your house. Lockpicking and bumping are very easy, even for the amateur criminal.

</comment></comment></comment></comment><comment><USER23> I had two, almost simultaneous reactions to this.

On the one hand "oooh, that's useful, I need another set for loaning to cat- sitters."

On the other hand, "Keys are worthless now!"

The gripping hand is that keys have been worthless for quite some time, but we continue to use them. Whether out of habit, or because they feel sufficient.

<comment><USER24> If keys are useless, what are we using them for?

They're clearly not useless.

<comment><USER23> Useless, in the sense that they are less than adequately effective; a reasonably able locksmith can open most barrel locks in seconds. If a criminal puts it in mind to acquire the skills, opening the locks is a small part of thievery, getting around the alarm is probably more of a concern.

<comment><USER25> I don't buy this reasoning. Yes, if someone really wanted to get in, they could probably learn to pick locks. But that doesn't mean locks are useless - now we reduced the pool of potential criminals to people who 1) know to pick locks 2) have been hanging around the area enough to know when the neighbors are away and unlikely to notice anything suspicious while a stranger is picking the locks 3) take greater risks. This is a significant improvement from anybody who saw that the car wasn't parked and decided to waltz in.

</comment></comment></comment></comment><comment><USER7> You have to be very careful about where you provide this service. Duplicating a "secure" (i.e. non simple) key without asking for proof of residence is against the law in some countries.

</comment><comment><USER26> Now all I need is a lockable sheath to keep my key in so no one can take a photo of it.

Actually... Damn... <http://www.google.com/patents/US7181939>. Similar idea is already invented and patented.

Although, it isn't anything like I imagined it would be. My design's a lot more practical and only 1 piece, so the patent won't get in the way but I don't think it's something consumers might want to put up with. Having to enter a combination to use your house or car keys each and every time just doesn't seem worth it. Then again... fear is the easiest thing to sell.

What do you guys think? Would you buy a combination lock key sheath for $19.99?

</comment><comment><USER27> This is a pretty dangerous website, just because you can do something doesn't mean you should.

A unscrupulous car mechanic could save up a bunch of pictures of keys then sell them online anonymously to random people with fake credit cards. You wouldn't even need the peoples address just google map the neighborhood and look for their cars.

It'd be a lot harder to sneak off from work to the hardware store then just take a picture of their key.

This isn't even a real problem people have.

<comment><USER28> You're over thinking this. Anyone with access to the car can open the glove box and look at the address on the registration. They could take a picture of the registration in no time.

<comment><USER29> 1) If you have a picture of the key for the bike rack on my car, you don't need to do photometric analysis of the key, all you need to do is read "N027" handily stamped onto the key, and "Thule" silk screened onto the bike rack.

2) Geocoded pix in the exif data? So a pix of the bike rack key taken while I'm standing in my driveway is easily accurate enough to find my driveway.

</comment></comment></comment><comment><USER30> I predict a Facebook meme urging people to post pictures of their keys.

</comment><comment><USER31> Forgive me if it's already being done, but I would love to see this capability at my local Home Depot or maybe in an app for a locksmith service. Store pics of my keys on a secure server at the provider, and if I ever lose a key, I hit a button and it's made for me. Could be a whole new revenue stream for them.

<comment><USER27> Or someone steals your phone and then everything else you own...

Edit: I'm assuming this is idea was relating to an online business. You could always give a copy of your keys to your friends if your willing to drive/walk somewhere

<comment><USER31> Have them require ID to pick up the key. Or have the app require a picture of the person(s) authorized to pick up keys and store it along with the key photos on the server. Everyone is talking about the security issues, but these are far from insurmountable problems.

<comment><USER29> "Have them require ID to pick up the key."

This is also known as registered mail. The killer problem is the post office is 10x as inconvenient as just going across the street to the hardware store.

</comment></comment></comment></comment><comment><USER32> > More convenient than a hardware store

I'm not too convinced by that, the only times I've had to get keys cut in the last year were because:

\- I moved into a new apartment and my landlord only had one set of keys. I didn't always want to be home when my housemates wanted to get in so the first thing we did was get new keys cut.

\- I lent a key to my landlord to do repairs, and they didn't return it. I borrowed one of my housemate's key and got a copy cut (protip: copying a copy isn't a great idea) straight away.

I guess maybe it's different in the US, but over here I go past at least five locksmiths on my way to work. Other than that, cool idea :)

(My landlord isn't too great BTW)

</comment><comment><USER33> I'm not sure I want the ease of copying keys from a photo to be common knowledge.

</comment><comment><USER34> So i'm about to move out next week, I take a snapshot of the key (that's in my possession right now), pay with a prepaid Visa, and take next occupants stuff.

Easily s/apartment/office.

Flawless, proof that just because you can, doesn't mean you should.

<comment><USER35> Exactly the same thing can be done by visiting a hardware store, or any other store that makes copies of keys.

<comment><USER34> True, but I'm then on CCTV, shown to be getting a key cut. I could pay someone to go get it cut, but there's an additional accomplice.

Though, the same could be said for a PO box delivery with an anonymous pick- up.

I think at this rate, I'll just break into my old apartment! ;)

<comment><USER36> Woah, are you just saying you like the creepy CCTV everywhere for good?

Also, you could have copied the key any time you lived there. They won't store videos such a long time. Even if they get data that you copied some key, they still don't know which key. Machines used in a home depot or a mall are dumb, they do not work with key numbers and can't store them.

</comment></comment></comment></comment><comment><USER37> Honest question, is it possible we are approaching a future where metal keys will be rendered obsolete by 3D printers and low-light phone cameras?

Maybe Lockitron is much more than just a convenience.

Just a thought.

<comment><USER29> Be careful when defining obsolete.

To protect one site they're already obsolete except for some pretty exotic high end locks.

Metal keys will never be obsolete from a police perspective because here's "burglary tools" to bust people, and patterns to discern, and a piece of metal evidence with fingerprints, and ordering history, and shipping history... They may be useless for protecting one site, but they're a great tool for busting a serial burglar who's done it a dozen times.

</comment></comment><comment><USER38> The obvious solution to the "this will be abused by creeps" problem is for the website to generate a page with some random token on it that must be in the same picture as the key.

</comment><comment><USER39> Next service: share your keys on Twitter and Facebook.

<comment><USER40> New: Login with Facebook!

At least half the people will not mind the permission to post things for them. When pleaserobme.com catches wind of this, they're gonna get a lot of renewed media attention!

</comment></comment><comment><USER5> Sounds pretty neat. But where the heck did they come up with the name "Shloosl"? There's no way I'm ever going to remember that one.

<comment><USER25> Schlüssel means 'key' in German.

</comment></comment><comment><USER41> Awesome. I had prototyped this exact same thing out, but was concerned about the security and liability implications.

</comment><comment><USER42> sooo now i only need a picture of my nemesis/crush to get in his/her apartment? sounds good...all the fun i can have...

...and totally not crepy...

WHAT THE FUCK?

one more reason to get a $70 lock where the key is not that easy to reproduce! and hopefully they stick to the normal rules and ask for the certificate when u want a copy. that would make it a bit safer.

</comment><comment><USER43> Now the just need to attach it with face detection which require a live entity and not just a photo of the person .

</comment><comment><USER44> For anyone wondering about the name, it seems to be a web-two-ification of the German word for key: Schlüssel.

</comment><comment><USER45> How do they get the correct size?

<comment><USER45> Found the answer at <http://shloosl.com/#more-tips>

"For now, we accept only two types of keys. Chances are your house key is one of these."

<comment> ryan-c I assume they're supporting Schlage SC1 and Kwikset KW1 keys which fit the two most common types of five pin locks in the US.

Both of these keys have a pin coding - each of the five pins has a value from, IIRC, 1 to 9. With a little practice, one can decode keys visually in a few seconds, I can't imagine it being hard to write an image processing algorithm to do it.

<comment><USER46> I think you're right on the money.

I've decoded keys that I've seen people carrying on rings on their belts (and, in many cases, the pin values are stamped right on the key). I don't carry keys where people can see them, but I'm a little bit paranoid. With the advent of this service it probably pays to be a bit more paranoid, since somebody could take a picture of your key, send $5, and get a copy w/o knowing anything about pins and tumblers.

<comment><USER9> I think I just found a new people-watching side hobby. Next on HN: Burgling across Brooklyn as hipster keychains "pic-pocketed" en-masse...

I'm really looking forward to when I get the time to rig up my door so I can use my yubikey instead. Much easier than all the metal keys I have to carry around now, and much less damaging to my pockets and belt-loops.

</comment></comment></comment></comment></comment><comment><USER47> Duplicate your credit card with your phone. Just take a picture of it, upload and ....

</comment><comment><USER48> FYI, Schlissel is "Key" in German (and Yiddish).

It seems like the name Shloosl inspired by it.</comment>


Hacking Minecraft into WebGL - <AUTHOR> http://metaphysicaldeveloper.wordpress.com/2011/12/20/implementing-minecraft-in-webgl/ <comment><USER2> Cool stuff!

It looks like you're just rendering plain cubes, I'd be curious to see how much performance could be had by doing things the same as Minecraft (batching only the visible surfaces into larger 'chunk' meshes). I've been interested in WebGL for a while, and it'd be interesting to see how practical Javascript is for a fairly CPU-intensive game like Minecraft.

I've always thought Minecraft was an interesting programming challenge (I made a little clone of my own a while back (with portals, for whatever reason): <http://www.youtube.com/watch?v=Qk_KjtbHUIs>).

<comment><AUTHOR> Wow, your minecraft portal implementation looks amazing! If you open source it, please let me know.

<comment><USER2> Thanks! It's not the prettiest of code, but it's up on my github: <https://github.com/RileyA/VoxelsAndPortals>

</comment></comment></comment><comment><USER3> Lovely :) I guess we'll be seeing tons and tons of clones; I've seen many Minecraft like games and engines appearing in the open source world in the past month. If now only someone could explain what is fun about this game: I tried playing Minecraft but didn't get it or something. It didn't appeal at all. That might be just me though :) I do love coarse voxels though; the logo for my company is a little voxel guy (made before this game).

<comment><USER4> For me, Minecraft had a perfect gameplay flow. When I first entered the world, I was lost and scared. Monsters came out and destroyed me. I hid.

Slowly I learned how to acquire and build resources. I found an island and built a house on it. Monsters were no longer a threat. I made a farm and had all the wheat I needed.

I started caving not for survival, but to acquire extra resources. I turned those resources into large builds, both aesthetic and functional. I built a minecart track into my mine shaft just for the convenience. I built art on my island despite the fact that nobody else would see it. There was a huge amount of freedom.

Minecarts used to act very strangely, to boost them you'd put them side by side. I consulted the Wiki to figure this out, and learned about redstone at the same time. I started building larger-scale contraptions with it, and made a "challenge map" (I had never seen one before at this point).

Multiplayer came out around this time, and while extremely buggy, it allowed us to play survival with friends. This hit at the perfect moment because up till that point, I had a full understanding of the game and my interest was beginning to wane. Multiplayer rejuvenated my interest, and I worked on some large builds with friends. All vanilla, of course.

And now it's what, a year later? Minecraft has had some very large updates lately, and while I'm not as enthused as I once was, I'm still looking forward to see what the Mojang team and modders are able to do with the game.

</comment></comment><comment><USER5> Looks like WebGL is really catching up. I see many posts on webGL these days by fellow hackers. I hope it will be a great success.

</comment><comment><USER6> The demo screen doesn't resize on browser resize. I'm using Chrome on Windows 7.

<comment><AUTHOR> Thanks for the feedback. Sorry about that, but it inherits from the fact that none of Three.js' demos resize. This is because doing it is a lot more fun than it looks: not the entire DOM canvas has to be changed, but all the rendering engine behind has to be recreated (camera, scene and so on). I'll see if I can make it work.

<comment><USER7> IIRC, you can change a Renderer size using renderer.setSize(w, h). In order to update the camera aspect, you just have to use : camera.ratio = w / h; camera.updateProjectionMatrix().

</comment></comment></comment><comment><USER4> Very cool, and a lot more involved than I would have expected.

</comment><comment><USER7> Had you test it with a huge amount of blocks ?

<comment><AUTHOR> Yeah. Can't handle 14 million blocks as the original game (frameskip starts going through the roof after 400 blocks). Doing this requires a lot more tinkering, and I've got some great feedback on how to do this.</comment></comment>


The frozen bodies of Antarctica - <AUTHOR> http://www.bbc.com/future/story/20180913-a-frozen-graveyard-the-sad-tales-of-antarcticas-deaths?ocid <comment><USER2> Reminds me of some of the famous frozen bodies on Mt. Everest.

In an odd way, those who fail in their expedition can have even greater fame. (i.e. 'Green Boots')</comment>


Google to Make Security Guards Employees, Rather Than Contractors - <AUTHOR> http://blogs.wsj.com/digits/2014/10/03/google-to-make-security-guards-as-employees-rather-than-contractors/ <comment><USER2> I think this is a good move.

I understand the tax incentives/accounting behind it, but I still feel it's kind of shady to hire "contractors" for positions that are indefinite. I think contractors should be for the time you need a bunch of hands or brains to get something done for a few months, but using contractors for years on end is just abuse of the system and demeaning for the person.

Who do you think is going to be more loyal and do a better job with your security, someone who always feels like an outsider, or someone who is protecting "their" own company?

<comment><USER3> That exactly was my first thought...'What's in it for Google?'. Not doubting their good intentions, but whenever any corporate portrays an altruistic thing, it rings the skeptic bell in my head.

Good move Google.

<comment><USER4> I don't understand the downvote, because I can easily think of non-altruistic reasons for this move.

1) I have no doubt Google already tracks their contractors' staff turnover. _Every_ industry has institutional knowledge, and if staff turnover is high, not enough of the knowledge gets transferred. If the prestige of being a Googler is enough to counter that trend, it may be well worth a lot more than the monetary cost.

2) Assuming the detail about "gbus" access is true, the security guards traveling on the buses will have personal incentives for keeping them safer.

3) This move may attract the kinds of people Google wants for their physical security. (Related to point #1.)

So while Google may well be riding the social awareness wave for PR purposes, there are bound to be real corporate reasons behind the move too.

<comment><USER5> You might find it also makes their stats look better ie % African American employees.

Don't be evil.*

*Unless it's profitable.

</comment></comment></comment></comment><comment><USER6> Note - that this sort of thing usually lasts while a company is profitable. Once things get tight (if they do), then everything is back on the table, and Security Guards, Cleaners, Kitchen Staff, Groundskeepers - basically anybody who doesn't have proprietary knowledge, training, or skills is replaced with a contractor.

I remember when my University (SFU) fired all their cleaning staff - some of whom had been working their for 20+ years and replaced them with contractors (who (ironically?) actually did a much better job for a _lot_ less money) - students went on a mini strike, but, at the same time, the University was being forced to raise tuition to cover the bills - so they were trying to find every way they could save money possible.

<comment><USER7> This isn't always the case. Zappos had always hired people to prepare breakfast and dinner and then flipped and used a contractor for food prep and service when they moved to their new HQ in downtown Las Vegas. Zappos is definitely not tight on money and is very well run (from what I could tell).

Perhaps they're just an outlier though.

<comment><USER8> It's a sign that hr and accountants have taken over and the tail is wagging the dog

</comment></comment></comment><comment><USER9> It gives them more control over who they hire, it makes it harder (if not impossible) for the SEIU from unionize them, assuming they have to sign the employment agreement it allows them to install surveillance on any of their computers, and it will probably make for a much better experience for employees.

One of the saddest things they did during my time there was switch the TechStop folks from employees to contractors and that was, in my opinion of course, a huge mistake. Having these folks be contractors totally changed the dynamic with respect to the other employees.

<comment><USER10> The big opportunity here is to hire and train people who actually care about "Google security", versus people who care about wearing a uniform and applying for real cop jobs. Sorry if I'm going back to my blue-collar days, but I've never met a security guard who really took his job seriously. They're there mostly for show and they recognize that.

<comment><USER11> It is possible they are transitioning to a more automated force: [http://knightscope.com/](http://knightscope.com/) (math I did came out to about $4 per hour, 24/7.) If that is the case you want a smaller number of higher quality security workers in house.

I can't speak for the Bay area, or Google, or the contracting firm, but security guards typically have a turnover exceeding 100%. Makes a lot of sense to have any firm deal with the bullshit that arises from having turnover that high.

</comment></comment></comment><comment><USER12> I'm actually quite surprised by this.

Having worked as a contractor for Google, my impression is that they consider being an employee at Google as a brand in and by itself.

My contract stated several times that I was not a Googler, and I was not hired by Google and I was not allowed to say "I work for Google"and if I start a company I am definitely not allowed to send out a press release saying "Ex- googler makes new start-up to solve ..."

<comment><USER13> > I was not allowed to say "I work for Google"

Seriously? That's frankly ridiculous. Performing tasks for someone in exchange for payment seems to me like a reasonable use case for the verb "work", no matter whether your status is employee, contractor, moonlighter, intern, teenager looking for pocket money, etc. It seems impressive to me that they would feel entitled to forbid you from saying so.

<comment><USER14> Should they even have the right to do that?

</comment></comment></comment><comment><USER15> > The August think tank report found that the median hourly wage is $14 an > hour for security guards in Santa Clara County – home to Google and scores > of other tech companies. By contrast, the median wage for software > developers is roughly $63 an hour.

Obviously - $14/hour is quite low and there's a certain increased level of security that comes with paying guards more (it won't be so easily for them to consider _alternative_ income sources), but does anyone really think that that gap needs to be closed completely? I think they'd be hard pressed to demonstrate that a security guards warrants equal pay with a software developer.

<comment><USER16> The value of software development is the multiplicative application of innovation / creation. Security guarding will never have that (without adjacent technological innovation.)

</comment></comment><comment><USER17> I worked as a contractor at Google last year as a software engineer. All of the people I interacted with who were non technical contractors, like security guards, office supplies, etc. seemed to have a great attitude and acted like they appreciated their jobs. Same comment applies to almost all of the technical contractors I met.

Unless companies need to lock in key employees, using contractors makes a lot of sense, and with the affordable health care act, one of the big reasons for wanting to be an employee vanishes. I have worked as an independent consultant for 15+ years, so I am biased in favor of flexible working arrangements.

BTW, I hope the current contracted security guards get some preference in being hired as employees.

<comment><USER18> Security "contractors" are not the same as real contractors. They are themselves employees of a different 3rd party company that "hires" them to the paying customer for a (usually much) bigger bill than the contractor's wage. The flexibility from the point of view of the customer is that they can let go such "contractor" on a wimp and expect to have a replacement lined up in a short time if needed. The 3rd party company probably manages this by swapping its employees from one customer to another, at least in the short term.

Strategically speaking, the reasons for resorting to this type of arrangement range from the legitimate (you really don't care about developing the core competencies required by the position in-house) to the borderline fraudulent (you want to hide a big fixed cost in your accounting books and make it pass as a variable cost, so your company's finances look healthier than they really are).

</comment></comment><comment><USER19> This wasn't mentioned in the article but this will also mean they can ride the shuttle for free (the IRS considers this a benefit with some specified dollar amount). I'm glad the security guards won't have to choose between driving or paying the "gbus fare".

</comment><comment><USER13> The article says "more than 200 security guards". Any clue about how this compare to the number of security guards working as contractors for Google? I'm curious about whether "Security Guards" in the title means "all security guards", or "a small proportion of security guards, as an experiment".

</comment><comment><USER20> I see many comments here be like "security is important for google, so paying guards more is a wise move". That isn't really true. If you want to keep something safe the real question isn't if your employee wants to abuse you, but if he _can_. Security is about being sure that damage that can be made by every single person you entrusted with access to something is reasonably low. Because if somebody can blow you up, him being your own employee and not a contractor, or paying him nice wage doesn't guarantee enough. Consider Snowden.

Now about wages. I'm not sure why I'm saying such obvious things on HN, but there's some visible ignorance in comments on that topic. Developers aren't paid more than cleaners because being developer is somehow better by itself. Wages are dictated by market, so the question is if you can find somebody who can do the same work while being paid less. Of course I don't know what specific purpose will serve these security guys hired by google, but if we're talking about something like sitting all day long watching nobody enters using other tools than his NFC card then answer is definitely yes, finding a guy who can do _that_ is easier than finding a guy who can write efficient js or something like that.

I _do_ think that hiring your own security staff is convenient (and I'm a bit surprised it wasn't the case before — I suppose it isn't like they are founding their own Blackwater), but it doesn't seem to be as important as some journalists are implying and sure it isn't about social equality.

<comment><USER21> > If you want to keep something safe the real question isn't if your employee > wants to abuse you, but if he can.

This assumes that 100% safeguarding is something that you are 100% capable of doing. If Google had that, they may not even need security guards (hyperbole).

> Consider Snowden

In the case of Snowden, we know that he attempted to raise the issue internally. Many argue that Snowden actually did serve his _drive_ and oath comparatively to Manning.

 _Drive_ goes into these aspects that inspire people. It suggests that autonomy and purpose matter much more than pay - and Google having greater control over this could certainly help control.

</comment></comment><comment><USER22> Coincidentally until this week I never saw the security people in the lift (we share a building). This week I have seen them many times inside and outside wearing Google Security logoed shirts.

</comment><comment><USER23> Given the importance of security and worry over theft of intellectual property by accessing servers on-site, etc., I am really surprised that hi-tech firms (Google, Apple, Oracle, Microsoft, ...) don't hire their own security. Also, for people that store data on Google, Apple, Microsoft, Amazon servers, I'd want security to be vetted by the firm (Google, etc.) that is accountable for providing the secure service.

Incidentally, this also holds true for hospitals, etc. that have secure medical data.

<comment><USER24> All these companies have security teams (not network security). Most of them are retired cops, retired detectives, sometimes these companies hire local cops for big bucks as their VP of security. But they also hire managers of security for local sites.

But at the bottom level, they have contracted out to Securitas, Guardsmark, SIS Security, etc.

Patrolling, monitoring cameras from a central site, checking locks of all doors, badging, etc--all these have been contracted out.

Hospitals are better in this aspect: they hire full timers for the bottom layer, and they also keep contract security firms. Stanford hospital is a good example: they have 70% full time security guards, and 30% is contracted out.

</comment></comment><comment><USER25> Maybe it was to preempt something like this. Seattle City council calling out Amazon to treat its security guards better and to let them unionize. [http://www.geekwire.com/2014/seattle-city-council-amazon- sec...](http://www.geekwire.com/2014/seattle-city-council-amazon-security- guards/)

</comment><comment><USER26> Given how security conscious Google is, I'm surprised the security personnel were ever outsourced.

</comment><comment><USER27> I am very glad to hear this, google employs (or _ahem_ contracts) some very good security personnel. I do wonder though if the current security personnel will be converted to full employees or if they will be sent back to the contracting company ...

</comment><comment><USER28> I wonder if they get to use 20% of their time providing security for their personal projects.

(b'dom ksh)

</comment><comment><USER29> The _median_ salary for software engineers is $130k??!? At Google or in all of SV???

<comment><USER30> Hmm? This doesn't seem impossible at all at Google. My last job in Seattle as a Data Scientist was approaching that in salary alone, and I'm not good enough to work at Google. Those who are should make about that much.

<comment><USER31> You are not not good enough to work at Google.

<comment><USER32> This is a roundabout way of saying that google's hiring standards are often a total mystery

<comment><USER30> True. But I am a college dropout with no experience in formal Computer Science and my professional developer skills are quite lacking. I am good at hacking data and statistics research. Not really what they are looking for, from what I can tell.

<comment><USER33> Don't sell yourself short. I also am a college dropout with no formal Computer Science education and had limited professional developer experience and I worked at Google for 7 years.

Google's whole business is built around hacking data and statistics. You may very well be exactly what they are looking for.

<comment><USER32> I know someone with a data science degree from a top school whom google recently passed on. No idea what they may have been really looking for.

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> I guess the EEOC is finally breathing down their necks. Funny how long companies like google can get away with it....

Vote it down if you like: it's the obvious reason Google is hiring its security guards.

</comment><comment><USER35> We have had our security guards as employees (not contractors) since the beginning. Not sure how this is news and how this isn't the norm.

</comment><comment><USER36> Doesn't this reduce their ability for overtime pay in certain situations?

<comment><USER10> Doubtful.[1] California has limited exemptions for overtime that can't simply be avoided by paying salary. Even a significant number of 'IT professionals' should be paid overtime. [2]

[1] [http://www.dir.ca.gov/dlse/faq_overtimeexemptions.htm](http://www.dir.ca.gov/dlse/faq_overtimeexemptions.htm) [2] [https://www.dir.ca.gov/oprl/ComputerSoftware.pdf](https://www.dir.ca.gov/oprl/ComputerSoftware.pdf)

</comment></comment><comment><USER37> Good move I've seen some really bad contractors

</comment><comment><USER38> Google's getting its own army. ;-)

<comment><USER39> Naah, that's what robots are for.

<comment><USER40> For a second I actually imagined that this might be the start of what in 10 years will become Google Security Forces, people safegurading Google micronation/underwater colony/Mars establishment.

</comment></comment></comment><comment><USER41> I wonder if Google has caught a contractor that was working for NSA.

</comment><comment><USER42> I've always wondered why we outsource cleaning and janitorial staff? It's so unnecessary and cruel. Make them part of the team.

<comment><USER43> Same reason why many companies (including probably Google) outsources landscaping work even though there's work to be done every year around. The subcontracted companies have foreman and managers who are much better equipped to train people in janitorial, cleaning, and landscaping work than Google.

Whatever the motive, I applaud the move.

</comment></comment><comment><USER44> That's strange. Google will have to go into bussines of security services. Why they just don't negotiate with the contracted security company better terms for the employees working for Google?

<comment><USER31> Probably because they couldn't find one.

</comment></comment><comment><USER45> >>SIS told The Journal the change was a business move on its part. "The decision to end this contractual relationship was made by SIS as part of its normal business operations and then conveyed to Google," said SIS Chief Financial Officer Tom Seltz in an email.

Um, so who made the choice SIS or Google?

<comment><USER24> Who made the choice: Definitely, Google. On the paper, it is SIS. I worked for SIS a decade ago: yes, they are nice folks, they did not provide health insurance. They had some $120/month insurance, which covers like $10K a year-- and this is not an insurance at all. That's why I did not buy that insurance.

SIS won lots of security contracts based on the price alone. Guardmark, one of its competitors, provides a good health insurance for its employees; but they can't compete with SIS, which does not provide any benefits.</comment></comment>


Ask HN: Laptop bag for 15" Macbook Pro for inclement weather - <AUTHOR> I frequently take Metro North Railroad in the Northeast of the US.  Since we have all four seasons of weather, I am looking for a comfortable laptop bag that is easy to walk with, waterproof/water-resistant, and easy to open and use in lap to code while on the train.  What would you suggest for a 2015 15 inch MacBook pro? <comment><USER2> My favorite source of laptop bags for several years now has been Waterfield Designs: [http://sfbags.com](http://sfbags.com)

Although I tend towards custom-fit sleeve cases that I can slide into the other things I own (such as my trusty LL Bean backpack), all of their bags have a great quality and seem durable enough to likely last well against the weather. There's also a bunch of nice touches, such as their messenger bags use "airplane buckles" for easy one-handed access.

<comment><AUTHOR> the city slicker bag looks really nice.

</comment></comment><comment><USER3> Though they don't make mine specifically anymore ([http://imgur.com/a/6LtYY](http://imgur.com/a/6LtYY)) oakley has some great, rugged bags.

[http://www.oakley.com/en/mens/bags-accessories/bags- backpack...](http://www.oakley.com/en/mens/bags-accessories/bags- backpacks/category/m0601?page=1&q=%3AoakleyusRelevanceSort)

Very rugged bags and I've carried 3 15 inch laptops in mine at once.

</comment><comment><USER4> My favorite: [http://www.thewrendesign.com/new-ppc-cement-laptop-bag- desig...](http://www.thewrendesign.com/new-ppc-cement-laptop-bag-designs/)

Waterproof test: [https://vimeo.com/39962259](https://vimeo.com/39962259)

</comment><comment><USER5> Some good options [http://www.cio.com/article/2852390/laptop- computers/top-12-l...](http://www.cio.com/article/2852390/laptop- computers/top-12-laptop-bags-for-pros-on-the-go.html)</comment>


Raspberry Pi makes the sub-$100 PC a reality - <AUTHOR> http://www.geek.com/articles/chips/raspberry-pi-makes-the-sub-100-pc-a-reality-20120112/ <comment><USER2> Funny. I thought that happened in 1981 - thirty years ago: <http://oldcomputers.net/zx81.html>

Ok, ok, the Raspberry Pi could kick a room full of ZX81's around the block - it IS an impressive little board. My point is that the Raspberry Pi is a sub-$100 computer isn't the impressive part. The impressive part is what a sub-$100 computer can do _today_ in comparison to what _yesterday's_ sub-$100 computer can do.

<comment><USER3> I thought the impressive part is what a sub-$100 computer can do today in comparison to what yesterday's $2000 computer can do.

<comment><USER4> Both contrasts are impressive. I had a $100 ZX-80 kit and a $2400 original IBM PC (inflating to $200 and $5000 today's cash). Of course, what an RPi can do in contrast to both is thrilling. The point, however, is something we're losing these days: the utter freedom to do a complete ground-up software reconfiguration on a moment's notice with zero concern for cost or disruption. How many today have a computer which they would think nothing of erasing the primary storage and trying anything on a whim - and without having spent nontrivial cash for that ability? Unlike our familiar hard-drive based systems where the main storage is huge, not cheap, and hard to swap, old 5.25" floppy- based systems had the ability to have complete OS configurations, swappable & bootable in seconds, on media costing pocket change. Sure some of us can emulate the experience to some degree, or as result of substantial costs already spent have tinkerable hardware around, but few - especially the kids the RPi is intended for - have robust systems at hand which can be messed with that fast & cheap with little thought.

Let my toddlers at the home computer with no supervision? Nope (not after deleting several apps off my iPad). Give each an RPi and let 'em have at it? Oh yeah - where do I order? and can I get one in pink and one in OD green?

</comment></comment></comment><comment><USER5> A tiny ultra cheap (almost throwaway) PC might also open up some interesting possibilities for scientific research. For example, for placing sensor/processor combinations in places where they are likely to be lost or destroyed.

<comment><USER6> > _placing sensor/processor combinations in places where they are likely to be > lost or destroyed._

Well, you could already do that with microcontrollers. An AVR is pretty powerful actually, and costs a buck a pop.

But of course there will be cases when an AVR would not be enough, so the Pi might be the better choice.

<comment><USER7> The Pi would be overkill for that type of application. You're not going to be decoding video in a disposable chip.

</comment></comment></comment><comment><USER8> Seems like all of the component prices were underestimated including the Raspberry PI board itself as noted in one of the comments to the original posting. Also they forgot the AC power adapter. A case would be a welcome nicety as well.

<comment><USER9> You can power the box via 5v USB (<http://www.raspberrypi.org/archives/260>). I guess, if you have a monitor that supports USB then you could power this machine and a hub. So you don't need the external power adapter.

<comment><USER8> So where is the power to the 5V USB come from? There has to be an external AC/DC converter or an external battery.

<comment><USER10> I believe their plan is to use a standard MicroUSB mobile phone charger. If your mobile phone isn't an iPhone, then you probably have one already.</comment></comment></comment></comment>


Google's Self-Driving Cars May Cost More Than A Ferrari - <AUTHOR> http://www.businessinsider.com/google-self-driving-car-sensor-cost-2012-9

<comment><AUTHOR> Does anyone else agree that a good business case could be built based on a deploying a fleet of $250K self-driving cars?

As an example, assume that a 12 hour shift taxicab driver costs $100 per shift and that a full day labor cost is thus $200. The 365 day labor savings on a full time taxi is thus $73,000. Payback for the $250K self driving taxi is about 3.5 years.

I think that self-driving cars could disrupt the taxi driver occupation in North America if the car would cost less than $125K with a 3 year payback, and fare prices discounted accordingly compared to a human driver. There may be as many as 200,000 taxis in North America.

<comment><USER2> I agree its definitely feasible but there's other things that would need to be in place for it to happen .. e.g. an automated way of ordering your entire trip beforehand and paying for it. Where to stop for a pickup if its a busy street with no legal parking spots. What if the passenger changes their mind about where to go mid journey.</comment></comment>


Ceres RC3 Animation: Bright spots revealed to be composed of many smaller spots - <AUTHOR> http://www.jpl.nasa.gov/spaceimages/details.php?id=pia19547 <comment> david-given Now, I'm not saying it's aliens, but...

Sadly, it's probably just a really interesting icy outcrop of some description. Current theories of Ceres' composition suggest an enormously thick icy layer covered in dust and rock, so a meteor strike could expose the ice (and probably cause all kinds of weird physics --- ice goes _strange_ under extreme temperatures and pressures).

But let's say it is aliens, and in a week or so we get pictures of what is indubitably an alien city.

Thought experiment: what happens next?

<comment><USER2> It's a fun thought experiment. I've had a similar one, imagining an alternate cold war with the divergent point being the mid 60's Mariner probe visit to Mars revealed canals, cities, vegetation, and a shallow ocean.

A city on Ceres would make NASA's budgetary woes go away instantly. Either there would be a new space race, or the various spacefaring nations would quickly make an arrangement for a multinational crew to visit, with each nation (or group like the EU) reserving the right to make claims later. I'm not sure how the public would react. I think they'd be glued to the news, but there wouldn't be any sort of panic, since both science and science fiction has led many people to expect finding this sort of thing one day.

<comment> david-given Of course, it's worth considering that if there _was_ an inhabited alien city on Ceres, the chances of them not knowing we were here would be nil.

So, alternative (a): they know we're here and for some reason don't want us to know about them.

Alternative (b): they know we're here but either don't care / are too alien to want to communicate.

Alternative (c): the city is uninhabited.

I would say that the most immediate reaction on earth would be shouting, initially at each other, but very quickly people would be shouting at Ceres --- everyone who can do some basic electronics and get hold of a satellite dish will be making transmissions. For alternatives (b) and (c) above, we wouldn't get a reply. For (a), well...

<comment><USER3> > _Of course, it 's worth considering that if there was an inhabited alien > city on Ceres, the chances of them not knowing we were here would be nil._

What makes you say that? If they are there, then _we_ don't know about _them_ (yet).

Also, imagine they're at the same level of technology we were 100 years ago (or 1,000, 10,000 or even 100,000)

<comment><USER4> I think GP is assuming that Ceres is not their homeworld, but the city is just a colony. This would imply a level of technology ahead of ours.

<comment><USER5> Why would they go to Ceres and not Earth? From our perspective at least it's much more attractive.

<comment> david-given If you're a space-travelling human-like species, Ceres is pretty hospitable. Lots of water, lots of rock, enough gravity to keep things down while still being easy to get off of, a manageable temperature, and it's in the asteroid belt so there's plenty of nearby materiel for development (not to mention Jupiter not far away, energetically).

Earth's too hot, too far away from anywhere, and at the bottom of a great big hole. The only reason we like it is because we've adapted to its environment. It's not very good real estate. Plus, it's contaminated with life, which means lots of big, complex, wriggly molecules that get everywhere and fiddle with things. Get those in your life system and the alien equivalent of anaphylactic shock is probably getting off lightly.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> This just keeps getting better and better. Can't wait to find out what they end up with. I'm still betting on exposed water ice but would totally love it if this was the bright shiny core of a nickel/iron meteorite.

<comment><USER7> I dunno. I've seen NiFe meteorite material, and it's anything but shiny.

<comment><USER6> This one is pretty shiny, [http://scienceviews.com/photo/library/SIA2743.html](http://scienceviews.com/photo/library/SIA2743.html)

</comment></comment></comment><comment><USER8> On the far right side of the picture, near the vertical middle, there's a crater with straight sides, like a ... hexagon. And there's a similar sized pentagon near the top.

Looks like Ceres is a Goldberg polyhedron.

Oh, and the bright spots are thermal exhaust ports.

<comment><USER9> Many of the craters do seem polygonal.

But see [http://link.springer.com/chapter/10.1007/3-540-27548-7_5](http://link.springer.com/chapter/10.1007/3-540-27548-7_5)

</comment></comment><comment><USER10> Scattered remains of a huge alien spaceship?

( Sadly it is probably just ice. )

<comment><USER11> Yeah a huge alien ice spaceship.

<comment><USER10> Actually, a large part of a spaceship capable of traveling near c would be comprised of ice, as a shield from relativistic particles.

[https://www.fourmilab.ch/cship/craft.html](https://www.fourmilab.ch/cship/craft.html)

<comment><USER12> It slices! It dices! It's a shield! It's reaction mass! It's fuel! It's potable water!

</comment></comment></comment></comment><comment><USER13> It looks like the Apple logo and the Android logo have been fighting, and the Apple has bitten off one of Android's arms and part of its head.

</comment><comment><USER14> The bright spots are cool and all, but what's the deal with the lines across the surface? They remind me a bit of the lines you see from rocks moving across dry lakebeds. ([http://geology.com/articles/racetrack-playa-sliding- rocks.sh...](http://geology.com/articles/racetrack-playa-sliding-rocks.shtml))

<comment><USER7> If the lines end up converging towards a crater, then they are caused by ejecta from a meteorite impact.

The Moon is full of such lines - I've taken this picture a while ago, and the ejecta lines are clearly visible after some post-processing:

[http://i.imgur.com/o81hb.jpg](http://i.imgur.com/o81hb.jpg)

<comment><USER15> Great pic. Would you mind telling me the setup you used o take it? I currently have a DSLR with only a 300mm lense and have yet to get a photo of the moon that nice...

<comment><USER7> Home-made newtonian telescope. 150mm aperture, 1200mm focal length (f/8). Panasonic G1 camera (DSLR-like but without mirrors). Camera lens removed, camera body mounted on telescope focuser, so the sensor was in the focal plane of the telescope primary mirror. A.k.a. "prime focus" photography.

Basically, the scope became the "camera lens".

Some post processing in Lightroom, mostly just cranking up contrast and saturation. Some denoising.

No idea what the exposure was, I just gauged it on the camera LCD so that I wouldn't get the over-exposure warning on the Moon surface.

</comment></comment></comment></comment><comment><USER16> First I've heard of this, are these spots within the visible spectrum?

<comment><USER17> I believe so. They have (if I recall) viewed them with both visible and infrared spectrums.

(found some photos)

[https://en.wikipedia.org/wiki/Ceres_%28dwarf_planet%29#/medi...](https://en.wikipedia.org/wiki/Ceres_%28dwarf_planet%29#/media/File:PIA19316-Ceres- DwarfPlanet-DawnMission-VIR-20150413.jpg)

</comment></comment><comment><USER18> Electric Universe Theory has non-mainstream coherent and sensible explanations for these type of phenomena. Any HN users well versed in it's explanations? Been reading up on it lately and I'd like to discuss.

<comment> david-given Here's a laundry list of problems with EU:

[http://dealingwithcreationisminastronomy.blogspot.ch/p/chall...](http://dealingwithcreationisminastronomy.blogspot.ch/p/challenges- for-electric-universe.html)

(At a cursory glance it looks valid, despite the domain name.)

<comment><USER18> Thanks for the link. Checking it out now.

Anyway, after around 5 to 10 hours of investigative reading on EU, it seems quite worthy to think about/ follow up on.

At the minimum it's become quite apparent that the Astronomical Standard Model has plenty of spots which are expressed as truth, when there are real problems with observation. I'm not even claiming EU is going to better, but staunch supporters do highlight some interesting inconsistencies and seemingly misguided judgements of modern astronomers. That's not to say their own pet theories are bound to be better though.</comment></comment></comment>


Facebook sees need for Terabit Ethernet  - <AUTHOR> http://www.networkworld.com/news/2010/020310-facebook-sees-need-for-terabit.html

<comment><USER2> Doesn't this say more about the Facebook software layer than the physical layer? Locality of reference == good.

<comment><USER3> I was thinking the same thing, but I'd be willing to be they thought of that.

Likely it has more to do with the types of tasks they're doing. If you think about facebook and how it's used, it's mostly a lot of little bits of data. An awful lot of little bits of data. Sure there are lots of images - but ignoring the image data its self (that's only really useful to end users) it's still just a bit of data, owner, dates and users tagged.

What they have to do is crawl a lot of social graphs to update users with a small bit of data, the things their friends are doing. Locality of reference is a good thing, but probably very hard with the type of operations they're performing.

<comment><USER2> Indeed. I thought on it more after posting and it _is_ a challenging problem. They would need to identify the subgraphs with the highest activity- connectivity products, then migrate them towards the same hardware. Dependencies would need bidirectional links, so that updates can be distributed in batch mode rather than being fetched on demand. Especially hot data might need to be continuously distributed in streaming mode.

And HTTP needs a mode for reassembling out-of-order snippets. Which use snippet independent data compression. Oh, and everybody gets a pony.</comment></comment></comment>


Understanding Gaussian Processes. Implementation and TF-Probability Example - <AUTHOR> https://peterroelants.github.io/posts/gaussian-process-tutorial/ <comment><AUTHOR> This is a short series on Gaussian Processes I've been working on for a while. It's a 3 part series:

1\. Part 1 introduces the concept of Gaussian processes with the help of a simple Python implementation: [https://peterroelants.github.io/posts/gaussian- process-tutor...](https://peterroelants.github.io/posts/gaussian-process- tutorial/)

2\. Part 2 illustrates how to practically fit kernel hyperparameters to data with the help of TensorFlow probability: [https://peterroelants.github.io/posts/gaussian-process- kerne...](https://peterroelants.github.io/posts/gaussian-process-kernel- fitting/)

3\. Part 3 goes more in-depth in the different kernels fitted in part 2: [https://peterroelants.github.io/posts/gaussian-process- kerne...](https://peterroelants.github.io/posts/gaussian-process-kernels/)</comment>


The Five Easiest Ways to Get Your Identity Stolen - <AUTHOR> http://gizmodo.com/5987376/the-five-easiest-ways-to-get-your-identity-stolen <comment><USER2> The article didn't mention people's annoying, dangerous habit of sending e-mails to all their friends and acquaintances by dropping their entire mailing list onto CC: (the list is exposed to all recipients) instead of BCC: (concealed).

More detail here: <http://arachnoid.com/opinion/help_the_crooks.html></comment>


India`S Turtles Clean Up the Ganges - <AUTHOR> http://community.seattletimes.nwsource.com/archive/?date=19921001&slug=1516060

<comment><USER2> This article is from 1992. Ganga is still unclean.</comment>


My humble tribute to Apollo 11 AGC - <AUTHOR> https://github.com/donnaware/AGC <comment><USER2> A lovely tribute - and please take this as constructive criticism nitpick - but it would be even better if the Readme was in markdown so that GitHub would render it correctly on mobile.

<comment><USER3> PR: [https://github.com/donnaware/AGC/pull/1](https://github.com/donnaware/AGC/pull/1)</comment></comment>


Ask HN: The "Expert/Master At (Language)" Point - <AUTHOR>

At what point should a programmer consider himself well versed or an expert/master of a programming language? Where is the bar set? <comment><USER2> You are a master of a programming language when you consistently write idiomatic code in that language which exploits the power of the language to solve difficult problems in an easy-to-explain way.

Or in detail:

You must _consistently write_ code in the language. Knowledge without experience cannot make you a master.

You must write _idiomatic_ code for the language. If you're just writing FORTRAN in another language, then you might be a FORTRAN master, but you aren't a master of the language you're using.

You must _exploit the power of the language_. If you're writing "for" rather than "foreach" loops to iterate over a collection in C# or rolling your own LinkedList class, you aren't a master of C#.

You must _solve difficult problems_. Writing Hello World will never make you a master.

You must write code in an _easy-to-explain way_. If you are the only person who can read your code, you aren't a master of the language.

</comment><comment><USER3> The people I've worked with who were true masters of their languages (or other tools) understood what happened under the hood. They knew the techniques required to implement the language themselves, or to debug or optimize existing implementations. They understood any differences or gaps between the language spec and their preferred implementation's actual behavior.

</comment><comment><USER4> Some necessary but not sufficient criteria for our intrepid programmer to consider himself a master of his language:

* He's written a non-toy compiler for the language.

* He knows how to choose between more or less semantically equivalent ways of writing the same code because he understands the tradeoffs involved.

* He's explored many or most of the dark and mysterious corners of the language and knows when and when not to invoke them in production code.

* He is familiar with the contents of the standard library and uses it whenever appropriate.

* Knuth is his homeboy.

That's all I can think of for now.

</comment><comment><USER5> I'm trying to approach it from a slightly different angle (although pmiller2 alludes to it):

When you know that a language is absolutely the wrong choice for a problem, you are probably there.

When you can hold a problem in your head, use two different programming languages to shape a solution, and intuitively understand - in a way you can clearly communicate at least to yourself - which one is best suited to the situation, then you can consider yourself an expert.

Mastery is just a path.

</comment><comment><USER6> master: contributor to the development branch if open source or writing\maintaining actively used libraries.

expert: biggish list of work\projects finished, know how to leverage the standard/popular libraries</comment>


Getting Brand Communities Right (HBR) - <AUTHOR> http://hbr.harvardbusiness.org/2009/04/getting-brand-communities-right/ar/1

<comment><USER2> It looks like a great article (based on the beginning). Unfortunately, the whole article only seems to be only available for HBR subscribers.</comment>


New Informatics Tool to Keep Tabs on Reporting of Clinical Trial Results - <AUTHOR> https://www.evolving-science.com/information-communication/informatics-too-reporting-clinical-trial-results-00671 <comment><USER2> > The most recent review on this subject reported that only 50% of all trials > registered with authorities such as the United States' Food and Drug > Administration (FDA) make their results available.

Wow, that is really bad sounding. While not all, I would assume large portion of those studies are funded by companies and groups who find results in conflict with their goals and don't want news to get out.

<comment><USER3> I don't know how useful this tool will be:

>"This trial is ongoing. It must report results 82 years, 8 months from now." [http://fdaaa.trialstracker.net/trial/NCT00068692/](http://fdaaa.trialstracker.net/trial/NCT00068692/)

Yep, they scraped the correct info:

>"Estimated Primary Completion Date : January 2100" [https://clinicaltrials.gov/ct2/show/NCT00068692](https://clinicaltrials.gov/ct2/show/NCT00068692)

<comment><USER4> I haven't collated the data, but just about every clinical trial paper I've read where I'm eagerly awaiting to see results has a completion date in the past.

Goldacre is a real hero for this. He is also… _Quite Interesting_.

[https://www.youtube.com/watch?v=GLz0uxdCrcE](https://www.youtube.com/watch?v=GLz0uxdCrcE)</comment></comment></comment>


We'd pay, they'd sell; how come this hasn't been monetized? - <AUTHOR> http://www.mangafox.com/manga/the_breaker_new_waves/v00/c000/25.html

<comment><AUTHOR> My big question/looking for suggestions is how to address this issue? People would definitely pay for this kind of service, and (I would imagine) authors would love to earn some revenue.

Is it because of language barriers? Outdated "legacy" practices?

What are practical solutions? I can't even imagine what a good way to monetize this would be (grooveshark style?)

if link is tl;dr: read below

Manga Artist Park Jin-Hwan Speaking: [...] But I saw 'the breaker' uploaded on a foreign website. It's being uploaded with only a few days delay. What's more surprising is that everything has been translated (even these notes from myself). So, I'm now speaking to that group. Please stop... Why are you selling and profit off our work? If you have any conscience, shouldn't you have emailed... Or written an apology, or shown some show of support for us? All our works that are on your site are up there without our permission. So please stop. Take them down before it becomes a bigger problem!!

#From the scanlation group We'd like to respond to this as follows:

To Park Jin-Hwan, We greatly appreciate the work and effort required by you to bring this great manwha to us, and we apologize if our actions have caused you offence. We would like to clarify that we actually make no profit from your work. We do this in our free time for fun, and we have always bought your books. We, like countless thousands of other people from around the world, love your work, and always look forward with anticipation to the next chapter. We would love to continue doing work on this series, and hope that we can work out an arrangement with yourself towards this purpose. If you would like to contact us, [...]</comment>


BuckleScript: An OCaml to JavaScript compiler - <AUTHOR> http://yawar.blogspot.com/2017/01/bucklescript-significant-new-ocaml-to.html <comment><USER2> Hi, the main author of BuckleScript here, below is a simple comparison with TypeScript (it may be biased):

\- Pros of TypeScript

      - Designed for JS, easy inter-operate with JS
      - A much larger community
      - Nice integration with VSCode

\- Cons of TypeScript

      - Compiler slow (not scalable for FB/Google scale)
      - Verbose, very limited type inference
      - Start up time slow (very hard to build traditional build tools)
      - Types are only used for tooling - soundness is not the design goal, not very reliable
      - Only JS backend, no code optimizations

\- Pros of BuckleScript

      - No legacy of JS (clean slate) while great story in inter-operation
      - Compiles much faster, scales much better
        10% perf is a nice enhancement, 10x faster is an invaluable feature
      - An arguably much better language
      - Sound type system, global type inference
      - Types are used in code optimization, optimizing compiler
      - Javascript backend + Native backend for X86, ARM

\- Cons of BuckleScript

      - Smaller community
      - Learning curve is higher compared with TypeScript

<comment><USER3> > Compiler slow (not scalable for FB/Google scale)

I don't have any dog in this fight(I write Java/Native mostly) however I'd don't quite follow what you mean by FB/Google scale. I would consider VSCode a pretty complex piece of software and my understand is it written in TS.

Have any concrete numbers you can share that makes it not meet your bar?

<comment><USER4> Looks like VS Code is about 332 thousand lines of code. Facebook and Google's codebases are measured in the tens of millions of lines of code.

<comment><USER3> A 10 million line javascript file must take a heck of a long time to load in the browser :).

<comment><USER5> Modern JavaScript is developed in separate modules (i.e. files).

<comment><USER6> Developed, yes, but in general, your build system bundles it all up into one javascript file which is sent to the browser. Even if you don't bundle the javascript, all the code has to be sent to the browser anyways, just over multiple HTTP requests instead of one.

<comment><USER7> Except for small or basic apps, your build system is not suppose to build to only one file. It's suppose to build to a main file and separated module files. The module loader will pull in modules only when needed.

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> There is a specific niche that BuckleScript and Reason can fill, and that is the sort of front-end projects that use React+Redux+ImmutableJS+TypeScript/Flow.

Instead of bolting on typing into Javascript (Flow and TS both do a good job of it btw), you could simply use a language that was designed with it. There is a huge difference in native adoption of such a core language feature vs using a transpiler that ultimately leak Javascript semantics.

If you're using immutable values through ImmutableJS-like libraries, or by just being careful to not mutate stuff - then you should try working in a language that has immutability baked in. Having confidence that you've been careful to not mutate anything in your code vs using a language that simply disallows it in the normal course of programming brings a tangible difference.

You can call BuckleScript/Reason as just a better version of Javascript with all the good things baked in. But it definitely is much more - you get to use Variants (Sum/Union types in other parlance), and more importantly, writing value-based immutable code (instead of reference based mutation) lets you rely on equational reasoning to understand your code. Your functions are pure and can be seen as though they are equations, and your whole program is a composition of these equations.

A good thing about BuckleScript/Reason vs transpiled languages like CoffeeScript is that we're fully free from Javascript's semantics. You are solidly inside OCaml, and Javascript simply doesn't leak through. You don't have to worry about JS scoping rules or how `this` works, or how ES6 classes are ultimately prototype-based. Except for a well-defined foreign-function interface that lets you use all of npm libraries or your existing JS code, once you are in the typed immutable world of OCaml, then that's all you need to think about.

All of this applies not just to BuckleScript, but any Typed FP that runs on the browser - Elm, PureScript, and I believe Scala.js as well.

But one big advantage (or disadvantage, depending upon how you look at it) of OCaml/Reason/BuckleScript is that it allows mutation if you need it. You can start out writing purely imperative code just as you would in Javascript, and slowly adopt immutable programming as you get comfortable with it. You can also rely on mutation when you need to optimize specific parts of your code.

<comment><USER8> TypeScript is far more powerful than you think. Between const, readonly properties, Readonly<T>, ReadonlyArray<T>, readonly indexers, and type safe object spread {...} via keyof T, TypeScript provides the tools to write immutable code, fully checked by the compiler, without paying runtime costs.

It also has tagged unions, product, and sum types, nullability, and extensive capabilities for typing 'this'. So I'm left to ask what exactly _is_ the unique advantage of writing JS in OCaml? Because it's not immutability. Remember too, that OCaml has plenty of warts.

<comment><USER9> > what exactly is the unique advantage of writing JS in OCaml?

* OCaml's type system is sound, Typescript's isn't.

* OCaml is an expression-based functional language, with first class currying and partial application, TS is an OO language.

* OCaml has pattern matching and exhaustive checks, TS doesn't.

* OCaml leverages true immutable structures, TS doesn't.

* OCaml has a super fast compiler, TS doesn't.

<comment><USER10> I use TS myself. It helped make front end development OK for me again. But man, one really misses some things.

I recently picked it up again and struggled to remember how to properly do pattern matching and exhaustive checks, until I realized that there were more hoops to jump through than at a circus convention. A friend ultimately pointed me to [https://pattern-matching-with-typescript.alabor.me/](https://pattern- matching-with-typescript.alabor.me/) but that made me weep.

Then I remembered how I hadn't been able to figure out how to use object spread to perform variable assignments of _all_ members from an object returned from a function, with compiler verification that no object members had been forgotten. That may be possible now, I'm not sure. I don't think it was possible last I battled with it.

Don't get me started on the ergonomics of immutables. Again, this may have improved, and no one would be happier about that than I.

But all in all I feel that TS is not what I'd _like_ to use for front end development. However, it's where the community and development effort is at, and I feel like I could never convince my colleagues to go with BS/PS/Reason/anything else. I haven't even been able to push them from JS to TS yet.

If someone wants to show me the error of my ways, I'd love it, since I'll probably be using TS for some time to come.

</comment></comment></comment></comment><comment><USER11> Looking forward to giving this a tryout. We have a server-side Node.js project where performance is terrible, and memory leaks happen that are almost impossible to track down; I need to rewrite it, and I was thinking Go, but this project also has a bunch of code that is also used by JS clients; so something JS-compatible would be better.

What's BS's story when it comes to interfacing with async code? In particular, all my Node.js code these days is promise-based (I promisify all callback-type functions, except for event-based ones that I try to wrap) using async/await. Do you still have to use promise calls in BS? Or are compatibility operators offered for chaining async calls more elegantly?

What about async in general? OCaml has LWT -- can you use that with BS and still run on Node.js or in the browser?

<comment><USER5> Right now we are using bindings to JS promises: [https://www.npmjs.com/package/bs-promise](https://www.npmjs.com/package/bs- promise)

We also have Lwt compiled with BuckleScript: [https://github.com/mzp/bs- lwt](https://github.com/mzp/bs-lwt)

But, bs-lwt right now is not compatible with promises--it is a straight port of the OCaml implementation. I'm told that someone is working on an Lwt backed by JS promises for BuckleScript.

</comment></comment><comment><USER12> Are there examples anywhere showing if this is productive to use with a UI framework (e.g. Angular, Vue, React)? What are the thoughts of people that have personally tried it?

OCaml is one of my favourite languages but it feels like it would be going against the grain just too much right now compared to using something like TypeScript.

<comment><USER13> Here's an example with The Elm Architecture [1]

A long discussion about using it[2]

And a react example[3]

[1][https://github.com/OvermindDL1/bucklescript- tea](https://github.com/OvermindDL1/bucklescript-tea)

[2][https://elixirforum.com/t/bucklescript/1579](https://elixirforum.com/t/bucklescript/1579)

[3][https://github.com/joshaber/bucklescript-react- test](https://github.com/joshaber/bucklescript-react-test)

</comment></comment><comment><USER14> Pretty cool project.

OCaml -> AST -> JavaScript

It even solves known expressions at compile time.

<comment><USER15> And compiles are really, really fast. (It's an OCaml thing, I gather.)

<comment><USER14> Seemingly. I've never used such a fast compiler

</comment></comment></comment><comment><USER16> How could I incrementally migrate a TypeScript React project to a BuckleScript (maybe using Reason bindings) React project using webpack? Could I easily add the bs-loader and just import BuckleScript components into my TypeScript components? Can BuckleScript share types with TypeScript or would that require an external TypeScript type definition file?

It looks very interesting and I am really missing some of the features when working with TypeScript. It could be useful if I could slowly transform the codebase from TypeScript to BuckleScript.

<comment><USER5> Reason-React has support for transitioning from JS: [https://reasonml.github.io/reason-react/index.html#reason- re...](https://reasonml.github.io/reason-react/index.html#reason-react- interop-with-existing-javascript-components)

In your case you need to make sure you're binding against the JavaScript output, not the TypeScript input. Drop by the #react channel in discord.gg/reasonml to chat.

</comment></comment><comment><USER17> JavaScript is becoming a must-have compilation target. I hope that we can cut out the middleman soon via WebAssembly.

In particular, I would like to see browser vendors distribute a small number of wasm-compiled VMs that function as first-class JS alternatives. This would provide some sense of stability and blessing, and prevent a delay in page load time caused by the download of an alternate client implementation.

I started to seriously undertake a Dart-based project in the last couple of weeks but eventually decided that the ecosystem is too immature to make it worthwhile. I'm going to try Scala.js for a while and if that doesn't pan out I'll probably be forced into TypeScript. I had previously also tried Go/GopherJs.

<comment><USER18> WebAssembly is quite a small change from asm.js - it's mainly a different transfer format and a parsing speedup. It's targeted towards non-GC languages like C/C++ and Rust - for managed languages, Javascript is the only sane compile target.

<comment><USER17> Scripts for GC languages wouldn't be compiled directly for WebAssembly -- their runtimes would. That's why I suggest browser vendors bless a few specific alternative runtimes and distribute them with the browser. For example, PyPy would be compiled for WebAssembly, and then Python could be executed _directly_ as a client-side web language. Same with Dart and other languages that depend on a VM to do the heavy lifting.

<comment><USER19> > Scripts for GC languages wouldn't be compiled directly for WebAssembly -- > their runtimes would

It is not a walk in the park to compile runtime into WebAssembly (unless you are just compiling an interpreter).

Performant runtimes usually include machine specific backends and/or hand written assembly code. You'll need to port that all to target WASM too.

<comment><USER17> Yeah, though I haven't worked on that directly, I'm sure it's not trivial, but I think there is sufficient demand. Check out [http://pypyjs.org](http://pypyjs.org) , which uses emscripten to compile to asm.js and then bolts on a custom JIT that emits asm.js, for one example of a project that is already trying something like this.

</comment></comment></comment></comment></comment><comment><USER20> FWIW, if you're looking for compilation speed I suggest HaXe. Its syntax is very familiar to TS / AS3 / Flow developers, and the compiler is very fast.

....because it's written in OCaml ;-)

</comment><comment><USER21> It'd be cool to have example input and output code somewhere.

<comment><USER22> OCaml => Js: [https://bucklescript.github.io/bucklescript- playground/index...](https://bucklescript.github.io/bucklescript- playground/index.html)

Reason => OCaml => Js: [https://reasonml.github.io/try/](https://reasonml.github.io/try/)

</comment></comment><comment><USER23> He honestly lost me when he said he couldn't understand how this works in JavaScript.

Also, what is meant by Google scale? Do real people really go around choosing a language for a project thinking "gee, if I ever get to the size of Google I'll sure be glad I choose BuckleScript!"

Also, what is meant by an optimizing compiler? The optimizations are done by V8. Any possible pure language optimization you could be doing likely isn't worth it at all.

It's also not correct to say there's no JS legacy. There will be a legacy the first time you need to look at any of the generated JavaScript code.

Next, who wants to build a code base using a language that's hard to learn and come up to speed in? If the entire point is net productivity, you better be able to offset all that upfront costs by demonstrative gains elsewhere. Of course, no one will ever measure stuff like it and it will be very subjective and vary per person.

<comment><USER24> You should have just seen how the compiler works. There are examples on the side.

For example: an {a,b} struct is compiled down to a [a,b] array in JS. (by the compiler).

This is an optimization. V8 can only optimize the code that it is given (and sometimes, deoptimize). The better your code is, the more easier V8 can optimize it.

</comment></comment><comment><USER25> Is there a IDE or editor plugin with autocomplete for Ocaml and/or Reason?

<comment><USER5> The recommended plugin is [https://marketplace.visualstudio.com/items?itemName=freebroc...](https://marketplace.visualstudio.com/items?itemName=freebroccolo.reasonml)

<comment><USER25> Is it fast? Visual Studio for Mac can't handle text input in real time when I'm editing C# code.

<comment><USER26> It is extremely fast. I think you'll be very pleasantly surprised by the runtime speed of OCaml if you're coming from interpreted languages, and by the build/tooling speed if you're coming from compiled languages. It really does hit a nice little sweet spot. :)

<comment><USER25> Sounds great, I'll give it a try!

</comment></comment></comment></comment></comment><comment><USER27> What server implementation is the author referring to?

<comment><AUTHOR> BuckleScript is an OCaml to JS compiler. So you can convert your code into JS and run it from Node. Or, you can simply compile it into native OCaml binary and run it just like you run a C or GoLang binary.

The choice would depend on whether you use libraries from the npm ecosystem, or from the OCaml ecosystem.

<comment><USER27> Thank you. Is there a particular native OCaml server implementation that is considered best, or at least most popular?

<comment><USER5> Yes, Cohttp is from the folks who developed the Mirage unikernel: [https://github.com/mirage/ocaml-cohttp](https://github.com/mirage/ocaml- cohttp) . They make lightweight stuff that runs blazing fast.

<comment><USER28> But cohttp is slow. See [https://github.com/mirage/ocaml- cohttp/issues/328](https://github.com/mirage/ocaml-cohttp/issues/328) and [https://github.com/inhabitedtype/httpaf](https://github.com/inhabitedtype/httpaf)

</comment></comment></comment></comment></comment><comment><USER29> I've been rather worried about the state of parallelism or concurrency in Ocaml, two conecpts which I have little understanding of, but the rumours of the insufficiency in support in the Ocaml compiler/interpreter have offput me from using Ocaml.

Would someone be so kind as to shed some light on this issue for me? Does it affect, say, a web server implemented with OCaml? What about a program in which some background process is used to prepare something simultaneously to the main process, like loading assets for a game?

<comment><USER5> It's not a problem in practice. OCaml has great concurrency support, which is what you need for applications that do IO, like servers. For CPU-bound applications like number-crunching, you take advantage of existing bindings to C or Fortran libraries. For a thorough discussion, see [https://discuss.ocaml.org/t/7-years-after-is-ocaml- suitable-...](https://discuss.ocaml.org/t/7-years-after-is-ocaml-suitable-to- write-networking-servers/639)

Also remember that with BuckleScript, you're deploying to JavaScript, which is single-threaded by definition. OCaml's runtime model (modular, single- threaded, strictly-evaluated) maps beautifully to JavaScript.</comment></comment>


Magic Leap Is Bidding on an Army Combat Contract - <AUTHOR> https://www.bloomberg.com/news/articles/2018-09-21/magic-leap-is-bidding-on-an-army-combat-contract?srnd=technology-vp <comment><USER2> Americans need this technology to gain widespread military application in order to make all of the Tactical Flashlights we bought on the Internet useful as a countermeasure.

<comment><USER3> Similar goggles are used by armored vehicle crews to get better situational awareness the users won't necessarily be exposed.

Also flashlight in the dark is very good against a mark one eyeball and even better against a mark one eye ball augmented with night vision without good flash protection.

Virtually every military has already adopted a technology that can be easily defeated with a bright light they still use it because it's better than the alternative and a bright light is a very good way of ensuring that your enemies know exactly where to aim their tracers at which is why you don't tend to use flashlights in combat to defeat night vision because for every bloke you temporarily blind there will be 10 shooting at you the moment you turn it on.

</comment></comment><comment><USER4> I guess they can hire the Theranos board to move this forward....

<comment><USER5> Just because Magic Leap hasn't really delivered on a mind blowing consumer product doesn't mean they can't create something great for military use.

Google Glass just wasn't cool enough or useful enough to become the next iPhone but it did very well for certain applications.

If Drone Pilots could use Magic Leap headsets to pull in ANY useful information to their field of view while flying a mission it would be a step forward the military would be happy to pay for.

</comment></comment><comment><USER3> AR company bidding on HMD contracts who would've thought...

</comment><comment> oh-kumudo Seems like a legit use case.

</comment><comment><USER6> Sorry but- after the JSF debacle- is this not already a dead duck? Honestly- on a battlefield, everything in addition you want has to be unobtrusive, totally intuitive and non-view obstructing. The last thing you want after a IDE has blown up, to see MS Clippy hoping through the wreckage, producing friendly fire.

Just take the integrated battlefield promised with the JSF, generating more Noise then usage. Im sure, you could add something similar in theory to a FPS, basically estimating the position of a retreating shooter.

But why bother and risk - when some well placed mortars will do that?

Just because it looked good in scifi movies, doesent mean its good in reality.

Only parties that could benefit from this, are specialists- meaning, drone- flights, commanding officers and upgraded personal- (medics in need for direct instructions by a doctor) - even those could usually be easier given without the AR.

And thats from someone who is a huge AR fan. Maybe im overlooking some benefits- i would really appreciate some usecases - if i missed them.

<comment><USER7> Maybe non-obstructive collaborative battlefield annotations would be helpful?

</comment></comment><comment><USER8> I don't know why he was flagged to death, but I think Pica_soO was spot on. Regardless of anyone's opinion of whether they _should_ bid for the contract or not, none of the AR headsets publicly available, definitely including Magic Leap's, seems anywhere near good enough for what the Army needs...

</comment><comment><USER9> So what? God forbid a tech company not based in SV contribute to the defense of Western values!

<comment><USER10> Defending them from whom exactly?

<comment><USER5> Ahhh.... I know this one from Jeopardy.

That would be "Terrorists who hate our Freedom" for $400 Alex.</comment></comment></comment>


Coronavirus brings China's surveillance state out of the shadows - <AUTHOR> https://www.reuters.com/article/us-china-health-surveillance-idUSKBN2011HO <comment><USER2> Tracking technology is too effective not to use. A two week incubation is catastrophic for containment. It seems that most countries have given up trying, before it's even begun - only Singapore is doing exhaustive contact tracing and testing. The standard of testing and isolation in western countries (looking at the US and UK) is... poor. Imagine if this disease had a 100% fatality rate - it would be apocalyptic and we would be powerless.

Privacy and control of information is a huge concern. The correct architecture for this, in my opinion, is exhaustive local collection of location data, followed by subpoena on confirmed diagnosis. Once you've been proven to have been walking around town infecting people, other people's right to know they've been exposed trumps your right to location privacy (although the data need not be tagged with identity, we must assume that the level of detail required to make it useful would deanonymize it). Everybody can check their local tracks database against the public record of exposure hotspots, and get themselves tested if they've been exposed.

The biggest challenge with a system like this is making sure the people in charge of it are trustworthy, and persuading people that it's in their interest to participate in it.

</comment><comment><USER3> It's also bringing out a lot of pretty useless busy work for a lot of people. Today I went to KFC to pick up an order, and had to write down my name, phone number, and temperature on a clipboard.

They didn't take my temperature, I just wrote 36. Should have written 37, but then I saw someone else had written 35 on there. Vampires among us.

</comment><comment><USER4> So in this case surveillance did some good. It helped prevent a self fish bad actor from potentially infecting other people. Which is more important privacy or the good of the group?

I would argue that privacy is so much more important then potentially killing a bunch of people. If I sneeze Corona all over your face it's your fault for putting your face in front of my sneeze.</comment>


Free FPGA: Reimplement the primitives models - <AUTHOR> http://blog.elphel.com/2016/03/free-fpga-reimplement-the-primitives-models/ <comment><USER2> As an FPGA developer, I think this is a noble effort, but will be of limited use in porting their design (one of their stated goals).

Essentially all of the modules they are asking for "clones" of directly instantiate hardware primitives on the FPGA die. Many of the blocks are basically analog pieces that won't be easily synthesizable from Verilog. While the simulation would work with other tools, the block won't be able to be mapped in other FPGA architectures.

<comment><USER3> Yeah, that's absurd. It's like asking for C intrinsics to be implemented as functions.

Those primitives are just a way to force the synthesis tool to infer specific hardware features.

<comment><USER4> In the case of some of these primitives, like I/OSERDES -- high-speed input/output de/serializers -- they can't even be inferred. The only way you'll get one is if you specifically ask for it.

</comment></comment></comment><comment><USER5> Someone please tell these people about Archipelago FPGA:

[http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-43...](http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-43.pdf)

It's already at 45-65nm with configurable logic and memory cells. They're working on multipliers next. Open-source flows for bitstream and synthesis already exist that can be targeted to this if it hasn't already. Lean on those people for something to use and you might get it. Write other students working in FPGA-related fields to contribute their prototype enhancements to Archipelago and all get published. We'll get stuff over time that commercial or grant-based efforts can turn into a real chip.

<comment><USER6> Thank you, at leas one of "these people" got it. Interesting project, but again - it is still far performance-wise. We really appreciate work of developers of the Free Software toolchain, but we work in a slightly different area as we need much larger devices. Yes, we use proprietary tools (with some limitations described in the original post). These tools are physically isolated from my workstation - they are held a "jail" \- a separate Linux box controlled from the IDE on a Free Software -only workstation. Icarus/GtkWave are launched locally, but ISE/Vivado(tcl console)/Quartus - over ssh+rsync.

<comment><USER5> "but we work in a slightly different area as we need much larger devices"

Doing analog design at a deep submicron node is _very_ hard and expensive. Unlikely to be open-sourced. That's why I encouraged you to find academics developing digital cell libraries or open-source FPGA's to tell them what you need. They might develop it for you as part of their academic work.

"These tools are physically isolated from my workstation - they are held a "jail" \- a separate Linux box controlled from the IDE on a Free Software -only workstation. Icarus/GtkWave are launched locally, but ISE/Vivado(tcl console)/Quartus - over ssh+rsync."

Good that you're making an attempt. Must remember threat model, though: hackers hitting box from firmware to OS to software to audio/wireless devices onboard; subversion of EDA tooling lets them active trap door with simple command or hide exploit in an update; physical theft of the box. You need mitigation for each of them.

A separate box is always best. Use write-only media for backups of source and for updates to EDA software if possible. The box distributes its software either via a data diode for one-way transmission or a CD burner. Full-disk encryption to mitigate theft optionally with tamper-resistant marking on PC and inspections for keyloggers/implants. That you use OSS simulation after proprietary tooling is smart and my exact recommendation. ;)

Btw, check out Qflow as there's not enough projects testing it and providing Cliff feedback:

[http://opencircuitdesign.com/qflow/](http://opencircuitdesign.com/qflow/)

</comment></comment></comment><comment><USER7> It should be possible to write the majority of the code for an FPGA in a generic fashion and get the tools to infer things like RAM's by the way the Verilog or VHDL is written. Ideally, I think you should only have FPGA specific blocks in the very toplevel of a design and the majority of the design should be agnostic to the FPGA architecture. For example if you write your code like this:

      reg [31:0] mem[0:1023];

      always @(posedge clk) begin
        rd_data <= mem[rd_addr];
        if (wr_en)
          mem[wr_addr] <= wr_data;
      end

Then tools like vivado, quartus, synplify will infer a 1k x 32bits ram.

<comment><USER6> Scott, you are right, and I try to do it that way (there are many registers in the design with "_ram" suffix. But I did have some problems when Vivado incorrectly inferred small non-registered RAM as Block RAM.

I was able to modify the design (moving registers from inputs to outputs - [https://github.com/Elphel/x393/blob/master/x393_sata/host/el...](https://github.com/Elphel/x393/blob/master/x393_sata/host/elastic1632.v) ) to force Vivado to infer correctly, but still have suspicion that it may not always be the case. So I used wrapper modules for Block RAMS with direct instances, they can be replaced as you suggested.

</comment></comment><comment><USER8> A more productive route might be to port the camera project [1] (for which the models are being requested) to use the Lattice ICE series of FPGAs and use the open source Project ICEstorm tool chain [2]?

That would have the dual effect of further developing the free tool chain, and sending a (small) signal to Xilinx that if they don't take Free Software seriously they will start to lose customers.

[1] [https://github.com/Elphel/x393](https://github.com/Elphel/x393)

[2] [http://www.clifford.at/icestorm/](http://www.clifford.at/icestorm/)

\-----

edit: change "GPL licensed" to "open source", as a variety of licenses are used.

<comment><USER6> Project uses 84% of Zynq (7030), it will not fit in Lattice :-(

<comment><USER8> Fair enough, and there is an order of magnitude between size of the the 7030 and supported ICE parts (125K cells vs. 7680 cells), so it's beyond optimisation.

Out of curiosity, is there any one block/function that is consuming a majority of the cells? What is that block?

<comment><USER6> No single dominating block. Camera has 4 sensor channels (now either 12 bit parallel or Aptina HiSPI) with gamma and histograms, 16-channel DDR3 controller, 4 compressor channels, inter-camera synchronization and high-speed IMU logger. And AHCI SATA2 controller (with provisions to be later upgraded to SATA3). The last module uses 6%, others share other 78% slices. As most of them have 4 identical instances, it makes about 10% each. Years ago one similar channel (1 sensor, 1 compressor, slower clocks) was implemented on Spartan-3e.

</comment></comment></comment></comment><comment><USER9> "I hope that in the future there will be laws that will limit the monopoly of the device manufacturers and require complete documentation for the products they release to the public."

Oh god, please no.

On another note though, I'm a big fan of the work done by Clifford in bringing up a full working synthesis toolchain for iCE40; and I'd love for Lattice to cooperate and, dare say, fund the work.

I would program big FPGAs if I could do it with a free toolchain. Current toolchains are really cumbersome, and assume far too much about the designer's workflow. On top of that, they're absolutely insane to set up and activate. I bought a Zybo a few months ago to try their tools out, but after activating the seat I still wasn't allowed to synthesize to my device and basically just gave up. Lattice can take credit for theirs being the least painful; but it's still not what it could be if it were modular and free.

<comment><USER6> What objections do you have to the requirements to release documentation? Similar anti-monopoly laws already exist in other areas. It would make Clifford's job much easier (so you will benefit too), don't you think?</comment></comment>