Android 4.5: End of Road? - <AUTHOR> http://beranger.org/2014/06/01/android-4-5-end-of-road/

<comment><USER2> Note that the title is misleading: Android ALWAYS had a read-only /system partition.

Now they're adding a slew of SELinux policies which also enforce read-only access to /system partition. These are still applied if you remount it rw, which means that in the future users will have to modify SELinux policy to write while the OS is running.

Recovery (which is tasked with updates) will keep its write ability. Also all apps which don't write to /system partition (which includes most root apps like Titanium, etc.) will not be affected.

<comment><USER3> For people who don't use root apps this is actually good news. Strict SELinux policies are going to help boost Android security significantly. Malware devs are having a field day on Android and root access only makes it easier for them.

<comment><USER4> Bullshit. The massive holes in Android security are caused by the inept app permissions system. Restricting hackers that jump through hoops to get access to their file system even more is not going to stop the thousands of apps that spam all your contacts, etc.

<comment><USER3> Rootkits can cause way more damage than permission abuse. Spamming your contacts is nothing compared to keylogging your bank information or snatching 2FA notifications. App permissions also need to be improved but the former is higher priority IMO. ACL has existed in computer systems forever for a good reason. It's pointless if its not properly enforced via MAC.

</comment></comment></comment></comment><comment><USER5> Every single time these new SELinux changes in AOSP come up before the release of a new Android version there's some FUD about root access dying and bla bla bla. Guess what? It never happens.

Buy an open device (for example, Nexus) that lets you flash whatever software you want through the bootloader and thus recovery. Nothing prevents you from removing this security policy, which makes complete sense: nothing in Android's userland needs write access to /system, so it may as well be blocked completely.

<comment><USER6> Open devices are rarer and have limited hardware options. Say, I didn't found any affordable multi-SIM phone that fit my tastes available at the local retail (i.e. I wasn't willing to wait for a month for a remote purchase to ship) when I needed one.

<comment><USER2> Well you should address complaints to operators like AT&T and Verizon which force bootloader locks to your phones.

Here in EU pretty much most of the new Androids are fully unlockable including phones that ship with completely locked bootloaders on Verizon and AT&T.

Demanding that Google ships an OS with security vulnerabilities because US telcos demand bootloader locking is ludicrous.

</comment></comment></comment><comment><USER7> Ive found the longer android has been around, the less likely I've been to need to root it. This doesn't seem like a bad change?

<comment><USER8> Do you want ads? Because that is his we get the horrible ads On our favorite apps.

<comment><USER9> Do you think that the devs that put hard work and time into building your 'favorite apps' don't deserve to be compensated?

<comment><USER10> With a paid version of the app or an in-app purchase, sure. Sadly, some devs only have an ad-supported version. Apps that waste my screen space and download quota with ads just aren't worth it. Either the ads go (with AdAway) or the app goes.

<comment><USER9> I'm not arguing that ads aren't annoying! It's just an incredibly entitled way of thinking. Perhaps ads are the only source of income for that particular developer. Why not just use something else / get on with it / write something yourself?

Also - downvote if an answer is offensive or inappropriate, not because you disagree with an opposing point of view!

<comment><USER10> It's not an overly entitled way of thinking when it comes to a device I own that uses a data package I pay for. I don't actually run an ad blocker in my web browser, but on mobile, where screen size, battery life, and data usage constraints are very real, I can't stand them. If I couldn't remove the ads from an app I would definitely find something else.

As for the downvote, you're right, but it wasn't me. I don't have that ability yet.

<comment><USER9> I appreciate your concerns regarding the data package/battery etc., but if you look at it from the developer's point of view rather than your own, it IS entitled to think you have the right to strip out their income stream because it doesn't suit _you_. But hey, different strokes for different folks :-)

Downvote comment wasn't directed at you in particular!

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> This has been coming for quite some time. Each new version of the 4.x line had something to improve security for the average user, usually in the form of restricting an API access or changing filesystem rules.

The rules revolving around /system are a huge security issue, as you can take any permission you wish without having to inform the user. Malware authors take advantage of this.

Unfortunately su binaries install to this location for the same reason. Devices with easy to unlock bootloaders (e.g. Nexus line) or an official program to unlock the bootloader (e.g. Morotola Bootloader Unlock program) won't have much of an issue, installing alternate recovery isn't terrible on those devices. The more troubling aspect is those vendors and carriers that offer no such thing. Those vendors/carriers view the phone as their property on loan to you and that they should retain control, for whatever reason. For 90% of users, this doesn't matter, they don't bother to do anything that requires root. But the other 10% are finding their options squeezed unless they buy from specific vendors and sources.

</comment><comment><USER12> This seems like a change for the better. Having the /system partition writable is a lot of unnecessary attack surface.

> Rest in peace Titanium Backup, ROM Toolbox, Root Explorer, SD Maid, Lucky > Patcher, etc. etc.

I'm not sure what the author is trying to say here, because I don't think any of these apps write to /system.

<comment><USER13> Modifying files in /system is a big use case for Root Explorer.

</comment></comment><comment><USER14> I guess this just means that rooting the currently installed Android isn't the end-all-be-all of gaining access to your device.

We'll probably end up with versions of alternative ROMs using a custom kernel for this (e.g. either CyanogenMod will enable /system write access, or there will be two versions -- one with stock kernel, the other with /system write access).

</comment><comment><USER15> Google cache copy is here, the server seems to have reached it's limits: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://beranger.org/2014/06/01/android-4-5-end- of-road/)

<comment><USER16> And a partial NYUD cache: [http://beranger.org.nyud.net/2014/06/01/android-4-5-end- of-r...](http://beranger.org.nyud.net/2014/06/01/android-4-5-end-of-road/)

</comment></comment><comment><USER17> Don't worry, each vendor will have an opportunity to screw up SE for Android policy. Additionally, many kernel flaws will be possible to use for disabling these mechanisms to once again get privilege sufficient to write to /system if needed.

</comment><comment><USER18> This is already being done by some vendors. My Sony Xperia Z1 Compact shipped with a UK image (where things are supposedly freer), was rootable only via a long flashing process that at one point breaks the screen, had an unlockable bootloader, and had a policy keeping /system read-only built into the 4.3 kernel. If one unlocks the bootloader, the DRM keys for Sony-specific extras are lost.

I've found root without /system access is good enough for most things. Tibu works fine. ...but isn't it my phone?

</comment><comment><USER19> All of the "no big deal" comments are really startling to me. If you bought a desktop PC where you couldn't write anything to the hard drive outside of your one allowed directory without voiding the warranty, you'd take some serious issue with that. Is "but mobile!!!" an OK justification for taking away control over hardware that people own?

<comment><USER20> No, security is. On any normal Linux pc only the root user has rw rights on the system partition.

<comment><USER21> And the root user is the owner of the computer. This is saying that if you buy an Android device you are not granted the privilege of owning the device.

The mindset of mobile developers is to treat the end user as an adversary. You're not meant to control your device beyond what the gatekeepers of the walled garden want you to do. They want to operate by the television model where there are a privileged few producers delivering content to the masses. It's the antithesis to the internet model of an information economy where anyone can communicate with anyone else and not need a middle-man regulating their conversation.

<comment><USER20> Most manufactorers supply tools to root your device. It's about the same as ubuntu having a root user without a password you still have to set.

Only if you buy your device from a carrier that locks it, you will have trouble with getting root access. But you should be angry at them, not at Google. Google is making Android safer to use for the general public. This ease of use and hanhdolding is one of the reasons Android is actually popular with non tech-savy people instead of any Linux desktop distro.

</comment></comment></comment></comment><comment><USER20> I have been actively "hacking" in android and I never felt the need to change stuff on my /system partition. /data is the one where you need to change stuff.

</comment><comment><USER8> Firefox OS might be a viable options for low end phones, and For high end phones Ubuntu OS might be worth it as well.

<comment><USER22> The nice thing about something that works well on low end phones, it works awesome on high end phones :)

Although its not necessarily something you get for free, since we havent optimised for higher end devices you can get to a point where you have too many active apps open and chew battery, there are probably other places it can improve, but it does perform nicely on higher end devices.

<comment><USER23> I recently bought a Firefox OS device as my first smartphone and I'm really looking forward to the future of this OS. However, I have been plagued with a number of problems that make really simple tasks incredibly complicated, and I hope you guys are paying attention to bug reports because there are some major issues that have remained unaddressed for an extremely long time.

In any case, an open OS is a necessity and I'm glad that I didn't have to choose between iOS, Android, and WP for my first smartphone. After some major bugs have been addressed, I look forward to being able to buy a high end device on which I can install Firefox OS. I sincerely hope Mozilla continues to give the project a lot of attention and doesn't relegate it to Thunderbird status.

<comment><USER22> If you wanted to send me any bugs in particular that may be overlooked then please do, my email is in my profile.

In particular the early 'preview' launches havent gone as I personally would hoped, less than raw code there is a level of communication and collaboration with partner launches that dont exist with say, firefox, people have been working to address these and in particular I think the reference device / flame is going to be a release that fixes a lot of this.</comment></comment></comment></comment>


Can we save the rhino from poachers with a 3D printer? - <AUTHOR> http://www.theguardian.com/environment/2015/may/24/artificial-3d-printed-fake-rhino-horn-poaching <comment><USER2> It's odd to me that they don't consider flooding the market so that consumers cannot know if they're getting real horn or not.

Or even artificial tainted poisonous horn.

I wonder how resistant the black market horn trade is to this type of manipulation.

<comment><USER3> > Or even artificial tainted poisonous horn.

