Justice Department Wants Data from About 12 Other iPhones - <AUTHOR> http://www.wsj.com/article_email/justice-department-seeks-to-force-apple-to-extract-data-from-about-12-other-iphones-1456202213-lMyQjAxMTI2MjIzMzMyMTMwWj <comment><USER2> _" the FBI said they are not seeking to set a precedent in the case, but to get the company to help them open a single phone that may hold crucial evidence to help explain the most deadly terrorist attack on U.S. soil since Sept. 11, 2001."_

What qualifies this as being a terrorist attack? Is it because the colour of the perpetrator's skin wasn't white? Sandy Hook had double the number of resulting deaths and so is technically more deadly.

Virgina Tech was done by a South Korean born man with even more deaths than Sandy Hook.

Poor reporting WSJ

<comment><USER3> > FBI investigators have said that Farook and Malik had become radicalized > over several years prior to the attack, consuming "poison on the internet" > and expressing a commitment to jihadism and martyrdom in private messages to > each other. Farook and Malik had traveled to Saudi Arabia in the years > before the attack. The couple had amassed a large stockpile of weapons, > ammunition, and bomb-making equipment in their home.

It's pretty offensive to focus on the shooters' skin color, instead of what they were: violent Islamic fundamentalists.

<comment><USER2> We've seen violent Christian fundamentalists recently with the Colorado Planned Parenthood shootings.

While many around the world consider that a terrorist activity, it had not been labeled as such by US officials (the guy is only being charged with murder and not additional offenses).

I find the double standards to be what is truly offensive.

<comment><USER3> The Colorado Planned Parenthood shooters didn't pledge support to a worldwide movement of Christians trying to overthrow the western world order.

<comment><USER4> The one still alive describes himself as a "warrior for the babies". He also

> Mr. Dear described as 'heroes' members of the Army of God, a loosely > organized group of anti-abortion extremists that has claimed responsibility > for a number of killings and bombings."

He said the attacks were politically motivated.