This is being done.

[http://www.pri.org/stories/2015-03-22/poisoning-rhino- horns-...](http://www.pri.org/stories/2015-03-22/poisoning-rhino-horns-doesnt- hurt-rhinos-it-may-keep-poachers-away)

</comment></comment><comment><USER4> I'd wager that the people who buy rhino horn wouldn't be satisfied with a lab- grown alternative.

</comment><comment><USER5> Betteridges law in action, with an exciting advert for Pembient!</comment>


Eight reasons for reinvinting the wheel - <AUTHOR> http://www.mostlymaths.net/2010/03/8-reasons-for-re-inventing-wheel-as.html

<comment><USER2> 9\. Money - Someone is willing to pay me for it

<comment><USER3> Disclaimer: I'm the blog writer behind this :D

Not bad. I guess it will go as either the 11th or 12th item in the new and revamped list: 2 new reasons given in reddit comments and one in comments in the blog. I think we could get to at least 15 good reasons to do it (the best is yours I guess :)

<comment><AUTHOR> Hey! I enjoyed your post. #4 seems especially important to me. People expect to reimplement things in school - you're working problem sets over and over which have been worked by generations of students - but so often when people get out of school they act as if learning stops. Rewriting and trying to improve on existing code is a good way to keep the brain fresh.

Also I liked your post because you took a position contrary to a lot of conventional wisdom (don't reimplement...) and made a good case for it. At least, you defined some boundaries to conventions.</comment></comment></comment>


24 hours left to startup happiness: 3 simple steps to join The Lab - <AUTHOR> http://metavallon.elaborate.gr/

<comment><AUTHOR> A very interesting e-venturing platform with global reach.</comment>


Show HN: Ideas to work around SOPA - <AUTHOR>

Over breakfast, I thought about how to circumvent SOPA (as I understand it).
Key problem: SOPA allows the government to tell DNS servers to stop linking certain website addresses to their IPs.
Abstract Solution: Remove the need for DNS servers in the majority of cases.
Idea 1: Have a list of IP addresses stored in each browser so they don't have to be resolved. Just have an associative array somewhere that contains a bunch of really popular websites. Every time the browser auto upgrades, it updates and expands its list of IPs. This could be done as a plugin for most modern browsers.
Idea 2: Congress is smarter than to try and take down facebook. Every 15 year old girl in the country would be marching on Washington within a week. Make a facebok app that has easily clickable IP's to popular websites.
Throwing them out here to see a.) if I understand the problem right and b.) these ideas could work. They would be limited by the size of the objects people could save, so it might only cover the top 1000 websites. <comment><USER2> What you are saying is essentially "Start independent DNS servers without filtering, and get browsers to use them by default."

It is the obvious 'solution,' but somehow I think the answer would be more filtering, probably on a lower level.

<comment><AUTHOR> My question is how could they filter further down than we are able to work with? Wouldn't it get to the point where they would just have to say "Unplug the servers or else?"

I am the first to admit I don't know much about the stack here, I haven't looked much into anything deeper than DNS resolving the IP's with http. What would the next level of filtering be?

</comment></comment><comment><USER3> They don't have to take down Facebook to take down one app in particular.

It might work better as a set of browser plugins for the popular browsers (well, Chrome and Mozilla at least).</comment>


Ask HN: Best way(s) to distribute a self-hosted, non-compiled product - <AUTHOR>

Say you have a product written in Ruby, Python, PHP etc. and you would like to distribute it as a self-hosted solution.
What are the best ways to go about doing this without having to worry about people ripping off your code?
I assume answers will fall into some of the following categories:
- compile/obfuscate code (i.e. cpython)
- submit product as a virtual image (like github enterprise)
- just don't care and rely on your bundled licenses
Each has their own up/down sides.  Discuss. :) <comment><USER2> I am going with the last option. Rely on bundled licenses. Seeing as I also provide a fully managed service, I include all software updates etc. for those who pay the annual license.

The rest are not my customers and worrying about them is a distraction.

</comment><comment><USER3> There was a pretty dense discussion on the first option at Stackoverflow: [http://stackoverflow.com/questions/5069791/challenge- maximiz...](http://stackoverflow.com/questions/5069791/challenge-maximize- cost-of-obfuscations-reverse-engineering)

The most viable target market for self-hosted products are still entreprises ; deployment via virtual images might be the most feasable solution for all parties involved.

Second-best option, specifically for eg. PHP, might be compiling the code into executables (via eg. [https://github.com/facebook/hiphop- php](https://github.com/facebook/hiphop-php) ), and distributing distro- specific executables.

Re: 3rd option, the specific worry about distributing code in any form isn't piracy (as pointed out by firstprimate, those aren't your customers); rather, blatant ripoffs engaging in marketing-only competition using a rebranded version of your own product.

</comment><comment><USER4> The github way is pretty good because most businesses use some sort of virtualization (usually vmware) once they become a certain size.

But really it depends on who you are selling to and what you are selling, some companies just have the customer pay for a server and then the company ships it out with a guy to install it (better for small businesses that don't have dedicated sysadmins).

</comment><comment><USER5> [http://zencrypt.com](http://zencrypt.com) for PHP obfuscation. It's not NSA- grade encryption - but it works for 99.9% hosting accounts without need for specialized libraries.

It obfuscates your code well.

</comment><comment><USER6> People don't buy software any more anyway; they only buy cloud services.

<comment><AUTHOR> I can tell you for a fact that this is not true when you're dealing with enterprises or software that is vital for the operation of your business. These types of customers demand to have products hosted internally.</comment></comment>


Conspire – Find the best path to any person or company - <AUTHOR> https://www.conspire.com/

<comment><USER2> Looks cool. Would love to know what Conspire uses as their technology stack.</comment>


Introducing NodeBalancer, load-balancer-as-a-service - <AUTHOR> http://blog.linode.com/2011/07/13/introducing-nodebalancer/

<comment><USER2> I've set up high availability load balancers on linode before. Basically two 512mb vm's running heartbeat between them and both running the same config of haproxy. This seems like a spiffy interface to something like that minus the heartbeat.

What is going on here under the hood? Anybody know? Haven't seen any deep details yet. Then again, I haven't logged into their irc either.

</comment><comment><USER3> What's the big deal? I'd really like to know too. I'm not just asking that to be snarky. :-)

AWS and a few other hosts[1] have had this for a while. Is Linode doing anything differently, or is this just an instance of another (big name) hosting company joining the fray?

[1] like contegix: <http://www.contegix.com/infrastructure/load-balancing.php>

<comment><USER4> This isn't a big deal in terms of being revolutionary. I doubt they're doing anything differently than anyone else...load-balancing web servers is a pretty well-solved problem at this point. What's a big deal is that Linode already has many fans around here and this makes their product better for a significant portion of their users without adding a lot of cost.

</comment></comment><comment><USER5> I just happened to have been in my linode control panel a lot the past few days and noticed the new tab. I don't think I could have clicked the link any faster. I had to do a double take when I saw 19.95. I almost thought they meant per day.

</comment><comment><USER6> I wonder what they use on the backend to power this. Anyone knows?

<comment><USER7> Most likely they would be using Nginx. I find the offering interesting because most of the companies in need of a load balancer would be able to configure Nginx load balancer quite easily. Not knowing underlying technology and not being able to go deep into modifying the algorithms and other aspects of load balancer makes me slightly uncomfortable, so why should we go with it? The only positive aspect of this offering is automatic health check but Nginx does that already.

I think this offering is nothing more than a GUI for generating nginx configuration files.

<comment><USER8> Most people able to launch and configure Amazon AMIs could configure Nginx too. Yet Amazon offers Elastic Load Balancers. There's a huge market for stuff like this -- just because you can muddle your way through configuring an instance doesn't mean you _want_ to be in charge of configuring and running all the moving parts.

</comment></comment></comment><comment><USER9> Whooo.

One less thing for linode sysadmins to worry about. This is a good move, up there with offering bullet proof DNS services in my opinion.

Edit: shame that the API doesn't look like it supports alarms/thresholds.

</comment><comment><USER10> Does anybody know if these work across data centers? I can't find anything about it in the documentation they have.

<comment><USER11> Joe, if you look at the Howto it shows when you setup the balancer you assign it to a data center (like NJ) and I assume it balances nodes only in that data center otherwise what would be the point of assigning the BalancerNode itself to a data center?

At least that is my thinking.

</comment></comment><comment><USER12> Does the price seem steep to anyone, seeing as it's the same price as 512MB virt but does only load balancing?

<comment><USER13> If your stack requires a load balancer, you would have to pay $19.95 for a dedicated 512 node that you would need to then configure and manage your own load balancer. This new service is also managed, distributed, and has an API. $19.95/month seems like a steal to me.

<comment><USER14> One Linode 512 is not highly available. Two is. The documentation indicates that this service is highly-available.

<comment><USER13> True. I was intending to draw a comparison to what kind of load balancing you can get on Linode for $19.95 if you were to do it yourself. I highly doubt it is possible to roll a superior load balancer service on your own for less than NodeBalancer.

I was recently trying to figure out how I was going to handle this on Linode. I am very glad to see this new service. If NodeBalancer has the ability to fail over to other data centers in the instance of a data center wide outage then I'll be set.

</comment></comment></comment></comment><comment><USER15> Sweet! I <3 Linode.

=]</comment>


Transcript of Conversations among German Nuclear Physicists at Farm Hall (1945) [pdf] - <AUTHOR> http://germanhistorydocs.ghi-dc.org/pdf/eng/English101.pdf <comment><USER2> The Farm Hall transcripts are well known. There's much more of this, including where they discuss how the Americans might have done it.[1] Hahn says to Heisenberg: "If the Americans have the uranium bomb you're all second-raters. Poor old Heisenberg".

Heisenberg had made a big miscalculation. He thought it would take 2 tons of enriched uranium to make a bomb. In fact, it's about 52Kg for a dumb bomb, and and maybe 5Kg with a good design. Oops.

[1] [https://books.google.com/books?id=_qVgeP_UGqsC&pg=PA64&lpg=P...](https://books.google.com/books?id=_qVgeP_UGqsC&pg=PA64&lpg=PA64&dq=Farm+Hall+transcripts+"second+raters")

</comment><comment><USER3> Hahn comes across very sympathetically throughout this.

>HAHN: I must honestly say that I would have sabotaged the war if I had been in a position to do so.

>HAHN replied that he too loved his country and that, strange as it might appear, it was for this reason that he had hoped for her defeat.

<comment><USER4> Otto Hahn is well known for his opposition to Nazism and to nuclear weapons.

<comment><USER5> And he matched that by action, delivering the results of his radio-chemistry masterpiece (e.g. getting results from just a few thousand atoms!) first to his exiled colleague Lise Meitner, which follows a very straight line to the scientific success of the Manhattan project through her nephew, who did his Christmas vacation with her when she got them, and then in England with Peierls figured out the fast fission path to a practical device, and then on to America.

</comment></comment></comment><comment><USER6> >GERLACH: If Germany had had a weapon which would have won the war, then Germany would have been in the right and the others in the wrong, and whether conditions in Germany are better now than they would have been after a HITLER victory –

>HEISENBERG: I don't think so. On the other hand, the days of small countries are over. Suppose HITLER had succeeded in producing his EUROPE and there had been no uranium in EUROPE.

This is now my favourite political quote.

<comment><USER7> Or this one:

> _HARTECK: Who is to blame?_

> _(?) VOICE: HAHN is to blame._

> _WEIZSÄCKER: I think it 's dreadful of the Americans to have done it. I > think it is madness on their part._

> _HEISENBERG: One can 't say that. One could equally well say "That's the > quickest way of ending the war."_

> _HAHN: That 's what consoles me._

Sharp.

<comment><USER5> His "fault" a _very_ direct way: [https://news.ycombinator.com/item?id=12568722](https://news.ycombinator.com/item?id=12568722)

<comment><USER7> I was talking about Heisenberg being sharp. You can see through his comments he can talk with detachment about issues and offer perspective as would a complete outsider. He talks casually, almost as a commentator in a documentary.

>HEISENBERG: _There is a great difference between discoveries and inventions. With discoveries one can always be skeptical and many surprises can take place. In the case of inventions, surprises can really only occur for people who have not had anything to do with it. It 's a bit odd after we have been working on it for five years._

It seems like they're talking about the issues at hand, and he's just sitting there thinking about all of this in an abstract way, like it doesn't matter.

<comment><USER8> Heisenberg is remembered for his theorem on quantum observation being necessarily incomplete. It's not terribly surprising to find he had a perspective-seeking approach in other matters.

<comment><USER7> Pardon me but, can you elaborate? What do you mean by "Heisenberg is __remembered for his theorem on quantum observation being necessarily incomplete __"?

And how does that make him a "perspective-seeker"?

<comment><USER8> I was referring to Heisenberg's uncertainty principle, which states that there is an upper limit to the combined precision of a particle's position and momentum. Bohr's take on this was that the limit is due to these concepts being a poor approximation of actual quantum mechanics, which would fit the scientific eminence co-existing with devout religious beliefs in Heisenberg.

I am no physicist, nor am I well versed in Heisenberg's life, but the quotes in the link suggest to me that he has spent a large amount of time pondering ethics, unseen causality, and attributed intent. That is what I meant by seeking perspective.

<comment><USER7> >I was referring to Heisenberg's uncertainty principle

Now I see.. I only took a few physics courses and mostly associate his name when using the inequality, i.e what I think of when I read " _uncertainty_ principle" (also, doing time-frequency signal processing/analysis). I was thrown off by the expression "quantum _observation_ " because I thought you were talking about the _observer effect_ , something that didn't really make me think of him.

Maybe we can chalk it up to cultural differences, but we've never called it like that here (it was always "Heisenberg's uncertainty principle").

>the quotes in the link suggest to me that he has spent a large amount of time pondering ethics, unseen causality, and attributed intent. That is what I meant by seeking perspective.

Indeed. I also think this is the case for the others, too. What's impressive was his almost forensic approach. His remarks read more like an autopsy than someone being in the situation he was in.

<comment><USER8> > I was thrown off by the expression "quantum observation" because I thought > you were talking about the observer effect

I admit that the observer effect was the first thing that sprang to mind when I was thinking of how the uncertainty principle was stated. That's probably why I worded it so poorly.

> His remarks read more like an autopsy than someone being in the situation he > was in.

Seeing as how all this took place soon after the war, I imagine he may have considered it something of a post-mortem.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> One of the most telling remarks:

 _That shows at any rate that the Americans are capable of real cooperation on a tremendous scale. That would have been impossible in Germany. Each one said that the other was unimportant._

Organization & management were key to winning.

<comment><USER5> Indeed, this I believe is _the_ key insight into the stunning success of the Manhattan project. The scientists worked pretty hard as soon as uranium fission and it's details were discovered, Frisch and Peierls critically got all the fast fission concepts right in 1940, see ([https://en.wikipedia.org/wiki/Frisch%E2%80%93Peierls_memoran...](https://en.wikipedia.org/wiki/Frisch%E2%80%93Peierls_memorandum) And Frisch's story is particularly interesting, see Rhodes' book, doing Christmas vacation with his aunt, who just happened to be the first physicist her back in Germany colleague sent his results to right then.... Vs., for example, again from Rhodes' book, a clerical mixup ruining the saving throw for the German effort, the Nazi political types got invitations for the wrong seminar, one on very technical stuff instead of the pitch for atomic stuff (which, if they'd done _everything_ right, they _could_ have pulled off, I think).

But it took a long time to light a fire under the American authorities, and it wasn't until the absolutely critical replacement of his name is a footnote in history with Groves that things really got rolling, on the industrial scale needed, and the scientists and engineers sufficiently focused on the design and execution of the bombs themselves (which for various reasons didn't end up being the afterthought some expected). And he of course picked Oppenheimer to lead that effort, which was opposed by most, albeit he was one of the few uncommitted physicists capable at that level.

These two men organized more than 100,000 people for the industrial production of the required fissionables (90% of the work per Wikipedia), and Grove's drive got those ready in time to forestall Operation Downfall. Heck, they went from the first real test to putting metal on target in 21 and 24 days....

And the design and fabrication of "the bomb" turned out to be massively harder than they expected due to weapons grade plutonium not being suitable for a gun assembly bomb (which is also grossly wasteful of fissionable, if the Little Boy is any guide, as I recall it had 3x critical mass, and a fair amount if it wasn't as pure U-235 as they'd have wanted). Making the implosion concept work was _hard_ , and they got it right the first time....

Read Rhode's book, especially the latter half after the nuclear physics discoveries take a back seat ([https://www.amazon.com/Making-Atomic-Bomb-25th- Anniversary/d...](https://www.amazon.com/Making-Atomic-Bomb-25th- Anniversary/dp/1451677618)) and Grove's autobiography ([https://www.amazon.com/Now-Can-Be-Told- Manhattan/dp/03068018...](https://www.amazon.com/Now-Can-Be-Told- Manhattan/dp/0306801892/)) to learn the organization and management details, they're amazing.

And had much wider effects on the world at large, that we could indeed do such things led to the Apollo program, and of course to too much conceit that "If we can put a man on the moon, why can't we [do something very different and a lot more intractable, probably without even a clearly defined goal]?"

</comment></comment><comment><USER10> "The Atom Soldier" [https://www.youtube.com/watch?v=CthmRe- IU_Y](https://www.youtube.com/watch?v=CthmRe-IU_Y) This episode of the United States Army's "The Big Picture" details the tests conducted at Frenchman's Flat, Nevada, in January of 1955. The Army, based at Camp Desert Rock, utilized thousands of ground troops in an effort to establish the proper coordination between the foot soldier and the atomic blast.

</comment><comment><USER11> Some of them seemed relieved the war was going to be over. It was also interesting they weren't that interested in winning.

HEISENBERG: One can't say that. One could equally well say "That's the quickest way of ending the war." HAHN: That's what consoles me

WEIZSÄCKER: I believe the reason we didn't do it was because all the physicists didn't want to do it, on principle. If we had all wanted Germany to win the war we would have succeeded.

<comment><USER12> Might they have known or suspected that they were being recorded? Their words may have been chosen to make them sound good were they to be brought before a tribunal.

<comment><USER3> Especially considering they were very familiar with an oppressive regime known for its secret police and intelligence gathering from various agencies.

</comment></comment></comment><comment><USER13> > WEIZSÄCKER: One can say it might have been a much greater tragedy for the > world if Germany had had the uranium bomb. Just imagine, if we had destroyed > LONDON with uranium bombs it would not have ended the war, and when the war > did end, it is still doubtful whether it would have been a good thing

I believe this should be "...and if it _did_ end the war, it is still doubtful..."?

<comment><USER14> No, I think its exactly right. The war _would_ have ended eventually, somehow, and its doubtful that the change to how it would have wrought by the German use of the A-bomb would have a good one.

</comment></comment><comment><USER15> Very cool Article! For all the political discord going on in this day and age, reading this transcript really does make me feel proud to be an American.

<comment><USER16> I actually agree. It seems there was no other time in recent history when we were truly in the right about so many things. I believe there are some passages in this document that touch on this:

"HAHN: I must honestly say that I would have sabotaged the war if I had been in a position to do so."

"...They then went on to discuss the feelings of the British and American scientists who had perfected the bomb and HEISENBERG said he felt it was a different matter in their case as they considered HITLER a criminal..."

"WEIZSÄCKER: Our strength is now the fact that we are 'un–Nazi'."

Many of the physicists mentioned here expressed doubts about the Nazi regime. Perhaps it could be said that they didn't achieve the bomb because, in many ways, they didn't want their leaders to possess it. So there was a kernel of doubt preventing them from doing so. On the other hand, the Americans did not have that problem since they "considered Hitler a criminal" and viewed it as imperative that they win the war at any cost. Maybe this made the moral question of whether or not to achieve the bomb less of an obstacle for them. That gave a psychological benefit which facilitated the work they were doing.

<comment><USER15> Yes that is an excellent point! Moral superiority and the imparitive to act are highly motivating factors. What's interesting is that when faced with the opposite senario, humans tend to default to inaction rather than be a whistleblower. Moral superiority is only motivating if the majority is on your side.

<comment><USER5> Perhaps the single most curious things in Rhode's book is what put them off the path of graphite moderated natural uranium reactors, the work of a single unreliable scientist who, as it happened, was not using pure enough graphite (too many neutron poisons, it was quite a challenge for us to get graphite pure enough). That pretty much dead ended their efforts on the science front, heavy water natural uranium reactors are quite possible ([https://en.wikipedia.org/wiki/CANDU_reactor](https://en.wikipedia.org/wiki/CANDU_reactor) although I remember reading somewhere the Canadians had access to extra rich in U-235 uranium), but definitely not trivial, especially when we were zapping their supplies of heavy water from Norway.

</comment></comment></comment></comment><comment><USER17> > HEISENBERG replied that had they produced and dropped such a bomb they would > certainly have been executed as War Criminals having made the "most devilish > thing imaginable"

Heh. There's a little piece of truth to how war crimes are prosecuted.

<comment><USER18> I still don't understand why Japan gives us a pass for nuking two of their cities.

<comment><USER19> Because they started it and would have killed and estimated million of our own (millions of their own!!!) invading the home islands. Why does this happen every damn time it comes up on HN. We didn't just say "hey, fuck those nips". It was the best option for everyone involved.

<comment><USER20> It's not as clear cut as you make it out to be in my opinion. Please think twice and look at the aftermath and devastation that resulted from using nuclear bombs on a civilian population.

Both sides were at fault, but to say that the U.S. was _objectively_ right is an oversimplification.

<comment><USER4> The invasion of Okinawa killed something like 140,000 civilians, in addition to the horrific military casualties. That's _just Okinawa._

<comment><USER20> Holy shit, that's insane...

<comment><USER4> The civilian death toll just in ETO Belgium is higher than that of Nagasaki. War is fucked up.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Careful. Start talking about the US defeating Germany and the Russians will have something to say. There is good reason why in the US it is called WWII and in Russia "The Great Patriotic War". The walk from Moscow to Berlin was much longer than from France.

<comment><USER15> It's not so much the Americans defeating the Germans that makes me proud, but rather the immense technical achievement that was done in such little time out of necessity. It is a perfect example of the American ingenuitive ideal. It's shouldn't be taken as a slight to other nations but rather as admiration for the accomplishments of those who came before me

<comment><USER21> But don't forget that Manhattan was a three-country effort. Don't forget where the uranium came from, or the number of scientists brought in from all over the allied nations.

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

<comment><USER15> Almost all of the enrichment process was done at oak ridge in Tennessee. It even says so in the Wikipedia page you posted.

<comment><USER5> On the other hand, we were handed on a silver platter a huge supply of hand sorted pitchblende from the Belgium Congo, with an _average_ uranium content of 60-65% (!!!), without that we wouldn't have finished in time to finish the war.

All due to one foresighted Belgium who had learned would be a _very_ bad idea to let the Nazis get their hands on it, and arranged shipment of a lot of it to America. Where it sat in a warehouse until Grove's men showed up and were actually serious about buying the stuff, after e.g. the State Department and everyone else he'd contacted had blown him off, this is [https://en.wikipedia.org/wiki/Edgar_Sengier](https://en.wikipedia.org/wiki/Edgar_Sengier) but the greater story can be found in Rhodes' and Groves' books.

<comment><USER15> Its not the Uranium content that matters, it's the ability to extract U235 from U238.

<comment><USER5> It counted because we had enough raw uranium to, indeed, separate one bomb's worth of U-235 in time, but more importantly to fuel the natural uranium reactors in which we bred plutonium, which got into high gear faster than the former.

By comparison, in the link I included is the statement that " _To illustrate the uniqueness of Sengier's stockpile, after the war the MED and the AEC considered ore containing three-tenths of 1 percent as a good find._ ", which comports with my memory.</comment></comment></comment></comment></comment></comment></comment>


Lazy-j: Simple lazy initialization library for Java - <AUTHOR> https://github.com/danrien/lazy-j <comment><USER2> The 'holder pattern' lazy initialization is more compact although it depends on understanding the JLS/JVM why it works.

[https://en.wikipedia.org/wiki/Initialization-on- demand_holde...](https://en.wikipedia.org/wiki/Initialization-on- demand_holder_idiom)

<comment><AUTHOR> Yes I'm aware of it - but I do not prefer the method for the reason you mention.</comment></comment>


The real cost of South Africa's most expensive website ($15m) - <AUTHOR> http://www.timeslive.co.za/scitech/2013/03/05/the-real-cost-of-sas-most-expensive-website

<comment><AUTHOR> It turns out that the amount allocated to 'Development and Creation', 'Testing' and 'Implementation' was $191 436, a fairly small proportion of the total. $2.1 million alone was spent on 'Planning' and 'Design'.

It's difficult to find any legitimate costing in these estimates, especially as more complex and more important South African government sites have been created and deployed for as little as $27 670.</comment>


How to Become a JavaScript Badass - <AUTHOR> http://www.clientcide.com/deep-thoughts/how-to-become-a-javascript-badass/ <comment><USER2> If you want to really understand the language, do what I did, and write a compiler (<http://jurassic.codeplex.com/>). You'll learn about fun oddities, like why the lexical scope introduced by the catch block is different from any other type of scope and why declaring variables inside an eval is different from declaring variables in the parent scope.

</comment><comment><USER3> Seriously? "Join a startup."?

Here's how to actually be good at JavaScript, or anything. Practice.

<comment><USER4> Because start-up require people to do all kind of stuff. You'll learn front- end and (some) back-end and will have bigger picture, which generally is "A Good Thing".

<comment><USER5> I currently work at a largish consulting firm and get all those things, plus I don't have to settle for "long hours and low pay". Perhaps "work at a company that lets you work on interesting problems and learn new skills" would be far better advice. There is no reason why that has to be a start-up, nor is there a guarantee that a start-up will give you those things.

<comment><USER4> True, there's no guarantee. There's no guarantee that you'll find "work at a company that lets you work on interesting problems and learn new skills". Everything here is subjective. :]</comment></comment></comment></comment>


Webcam was invented to check coffee levels without walking to the breakroom - <AUTHOR> https://brdct.app/l3kBxYVxHfv5 <comment><USER2> Not too long after that was _Tabatha 's days at work_, which still has an archive!

[https://www.media.mit.edu/memorial/martin/snaps/](https://www.media.mit.edu/memorial/martin/snaps/)

</comment><comment><USER3> One of the most important inventions ever was invented due to laziness. Amazing!

<comment><USER4> By the person who was too lazy to fail.

</comment></comment><comment><USER5> The Internet Coffee Pot Server...</comment>


Scientist postulates 4 aspects of 'humaniqueness' differentiating human and animal cognition - <AUTHOR> http://www.biologynews.net/archives/2008/02/18/scientist_postulates_4_aspects_of_humaniqueness_differentiating_human_and_animal_cognition.html

<comment><USER2> For those who just skim /newcomments, the four components from the article are:

\- the ability to combine and recombine different types of information and knowledge in order to gain new understanding

\- to apply the same "rule" or solution to one problem to a different and new situation

\- to create and easily understand symbolic representations of computation and sensory input

\- to detach modes of thought from raw sensory and perceptual input</comment>


Speed trading may be heading out to sea - <AUTHOR> http://www.cnbc.com/id/42469449/

<comment><USER2> Errrmmm, sure - the "halfway point" for the data between New York and London is "in the middle of the ocean", but floating above it in a boat isn't going to give you access to the fibers down ion the ocean floor.

I call bullshit.

<comment><USER3> Radio.

<comment><USER2> Really? You've either gotta keep the carrier frequency down low enough to let it bend around the earth - which limits the bandwidth you can transmit, accept the vagaries of shortwave radio transmission - which doesn't seem to be what you'd need for HFT applications, or lose the several hundred milliseconds it takes to get to geo-sync orbit and back _twice_ - which would lose out speed wise to anybody on the ground at either end who only needs to get his signal up to orbit and back once.

I don't see how radio helps much?

(perhaps a string of line-of-sight high frequency repeating stations? At a first approximation assuming 100m (330') tall towers you get ~36km to the horizon, so you'd need ~150 towers with repeaters on them to cover the ~5500km from London to New York. I guess that's not _impossible_, but even if you could stack up the infrastructure required, the latency in those ~150 repeaters would need to be very small to beat the guy sending his data through the fibre on the sea floor with a theoretical ~20ms ping time, and a quickly googled practical pingtime of ~100ms. The radio options still requires the ~20ms speed-of-light propagation time, but needs to get the signal through ~150 repeaters as well, compared to just the one on each end of the fibers (I _think_ the optical repeater/amps used on oceanic fibers are zero latency...)

<comment><USER3> Good points.

AWACS – or analogous commercial aircraft regularly in convenient positions?

Or far fewer towers/tethered-transmission-balloons at much higher altitudes?

Or even unmanned constantly-flying communications platforms – 'SkyStation' was one such blimp-based concept from the 90s.

Wikipedia suggests the actual service distance from an elevated antenna is a bit larger than the simple geometric estimate. Also, I think you've doubled the necessary number of 100m-high relays: if each tower reaches the horizon at N kilometers, they reach another equivalently-elevated tower at 2N kilometers.

Seriously, though, if there was something to this, they could eventually splice some optimally-positioned platforms into transatlantic cables (existing or new). Of course then the 'optimal position' would then be more a function of available cabling than of natural geometry/geography.

</comment></comment></comment></comment><comment><USER4> "With multiple players engaging in high-speed trading - buying and selling stocks at literally 90 percent the speed of light"

This sentence seems meaningless - it's comparing units of time to units of velocity. My best guess is that it means trades are made in 90% of the time it would take for the data to simply travel the distance between the exchange and the server, but that is not at all clear.

<comment><USER5> Duh, just read a few paragraphs up: "[funds] could soon be relocating ... to defy the laws of physics". It's pretty obvious to anyone with half a brain that if they can defy the laws of physics, selling stocks at 90% of the speed of light is trivial. (Although once you get above 90% you start to run into some limitations.)

</comment></comment><comment><USER6> This needs to be stopped, seriously. I refuse to believe that HFT really adds anything of value to the world.

<comment><USER7> Why do you think HFT does not add any value to the world?

<comment><USER8> How would it? What positive externality is generated by HFT's winning and losing money from each other?

Are you arguing that the market liquidity provided justifies the amount of effort invested? Obviously it does in some purely capitalistic sense, but what is really created by this activity.

<comment><USER7> So you are arguing extremely intense competition is useless.

From my point of view, market participants make a living by their ability to execute OODA loops. The bot trading wars is a more extreme version of the competitive process.

<comment><USER9> Yes, extreme competition is useless.

A level of competition is good, because it makes people do their best. But as soon as it becomes too cut-throat, resources are wasted on auxiliary things beyond just being the best and most cost-effective.

These electronic trading boats would be an excellent example of "market failure" in this regard.

Instead of actual trading boats to trade their food and stuff, we'll now sit in the middle of the ocean to correlate some arbitrary signals... Like excessive speculation in commodities, it doesn't add value.

Don't tell me "it adds liquidity" because I already know that. One could argue we have massively enough liquidity already in the things that would actually be arbitraged here.

The financial sector overall is much too big: <http://www.voxeu.org/index.php?q=node/6328>

<comment><USER10> "These electronic trading boats"

Wait... is this a joke?</comment></comment></comment></comment></comment></comment>


200 devs switch to IntellJ because of Eclipse bug - <AUTHOR> https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193#c22

<comment><USER2> Two posts down: "As an employee for expedia.com, I can say that we support both Eclipse and IntelliJ and we currently have developers using both. Some developers have switched to IntelliJ and this bug was a contributing factor. I use and prefer IntelliJ for several reasons, and have been using it since before we knew about this issue."

200 out of millions hardly seems like news.</comment>


Europe is blowing itself apart over Greece - <AUTHOR> http://www.telegraph.co.uk/finance/economics/11724924/Europe-is-blowing-itself-apart-over-Greece-and-nobody-can-stop-it.html

<comment><AUTHOR> From the article:

"Greek premier Alexis Tsipras never expected to win Sunday's referendum on EMU bail-out terms, let alone to preside over a blazing national revolt against foreign control.

He called the snap vote with the expectation - and intention - of losing it. The plan was to put up a good fight, accept honourable defeat, and hand over the keys of the Maximos Mansion, leaving it to others to implement the June 25 "ultimatum" and suffer the opprobrium."

<comment><USER2> If he wanted to lose he would simply say "Vote NO for exit from the Eurozone's burden".

</comment></comment><comment><USER3> I really don't get this. The Greece population is barely bigger than the population of Los Angles county. It's GDP is 60% less than Los Angeles yet they are $318-Billion in debt, of course they can't pay it.

But most confusing is how this is couched as potentially destroying the Euro.

"...Yet if Greece is in turmoil, so is Europe. The entire leadership of the eurozone warned before the referendum that a "No" vote would lead to ejection from the euro, never supposing that they might have to face exactly this...."

The European Union has no constitution, no "all powerful" executive, judicial, or legislative power over any it's "states" and worse than that there are seemingly no consequences when a states over borrows and under produces.

Imagine if Los Angeles said, "Ok, we are defaulting, we are creating our own currency, bye bye!" It would not fly and neither would a bailout.</comment>


Tectonix Uses "Anonymized" Cell Phone Data to Track Spring Break Migration - <AUTHOR> https://twitter.com/TectonixGEO/status/1242628347034767361 <comment><AUTHOR> Found this visual analysis of "anonymized" cell phone data interesting. How is it truly anonymized if you can track the movement of the devices? Correlating data over an extended periods can help you identify the device owner just be seeing its daily movements (home locations, work locations, frequently visited places, etc.).

If anyone could explain how this isn't concerning I would love to hear more information on what is done with data like this to make sure it's truly close to anonymous. Would like to hear the other perspective.

<comment><USER2> It has been clear for a while now that many data sets can be "de-anonymized" be they tax records or particularly location data. I have seen fitbit "anonymized" data of my own movement about our farm, of my wife's typical running route through our woods, of patrol routes around fire bases overseas and even movement of analysts within the pentagon.

Is it creepy, to be sure yes, but honestly it can't come as a surprise to you as a member of a "hacker news forum" that dozens of popular 3rd party apps collect and sell your location data "to improve your experience". Apps that you and I and more or less anyone else told "go ahead and collect this data and sell it to your partners".</comment></comment>


Cryptography: why modes matter, and why 'encrypted' is not always 'unreadable' - <AUTHOR> http://geekosaur.com/2010/12/the-geekosaur-guide-to-not-sucking-at-cryptography-part-one-mastering-modes-is-mandatory/

<comment><USER2> You should give proper attribution for your images.

<http://en.wikipedia.org/wiki/File:Tux.jpg>

<http://en.wikipedia.org/wiki/File:Tux_ecb.jpg>

<http://en.wikipedia.org/wiki/File:Tux_secure.jpg>

</comment><comment><AUTHOR> Fair point, attributions modified.</comment>


British Airways shows how not to GDPR - <AUTHOR> https://techcrunch.com/2018/07/19/british-airways-shows-everyone-how-not-to-gdpr/ <comment><USER2> Major props to Mustafa Al-Bassam for his letter to BA. It hits all the points of a classic complaint letter including overall polite tone, citations of applicable law, and asking for a written response within a specific timeframe. IANAL but this looks like a 10 for 10 effort.

Definitely worth favoriting this in case you need to write your own complaint letters in future.

<comment><USER3> My only real complaint about the letter is that he assumes the use of the data is under consent lawful basis. While, I can't imagine any other lawful basis that would work, I think he should have explicitly asked, "Under what lawful basis are you sending this data to these parties". Similarly he should have said, "I don't remember being informed that you were using these data processors. Can you send me the statement that I agreed to". Even under contract lawful bases you _still_ have to inform the customer when you send data to a third party, so this is really important.

<comment><USER4> Easy: they shouldn't be sending the data if there is no lawful basis for processing. This is an offense that is subject to fine if repeated.

Saying "I do not remember" puts the burden of proof on you. Meaning you get ignored.

He is stating that he was not informed properly which press the burden of proof on the airline.

To be compliant under consent rule, there are some rules to be met. For example, there can be no implied consent or implied notification about processing the data. The parties that process the data have to be exactly named including the rationale for providing the data to them. Some kinds of processing has to be ottoman as in service has to be provided even when the person does not give consent. (in case of transportation, this likely applies)

<comment><USER3> Not to press a point, but there is nowhere that BA is saying that they have consent. The question is under what lawful basis are they using that data. If it's consent, then where did I consent? If it's not consent, how do I object?

Keep in mind that consent is only one of the lawful bases. You _never_ have to get consent to use data. In fact, if you are doing things correctly, you will never need consent. You can't assume that they are using the data under implied consent -- there are lots of lawful bases that they can use instead and they need to explain why they used them.

</comment></comment></comment></comment><comment><USER5> How ironic it's coming from TechCrunch.</comment>


Western media shows death only when it is in Africa - <AUTHOR> https://www.aljazeera.com/indepth/opinion/western-media-shows-death-africa-200508111724194.html <comment><USER2> Personally I feel like the exact opposite is true, we never really talk about Africa at all. How many Covid-19 stories have you seen about Africa?

</comment><comment><USER3> tl:dr: The author is a Kenyan media consultant. He highlights that media shows constraint when suffering/mourning/death occurs in own region/culture, but not when it's somewhere exotic. He contrasts Ebola vs covid reporting in western media and predicts more will be shown if the covid epicentre moves to Africa.

Certainly some truth to this, but the early reporting from Italy was also very voyeurism-driven with very vivid pictures showing human suffering and death. That said, the daily mail and fox news will always show human suffering and tell stories to create fear and panic as those sell, more serious media is showing more restraint.

So it might be more a difference in reporting depending on whether it 'hits home' or not.</comment>


Game Programming Patterns (2014) - <AUTHOR> http://gameprogrammingpatterns.com/ <comment><USER2> This is the book that finally helped me grok software design patterns. Gang of four reads like a dictionary while the examples of Game Programming patterns have stayed with me.

If I'm rendering a forest of course I don't want to copy the data for trees a 1000 times so of course I need to use the flyweight pattern

The decoupling patterns chapter is particularly good and will help you understand how to turn each entity in a game into a server which sends events to other entities. That way you end up with many small pieces of a code as opposed to a single giant game loop. The entity component system (ECS) is one of the main reasons why programming games in Unity is so pleasant.

If it wasn't obvious by now, this is not a book about game programming patterns it's the best book on software design patterns that I've ever read. Most software design books seems to think I'm only interested in designing accounting or banking software, why not a game?

<comment><USER3> > The entity component system (ECS) is one of the main reasons why programming > games in Unity is so pleasant.

I agree programming in Unity can be very pleasant. To avoid confusion, I wanted to point out that traditional Unity programming isn't really a typical example of an ECS. Unity's system actually lacks most of the performance benefits you can get from one. This is relevant because Unity is actually currently developing a "real" ECS architecture they call DOTS (data oriented technology stack).

<comment><USER4> To be ultra confusion avoiding you don't necessarily get great perf benefits from the merely organising things as per the ECS pattern. You still need to organise your data around how it is used. Which is why Unity uses archetypes which trade fairly automatic organisation based on entities component signature for increased cost if you add and remove components from them (as it triggers reorganising where that entities components are stored). There are other patterns with different trade offs.

In terms of just mental overhead any form of composition is useful be it Components in the Unity sense or Components and Systems in the ECS sense.

</comment></comment></comment><comment><USER5> I know this book! :)

I had occasion to dig through my sales data, so if anyone is curious, since I first put this book out there, I've sold 26,009 print copies and 13,066 Kindle copies. I didn't count the ePub and PDF sales. It's been translated to Korean, Chinese, Japanese, German, and Polish.

It's incredibly gratifying to see it still helping people six years later. I can't wait until I'm through building the print edition of my second book [1] so people can get their hands on that too.

[1]: [http://craftinginterpreters.com/](http://craftinginterpreters.com/)

<comment><USER6> Thank you for the book and I can't wait to get a copy of it! I did the first part in typescript and it's crazy how much of your java code just works with minimal massaging.

Would you recommend brushing up on C before jumping into the second half, I don't want to just be copying code and miss the real picture.

Just some a stream of consciousness as I read the book and had my mind blown a few times.

[https://github.com/Krowemoh/ts-lox](https://github.com/Krowemoh/ts-lox)

<comment><USER5> It depends on your level of C expertise. It's not very advanced, sophisticated C, so if you're mostly got pointers loaded into your head, you'll be fine. If a few ` _` and ` &` will leave you scratching your head, it's not a bad idea to practice a little before you tackle the book.

The introduction chapter suggests this exercise:

_> To get some practice with pointers, define a doubly-linked list of heap- allocated strings. Write functions to insert, find, and delete items from it. Test them.*

If you can handle that, you should be fine for the rest of the book.

</comment></comment></comment><comment><USER7> I've been programming in the games industry, first at indie scale and now at AAA, and I use almost all of the patterns described in the book in some way. This is an invaluable resource for people to learn not only the sorts of programming patterns used in games, but also the sorts of problems that game developers are challenged to solve.

I've found that google and stack overflow are now worthless for anything outside of checking syntax for a C++ lambda. Everything else I work on is essentially a novel problem set.

<comment><USER8> I 100% agree and I also work in AAA. On the subject of StackOverflow being worthless... I've been working for 4 years now and I have learned pretty consistently over that time that the best way to solve a problem is to just keep digging deeper into the system with the issue.

You will eventually figure out that either the system has a bug or you used it wrong. And along the way you will familiarize yourself more with the system. (and debugging tools!)

The learning effect of this snowballs the more you do it. I'm a year and a half into a UE4 project and am now the "engine person" who people come to with questions or odd crashes.

I have seen every single pattern this book describes used somewhere within Unreal. They are all super valuable to know especially within game programming where problems are novel and often open ended.

<comment><USER7> >I have learned pretty consistently over that time that the best way to solve a problem is to just keep digging deeper into the system with the issue.

>You will eventually figure out that either the system has a bug or you used it wrong. And along the way you will familiarize yourself more with the system. (and debugging tools!)

I identify with this so much. It's a different kind of programming, where you're finding the source of the bleeding instead of trying to just bandage the wound, which is much more what I encountered in the tech industry.

</comment></comment></comment><comment><USER9> See also... the largest previous threads:

2017: [https://news.ycombinator.com/item?id=14475489](https://news.ycombinator.com/item?id=14475489)

2014: [https://news.ycombinator.com/item?id=7646985](https://news.ycombinator.com/item?id=7646985)

2014 ('now finished'): [https://news.ycombinator.com/item?id=7634734](https://news.ycombinator.com/item?id=7634734)

2013: [https://news.ycombinator.com/item?id=6004885](https://news.ycombinator.com/item?id=6004885)

About specific chapters:

2018: [https://news.ycombinator.com/item?id=17845334](https://news.ycombinator.com/item?id=17845334)

2014: [https://news.ycombinator.com/item?id=7543158](https://news.ycombinator.com/item?id=7543158)

2014: [https://news.ycombinator.com/item?id=7466711](https://news.ycombinator.com/item?id=7466711)

The first thread was [https://news.ycombinator.com/item?id=874080](https://news.ycombinator.com/item?id=874080) from 2009, and the discussion is about how incomplete everything is. That's interesting, because how many items with a discussion like that ever actually do get completed?

If I missed any interesting discussions let me know and I'll add to the list.

</comment><comment><USER10> Same author as [http://craftinginterpreters.com/](http://craftinginterpreters.com/) Can't wait for this one to appear in print.

<comment><USER11> This guy really deserves an award. I wonder decades from now, how many people would look back and say how much these books have influenced them.

<comment><USER5> _> This guy really deserves an award._

I have been amply rewarded by both sales and really really nice words from people over the years, so I think I've got more awards than anyone could ask for.

What's interesting is how circular the process is. If my first book hadn't been successful, I certainly wouldn't have written my second book, so I owe its existence to many other people.

</comment></comment></comment><comment><USER12> If you'd like a summary of the book, my study notes are here:

[https://tylerayoung.com/2017/01/23/notes-on-game- programming...](https://tylerayoung.com/2017/01/23/notes-on-game-programming- patterns-by-robert-nystrom/)

</comment><comment><USER13> This is one of the best books available on the subject of design patterns. I highly recommend it for all programmers even those not in gamedev.

Keep in mind that some novice programmers assume design patterns are strict rules and you have to copy all idioms, naming rules etc. but they are just simple guidelines, feel free pick them apart and combine them on your code.

</comment><comment><USER14> According to the "Game Loop" chapter, the "intent" of the Game Loop pattern is to _" Decouple the progression of game time from user input and processor speed."_

[http://gameprogrammingpatterns.com/game- loop.html](http://gameprogrammingpatterns.com/game-loop.html)

The chapter goes on to assert:

> _Game loops are the quintessential example of a "game programming pattern". > Almost every game has one, no two are exactly alike, and relatively few > programs outside of games use them._

It seems to me like audio programs would typically be organized using something very close to the Game Loop pattern, though? A loop with where a batch of data is rendered on each iteration, decoupled from the processor because of the need to match the sample clock.

Is there a resource out there that describes audio programming patterns for organizing the whole program? Most of what I've read describes how to use an existing framework — e.g. how to write a plugin — and while that's not surprising, I'd really like to explore all the possible options for high-level organization of a real time audio app. I haven't ever seen something similar to this "Game Loop" chapter for audio.

<comment><USER15> Yeah, I imagine anything that needs to produce output continuously independent from user input, while quickly responding to user input, needs this kind of loop.

At the same time, while most games these days need it, I don't see why a purely turn-based game would need it. If you only produce output when the user gives input, you probably won't need it. Those kind of games are rare these days, but roguelikes are still getting made apparently.

</comment></comment><comment><USER16> I had a bit of difficulty with this book. Loved reading it in every way (style, content, clarity, etc.) - but in parts[0] of every section I found myself thinking, "wait - of course that's what I'd do... but that's just, like, the thing to do... why is it a pattern? Does it really matter if I call it that pattern or if I don't know the pattern name?"

Maybe it's because I didn't learn coding in university, or because most of my career has been spent in _very_ small teams with little need to use pre- established jargon, but I get slightly annoyed when I see discussions about this pattern or that pattern and I have no clue what they're doing, even if I've myself used that "pattern" dozens of times without knowing the accepted name for it. YMMV

[0] the other parts would be when it got into the nitty gritty of solving a specific problem instead of the generic pattern. For example, propagating transforms using the |= trick. That stuff was great for me.

<comment><USER5> _> I get slightly annoyed when I see discussions about this pattern or that pattern and I have no clue what they're doing, even if I've myself used that "pattern" dozens of times without knowing the accepted name for it._

Having an agreed-on name for it _is_ how you avoid that frustration.

<comment><USER16> Hehe - I wasn't sure which person to reply to... then I realized, it's YOU!

First of all - I want to say thank you. I really really did enjoy the book and smiled at the picture with your dog (as well as all the programming stuff ;)). Honestly, I've recommended it to others enthusiastically and got a lot out of it. Thanks!

I totally agree with what you and others said. I get it - and the only way I've been able to get away with not knowing the names of some of these patterns is precisely because I've only worked in very small teams and had a lot of autonomy. Also, for async/internet discussions I often have enough time to look it up if someone uses the jargon, and because I've encountered the names/concepts before (like in your book) it doesn't take long to catch up to the conversation.

That said - I'd like to explore one more avenue... is it possible that not seeing things as patterns allows for a more intuitive grasp? e.g. if I want to do things based on some current state, yeah I could reach for "statecharts" or "finite state machines"... but thinking of things as enums with switching based on the enum value might lead to a more intimate grasp of what's going on, and clearer insight into the different ways to hack around the problem? That might not be the best example (I've basically described a state machine and then said "how about not using a state machine") - feel free to substitute a better one if the question makes sense.

I guess I'm wondering if maybe there's an advantage to solving these things over and over but not seeing them as patterns? Not saying I'd recommend it.. just, if there's a silver lining to a bit of ignorance?

<comment><USER5> _> is it possible that not seeing things as patterns allows for a more intuitive grasp?_

Yes! I think about this often. There is sort of a Zen or Bruce Lee aspect where thinking of things strictly in terms of named categories can lead to overly rigid thinking and cause you to avoid better solutions simply because they don't have a name and don't seem as "real".

There is a balancing act, though. When we write code on a team, there is a real value to _shared_ understanding of the codebase. Sticking to familiar categories, even at some minor expense of fitness to the task, is probably a net gain if it makes it easier to the entire team to understand what the code is doing and why.

It's also important to remember that the primary reason the Gang of Four wrote Design Patterns and called them _patterns_ after Christopher Alexander's A Pattern Language is because they are _not_ rigid copy/paste structures. If they were, we'd just call them data structures or algorithms.

The fundamental premise of why we call these patterns is that each manifestation of a pattern will appear slightly different, shaped by the context in which it is applied. That's why you don't often see resuable "pattern implementation libraries".

Good literature on patterns stresses this flexibility. Less good literature tends to just say "here's the thing that solves all your problems" and discourages readers from thinking deeply.

<comment><USER16> Btw, I _think_ this exact concept might have been dealt with a bit in Zen and the Art of Motorcycle Maintenance. I just can't figure out which viewpoint falls into the "classical/analytical" and which falls into the "romantic/intuitive"... an argument could be made on either side, and as you said it's best to master both and find the balance. Food for thought!

</comment></comment></comment></comment></comment><comment><USER17> So far with game programming the most difficult problem I've had is input states. There doesn't seem to be a clean way to manage it that doesn't get very messy, very fast. Even though it should be easy to manage since it's just a state machine!

<comment><USER18> By input states do you mean stuff like knowing whether a key is currently pressed or a mouse button is currently held down? Could you explain what you mean by it gets messy?

<comment><USER17> I mean segregating mouse actions. So: Drag, Click, etc. Also handling selection events and so on. I've been using love2d, which basically means you have to set up those manually. Then building a state machine in lua gets very messy.

I dunno, maybe I'm just overthinking it

</comment></comment></comment><comment><USER19> Loved this book! Reads really well.

Author here: [https://twitter.com/munificentbob/](https://twitter.com/munificentbob/)

<comment><USER20> Also author here on HN: [https://news.ycombinator.com/user?id=munificent](https://news.ycombinator.com/user?id=munificent)

</comment></comment><comment><USER21> I have always wanted to program a 2D game engine in C++ for fun. Mostly as a learning experience but whenever I decide to do it I get intimidated trying to figure out how to design it and give up. Does anyone have any recommendations of resources to get over figuring out how where to start?

<comment><USER22> My advice is to follow gaming history and reuse engine code as much as possible. Use SDL2 as it is barebone and yet privides you sophisticated tools.

Here is a list of 12 games that I picked because I'm biased towards RPG but you can definitely choose your own wishlist.

Part one: Warm up and basic input, audio and video.

Pong, Snake, Tetris, Breakout, Galaxian, Frogger.

Part Two: Scrolling screen, levels and overall game architecture:

Super Mario, Gradius, Twinbee

Part Three: RPGs which are more or less "complete" games and need some tooling:

Ultima III, Wizardry I Japanese version, Dungeon Master

Part Four: Just keep practicing. You already graduated and can do whatever you want!

Also don't forgrt to read Masters of Doom which will give you tons of inspiration. You can actually walk Carmack's route as well. His first commercial game is an Ultima spin off called Wraith.

<comment><USER22> To correct: Carmack's first commercial game is NOT Wraith, but Shadowforge. But the engine is very similar to the one he used to develop Wraith.

</comment></comment></comment><comment><USER23> What's the gist of the setup for how a complex RPG rule system gets coded up? Like in D&D or a Diablo-like, you have base stats, equipment or classes modify those stats, sometimes the modifiers depend upon the circumstances, and maybe the modifiers get modified. So clearly you don't want to have a Belt of +4 Strength just do wearer.strength += 4 since at some point you'll have to take off the belt or are in an anti-magic field, etc. But what's a good and/or standard design for encoding all that kind of logic?

<comment><USER5> I've run into this exact issue in my roguelike [1]. I don't think I have a fully baked solution yet, but the direction I'm going [2] is a combination of the Observer pattern and caching.

For derived stats, it's not enough to just always recalculate its value from scratch every time you access it. At least in my game, I also want to tell the user when the value of a derived stat changes. If you equip a piece of armor that raises your strength, I want the game to tell you "You feel stronger!".

So each derived stat stores its current value and then has a refresh() function to recalculate itself. The stat is refreshed at the end of each turn. It recalculates the value and then compares its previously cached one. If the value changed, it logs the result and then updates the cache.

[1]: [https://github.com/munificent/hauberk](https://github.com/munificent/hauberk)

[2]: [https://github.com/munificent/hauberk/blob/master/lib/src/en...](https://github.com/munificent/hauberk/blob/master/lib/src/engine/hero/stat.dart)

</comment></comment><comment> lachlan-sneff I haven't had time to read the book yet, but the web version of it is just so beautifully displayed. So, kudos for that :)

<comment><USER5> Thank you, I put a _lot_ of time into the design and CSS.

</comment></comment><comment><USER24> Does this book have much relevance for someone already working in an existing engine like Unity?

<comment><USER25> I think it's probably good to know for every engine and besides, it's a beautiful book.

That being said, armed with my baby knowledge of programming patterns, I then did find it frustrating that today's engines are very high level and quite opinionated about how you code. Take for example Godot. It's not 'quite' an ECS and there are certain ways to script things which you should follow. How to fit the patterns from this book into a Godot game is a whole other ballgame.

This book makes me want to write my own engine. Not to deal with the technical details, but to be in control of the program logic. This excellent book makes you want to worry about the stuff that engines abstract from in their own special way. That's not efficient from the standpoint of getting a game done - things are done in Unity or Godot in their specific way for good and battle- tested reasons.

<comment><USER26> > This book makes me want to write my own engine

Do it!

I've been working on a game engine for several months now. It's a similar kind of hell to working on an OS (though easier to debug...until you start using threads), but it's fun.

</comment></comment></comment><comment><USER27> Ah yes I remember. This site teached me so much, even if I'm not doing game programming anymore. It shows some generally useful patterns and algorithms not only relevant to game development. So if you're a programmer, give it a shot!

</comment><comment><USER28> This book is well written. It has the right amount of detail and simplicity. When I started out in game development the book helped me lot in understanding game development.

</comment><comment><USER29> I wish there was a complete FP engine. Most 'patterns' in FP are (surprise) just functions. There's a lot of blogs with some simple examples from scratch, and that's really cool, but there's a lot of room for a complete system. What isn't needed is all this encapsulation and inheritance I see in many other big engines.

<comment><USER30> Have you heard of the Nu game engine[1]? It is a FRP-based game engine for F#.

[1] [https://github.com/bryanedds/Nu](https://github.com/bryanedds/Nu)

<comment><USER29> I have. It seems pretty neat, but .NET is not for me.

</comment></comment></comment><comment><USER31> This book is fantastic. If the author is reading this, please don't feel shy about expanding the chapter on state machines. It is an extremely deep and valuable subject with a lot of "get your hands dirty" learning to do. Thanks for writing what you did!

</comment><comment><USER32> This book is pure gold. I recommend this to any programmer!

</comment><comment><USER33> I love this book and will not only will it help you for game development, but all software engineering in general. Highly recommended.

</comment><comment><USER34> It's a good book, but it contains lines of code that appeal to the subconscious like:

int destY = unit->y() - 1;

</comment><comment><USER35> dang, prior comments: [https://news.ycombinator.com/item?id=8555285](https://news.ycombinator.com/item?id=8555285)

</comment><comment><USER36> Do you have any recommendations for books about Game Architecture?

<comment><USER4> Game Engine Architecture is a great overview and on it's third edition.

<comment><USER37> First version of this book was an immense help for me early in my career.</comment></comment></comment>


Broken iPhone? Call iCracked (YC W12), the aspiring AAA of smartphones - <AUTHOR> http://www.xconomy.com/san-francisco/2012/11/28/broken-iphone-call-icracked-the-aspiring-aaa-of-smartphones/

<comment><USER2> _It turns out that 30 percent of all iPhone owners manage to break their phones within 12 months of purchasing them. For people under 35, the rate is closer to 50 percent._

I find this stunning, especially the second part. With rates like that I'm kind of surprised that Apple doesn't offer this service at a premium.

I wonder how they gathered the data for this, and how they define "break". (Aside: I remember reading somewhere that the most frequent usage of "it turns out" is for presenting outrageous statistics that have no data behind them).

<comment><USER3> It really makes me wonder why more time isn't spent in making smartphones more durable. People tend to buy them at $100-$200 on contract, not realizing that if they break the phone, they won't get another one for $100-$200. It's more like $600-$800.

Sure, having the thinnest phone made entirely of glass is a really nice selling point in marketing material, but having a phone that lasts the entire term of your contract without needing to be coddled and have the form factor ruined by a bulky case just to protect it is even nicer. For comparison, the Lumia 920 is not incredibly thick or heavy and still looks quite nice, but it can handle an impressive amount of abuse before it breaks:

[http://www.youtube.com/watch?&v=E3c8il_Q6SU](http://www.youtube.com/watch?&v=E3c8il_Q6SU)

<comment><USER4> There are plenty of durable phones out there, but the tech media constantly label them "cheap plastic".

<comment><USER3> "It feels like a premium device" kind of grates on me. In most cases, it's code for "it's made of expensive materials that are really quite fragile". Like glass surrounding a rigid metal frame that guarantees it will shatter on impact with no room to absorb a blow.

<comment><USER5> Yes "feels like a premium device" is code for "made of expensive materials" or, more specifically, "made of expensive materials [assembled to a high degree of precision]." Talking about fragility is misleading: if I want a phone that doesn't get scratched, surely I'd prefer it be made out of glass rather than plastic? since one is much harder than the other. So, of the two, which is the more fragile? Answer: it depends what you're worried about.

<comment><USER3> >Answer: it depends what you're worried about.

True. But what's better, a phone with a plastic outside and a gorrila glass screen that might scratch on the back but the screen won't scratch and the phone won't shatter if you accidentally hit it with a baseball bar across a paves parking lot? Or a phone with a rigid metal exterior covered in gorrila glass that won't scratch but shatters if you drop it from waist height?

<comment><USER3> Sorry, that was typed on my phone. That should be baseball bat and paved parking lot.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> > Key your _ZIP_ code into iCracked's desktop or mobile site, and you'll hear > back within minutes from one of 310 "iTechs" around the _world_

Zip codes are not universal, something many people developing web apps with obligatory zip fields seem to forget.

<comment><USER7> You can click to select your location on the map if you don't have a zip.

</comment></comment><comment><USER8> Empty page after following their wizard to replace the screen on my AT&T iPhone 4 [http://www.icracked.com/fix-my-iphone/iphone-4-gsm-att- repai...](http://www.icracked.com/fix-my-iphone/iphone-4-gsm-att- repair/iphone-4-gsm-att-screen-black.html)

<comment><USER9> yeah me too. chrome 16... fedora.

<comment><USER10> Thanks everyone - We've fixed the bug now and it should be working perfectly

</comment></comment></comment><comment><USER11> _Key your ZIP code into iCracked's desktop or mobile site, and you'll hear back within minutes from one of 310 "iTechs" around the world who will schedule a repair visit, usually for around $100. (The exact charges are up to the technicians, who are self-employed and pay iCracked only for parts.) If there's no iTech in your region, you can order a DIY iPhone screen replacement kit from iCracked for $65 to $75._

So this is more like a 1-800-dentists, where they connect iPhone users with iPhone repair businesses.

</comment><comment><USER12> I've used one of the technicians for a broken iPhone and it was awesome. Does anyone know if they can fix iPad screens and iPad mini screens?

<comment><USER10> We sure do! We can also buy it from you so you can get the new mini!

<comment><USER13> What about iPhone 5s? Referred someone to you guys the other day and they came back that you couldn't fix it.

<https://twitter.com/amuse/status/273143021653069824>

</comment></comment></comment><comment><USER14> I ordered a DIY kit from iCracked to repair the broken screen on my iPhone, and it worked out really well.

If you are handy with tools, and not afraid to disassemble electronics, the DIY kit is totally awesome. If not, get it done by an iTech.

<comment><USER15> I successfully did the same for my wife, but I have some gripes about it:

1) The instructions were not complete! It only walked me through disassembly and attaching the new screen. I had to walk backwards through the instructions to get the phone assembled, and I felt the instructions left enough ambiguities that I'm surprised her phone doesn't show any side effects.

2) The pictures on the instructions were WAY too small to be of much use. In one case the circle designating where the screw to remove resides was not over the real location.

3) The instructions implied that the manual was magnetic for holding screws - it was plain printer paper.

Overall I got the job done cheaper (and faster) with iCracked than sending it away, but I'd like to see my gripes addressed before doing it again. This was for the 4s if anyone cares.

<comment><USER14> Instead of RTFM, I used the video on the site. The one time not RTFM worked out, I guess.

</comment></comment></comment><comment><USER16> I tried to use iCracked a couple weeks ago and they didn't have the supplies in place to fix an iPhone 5. Needless to say, I was pretty disappointed.

<comment><USER17> When I called iCracked about the same thing, they (very honestly) told me iPhone 5 screens are uber expensive and they currently cost more than it would to get a replacement iPhone 5 from Apple, which is currently $229. The way the markets work though, iCracked said they will be swapping those screens out at half the price pretty soon. I'm assuming it's the in-cell technology in the new screens that makes them so expensive.

</comment></comment><comment><USER18> This seems kind of expensive, since I found a guy in Houston who put a new front on my broken iPhone 4 for $75.

<comment><USER17> Yeah, there are definitely people doing it way cheaper, but the quality is terrible and there is no warranty!

</comment></comment><comment><USER19> How did their founder's iPhone have a collision with a ceiling fan?

<comment><AUTHOR> AJ Forsythe explains that in the story: "That was a function of being in college. It was an underhand toss to a roommate—'Hey, the phone's for you'—and the ceiling fan intercepted it."</comment></comment>


An Accurate Comparison of Perl 5 and Rakudo Star - <AUTHOR> http://www.modernperlbooks.com/mt/2010/07/an-accurate-comparison-of-perl-5-and-rakudo-star.html

<comment><USER3> One interesting possible side-effect of a post like this is that it points out the extent to which Perl is or can be used for more than something extremely simple.

I suspect there may be lots of programmers who've used Perl, or seen it used by coworkers, for throwing together quick scripts, but don't think of it as suited for larger projects, or as having any particularly interesting or advanced linguistic features.

Chromatic lists features that are built into Rakudo Star, but he also lists how they're available as add-ons to Perl 5. That may bring positive attention not just to Perl 6, but to Perl 5 as well.

<comment><AUTHOR> And there are lot of places where Perl5 is being used in big applications or processes. The City of London and The Genome Project spring to mind but there are many more that discreetly just carrying on doing their job without too much fuss: <http://news.ycombinator.com/item?id=1537848>

</comment></comment><comment><USER4> I agree with the post completely - it's correct, detailed, etc. Yet, I think it completely misses the point of the original comparison. Most of the time when I use Perl, it's because I need something extremely simple - <USER2> like sending some specifically generated bytes over TCP, or running _perl -e 'print "a"x40'_ in the console. I don't need "Parser manipulation", "Advanced object system", "autoboxing", "Coroutines", "Parse tree manipulation", etc.

So why are they loaded at all? Is Perl6 supposed to be only for "proper applications" and medium-sized systems with their own DSLs? Are the famous "Perl one-liners" dead as far as Perl6 is concerned? I agree with the comments on LWN that said - yeah - you can optimise it, but to bring it down to perl5 level, you'd need to start dropping features loaded "by default".

Or maybe that's not the point? Maybe Perl6 is supposed to be a new language for writing applications? Noone complains that Java is starting too slowly to write scripts in it (or they're insane), then again previous versions of Java weren't primarily used for scripting (so there are no expectations like that).

<comment><USER5> If Perl 5 suffices for your applications, by all means use Perl 5. Perl 5 will continue to be a useful and usable language for a long time.

David Skoll's original post missed the point that plenty of people use these features in Perl 5 I added in my comparison. Adding them to the language as intrinsic features helps everyone who uses them, and everyone who might want to use them, and everyone who currently can't use them because their shared hosting providers won't install them or their system administrators haven't vetted them or they're incompatible with existing projects they've had to write themselves in their own organizations.

In short, Perl 6 exists in large part to improve on things Perl 5 did not do well enough. One of those things is programming in the large.

We'd also like Perl 6 to be usable for one liners and small, short-lived applications, and we're working on mechanisms to avoid paying the cost for features you don't. Yet Rakudo Star has always been "a usable, useful subset of Perl 6" and never "a drop in replacement for everything you use Perl 5 for right now." Bugfixes, new features, modifications, and optimizations will come.

In the meantime, compare like to like.</comment></comment>


Braille Neue Typeface by Kosuke Takahashi - <AUTHOR> https://www.designboom.com/design/kosuke-takahashi-braille-neue-03-26-2018/ <comment><USER2> The idea is very, very clever.

The only character that visually is difficult yo read is the "I" (that can easily be interptreted as a "J") and - to be picky - the "S" is too similar to "5" (but this latter can be easily solved by rounfng a little bit more the "S").</comment>


Recently Open-Sourced Django Apps from Eldarion - <AUTHOR> http://eldarion.com/blog/2012/02/10/recent-apps-weve-open-sourced/

<comment><USER2> Is there a post/tutorial/anything that explains the best practices in customizing and/or extending these apps into our own projects, using or not using pinax?

Should we create new apps that subclass parts that we want to extend?

<comment><USER3> yeah, would be great to test such stuff, i couldn't figure out how to make any of them to work.</comment></comment>