[https://en.wikipedia.org/wiki/Colorado_Springs_Planned_Paren...](https://en.wikipedia.org/wiki/Colorado_Springs_Planned_Parenthood_shooting)

</comment></comment></comment></comment></comment><comment><USER5> On a side note: The FBI didn't/couldn't even properly investigate 9/11 so why do they still dare to use this wording? ( _" to help them open a single phone that may hold crucial evidence to help explain the most deadly terrorist attack on U.S. soil since Sept. 11, 2001"_) What came out of PENTTBOM? One single court case against Moussaoui, who was not directly involved in 9/11 at all, but that's it. Hundreds of arrests which led to nothing but illegitime long-term hold ups under military law, but no due law.

If Apple can help them to extract data from those phones, fine. But Apple apparently built secure phones without bypass, so they are out of luck and it makes no sense to come up with fantasy warrants without any technical solution.

</comment><comment><USER6> > the encryption of personal devices has become a serious problem for criminal > investigators in a variety of cases and setting

And so has the second amendment -- but that doesn't mean we should get rid of it. Yes, their job is hard. That's the nature of the job. Just because something makes a job more difficult doesn't mean it's a bad thing. I don't get why they insist on making this argument.

<comment><USER7> I agree with the general sentiment of "don't get rid of things _only_ because they make certain jobs more difficult" \- but I don't think the FBI is arguing for getting rid of encryption. I think they want to be able to break security surrounding encryption sometimes and under certain circumstances.

<comment><USER8> They amount to the same thing, depending on how its done and who gets it. If any law enforcement who tries hard (FBI, MI5, China) to fight what they want to fight gets hold of Apple's tool then that encryption is not so much outlawed as pointless to use.

It's because of the feverant fight on something (communism, black civil rights protesters, anti capitalists, future civil rights upholders) leads to questionable use of any tool that we can't give them too many tools. In the UK the mayor of London bought 3 water cannon trucks but has been forbidden to use them - where will they be in ten years time?

</comment></comment></comment><comment><USER9> I think the fear is that those 12 will lead to the other 700 million iPhones.

<comment><USER10> That's not a justified fear. Requiring Apple to backdoor all phones is not similar at all to requiring Apple to help hack particular phones, that they have the capability to hack, in response to court orders.

<comment><USER9> You're telling me you would trust that software to remain in the hands of trusted actors? In 2015, alone, the IRS was breached, LastPass, the director of the CIA, Hacking Team, even Kaspersky Labs was breached! There can be no absolute guarantee that this backdoor would remain safe indefinitely. That is just the most blatant problem, not to mention the overt displays of cynicism and misuse of authority by the NSA as revealed by the Snowden leaks. Consider the political climate in the US at the moment. Now imagine a truly evil actor came into power, being handed over control of organizations with unheard-of amounts of surveillance power. I don't mean to seem paranoid, but in this case the feeling is completely warranted.

<comment><USER10> So would it be okay for the FBI to have to bring the phone to Apple?

<comment><USER11> Don't you see the slippery slope here? Next, the German or French police will knock on Apple's door. When they get access, China, Russia, and others will line up next.

Moreover, who says that the FBI or some other agency will stop after this iPhone, or the next 12 iPhones. Why not push to get their own signing key after they succeed in this case? They will try to get as far as possible.

We live in 2016. many of our devices with our private data are directly addressable from anywhere in the world. Intentionally weakening encryption and security in any way is a dangerous proposition.

It's good that Apple fights this tooth and nail. Sure, it may align up with their PR. I don't care, it benefits every citizen of the net who wants privacy and security.

<comment><USER12> worse. If this becomes "normal", then rather than the CTO or CSO or VP iOS Engineering having to unlock the code-signing keys to sign releases (presumably via N of M), it'll _have to be_ automated so that "oh, the FBI needs another custom build for the 4th time this week, just do the build and click here to sign it". At that point the security of the master code-signing keys has evaporated to nothing and we're all sunk.

<comment><USER13> I think the precedent that emerges could be that law enforcement can force companies to sign specific functionality. This access-to-data power would be in line with their access to telephone and telegraph copper in centuries past.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Question for HN in general: Is it possible in principle (for Apple or someone else) to construct a smartphone that can accept software/firmware updates, but that Apple cannot push malware to at some later time?

E.g. can we implement all security functionality in hardware/burn it into the silicon? Or accomplish the same ends by some other means?

Intuition says "no," because "security functionality" is sort of nebulous. But it would be great if a device could be constructed in such a way that all such future demands for collusion by hostile actors such as governments could be rendered preemptively impossible.

<comment><USER15> _" can we implement all security functionality in hardware/burn it into the silicon? Or accomplish the same ends by some other means?"_

Yes. The software could be burnt into PROM (which is unchangeable) or one could even create a custom ROM chip, and if necessary contain hardware or code that checksums the ROM.

However, a company doing that must be willing to run the risk that there is a bug in that unchangeable software/hardware and then either tell their customers that they are screwed, or that they can get a free replacement phone. It also may lengthen development cycles, as you cannot, at last minute, order your factory to open a million boxes and update that part of the firmware anymore.

Alternatively, a fully open phone would allow customers to inspect updates and reject them or perhaps even to partially reject them (partial rejection would prevent the case where users want a feature, but only can get it by accepting weaker security). That requires a 100% open phone (hard- and software) and enough knowledgeable people willing to invest time in looking at the code.

<comment><USER16> > That requires a 100% open phone (hard- and software)

I am eagerly awaiting the [http://neo900.org/](http://neo900.org/)

Unfortunately the baseband modem is still unfree, but at least it's isolated over the USB bus, versus having direct memory access as many phones do. Unfortunately no phone has a free, legal modem.

Anyways, I'm more excited about the prospect of the phone itself being completely free. In their own words:

> Not a single line of closed code will have to run on the main CPU to be able > to use the Neo900. Using free telephony stacks like FSO or one from QtMoko, > FLOSS Linux drivers will be available for every single component. In order > to get 3D acceleration working, which is not necessary to operate the > device, closed drivers would be needed.

<comment><USER17> It warms my heart to see the N900 getting a revival. While not the sleekest phone out at the time, that device was tremendously underrated as a portable computer.

</comment></comment></comment></comment><comment><USER18> there's quite a few more than are involved in probably about 9 innocent deaths PER DAY. [http://www.huffingtonpost.com/2015/06/08/dangers-of- texting-...](http://www.huffingtonpost.com/2015/06/08/dangers-of-texting-and- driving-statistics_n_7537710.html)

Does the justice dept want those unlocked too?

<comment><USER13> Comey said the FBI wants the ability to do this even for car accidents, so a qualified "yes."

</comment></comment><comment><USER19> I for one am happy for this issue to be at the forefront of discussion.

The worst thing that could happen is all of these requests going unspoken, buried beneath less important topics.

</comment><comment><USER20> Sadly this is a tough sell, given that the general public perceives "encryption" as "password", unaware of the underlying technology and implications. It's doubly sadly that it was a government employee, in a government-controlled environment, using a government-managed device, and even when government had access they went and changed the password, locking themselves out.

Critical thinking would lead one to question the need of any data at all, given the thoroughly demonstrated incompetence. Yet public filter stops on perception that that Apple once cooperated, but now chooses not to do so.

</comment><comment><USER21> I had a really bad experience with an iPhone update and a password storage app.

I had been running my iPhone on iOS 8.x. No need to update to 9.x.

The day finally came when I was forced to allow the update.

Now, without my knowledge the update also enabled automatic updates of apps. All apps were thus updated to their latest versions without my explicit consent.

I chose the app I am using to keep hundreds of account passwords specifically because they DID NOT transmit anything over the internet at the time I got it. I could do what they called "wifi sync" to synchronize and backup my database to the desktop version of the same software running on my PC within the same network.

Well, with the forced update "wifi sync" went away and now the only option is "internet sync". I did not realize this whe the app ran through and synchronized to my PC.

So now the dilema. This fucking company is doing this because they want to sell cloud storage for your data and force you into an annual subscription in order to be able to "internet sync". And, of course, the huge violation of the security of my data which, up until the unauthorized automatic update, had been kept private and never left my network.

Not only do I have to find a new password and data vault that will not try to take ownership of my data and pull a bait-and-switch after, I also need to change every simgle password I have due to my database now being in their cloud.

Unbelievable.

<comment><USER22> Instead of relying on proprietary software that is out of your control for storing your passwords (and getting burned like you have described), why not use something open source like KeePass? I don't have an iPhone, but on Android there is KeePass2Android, which is open source and (if you choose to use it as such) offline-only.

<comment><USER21> That's the migration plan when I get the time to move the data over.

</comment></comment></comment><comment><USER23> I'm not sure I understand this. Apple seems to be limiting all discussion to in-situ mechanisms of cracking, but no one is talking about external means. For example ICE-level debuggers require sophisticated hardware that is not easily available to everyone. Likewise, the XBOX encryption was very difficult to crack without Ghz hardware.

Just put the critical path in the prom and then bypass the prom with your own hardware-level circuit. The device itself can be keyed so that only Apple hardware bypass is allowed to connect in this way. Now you have a physical bypass that is difficult if not impossible to get around, but enables warranted access by agencies that own the limited hardware. This also has the advantage of human cost. You can't easily apply this method to millions of phones without a huge cost in time and effort. Even if the device is stolen, it limits exposure to phones in the physical possession of the hardware bypass which is surely better than compromising millions of phones. And so what that the critical path patch exists out in the open? Knock yourself out and make an emulator that will unlock hw emulated phones (which is a difficult task, not even the IOS emulator is a true hw emulator), but it won't work on the actual hardware unless the prom is swapped which is hardly trivial.

The key signing argument has little weight by the way. DVD manufacturers had the same stance and the root key was leaked to the public. How can Apple guarantee the same won't happen with their keys?

It seems both Apple and the FBI are withholding something, but on face value the technical requirements should allow warranted access. The fact that they don't is a flaw in the technology design.

Case law surely has precedents in this area? Can safe manufacturers be required to make bypass mechanisms for bank vaults? What about non-criminal property law? Say a family member dies and the legal estate needs access?

</comment><comment><USER24> This may be a totally absurd question, but is there a way to comply such that the government explicitly acknowledges that a case cannot be used as precedence?

i.e. comply with the order, but this case legally can't be referred to ever again as justification of precedence in any other case.

</comment><comment><USER25> What about a different approach? A society does want to allow access to information for investigative purposes while protecting security. Then what about allowing court orders for companies to bypass security in their products with the caveat that the access method is made publicly reproducible.

This forces the company to fix the vulnerability and forces the government to carefully consider which cases are important enough.

Just brainstorming..... not a solid proposal. Shoot some holes in it please.

</comment><comment><USER26> What happened to "just one phone"

</comment><comment><USER27> ...and it's an entirely reasonable position to say that they should get it, if they have a warrant. Especially if the case as cut-and-dried as the San Bernardino one.

The public debate on this has reached truly sad, nigh-Trumpian levels of hysteria and uninformed commentary. There is no "back-door" here. Encryption is not being compromised. This has very little to do with encryption at all, really: if the criminals in question were to use a strong password instead of a four-digit PIN, Apple could just shrug, say "not possible in our lifetimes", and that would be the end of it. But these criminals have easily brute- forceable PIN codes, and the investigators want to brute force them.

This situation is about a legal fight of very narrow parameters: should it be possible for the government to compel a company to help extract its customers' "secure" data, via this specific, very old law. Reasonable people can disagree on this point.

Unfortunately, the public debate has gone _completely round the bend_ , with famous people grandstanding on _totally irrelevant_ things (like "encryption back doors"), which have no bearing on anything at all. Moreover, as it turns out, Apple has been _doing this for years_ for police investigations, and the empire has not yet fallen. If you're worried about the slippery slope, well...we're already well downhill, and our bottoms are wet. Perspective.

I realize that it's not popular amongst the tinfoil-hat set that has set up residence here, but I think that there are times when we _want_ our government to be able to do things like break into a suspect's phone. There should be safeguards (like warrants), of course, but it's a perfectly reasonable position to say that privacy is not absolute.

<comment><USER28> I agree with you that people capitalize on events to fit into their political narratives, and I also agree that privacy is not an absolute value, and that tensions between values calls for tradeoffs to be made.

But I do believe that calling this a backdoor is proper framing. Apple provided a weak password knowing that convenience often beats security, but Apple also provided a mechanism by which one can have weak passwords and still have strong security via a max-attempt mechanism. It is a circumvention of security features, and "backdoors" are about security, not encryption (which is merely a subset of security).

I also think the legal fight is not circumscribed around narrow parameters with predictably narrow legal outcomes. The FBI cites a law from 1789 that says that the court may issue "...all writs necessary or appropriate in aid of their respective jurisdictions and agreeable to the usages and principles of law". It does not sound easy to predict what case law shall determine to be "necessary or appropriate" 5-10 years from now.

<comment><USER27> _" Apple also provided a mechanism by which one can have weak passwords and still have strong security via a max-attempt mechanism. It is a circumvention of security features, and "backdoors" are about security, not encryption (which is merely a subset of security)."_

I don't deny any of that, but there's still a bright-line distinction between "circumventing security features" for a single, badly protected phone, given a warrant, and weakening security across-the-board for everyone. This is a case of the former, not the latter.

 _" I also think the legal fight is not circumscribed around narrow parameters with predictably narrow legal outcomes."_

The legal fight is, factually, centered on the question I stated. It doesn't involve any of the other technical stuff that's being tossed around this debate. That was my point. But like I said: I think it's a legitimate question, so I'm not sure who you're arguing with right now?</comment></comment></comment>


Dogpatch: HTTP API testing framework, written in PHP using curl - <AUTHOR> https://github.com/commando/dogpatch

<comment><USER2> Just from looking over the source for a moment, I had a few questions/points:

* Why doesn't the put() method have a parameter for the payload? Sending a PUT with headers only is .... uncommon to me.

* How can I use this to test my JSON-based API? The $postData on post() requires an array, so I cannot put in my pre-encoded JSON payload. Maybe just remove the typehint?

* prettyPrintJson() could use a version-switch and use JSON_PRETTY_PRINT in PHP 5.4+ -- results should look similar.

I'll keep this in mind, could come in handy when testing the next API ;-)

</comment><comment><USER3> I wrote a similar tool 'Boomerang!' a little over a year ago after finding myself constantly irritated with Frisby.js's unresolvable issues. It has some more advanced tools for validating the structure of the JSON than Dogpatch appears to, and can validate headers and urls along a redirect path.

[https://github.com/donatj/Boomerang](https://github.com/donatj/Boomerang) / [http://boomerang.so](http://boomerang.so)

</comment><comment><AUTHOR> Creator of Dogpatch here. Let me know any questions or feedback you may have.

<comment><USER4> You should consider using Guzzle as the base HTTP client.

<comment><USER5> Guzzle is a massive dependency for being just a curl wrapper.

<comment><USER6> Why not use it if it's available?

Having support for more than one back-end is always nice.

<comment><USER7> It does a lot more than just support one method of doing http requests. Also I'm pretty sure there are some stuff curl can do, which streams for example can't.

</comment></comment></comment></comment></comment><comment><USER8> Sorry, but [http://codeception.com/docs/10-WebServices](http://codeception.com/docs/10-WebServices)

<comment><USER9> why sorry? we can't have more than one project on the same subject anymore? let's dump laravel then, because cake came first.. tsc tsc tsc.. anyway, seems like an easy tool to work with, will test later on. thanks!</comment></comment>


Show HN: PubCenter – a RSS archiving service - <AUTHOR> https://app.pub.center <comment><AUTHOR> Hello I'm the founder of PubCenter.

The RSS/Atom standards are a really great invention to help syndicate news in a no-fuss manner. However, a shortcoming is that you can't retrieve older articles: you can only get a fixed number of latest articles (usually 20 articles... sometimes more if they're generous!)

This is the problem PubCenter is trying to solve. We cache articles from RSS feeds and save them... allowing you to retrieve any article, at any point in time.

PubCenter essentially is what Feedly Cloud offers. Or Google Reader's RSS database (before they went defunct). In our case, we're a non-profit and don't require any signups or log any user activity. It's just free, and no strings attached.

How do we make money? The REST API is free, however we have a paid notifications service that lets you subscribe to an RSS feed and have it articles delivered via email, SMS, or your custom API endpoint. There's fine- grained control of this that's easy to manage (see imgur album)^1

Thanks for reading! Let me know if you have any questions here.

[1] [https://imgur.com/gallery/FHweI](https://imgur.com/gallery/FHweI)

</comment><comment><USER2> Thanks for making this; exactly what I need. Good business model too.

I would pay for a global search filter / API across all feeds or within a segment. Also, offline support for local caching.

<comment><AUTHOR> Thanks for the encouragement!

Can you elaborate on "offline support for local caching?"

</comment></comment><comment><USER3> Sounds like a good idea - nice to see more RSS projects on HN these days.

Have you thought about a place for users to submit URLs for archiving?

<comment><AUTHOR> Yea, just go here ([https://app.pub.center/feed](https://app.pub.center/feed)) and paste an RSS url! You'll see a button to begin indexing that feed.</comment></comment>


What if 'source code' were a serialized syntax tree? - <AUTHOR> http://clipperhouse.com/2013/04/03/what-if-source-code-were-a-serialized-syntax-tree/

<comment><USER2> Yes, it's been tried before, and gets periodically re-invented by everyone who thinks seriously about language design.

Lisp works on this principle. The language is nothing but S-expressions, which are a serialized representation of the parse tree. Nobody bothers to format their Lisp code: they let Emacs format it for them. As you write it, Emacs reformats it into canonical Lisp style, and then that's what gets saved.

There were also various experiments at saving SmallTalk into an object database, which were then carried over into some Java IDEs. IntelliJ has a setting where you can have it automatically format your Java according to the formatter you specify as it saves the file; the representation inside IntelliJ is a parse tree, which gets created when the file is opened and serialized when saved.

Go operates on a similar property. You run the gofmt tool on your source code before you check it in; it formats your source code in a canonical way and then writes it back out. Go code always has a consistent style, because nobody bothers to format their own code, they let the tool do it for them.

Several people swear by this. It eliminates all the time wasted by arguing about style, and it also makes it much easier for refactoring and code generation tools to operate (they can operate on the raw parse tree and rely on the formatter to generate the final source code). There's still a bunch of resistance in the wider programming world, though, largely because such formatting is inherently lossy (there's information conveyed in our style choices) and because programmers are people too who like to be individuals.

</comment><comment><USER3> We have languages where the source code is a literal serialization of the abstract syntax tree. This property is homoiconicity (<http://en.wikipedia.org/wiki/Homoiconicity>), and is a key factor in the success of s-expressions used in Lisps. It comes with all sorts of benefits-- like having a macro system which rewrites not the _text_ , but the _source_ of one's code.

However, destroying formatting information in the source can do more harm than good. Often we use alignment to enhance readability, or to call out similarity or symmetry between parts of the code. I think you're better off just using a set of well-known formatting rules (like those built in to your editors) than trying to eliminate formatting altogether.

</comment><comment><USER4> I think that's the idea behind Go's 'gofmt'[1] tool; it even ships with a few scripts suitable for VCS commit hooks[2]

It's an idea I've thought about before; allow users to define some sort of style profile for their editor, and reformat to/from the canonical representation before committing.

The biggest hurdle is of course tool support; if your web-based code review app is showing different code to what you're seeing in your emacs buffer, and different again from what your coworker is pastebinning from their gdb crash dump, Things Get Confusing.

Even something as simple as line-numbers not matching up can be quite irritating. Sourcemaps might be part of the solution for languages that support them, but there's still a hell of a lot of work in upgrading tools to support these sorts of features before you can expect them to become widespread.

[1] <http://blog.golang.org/2013/01/go-fmt-your-code.html>

[2] <http://tip.golang.org/misc/git/pre-commit>

</comment><comment><USER5> > At the risk of revealing my lack of a CompSci degree: what if 'source code' > were replaced serialized syntax trees?

I really don't want to be "that guy", but this is an old idea in programming languages, going all the way back to the Cornel program synthesizer days.

Here is a recent debate that discusses the issues:

[http://programmers.stackexchange.com/questions/119095/why- do...](http://programmers.stackexchange.com/questions/119095/why-dont-we- store-the-syntax-tree-instead-of-the-source-code)

<comment><AUTHOR> Yep, I was sure it's not an original idea. Though that particular link seems to be about a universal, language-agnostic syntax tree.

Also interesting, but I wasn't even intending to be that ambitious. I'd limit the scope to individual languages, and let those communities debate the 'right' serialization.

<comment><USER5> The problem is one of cost benefit: the costs are high in terms of tooling while the benefits do not seem to be big enough. Intentional Software was a whole company founded on this idea and it hasn't really gone anywhere.

There is a small trend back toward looking at structured editors; in that case you have no choice but to serialize a tree.

</comment></comment></comment><comment><AUTHOR> It may be interesting to note that I didn't stumble on this from a compsci perspective. Rather, I was wondering to myself, what could source control do if it understood the code it was managing?

</comment><comment><USER6> What about files? Depending on the compiler, it may not care whether your source code is in one big file or many small files.

For example, in JavaScript file layout doesn't matter, but in C++ it does.

<comment><USER7> "Source code in files. How quaint." - Kent Beck

(In Smalltalk and Lisp machines, the source code becomes integrated into the 'operating system', rather than being isolated in static 'dead' files.)</comment></comment>


Pigeon Maps – Maps in React with no external dependencies - <AUTHOR> https://mariusandra.github.io/pigeon-maps/ <comment><USER2> That was like Running maps locally. My first guess was it must be serving from some super local cdn cache. So tried looking for the data serving domain. It feels even more awesome after looking at latency number.

This is loading all data from maps.wikimedia.org.

Tracing route to maps.wikimedia.org [220.127.116.11] over a maximum of 30 hops:

      1    <1 ms     3 ms     2 ms  192.168.1.1
      2     7 ms     6 ms     6 ms  abts-north-static-076.220.160.122.airtelbroadband.in [18.104.22.168]
      3     8 ms     5 ms     9 ms  18.104.22.168
      4     7 ms    10 ms     6 ms  126.96.36.199
      5    51 ms    51 ms    65 ms  220.127.116.11
      6    47 ms    50 ms    47 ms  126.96.36.199
      7    73 ms    73 ms    72 ms  18.104.22.168
      8    73 ms    73 ms    72 ms  14907.sgw.equinix.com [18.104.22.168]
      9    79 ms    79 ms    93 ms  upload-lb.eqsin.wikimedia.org [220.127.116.11]

Now Google Maps seems to be serving all data from root domain www.google.co.in. So here we go.

Tracing route to www.google.co.in [18.104.22.168] over a maximum of 30 hops:

      1    <1 ms     1 ms     1 ms  192.168.1.1
      2     8 ms     5 ms     6 ms  abts-north-static-076.220.160.122.airtelbroadband.in [126.96.36.199]
      3     6 ms     6 ms     5 ms  18.104.22.168
      4    10 ms     7 ms     6 ms  220.127.116.11
      5    42 ms    44 ms    42 ms  188.8.131.52
      6     8 ms     7 ms    14 ms  220.127.116.11
      7     8 ms     7 ms     7 ms  del03s16-in-f3.1e100.net [220.127.116.11]

So even after getting additional latency penalty of ~60ms, it still feels snappier! Imaging it could be even more faster with local CDN nodes. 60ms = ~3 Frames on 60Hz Monitor refresh rate.

<comment><USER3> Especially with a local image cache!

</comment></comment><comment><USER4> I just want to express how snappy this feels. It really does feel so much faster than other solutions. Good work!

<comment><USER5> It's actually faster than running OpenMapTiles locally on my old development machine was! Excellent work.

<comment><USER6> This is using prerendered and cdn-cached PNG files. openmaptiles usually uses pbf vector tiles, which needs to be rendered in js.

It is to be expected that this is quicker on any halfway decent internet connection.

</comment></comment></comment><comment><USER7> Personally, I've been really annoyed with the slow, unresponsive Google Maps on my phone when my reception gets a little bad. I'd definitely like to try comparing this against Google Maps with the same poor connection (packet loss). The 25kb compared to 200kb for Google Maps makes a huge difference! Actual rendering speed seems a lot faster as well, which is another huge plus on my dated smartphone.

<comment><USER8> I'm not a web purist who looks for the most minimal libraries and works overtime to minimize my JS and HTML and CSS, but there is certainly something to be said about the old mobile web vs the new mobile web. I remember in 2006/2007 streaming YouTube videos on an EVDO mobile connection. Meanwhile these days unless my phone says LTE, Facebook won't even load my news feed.

Google Maps seems to be the worst, even on my recent Macbook Pro and 60mbps Internet, scrolling feels like I'm pushing heavy furniture across an unfinished concrete floor. I can almost feel it scratching and scraping and resisting every attempt to pan left or right.

In the era of "mobile first" and PWAs and all that, how is it that we require a rock solid Internet connection and a super fast processor with gobs of RAM just to get a shitty experience on the web? And if either one of those drops in the slightest, you're locked out solid.

<comment><USER9> amen. the real world is being pretty stubborn about flakey and slow internet, despite what those living in the SV microcosm experience...

</comment></comment></comment><comment><USER10> What are the cost implications for using this (in terms of the backend maps providers)? I looked at MapBox's pricing, for example. Does that still apply when using this? Presumably so but I find the distinctions a bit confusing in the JS maps world.

</comment><comment><USER11> This looks like really great work.

Completely unrelated and irrelevant observation though... I found the use of buttons to mimic checkboxes feels a bit odd to me.

Also, Github repo link for those who want to see the source or star it, since there is no link on the demo right now: [https://github.com/mariusandra/pigeon- maps](https://github.com/mariusandra/pigeon-maps)

<comment><AUTHOR> Thanks! I added a link to the github page on the demo.

And for the checkbox buttons... oh well :D

<comment><USER12> I thought that was a rather clever lightweight toggle button for a proof-of- concept!

</comment></comment></comment><comment> ben-schaaf A lot of people seem to be saying this is incredibly fast, but for me it loads only about as fast as android Google maps and the pinch-zoom/pan are incredibly choppy with massive input lag.

<comment><USER13> Yeah, on iOS it's noticeably slower than {Google,Apple,OSM} and significantly choppier than LeafletJS even without the buggy gesture support.

<comment><AUTHOR> Unfortunately I have no access to an iDevice for the remainder of the week as I'm traveling for work. If anyone can help debug this and perhaps even submit PRs, it would be greatly appreciated!

<comment> ben-schaaf For me this was happening on a mid-range android phone using Firefox. It's fine in chrome.

<comment><USER14> Same here. Android/FF. But still a bit snappier than Google Maps.

</comment></comment></comment></comment></comment><comment><USER15> How is it even possible to be that fast? What's the secret sauce?

</comment><comment><USER16> Isn't React an external dependency with a host of dependencies of its own needed to build? Or does this mean it only depends on React and nothing else?

</comment><comment><USER17> Kudos, like leaflet for react! Does it support vector tiles?

<comment><AUTHOR> Unfortunately not. Currently vector tiles are outside my personal scope for the project, but I of course welcome PRs.

<comment><USER18> Does it support drawing poly lines?

</comment></comment></comment><comment><USER19> How did I miss this a week ago? Looks great!

I recently whipped up a quick hobby project where I'm displaying a map on an old kindle by running wkhtmltoimage on a server and displaying the png. It's got a giant delay in responding with a lot of it due to Mapbox initialization time.

</comment><comment><USER20> Does anyone know if it is ok to deploy tiles used by this library inside intranet, in sites without internet access? If so, what is the recommended way of doing it?

<comment><USER21> Tiles are generally just static PNG images. I serve a bunch using nginx and also on CloudFlare CDN. It's as easy as making the folder containing the tiles available on a webserver. I use QGIS/gdal to generate the tiles.

</comment></comment><comment><USER22> It was super smooth at first but really slowed down after moving the map, to the point where I had to force close the tab.

</comment><comment><USER23> Very quick, but the demo isn't showing attribution for at least some of the map tiles correctly.

<comment><AUTHOR> Hi, I added attribution to the Mapbox maps. Please reply if any of the others are wrong as well.

<comment><USER23> Stamen requires attribution and license information mentioned, I believe Wikimedia requires attribution with a link to details.

<comment><AUTHOR> Demo updated, thanks!

</comment></comment></comment></comment><comment><USER24> Is there a description about how you built this?

<comment><AUTHOR> Well, there's the github commit history, that sort of answers the question, no? :D

Otherwise no, there is no write up of the process. I might do one some day, thanks for the idea.

<comment><USER25> You should totally do a blog post! You could also volunteer to present on it at your local JS or React meetup (or the closest city that has one). Maybe post a video of your talk?

</comment></comment></comment><comment><USER26> nice, this is one of those things you clone immediately

speaking of which, why do people debate about whether forks on github are persistent even when the author removes their copy, when you can always clone either way, since that keeps a copy on your system and you still have the code

</comment><comment><USER27> There's not much point to use react for something like this. If you know the map canvas size and tile size of your tiles, you simply need to initialize that many images in your container. That only ever changes when the map canvas size changes or the tile size changes. Pans and zooms of the map only change the src of the images at that point.

<comment><USER28> React is already used for tons of apps, some of those apps need to display maps and it makes perfect sense to use something in your existing framework.

<comment><AUTHOR> Exactly! This project is for apps that already use React and need to add maps.

Alternatively, you can try preact [1] or inferno [2] and for a few KB more you have something that is still smaller than Google Maps or Leaflet.

Of course if you need more advanced features and geometric calculations the size can go up considerably. Leaflet and Google Maps provide that out of the box. Pigeon-maps doesn't.

[1] [https://preactjs.com/](https://preactjs.com/) [2] [https://infernojs.org/](https://infernojs.org/)

<comment><USER27> Leaflet out of the box implements vector tiles, different map projections, has a full layer API, full support for mobile, etc. so it's not a direct 1:1 comparison with your project which is implementing a basic mercator raster tile layer.

You can also strip Leaflet down to just the raster tile layer stuff and as it doesn't need react or preact or inferno it will be lighter weight than your solution, and still uses the fundamental underlying display mechanism of image tags.

<comment><AUTHOR> If you need support for all that leaflet provides, go for leaflet. If the feature set of pigeon-maps is enough for your needs and you already use react, feel free to go for it instead.

I have never claimed it to match the features of Leaflet _while_ being lighter. It's lighter exactly because it doesn't. Offloading a lot of DOM work to React makes it even lighter.

Edit: to correct one point, pigeon-maps does support mobile.

<comment><USER27> >> Offloading a lot of DOM work to React makes it even lighter.

What exactly does this mean? The only thing that ever changes, as I mentioned, is the src of the image tags in these kinds of tiled maps. How do you get better performance for updating the src attributes in a grid of images of constant size (256x256 tiles or whatever) other than img.src = ''? That's literally the only DOM manipulation being done, there is no "magic".

Also you can reduce a lot of your mouse event handling stuff down to a single "reactive" (haha) callback by doing something like this: [https://github.com/mikolalysenko/mouse- event](https://github.com/mikolalysenko/mouse-event). Instead of binding a bunch of different handlers, the browser's mouse events API is still bizarre after all these years. Should just be a single event that gets sent the state of control input.

<comment><USER28> > What exactly does this mean? The only thing that ever changes, as I > mentioned, is the src of the image tags in these kinds of tiled maps.

What about markers?

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> I noticed this also supports Inferno. To the author: what's your preference?

<comment><AUTHOR> I only use React. The Inferno support was added 2 years ago when an issue requested it, as I was evaluating Inferno support myself at the time. Since then I haven't done anything with it.

</comment></comment><comment><USER30> first impression was epic but there's something wobbly with the interaction or is it just me? sometimes scrolling goes to hell and same for panning

<comment><AUTHOR> Could you describe what you experienced in more details? Scrolling with a mouse? Trackpad? Touch? Could you quantify "goes to hell"? The more details the better of course. Thanks! :)

</comment></comment><comment><USER31> Seems really lightweight and fast!

</comment><comment><USER32> Wow, this is fast!</comment>


MIT Whizzes Create an Amazing New 3-D Printing Technique - <AUTHOR> http://www.wired.com/design/2013/09/hyperform-formlabs-thinking-inside-the-box/

<comment><USER2> Neat but Hilbert Curves are pretty old school. Origami the next step? Maybe this?: [http://www.geek.com/news/nasa-set-to-approve-japanese- fleet-...](http://www.geek.com/news/nasa-set-to-approve-japanese-fleet-of- origami-space-shuttles-591372/)</comment>


IOS6 adoption up 29% since the release of Google Maps - <AUTHOR> http://m.techcrunch.com/2012/12/18/google-maps-ios-6/

<comment><USER2> Myself and several friends I know all specifically waited for google maps to be released. Once it was we all updated on the same day. The interesting fact is that we all did this independently - it was not a coordinated effort.

Just thought it was interesting that we all quietly took the same approach.</comment>


Yes, I Suck: Self-Help Through Negative Thinking - <AUTHOR> http://www.time.com/time/health/article/0,8599,1909019,00.html <comment><USER2> The articles thesis is ok, but the hook sucks. When was positive thinking ever about blind optimism? I thought it was about altering your perspective to realize your assumptions aren't clear and obvious. "I'm good enough, I'm smart enough, and doggonit people like me!" was never the point. The point was that your negative perspective is often relative.

You might think, "this cruise isn't as fun as I thought it would be." Which can either lead you to think "this sucks" or "maybe if I take this elevator below the passenger decks, hey a ping pong table... why are their Mexicans lined up along the wall... maybe I should go back up." (sorry, I have a better example from when I used to be a bit depressive, but I can't remember it.)

Also, I expect that what works has a lot to do with the personality type you match.

[addendum: It's as the guy who moved to speak to a new person every day for thirty days. I doubt he tells himself he sucks at talking to girls. More likely he recognizes the fear, chooses it is something he wants to do, and speaks. (Boy that can be hard.) Huh, I'm struggling to point out the article title and hooks betray none of the nuance.]

</comment><comment><USER3> Weird, but lately I've been telling myself I suck. It was partly a joke, partly a reaction to other people, when they happened to be a lot better at something than I am. Surprisingly, this approach really helps concentrating and actually doing something to not suck anymore.

So the thing is to tell yourself you suck - having in mind, that at least you know you do. Because most people don't.

</comment><comment><USER4> Thought I would post a blog entry written by my mother (a psychotherapist and new blogger) on the same subject:

[http://www.manageangerdaily.com/mad-blog/the-pitfalls-of- pos...](http://www.manageangerdaily.com/mad-blog/the-pitfalls-of-positive- thinking/)

</comment><comment><USER5> I'm don't think I would call this "self-help". Sure, it seems that people with low self esteem feel worse if overly complimented, but how can people like that raise their self esteem if they think they're no good? Isn't that the real problem, and not how they feel at any one time?

</comment><comment><USER6> I'm not sure how prudent or productive it is to insult yourself - ostensibly, it's a recipe for a lifetime of needless anger and self esteem issues, but it is certainly a novel approach, if nothing else. Although, in my experience, acknowledging shortcomings and understanding them, sans insulting self-talk, has been fruitful - maybe a bit of honesty and self-awareness, coupled with the occasional crack binge, is more productive?

</comment><comment> onreact-com While this might be true to some extent, I don't care. I still prefer the ambient positivity of classic self improvement. When you tell yourself that you suck you actually do suck then. When you tell yourself you're great you got at least a chance to become great.

<comment><USER7> I don't know - I find that telling yourself you're great just leads to ambiguity; I mean, what exactly are you great _at?_

As an observation (and whether or not it's right), we tend to view the world in terms of people who 'are' great or people who 'suck at' things, if you see what I mean. As such, "I'm so great - why can't I write this parser" becomes a much less helpful notion than "I suck at writing parsers" because the former implies failure whereas the latter implies a much greater scope for improvement.

I admit that it's all a bit hand-wavey, but by and large I find that my positive thoughts tend to be general ("Ain't life _grand?_ ", "Man, this world is _awesome_ ") whereas the negatives often settle on specifics ("My handwriting is _embarrassing!_ ", "I don't comment my code _nearly_ enough") - I think we can all agree that knowing specifically where things are going wrong is far more useful than knowing were they're going right in general.</comment></comment>


Inside the die of Intel's 8087 coprocessor chip, root of modern floating point - <AUTHOR> http://www.righto.com/2018/08/inside-die-of-intels-8087-coprocessor.html <comment><USER2> I plan to write more about the 8087. Are there any topics that you (HN readers) would be most interested in?

<comment><USER3> Explain why they wasted effort and silicon on insanity:

The 80-bit format has an explicit 1, unlike the normal IEEE float and double.

The chip has BCD support.

There was that idea that the OS would emulate an infinite FP stack via an exception handler.

There was that idea that the OS would emulate more exponent bits via an exception handler messing with the exponents.

The exceptions for imprecise results seem so useless.

We got an 80-bit format, but no 16-bit or 128-bit format. Don't we like powers of two?

<comment><USER2> Many of your questions are discussed in detail in "The 8087 Primer" [1] but I'll give a quick summary. (I'm not defending their design decisions, just providing what I've read.)

> The 80-bit format has an explicit 1, unlike the normal IEEE float and > double.

Apparently the explicit 1 made the hardware much simpler, and with 80 bits it doesn't cost you much to have an explicit 1.

(To explain for others: in the normal float format, the first bit of the mantissa is assumed to be a 1, so this bit is not explicitly stored. This gains you a "free" bit of precision. But then you needs special handling for zero and denormalized numbers because the first bit isn't a 1. The 8087 stores numbers internally using the 80 bit format for increased accuracy. The 80 bit format stores the first bit explicitly, whether it is a 0 or 1.)

> The chip has BCD support.

BCD was a big thing in the 1970s; look at all the effort in the 6502 for BCD support, for instance. My hypothesis is that cheap memory killed off the benefit of packing two digits in a byte.

> We got an 80-bit format, but no 16-bit or 128-bit format.

They did a lot of mathematical analysis to decide that 80 bits for the internal number format would result in accurate 64 bit results. Something about losing lots of bits of accuracy during exponentiation, so you want extra bits the size of the exponent.

> Don't we like powers of two?

Looking at old computers has shown me that word sizes that are powers of two are really just a custom, not a necessity. In the olden days, if your missile needed 19 bits of accuracy to hit its target, you'd build a computer with 19 bit words. And if your instruction set fit in 11 bits, you'd use 11 bit instructions. Using bytes and larger powers of two for words became popular after Stretch and the IBM 360, but other sizes work just fine.

[1] [https://archive.org/details/8087primer00palm](https://archive.org/details/8087primer00palm)

<comment><USER4> > They did a lot of mathematical analysis to decide that 80 bits for the > internal number format would result in accurate 64 bit results. Something > about losing lots of bits of accuracy during exponentiation, so you want > extra bits the size of the exponent.

I'm not sure if it was the reason, but 80-bit intermediate values lets you compute pow(x,y) as exp(y*log(x)) to full precision for the full range of 64-bit floats.

<comment><USER5> This is likely a big part of it, as the OP has indicated elsethread that a table of log constants are used by the 8087 for calculating logarithms and exponentiations.

</comment></comment></comment></comment></comment><comment><USER6> Can anyone recommend a good article or video (preferably video) that gets into how CPUs work at a somewhat fundamental level? Ideally geared towards someone who's generally familiar with computing concepts and not a total layman.

<comment><USER7> I haven't personally gotten around to taking it, but there's a Computer Architecture MOOC from MIT on edX.

[https://www.edx.org/course/computation- structures-2-computer...](https://www.edx.org/course/computation- structures-2-computer-mitx-6-004-2x)

<comment><USER8> So that's part two of the 6.004 course. I'd highly recommend part one also, at least lectures 3 onward.

The course starts with making analog transistors and tweaking them into handling digital data. Then making gates and combining them into state machines and ALUs and slowly putting together the pieces of a full CPU.

The last third is adding caches, pipelining, virtual memory, multiprocessing, etc. It's useful too.

</comment></comment></comment><comment><USER9> I so seldom think at this level I had a couple questions about the following passage that I'm hoping someone could answer:

>"The transistor can be viewed as a switch, allowing current to flow between two diffusion regions called the source and drain. The transistor is controlled by the gate, made of a special type of silicon called polysilicon. A high signal voltage on the gate lets current flow between the source and drain, while a low signal voltage blocks current flow."

If current flows from the source to the drain, is the source terminal hardwired to the power rail and always receiving some nominal voltage? Also does the voltage applied to the gate in order to turn the switch on come from the drain of a neighboring transistor? Basically wired in a series?

I always see MOSFET transistors depicted in isolation and then the conventional logic gate shapes used when depicting specific circuits like adder, mux etc. I find it tough to visualize how the gate, source and drain terminals in transistors as they are depicted in this picture physically interconnect to form the logic gate. Is there a separate metal layer for each of source, gate, drain and ground?

<comment><USER2> On a chip, there's really no difference between the source and drain. The source/drain can be connected to ground, another transistor or power as needed.

Look at the diagram of an inverter in the article, and it should make it clearer how gates are constructed. A NOR gate is similar to the inverter, but with two input transistors in parallel, so either one can pull the output low. A NAND gate has two input transistors in series, so they must both be on to pull the output low.

There's a single metal layer in the 8087 (but many metal layers in modern chips). The transistor can be wired however works best for the layout, with polysilicon or metal. If a transistor's source is connected to a neighboring drain, the silicon regions can just be merged and no wiring is needed.

<comment><USER9> Thanks for pointing that diagram out, I should have spent more time staring at it. Indeed it makes the gate construction clearer. Cheers.

</comment></comment></comment><comment><USER10> Thanks for the great article. And I found a ton of other interesting stuff that will keep me reading for some time.

</comment><comment><USER11> Has a similar, very cool, reverse engineering analysis been done with peripheral heavy microcontrollers?

</comment><comment> mewse-hn Didn't they just release the 8086?

<comment><USER2> I thought you were just being random, but it turns out that Intel recently released the "Core i7-8086K processor" in honor of the 40th anniversary of the 8086 processor. Is that what you're referring to?

<comment> mewse-hn Yeah, I was joking but I think someone thought I was legitimately confused and downmodded me

<comment><USER8> They might not have thought it was funny enough.

</comment></comment></comment></comment><comment><USER12> It's too bad that 80 bit precision has been abandoned.

<comment><USER13> We have quad-floats (128-bit) now which seem to work alright.

<comment><USER13> ...except in Rust, frustratingly.

</comment></comment></comment><comment><USER14> I've read that the main reason the 8087 was produced was to standardize the floating point algorithms. Software in those days had notorious FP algorithm problems. I'll try to find a reference for that.

</comment><comment><USER15> Wasn't Intel 8087 based on AMD 9511? I always thought Intel was responsible for x86 and AMD for x87 and x64.

<comment><USER2> Intel licensed the Am9511 as the Intel 8231. The 8087 was a new design developed by Intel.

<comment><USER15> Ah OK, I vaguely remembered x87 as the reason for why Intel was willing to license x86 to AMD and it seems like it was in fact about 8087 predecessor that Intel licensed from AMD...</comment></comment></comment>


Dilbert on 'FU Money' - <AUTHOR> http://dilbert.com/fast/2010-07-15/ <comment><USER2> Actually, I think the phrase comes from the Neal Stephenson novel 'Cryptonomicon'. Two of the characters imply that it is the amount of money that allows you to (when necessary) say "fuck you" to The Man, and go do something else with your time.

"We look for places where the math is right. Meaning what? Meaning that pop. is about to explode---we can predict that just by looking at age histogram--- and per capita income is about to take off the way it did in Nippon, Taiwan, Singapore. Multiply those two things together and you get the kind of exponential growth that should get us all into fuck-you money before we turn forty.

This is an allusion to a Randy/Avi conversation of two years ago wherein Avi actually calculated a specific numerical value for "fuck-you money." It was not a fixed constant, however, but rather a cell in a spreadsheet linked to any number of continually fluctuating economic indicators. Sometimes when Avi is working at his computer he will leave the spreadsheet running in a tiny window in the corner so that he can see the current value of "fuck-you money" at a glance." - <http://www.cryptonomicon.com/text.html>

<comment><USER3> from wglb in yesterday's discussion[1]: _"In Soul of a New Machine, there is talk about the formation of Data General in 1969. The attorney advising the founders suggested that they set aside $1m each as part of any deal for the purpose of FU money. The usage may predate even that."_ (The book was published in 1981.)

[1] <http://news.ycombinator.com/item?id=1513390> ; Replies to the parent comment include other 1980s references to the term.

<comment><USER4> That would definitely be before the first time I heard it.

My first recollection of it was one of Casey Kasem's tirades back in the 80's. I can't find the original on the web, but Bob and Tom spoofed it with "Mr Obvious - Too Hot for Radio" - <http://www.youtube.com/watch?v=1Vobd2qDpzU>

</comment></comment></comment><comment><USER5> There are times when I could swear that Scott Adams reads Hacker News. But IIRC, these are written weeks or months in advance.

<comment><USER6> I'm pretty sure he has a shorter buffer than that. My friend who works in enterprise development says Dilbert has often come out and satirized some new thing _to the day_ when it gets hyped up at work.

<comment><USER7> Is this the same comic that (appeared in newspapers yesterday|will appear in newspapers today)? If so, he said in a blog post a few months ago that the normal lag is ~a month and the best he could do was like 2 weeks. (Those numbers are a little off, I'm sure.)

But if this is just an online version (it is /fast, whatever that means), it might be a different story.

<comment><AUTHOR> _it is /fast, whatever that means_

AFAIK _/fast_ is an URL to read just the comics "fast" without spending bandwidth loading all the additional information presented in the landing page of the website.

<comment><USER8> It also doesn't use flash. A gift to *nixy and mobile readers.

</comment></comment></comment></comment></comment><comment><USER9> Working in finance the definition of FU money isn't when you can retire, but when you get to say FU _before_ you hang-up the phone and not afterwards.

Nicholas Taleb has a similar explanation in one of his books (probably Black Swan).

<comment><USER10> Given that the consequence of that might be accelerated involuntary retirement, isn't that the same?

<comment><USER11> Not if you end up living in a cardboard box during your 'retirement'.

<comment><USER12> if you end up in a cardboard box, I would think that means you didn't have "FU" money to start with, to my understanding of the term.

</comment></comment></comment></comment><comment><USER13> Obviously Scott Adams reads Hacker News!

Like many here, reading Dilbert is a special daily event for me. In my case, I wait until my first cup of coffee is brewed. It must be awesome for Scott Adams to be able to give so much pleasure to so many people, and make a good living from it.

</comment><comment><USER14> BTW Dilbert is now on Netflix instant streaming, lots of fun!

</comment><comment><USER15> Did Scott Adams just pull a Rage Guy meme on us?</comment>


Academics Anonymous Is a PhD the path? Ask the waitress with several degrees - <AUTHOR> https://www.theguardian.com/higher-education-network/2017/aug/25/is-a-phd-the-path-to-a-grad-job-ask-the-waitress-with-several-degrees <comment><AUTHOR> "You see, the stakes are high – I'm desperate for even a minimum wage job. This is in spite of the fact I have several university degrees.

With my final PhD draft due in a week, I have degrees in economics, sociology and politics, research skills in qualitative and quantitative methods, teaching experience at universities, a decent publication record, and a significant conference list of presentations. But now I need lipgloss and cafe connections to get a job.

It might be my own fault for having bought into the lie – study hard, get a good job. While I was always warned that full-time academic roles are difficult to attain, I was told that a PhD is an asset. We can get casual research work until we are qualified or, more accurately, connected enough to step into a full-time position. Employers outside the university will value the transferrable skills and critical-thinking capabilities.

This, I have now discovered, is far from the truth. Employers external to the university don't want a PhD, they want five years of industry experience. "</comment>


Ask HN: What's your favorite UI Mockup tool? - <AUTHOR> <comment><USER2> I've gone through a bunch - Illustrator to Balsamiq to Mockflow and now HotGloo. I like Mockflow and HotGloo (both online fee-based apps) because they offer:

(1) Master Pages (or at least Master Objects) to keep things DRY (2) a way for clients to view, navigate, and comment directly on the frames (3) a good balance: low-fi enough to avoid seeming like a design pass, but hi-fi enough that each object is distinct and recognizable (4) a good selection of resizable, customizable widgets (5) an environment separate from the design file. Unlike many, I actually prefer to start from scratch with the design - it frees me from conforming too tightly to the frames, and leaves open the possibility for further iteration. Also, it's handy when passing frames to a visual designer - they can use whatever design tool they like.

</comment><comment><USER3> Keynote for Mac. I love the fact it's so easy to use. And sometimes the mockups look so good you'll want to "lick them", to quote Steve Jobs. :))

<comment><AUTHOR> cool -- you actually create your entire wireframe in keynote?

<comment><USER3> Yes. I do everything in Keynote. Then I'll pick up the colors I need and start coding the CSS part. And when I need some photo editing, I use GIMP.

Usually the mockups are better than the final product, because in Keynote 1\. you can align everything so damn good 2\. the font rendering looks awesome

<comment><USER4> And I suppose being able to add animation kinda helps as well.

</comment></comment></comment></comment><comment><USER5> Balsamiq

<comment><USER6> I like balsamiq specifically because it is rough. That eliminates a lot of the wasted time arguing about pixels.

</comment></comment><comment><USER7> Photoshop. I've become so accustomed over the years to the tools/interface, that it's actually faster than pen/paper. Setting it up with common UI elements to drop in quickly makes mockups a breeze.

<comment><USER8> Photoshop for me as well, because I can then easily transition from the wireframe to the high-fidelity mockup. I much prefer it when the evolution is a continuous process, rather than being interrupted by switching software.

<comment><USER2> I used to feel that way, but when I began using separate framing software I was pleasantly surprised by the results. Having to start the design phase from scratch in a new program freed me from slavish adherence to the frames and allowed designs to progress further. Horses for courses though - I'm sure everyone has their own take.

</comment></comment></comment><comment><USER9> The most efficient thing for me has been Illustrator w/ wireframe symbols. It's not so low fidelity that I can't envision the end products, additionally I enjoy the control vs. mockup tools like Balsamiq.

There some good wireframing resources for Illustrator and other programs in this Smashing Magazine post: [http://www.smashingmagazine.com/2010/02/05/50-free-ui-and- we...](http://www.smashingmagazine.com/2010/02/05/50-free-ui-and-web-design- wireframing-kits-resources-and-source-files/)

<comment><AUTHOR> thanks -- i'll check it out! Appreciate it

</comment></comment><comment><USER10> Wireframe Sketcher in Eclipse <http://www.wireframesketcher.com>

</comment><comment><USER4> Google docs, believe it or not. I found a nice wireframing set at the following address: [http://mortenjust.com/2010/04/19/a-wireframe-kit-for- google-...](http://mortenjust.com/2010/04/19/a-wireframe-kit-for-google- drawings/)

</comment><comment><USER11> There're also SketchyPad and iMockups. I've created a list of the tools presented here, you can see it on <http://www.romku.com/list/343849/ui-mockup- tools>.

</comment><comment><AUTHOR> Thanks again for all the feedback. I've been trying various tools and i've honestly been loving flairbuilder. Quick, simple to use, and it's highly interactive that's just built in. Haven't tried balsmiq yet but will give it a shot.

</comment><comment><USER12> as a product manager, I use 2 tools for wireframes and flow design

Flairbuilder and OmniGraffle <http://flairbuilder.com/> <http://http://www.omnigroup.com/products/omnigraffle/>

The Flairbuilder developer is quite active and responsive about updates. I switched here from Balsamic because Flairbuilder allows for somewhat dynamic & functional mockups.

<http://twitter.com/#!/flairbuilder>

<comment><AUTHOR> Thanks -- i'll try it out Flairbuilder and I do like omnigraffle as well.

</comment></comment><comment><USER13> A whiteboard, or Penultimate on the iPad if there's no whiteboard around.

<comment><USER14> Second for whiteboards. If I must get it into electronic form either take a picture or inkscape.

</comment></comment><comment><USER15> I love Pencil for Firefox. It's seriously underrated: <https://addons.mozilla.org/en-US/firefox/addon/pencil/>

<comment><USER16> _Not available for Firefox 6.0_

I do believe Firefox's frenetic update schedule just bit me in the ass.

EDIT There's a standalone version: <http://pencil.evolus.vn/en- US/Downloads/Application.aspx>

EDIT2 This add-on ("temporary branch") works with Firefox 4-6: <http://code.google.com/p/pencil-ff4/>

<comment><USER17> IIRC, the standalone needed admin privileges. Maybe there's a no-install version.

</comment></comment></comment><comment><USER18> Omnigraffle, Photoshop or paper. Although, seeing the templates created by Amir Khella (keynotopia.com) has made me want to try to use Fireworks a bit more for this.

</comment><comment><USER19> Mockingbird - <https://gomockingbird.com/>

Maybe it's just because I love web apps done with Cappuccino.

</comment><comment><USER20> Trying the templates in Keynotopia, they are good, but I think I need to work longer on paper before spending time in PowerPoint.

</comment><comment><USER21> Sharpies and copier paper. Seriously: nothing else has been as efficient for me. (Although it depends on your Sharpie skillz.)

</comment><comment><USER22> Mockingbird - <https://gomockingbird.com/>

</comment><comment><USER23> I have tried Pencil, Balsamiq, MockingBird and Google Docs. Google Drawings works best for me.

</comment><comment><USER24> Fireworks

</comment><comment><USER25> A piece of paper.

</comment><comment><USER26> Paper first, a Tcl/Tk mockup second.

</comment><comment><USER27> Pen and paper then Inkscape/Gimp.

</comment><comment><USER28> in order of preference: 1\. pen + paper 2\. html + css 3\. omnigraffle 4\. photoshop

</comment><comment><USER29> Paper 1st and then Keynote.

</comment><comment><USER30> Balsamiq

</comment><comment><USER31> Paper, Illustrator, HTML.

</comment><comment><USER32> Expression Sketchboard

<comment><USER33> OK, now that someone's mentioned Expression, I'll note that _I_ use it extensively - the original version, that is: <http://en.wikipedia.org/wiki/Creature_House_Expression>

Aside: Creature House Expression was a wonderful - yet industrial-strength - 'painterly' vector drawing package. Superb UI (which many users complained wasn't 'Adobe' enough), and a fun, quirky website. The combination of science and art made it one of the highlights of successful software development. You can guess what happened when Microsoft acquired the company... ;-)

Anyway, MS were kind enough to make the Windows and Mac Classic/OSX versions available for free - follow the wikipedia links.

Just remember, this is software that was a rival to Adobe Illustrator, and contained technology that some thought would threaten Flash. Steep learning curve (but excellent PDF manual included), and capable of far more than UI mockups. The old Topica mailing list is a mine of useful information, and Yahoo has a current (but less trafficked) list.

</comment></comment><comment><USER34> Photoshop

</comment><comment><USER35> html/css/js</comment>


Tim Sweeney: The Man Behind 'Fortnite' - <AUTHOR> https://www.wsj.com/articles/the-man-behind-fortnite-11560571201 <comment><AUTHOR> Companies are harnessing the software behind hit videogame "Fortnite" to do everything from designing cars to discovering drugs, tapping into its realistic imaging and its ability to manipulate 3-D designs.

Epic Games Inc. licenses its Unreal Engine, which powers "Fortnite," to other game makers and companies in various sectors. Unity Technologies, whose technology helps power "Pokémon Go," also makes its software available. Gaming-engine makers derive a significant share of revenue from licensing.</comment>


Show HN: Gol4 – A weekend project inspired by John Conways Game of Life - <AUTHOR> https://jessehorne.github.io/gol4/ <comment><AUTHOR> Some fun sequence codes:

122112211

212020200

012301231

212301230

101210020</comment>


Share HN: I wrote an app to help my paralyzed cousin type significantly faster. - <AUTHOR> http://chir.ag/projects/ktype/

<comment><AUTHOR> Submitter here. My cousin has not been doing too well for the past few months and so I put this project aside for now. However, a friend suggested that there might be many others who could benefit from such a tool or its derivatives.

This isn't a startup and I honestly don't want to treat it like a business. However, I do think it qualifies as a hack because of how it works. It uses Google Suggest in addition to a dictionary to try to guess the next word that the user is going to type. If you type WHERE, the next word is most probably going to be IS, THE, or DID. If you then select IS, the next word after WHERE IS will probably be THE or MY. KType uses this and a few such principles to make smarter, better guesses. It is not perfect but I intended to make it extremely smart and customized per user. When I was actively working on this, I had 100 ideas per day on how it could basically read the user's mind and suggest words and phrases most effectively.

My family and I looked at many existing systems for making typing easier but there wasn't anything out there so I decided to roll our own. As of right now, I don't know where to go with this because of my cousin's uncertain health condition. I would love to hear from medical and text hackers about developing this further.

Note: Currently I use Google Suggest localized for India so many of the suggestions may seem weird to non-Indian users. However, it's a simple change in URL to get localized suggestions for any country thanks to Google. Also, I wrote it for 1280x1024 resolution but it can be resized for most screen sizes.

<comment><USER2> I think you _should_ treat it like a business. Profit will maximize the impact of your change, and allow you to sustainably provide this solution to many more people than you would otherwise.

Google "Social Entrepreneurship" for more details.

</comment></comment><comment><USER3> Very cool. Feature requests:

\- Accept keyboard input. Some users might find it easier to press a key rather than use a mouse or even a touch screen. It would enable support for stuff like this: <http://www.usm.edu/ids/tlc/images/hw-ikeys.jpg>

\- Feature a big "copy text" button so that the user might be able to use your service and paste said text somewhere else on the web.

<comment><USER4> This could actually go well with the CrunchPad.

</comment></comment><comment><USER5> I wish we would get more of these types of submissions on HN. Well done.

<comment><USER6> Indeed! Things like this are so inspirational

</comment></comment><comment><USER7> Are you aware of the dasher program? Because if you are not you really need to take a look at it.

It can let someone who is fully paralyzed, with just eye movement, type at a very good speed. And it works for less paralyzed people too (it has configurable modes).

I don't know why it's not more frequently used, but it should be - it's much better than most other typing software used in these cases.

Edit: I just noticed you listed it on the page.

Edit2: And I see everyone else told me that too.

<comment><AUTHOR> Dasher was the first app we tried but it did not work for him because it requires a very high level of steadiness. My cousin's hand and eye is not steady enough. Plus you still have to type all the letters to spell any word. KType is not a replacement for Dasher but rather works at another layer (TCP vs HTTP) as it has more to do with guessing full words than typing individual letters.

<comment><USER7> You write that dasher is for the average person. I've only played with it, but the authors claim it's specifically for paralyzed people. I guess the claims don't live up to reality, it's quite disappointing.

<comment><USER8> There are different types of paralysis. Imagine a quadrapaledric who can control a pointer with his or her chin. This is a space where some tool is going to have a general success rate with each type of disability, but every case is going to ultimately come down to individual preference. Oh, and practice, practice, practice.

</comment></comment></comment></comment><comment><USER9> Hi Chirag,

My cousin's child has severe Cerebral Palsy. He has a dedicated device[1] to help him interact.

Maybe you could include some ideas from these existing devices?

\---

BTW, well done on your implementation.

\---

I develop a mouse accelerator which makes moving the mouse a lot easier. When it is ready, I will post that onto HN. Your article has shown that the reception will be good.

It suits disabled people who have poor muscular control over the mouse.

\</comment><comment></comment><comment>

[1] MyTobii ::

[http://www.inclusive.co.uk/cgibin/sh000001.cgi?REFPAGE=http%...](http://www.inclusive.co.uk/cgibin/sh000001.cgi?REFPAGE=http%3a%2f%2fwww.inclusive.co.uk%2fcgibin%2fss000001.cgi%3fSS%3dtobu%26ACTION.x%3d0%26ACTION.y%3d0%26PR%3d-1%26TB%3dA%26SHOP%3d&WD=tobi&SHOP=%20&PN=mytobii.html%23a365#a365)

<http://www.mytobiicommunity.com/>

</comment><comment><USER10> That's one very cool hack man, something to be proud of.

There are large bodies of text such as wikipedia and others that you can download, maybe you could use them to aid your prediction ?

It would also make the application work when offline.

<comment><AUTHOR> I had originally planned on making this an offline app but scrapped that when I realized it would lose the ability to do real-time Google Suggest (or similar searches via Yahoo/Bing/Twitter). Search engines have a huge database that I can use to help with suggestions.

Even if I make an app for iPhone/iTouch, most users can still access the web and make use of Google Suggest so the effort to go through 20GB of Wikipedia/DBPedia/Freebase data and implement my own intelligent search didn't seem worth it.

<comment><USER10> Ok. If you ever want to go 'offline' let me know I'll be happy to contribute to your project, it looks like it would be a worthy way to spend some time.

</comment></comment></comment><comment><USER11> Hey thats a good use of bigram probabilities :) Try reading in loads of text (Indian blogs if you want, but wikipedia would be more accessible) to build bigram probabilities, this way you can totally remove dependency on google suggest (and things people do not search for that often). I can help if you want :)

<comment><USER10> trigrams probably work even better, two words preceding gives a lot more certainty about the third.

<comment><USER11> yeah, but then you need orders of magnitude more data for building the dictionary which is orders of magnitude larger :)

<comment><USER12> I'd say going from two to three is `half' as more effort as going from one to two (in logarithmic scales). And that is precisely because trigrams can predict better --- they are even more redundant than bigrams.

</comment></comment></comment></comment><comment><USER13> This is very cool - stroke victims could benefit from this too.

</comment><comment><USER14> Sorry for being dense, but although the clicking and prediction and word selection are just fine, I don't understand how this is used to actually type anything _into_ any place else? I couldn't select the typed text by dragging my mouse, or anything like that. How is this intended to be used?

Also: Interesting that you laid out the letters simply in alphabetical order (as opposed to QWERTY, Dvorak, or anything else).

<comment><AUTHOR> > KType is currently only useful for typing in short phrases and hasn't been > integrated into a large text-editing webapp yet.

It shouldn't be too difficult to incorporate this into a webapp that lets the user type lots of text - sort of like the T9 mode on your cellphone. The original goal was to allow the user to type about 140 characters (SMS/Twitter) and hit a Submit button.

The reason for choosing alphabetical layout was to minimize mistyping due to unsteady hands. Three rows like a QWERTY etc. keyboard means when user is trying to hit a key in the middle row, they could accidentally hit a key above or below the desired key. In two row layout, this issue is minimized. Also notice the keys are in a piano-keyboard style layout with ample gap around each key, thus reducing the chances of error further.

</comment></comment><comment><USER15> reminds me of the system that Prof. Stephen Hawking uses. Also it seems there would be some benefit of acceleration at the word and phrase level by using a system like the awesome bar. You want to analyse the persons own output and prioritise phrases based on that. You could also have a top phrase list - "where's my drink" "i need the toilet", etc. could be highly optimised that way.

</comment><comment><USER15> didn't work for me, but then i am using links2

</comment><comment><USER16> This is awesome! Congrats... seriously well done.</comment>


The strangest SEC filing you'll ever read has a backstory you might not believe - <AUTHOR> http://qz.com/101838/the-strangest-sec-filing-youll-ever-read-has-a-backstory-you-might-not-believe/

<comment><USER2> I wish the title of this article wasn't so vague, I really enjoyed it, but it probably isn't going to get much notice here.

</comment><comment><USER3> Problem is: you can't play opfor.</comment>


Coding Horror: Programming Is Hard, Let's Go Shopping - <AUTHOR> http://www.codinghorror.com/blog/archives/001172.html <comment><USER2> Atwood can treat markdown as critical to his business, he can roll his own, and learn to create a parser and he _should_ STILL start with something like Beautiful Soup.

Then he can modify it, extend it, refactor it, what ever.

But starting from scratch all that will happen is that he will, after a LOOONG time, end up with something almost as good Beautiful Soup, but with a much uglier code base.

And he will _not_ learn more doing it that way. He will perhaps learn just as much, but not more.

Reinventing the wheel is stupid. If X is critical to your business get a wheel for X then _own_ the damn wheel and X.

Joel himself started with an open source VPN project for Copilot.

And I'm guessing that's a pretty critical part of Joel's business.

</comment><comment><USER3> I mentioned it in a comment to his article, but I'll repost here - "Markdown" is not a StackOverflow core competency. People don't go to StackOverflow to write Markdown. They go to get their questions answered or to answer others' questions. I don't think his "core competency" argument floats.

His "I couldn't find libraries for C#" on the other hand may well be valid.

<comment><USER4> Agreed, and I think Markdown's inclusion of HTML makes it a bad choice for this application* as well - why put yourself in the position of being in an arms race with spammers and scammers, when there are other valid choices (WikiText being the most obvious example.)

(* This is not a slam on Markdown, which I quite like, but John Gruber created it for himself and his uses as a writer with complete ownership over his servers.)

<comment><USER5> The problem with sanitizing all possible XSS exploits in all HTML accepted by browsers is similar to being the outlaw vs. being the cop. As an outlaw, you have to make good your escape _every single time_. The cop only has to catch the outlaw _once_.

Admittedly, this is confusing because Jeff, be being an HTML cop, has put himself in the position of outlaw.

</comment></comment></comment><comment><USER6> The best solution here is to just not allow HTML, require all markup to be Markdown. It's not hard to do and is actually a feature in the Python Markdown module. I had to make a public form Markdown compatible the other day in a Django project, it's brain-dead easy:

{{ foo|markdown:"safe" }}

</comment><comment><USER7> I made a similar comment on the Buffet story on the front page, but Atwood's argument is good fodder to extend my argument.

Atwood says: If it's core to your business, don't go shopping, do the hard work and make it yourself.

Buffet says: America's seen worse and prospered in response. Go buy some America today.

It's debatable if Atwood's example is core to his business (I think it might be since it's the freakin' user interface for making comments), and the comments provide some helpful follow-up to Buffet's argument. Here's my synthesis of the two:

As a patriotic, peace-loving American I want to do the hard work and bring my passion and vision to a business that will make our economy more efficient and save folks money. I'll do that in the area of my expertise, technology. Everywhere else, where I have the money I'll invest in the companies that can and will rebuild America.

That's the investment criteria, personal and financial, that I believe Atwood and Buffet are driving at. Of course, it doesn't just apply to Americans, it's probably just more obvious to those folks living outside of our parochial bubble ;)

</comment><comment><USER8> What's the point Atwood is trying to make here?

<comment><USER9> I think he said that it is okay to reinvent the wheel if the 'wheel' happens to be central to your business/service.

I think.

Nice Feynman quote in there, though.

<comment><USER10> I find it hard to believe that HTML sanitization is _central_ to the Stack Overflow site. (At least, not central in the "worth-reinventing-the-wheel" sense. Note that Atwood is depending on Markdown rather than inventing his own markup syntax and implementing a library for translating it into HTML.) Does the quality or efficiency of HTML sanitization make such a difference in the overall performance of the site?

<comment><USER11> Agreed.

Let me know if I got this straight, Markdown doesn't have it's own HTML sanitation mechanism, so Stack Overflow is rolling their own general HTML sanitation solution?

Why use Markdown in the first place? Is this a time when Markdown doesn't solve the problem Stack Overflow has? Look for another markup language?

<comment><USER8> Markdown doesn't even _try_ to solve the HTML sanitation issue because it was designed for use when you have complete control over the content, so it passes all HTML through in the clear so that you can use Markdown to make the usual/trivial stuff easier, and leave the complex stuff to how HTML designed it.

Because it ignores HTML altogether, you need to have a separate sanitation process if you only want a subset of HTML to be usable.

The story is the same with most other simple markup languages, like Textile.

</comment></comment></comment></comment></comment><comment><USER12> Can anyone find a question/answer on SO that uses this supposedly crucial feature of allowing HTML?</comment>


YouTube Hides Radio Host's Videos and Label 'Potentially Offensive' - <AUTHOR> http://www.wsj.com/articles/warning-this-article-is-educational-1476918851 <comment><AUTHOR> Regardless of where you side politically, I think this is a slippery slope that YouTube should not be on.

Here's a list of the 16 videos YouTube added to restricted mode:

Are The Police Racist?

Why Don't Feminists Fight for Muslim Women?

Why Did America Fight the Korean War?

Who's More Pro-Choice: Europe or America?

What ISIS Wants

Islamic Terror: What Muslim Americans Can Do

Did Bush Lie About Iraq?

Who NOT to Vote For

Israel: The World's Most Moral Army

Radical Islam: The Most Dangerous Ideology

The Most Important Question About Abortion

Why Do People Become Islamic Extremists?

What is the University Diversity Scam?

He Wants You

Israel's Legal Founding

Pakistan: Can Sharia and Freedom Coexist?

</comment><comment><USER2> Let me guess: while these videos are hidden, you can still find all the ISIS propaganda videos you want.</comment>


QArt Codes: Applied Reed-Solomon coding - <AUTHOR> http://research.swtch.com/qart

<comment><AUTHOR> This is a continuation of the previous article "Finite Field Arithmetic and Reed-Solomon Coding"[1]

[1]: <http://research.swtch.com/field>

</comment><comment><USER2> Regarding the portrait used in many of the example QR codes:

      For some reason, the portrait of Peter Weinberger has always been
      our most popular target for picture editing experiments. [1]

[1]: <http://swtch.com/pjw></comment>