Android A Bad Deal... For Google - <AUTHOR> http://www.informationweek.com/byte/personal-tech/android-a-bad-deal-for-google/240009359

<comment><USER2> Predictable analyst is predictable:

Buying Motorola saddled Google with all the pain of a badly run OEM staffed mostly by people Google would not hire. I hope the patents are worth the pain.

As for Android, it has had the effect of making Google the leader in mobile ads. Otherwise, might Apple, or Facebook, or Amazon, or Microsoft, or some independent ad network be the leader? And then we would have analysts asking why Google didn't make a phone and own the ecosystem.</comment>


Show HN: Please playtest my Card Pirates playing card game - <AUTHOR> http://cardpirates.com

<comment><AUTHOR> I made this yesterday, played it with my kids, and they seemed to like it - <USER2> I made a webpage with the rules. You only need a pack of playing cards and a token per player to play.

Let me know if you like it!</comment>


Government Really Needs Lean... - <AUTHOR> http://www.tendayiviki.com/2013/02/government-really-needs-lean.html

<comment><USER2> Nice observation - how do we balance the idea of holding political leaders accountable if those mechanics prevent them from experimenting and adapting?</comment>


Generate a color PAL composite signal using the built in DACs of the $5 ESP32 - <AUTHOR> http://bitluni.net/esp32-color-pal/ <comment><USER2> Does anyone know if a similar method would work with NTSC?</comment>


Ask HN: How to build a 'full stack' workshop/laboratory? - <AUTHOR> Lots of people have, in the past, built electronics labs. But my perception is that the more 'full stack' lab is a bit more rare for the hobbyist.
Has anyone built their own lab/workshop to have cross disciplinary machines and tools. Oscilloscopes and soldering irons on the opposite side of the room to a lathe and a milling machine.
If so, what did you have in it? How did you put it together? What are the most important machines and tools that are responsible for the majority of things built? <comment><USER2> This is not an answer to your question, but you may like the channel "Applied Science" [https://www.youtube.com/channel/UCivA7_KLKWo43tFcCkFvydw](https://www.youtube.com/channel/UCivA7_KLKWo43tFcCkFvydw) He has a lot of strange projects with very different equipment. (Be aware that the DIY projects are not easy at all.)</comment>


Google Books Ngram datasets - <AUTHOR> http://ngrams.googlelabs.com/datasets

<comment><USER2> Here's some fun I had with the viewer: [http://moultano.blogspot.com/2010/12/history-through- google-...](http://moultano.blogspot.com/2010/12/history-through-google-books- ngrams.html)

I've always kind of scoffed when people complain that a history teacher didn't make what they were learning "relevant" or "relatable" but after playing with this for the first time I understand the benefits. At this point in my life, making something "relatable" means expressing it in terms of term frequency statistics and graphs, so this totally blew me away. I was obsessed with it to the point of mania for the first 24 hours. I believe in history now. :)

</comment><comment><USER3> This is hugely exciting news. I previously used Google's Web1T corpus in NLP experiments and the restrictive license limited a number of potential uses.

This new corpus has a temporal aspect (as it keeps the track of a word's usage over a given publication year) and is additionally under the Creative Commons license. I'd love to see this become the basis of a large scale database benchmark / competition or open source linguistic application.

</comment><comment><USER4> Lots of interesting treasures hidden in this dataset. For example, here is Benford's Law:

[http://ngrams.googlelabs.com/graph?content=1,2,3,4,5,6,7,8,9...](http://ngrams.googlelabs.com/graph?content=1,2,3,4,5,6,7,8,9&year_start=1800&year_end=2008&corpus=0&smoothing=1)

</comment><comment><USER5> For anyone in NLP (Natural Language Processing), this is a goldmine.</comment>


Ask HN: Help develop a site idea, would this be possible? - <AUTHOR>

How would one go about developing a site which offered suggestions to people who wanted to step outside their comfort zones?<p>Sort of an opposite of Aamazon suggest, where instead of 'you may also be interested in', it would suggest things which you would find challenging to your thinking.<p>(I got thinking about this as I tend to find that as I get older I tend to gravitate towards ideas and beliefs that reinforce what I already know to be true rather than challenge me).<p>(Does such a site already exist?) <comment><USER2> Part of the challenge here is that you'd like to say to people, "people like you tried and liked X activity." So you'll need to collect a lot of data on what people tried and liked.

More specifically, you probably need people to enter that data for you. So you might want to combine this with some other business/site/something. For instance, travel ideas would go well with a travel web site, Amazon already does a bit of this for books and so on.

Though that's just basic recommendations. Part of the problem is that "out of their comfort zone" implies a significant likelihood of not liking the activity or object. Part of the problem is distinguishing risky attempts ("I didn't expect to like this, but it was awesome!") from plain old bad ideas ("yeah, this sucks. I kind of expected it to.")

It'd probably be hard to get people to keep coming back to an "expand your horizons" web site that did nothing but collect data and recommend stepping outside their comfort zone -- most people don't want to spend all their time outside their comfort zone, and most people only do a few things that are particularly hard for them, so they don't have a lot of data to give you offhand.

It seems like there must be somewhere that people are already collecting this data, I just don't know _where_ it is, or what gimmick you could use to get it from people. I think just asking them will give you pretty noisy results, though.

<comment><AUTHOR> Maybe a possible solution would be to start with certain well known people (if I could convince them to share) and have them describe 'these things that formed who I am' which might give me a decent start on possible spheres of interest that are more likely to be useful rather than noise?

</comment></comment><comment><USER3> This sounds like a great idea if implemented well, but I just see the potential for a gigantic amount of noise. I mean the set of _all_ topics is mostly highly-specific and uninteresting.

If you would subdivide everything into clusters and nominate a small set to represent that cluster, and only then suggest things that are highly dissimilar (but not opposites), this might be extremely useful. If one already feels strongly about a topic (health, politics, religion, etc) I'm sure that person would know where to seek to get opposing points of view.

If I am interested in programming or math material online, getting recommendations about conflicting problems or programming methodologies would not be very useful. However, getting info about topics like flying gliders, rock climbing or philosophy would be great.. (I'm picking things I'm familiar with, but I would have loved to find out about similar interests and hobbies through suggestion)

<comment><AUTHOR> I totally agree with you about the potential for noise and I very much take on board your issues with getting competing philosophical entities, not simply conflicting things within the same sphere (you actually articulated the issue that was hazy but apparent in my head perfectly).

I guess the first step is probably to try and articulate a few appropriate 'spheres' for people to register an interest in and then try and figure out what opposing sphere would consist of.

<comment><USER4> I had the same thought as yan: simply find the opposing side of whatever your belief/comfort. However, I guess you really want things that are dissimilar rather than opposite. That's tough, but I see what you mean. For example, I recently learned a great deal about economics, which can be fascinating to understand, and how it's connected to governance/politics. Yet few politicians truly know economics, as even President Obama admitted to knowing little about (but learning) in an interview. I guess for an algorithm my approach would be to start amassing pages on different topics like Google, then look for commonalities for alternative subject matter. It would still be tough to make certain connections, though, like the example of economics and politics (during times of non-crisis).

</comment></comment></comment><comment><USER5> Here's a shameless plug for my startup Diddit, which sounds like it might do some of what you're asking about.

On Diddit, you check off a bunch of the things you've done before. There's an endless list of things from the mundane (play frisbee) to the adventurous (eat cow's tongue) and everything in between.

As check things off, the site builds up a profile of your interests. It will suggest other users who share your interests. You can talk to them or check out the things they've done for ideas about things you might wanna do.

After you've built up a profile, the site will also start recommending things it thinks you might like to try. Currently it has suggested that I should visit the grand canyon, so I'm going next weekend.

Anyway, check it out and let me know if you enjoy it.

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

</comment><comment><USER6> I've thought about doing something like this, since I only like to read counter-intuitive books and other things that challenge my beliefs. I think the best way to do this would be by asking a bunch of questions, and making recommendations based on the answers. The problem though is that you can't just recommend one book really, it has to be a combination of books, websites, podcasts, youtube videos, web forums, etc. Which basically means that you'd have to partner with a bunch of people with different sets of expertise, and get each of them to put together an entire experience for the person that could be completed in, say, 20-40 hours.

It's a cool project, but it's just an enormous amount of work for something that would probably be used by only a small handful of people.

</comment><comment><USER7> This may not be exactly what you're going for, but it could be helpful in gathering data and encouraging people to follow through with it. If you were to make a book related "outside your comfort zone" website, what you could do is get recommendations from authors.

So for example, if I happen to like Stephen King, show me a list of books that Stephen King likes to read, but that are completely different from the kind of books that he writes. It might be a bit tricky to build up the database at first, especially considering authors might be a bit hesitant to recommend their competition, but I think it would be a really cool idea.

<comment><USER8> That's a clever idea, but I think it paints the solution in broad strokes. I don't know how, for example, it solves for "I really like 'The Talisman' by Stephen King, but hate 'The Stand' (or almost anything else he's written" for example.

</comment></comment><comment><USER9> I actually think this is one of the inadvertent things we're doing. We show how conjunct words differ between people using the same word. So something like 'recipe' or 'space' can vary widely in it's second-order associations - consider "spicy AND recipe" vs. "cake AND recipe" or "information AND space" vs. "astronaut AND space". People associate themselves with words based on what they write and then we display the clusters and divisions accordingly. Now consider something like 'politics' and 'sports'.

</comment><comment><USER10> >I got thinking about this as I tend to find that as I get older I tend to gravitate towards ideas and beliefs that reinforce what I already know to be true rather than challenge me

Interesting - I seem to be experiencing the opposite. When I was younger, I was afraid of ideas that challenged my worldview. As I get older, I'm more willing to admit uncertainty about how the world works, which has the effect of making me more open to ideas that challenge my assumptions.

</comment><comment><USER11> This information could be extracted from historical data. "See what people that were like you (four or five years ago) like now".

</comment><comment><USER12> What field do you intend to apply this to? My thoughts on the issue are much different if it's music than if it's books and even more different if it's physical objects/gadgets.

I think books would be the place where it would be most interesting to me.

</comment><comment><USER13> It's called Hacker News :-)

Or maybe something like <http://sf0.org/> \- I guess it's a kind of game where people propose challenges for each other.

</comment><comment><USER14> Definitely possible and I would use it (if executed right of course). Pick one niche/market to go after first.</comment>


Remitr Global Business Accounts - <AUTHOR> https://remitr.link/vvr <comment><AUTHOR> Remitr, the Toronto-based business payments platform, today announced Global Business Accounts, the first Canadian fintech solution for international banking. Remitr GBA replaces the hassle of cheques and wire transfers or the need to set up a foreign account.

Remitr Global Business Account (GBA) offers Canadian businesses unique, instant USD, GBP, and EUR accounts and routing numbers to reduce the friction and costs of doing business internationally. GBA is ideal for eCommerce stores, exporters, and SaaS companies that frequently make or receive payments abroad. Remitr customers can receive and hold funds in three currencies until they need to deposit to their Canadian bank account or transfer to one of the 150+ countries Remitr serves.

About Remitr GBA: -Open instant accounts to pay and get paid like a local business in the US, the UK and Europe -Receive payments without incurring bank fees -Get paid faster: Remitr payments arrive in 1 day compared to 3-7 days with banks -Hold currencies to avoid unnecessary currency conversion costs -Save money with no setup or maintenance fees Streamline billing without managing an international entity -Avoid poor exchange rates when you decide to convert funds -Use Remitr's exchange rate with a flat transfer fee of $5</comment>


True Random Number Generator for a True Hacker (2015) - <AUTHOR> https://hackaday.com/2015/06/29/true-random-number-generator-for-a-true-hacker/ <comment><USER2> Couldn't you just hook up a light sensor, temperature sensor, etc and take the last few decimal places of the reading for a random number? You could have multiple and combine the numbers to create larger random numbers. For instance, you have a temperature sensor that reads 72.5946023544 F. This number is always varying, because the temperature in the room isn't constant. You take the last 4 decimal places, 3544, and there's your random number. I realize you couldn't read a temperature sensor to that many decimals, but its just an example. It is never going to create a predictable pattern because its based on something unpredictable.

<comment><USER3> > Couldn't you just hook up a light sensor, temperature sensor, etc and take > the last few decimal places of the reading for a random number

Heat-entropy is of course one of the best and truest sources of random number generation. But a temperature sensor is far more complicated than what you actually need.

All resistors vary their resistance by temperature. This is called Johnson Nyquist noise ([https://en.wikipedia.org/wiki/Johnson%E2%80%93Nyquist_noise](https://en.wikipedia.org/wiki/Johnson%E2%80%93Nyquist_noise)). Effectively, every resistor you have on the board is generating white noise.

The question is how to cleanly separate the white noise out, amplify it to measurable levels, and then how to feed that into a computer. Various "white noise generators" trace their true entropy to heat noise (ex: Intel's RDRAND assembly instruction has an oscillator which likely varies due to circuit- level heat noise).

I bet that the voltage across any 10 MOhm resistor would be very noisy, and that could probably be a source of noise for any hardware generator design. The issue with MOhm level resistors is that you start to vary the resistance with physical interaction (a human is in the single-digit MOhm region: so if a human touches the circuit board, the circuit may drop its resistance down to 5MOhms or less, which could affect your circuit design very severely).

</comment></comment><comment><USER4> Looks fine for home made RNG, but not enough for production. What's missed there, since method is using data from MCU RAM, it's better to test MCU RAM first without XOR. Can we be confident that certain bit will be more likely to invert with XOR than another? Would zero's density depend on page index etc. XOR hides a lot of obvious source data errors, which better to fix before applying XOR to avoid some hidden patterns. Also there needs to be some test for input source, for example if page has less than 90% of "ones", skip it, since it cannot provide enough amount of bit inverts to make it random (we need to have enough '1' to invert every bit several times to make it unpredictable).

<comment><USER5> your 'production' requirements don't have things to do with randomness. its common for cryptographic use cases to have some more steep post processing requirements for randomness sources to avoid some pitfals, but in reality, 111111111 is just as random as 0000000 or 01010101010 as long as it's not a perpetuated pattern?

<comment><USER4> There is no aim to get one or zero in output. We need to have enough ones for XOR algorithm to invert bits. A xor 1 => inverted A. A xor 0 = A. So if we have too few ones, source data will remain unchanged and that quickly become a pattern. The same is if we have too few zeros and amount of inverts become predictable.

</comment></comment></comment><comment><USER6> If you need separate hardware anyway, why not just get a ChaosKey¹ and be done with it?

1\. [http://altusmetrum.org/ChaosKey/](http://altusmetrum.org/ChaosKey/)

<comment><USER3> HackADay is a hardware engineering site. The aim of the site is to explore hardware designs.

The ChaosKey is a standard back-to-back transistor-amplifier, likely using Shot-noise or maybe Avalanche Noise as its source of randomness. Nonetheless, I find it to be not too useful, because any modern chip has RDRAND or RDSEED assembly instructions (which the Intel and AMD CPUs use a simple RNG to generate true randomness to those instructions).

So the only reason you'd be building a hardware RNG is because... you're building a hardware design to begin with. The cool thing about this post is that it requires __ONLY __the microcontroller (no need for the ADC or back-to- back transistors that ChaosKey 's design has).

ChaosKey looks like a standard white-noise generator hooked up to a USB Stick. Learning of other methodologies (like what is discussed in Hackaday) is kind of more interesting.

</comment></comment><comment><USER7> I build an avalanche random number generator based on this: [https://emergent.unpythonic.net/01257868826](https://emergent.unpythonic.net/01257868826)

More fun

<comment><USER8> Hey, that's my website! I'm tickled pink to see it linked in a comment here.

That device ran for literally ages, mostly to produce massive input files for DIEHARDER to attempt to prove its worth as a RNG. I am sure it did that more often than it was used to seed the Linux /dev/random.

The project was also fun because of the "every last cycle" optimization of AVR assembler code to achieve the 2Mb/s generation rate of whitened bits.

<comment><USER7> Yes man, was fun to build it. But I pussied out with the layout etching and ordered them custom etched from ebay as a service. During high school I would have done it myself.

BTW, Do you have an up to date software. I remember I run into trouble the last time I tried to use it.

Great project. Thanks a lot.

<comment><USER8> No, sadly I haven't touched the project in ages.

</comment></comment></comment></comment><comment><USER9> Will it remain random at high/low voltage and temperatures?

<comment><USER10> It seems to be whitened, so as long as there is _some_ random information, it will produce good random numbers (but maybe slowly).

The idea is cool: like how to get a random flips out of a biased coin, as long as each flip is independent. You flip the coin twice, repeatedly for as long as you obtain two equal results. Upon your first encounter of two different results, you map (tails,head) to tails and (head,tails) to head. That way you obtain an unbiased toss.

</comment></comment><comment><USER11> My personal favourite is still the Geiger counter.

</comment><comment><USER12> how about feeding a white noise signal into a microcontroller and have it sample the random voltages and convert it into a string of numbers.

<comment><USER3> > how about feeding a white noise signal into a microcontroller

Yeah, its a lot easier to make an RNG if someone already made one for you. How did you create the white-noise signal itself??

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

The question is: where did the white-noise come from? And is there any physical way we can "prove" that the white-noise makes a good generator?

The simplest design (IMO anyway) is to start with the Shot Noise ([https://en.wikipedia.org/wiki/Shot_noise](https://en.wikipedia.org/wiki/Shot_noise)) that has been well documented in the NP-junction (NPN Transistors, Diodes, etc. etc). The simplest NP-junction is your standard diode... and then just measure the current that goes through that diode (especially if its backwards)

You can measure that current through a series of amplifiers: BJT Transistors to hone in on the noise and amplify it to measurable levels. Then use a microcontroller to read that.

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

I'm no expert on hardware RNGs / white noise generators, but that's the kind of thinking you'd need to make one. You have to start with a principle source of noise, and then build a design to amplify that noise as cleanly as possible.

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

The hypothesis of this "hackaday" post is that the bootup of uninitialized RAM is a true source of randomness. I'm inclined to believe it (at least, the experimental results show it is at least somewhat reliable), but I'm not 100% sure why.

</comment><comment><USER13> I always sample a few least-significant bits from an floating ADC input. That universal background noise should be pretty random, right?

</comment><comment><USER5> the example project of the led curtains, beautiful implementation of his idea. really cool stuff!

<comment><USER14> I tried to search for it but found no pictures. Do you have any?

<comment><USER15> I wish I could find it again, but I saw a project once that was a meter-long stick of white or blue LEDs hooked up to dozens of shift registers. An RNG would clock in ones or zeros at the end of the stick, and they would shift off to the other end of the stick at a pretty high rate. It was a really neat effect! I've been collecting parts to try to recreate it on my own, but... I'd love to be able to find the original again. If anyone else has seen this, I'd like to hear about it.

</comment></comment></comment><comment><USER16> BTW truly random numbers can not be used for live communications encryption as they can not be reproduced by the recipient UNLESS they have a EXACT replica of the random numbers or its audio image in a recording (See: American SIGSALY machine during WW2). However pseudo-random numbers can be reproduced live by the recipient via prearrangement but not easily by an outsider (See: German ENIGMA machine also WW2 vintage).

POTUS Thomas Jefferson invented a really amazing encryption machine in 18th century using a quasi-pseudo-random arrangement which utilized the ancient encryption art of Steganography. (See: Jefferson Wheel Cypher). It helped us beat the Brits here in USA and abroad. :P

<comment><USER17> You are talking about symmetric keys. There's nothing random about it, except for perhaps the generation of said key. If you have a mechanism to generate the same key on both ends, then the mechanism /is/ the key.

<comment><USER18> They're talking about a product that used one time pads, and you know they must be random to work. The pads were put on vinyl records, and used to encode audio signals for telephone lines.

[https://en.wikipedia.org/wiki/SIGSALY](https://en.wikipedia.org/wiki/SIGSALY)</comment></comment></comment>


HazeOver – Productivity Hack for Mac - <AUTHOR> https://hazeover.com

<comment><USER2> Lots of apps out there like this at the moment, isolator, backdrop to name two. What these both lack is the ability to blur out background windows which you guys should definitely look into because that would be awesome to help people focus on the task at hand.

<comment><AUTHOR> I experimented with the blur option in HazeOver a while ago. It did not work out that well in terms of performance and how it feels.

</comment></comment><comment><USER3> Purchased. Works great, thanks :)</comment>


Twitter CEO Dick Costolo calls SOPA blackouts "foolish" - <AUTHOR> https://twitter.com/#!/dickc/status/159014296616058880 <comment><USER2> Well, this post has sunk so far that it won't get attention, but maybe it's time to godaddy Twitter -- or at least, and another HN comment pointed out, "Dickbar Dick".</comment>


WebIDE lands in Firefox Nightly - codepo8-hn https://hacks.mozilla.org/2014/06/webide-lands-in-nightly/ <comment><AUTHOR> This is _fantastic_ and I'm really glad it's being bundled with Firefox and not as a separate download.

As I've said elsewhere, a lot of kids still assume that programming is essentially "magic" done by professionals and they implicitly assume there is no way to getting started at their education level (This is especially true if their parents are non-technical, as mine were). All the resources in the world may exist, but they may not be obvious unless you look for them. When I was a kid I assumed that programmers were all professionals with a billion years of training and their own special equipment. Today I know the only difference between a programmer and a yet-to-be-programmer kid are bigger feet and a coffee addiction, the computers are the very same. But I didn't know that back then - I wish someone told me.

I think it is extremely healthy to have the lowest bar possible to go from _" Hey I like that"_ to _" Can I do that? Can I make it myself?"_ Putting an IDE inside the browser, having no other dependencies between viewing web-pages and making web-pages is an incredible first step.

I await the day any kid asks "How do I make my own webpages?" and we can answer "You've already got everything you need, just press F12."

There's an art to making seemingly insurmountable things appear doable, like becoming a programmer if you have no programmer role models, and I think we should give it more attention. The web makes it easier than ever, and while a bundled IDE isn't going to be the Geocities or Bob Ross equivalent, it's definitely the next step in reducing the friction of getting started.

Bravo, Firefox team.

<comment><USER2> > Putting an IDE inside the browser, having no other dependencies between > viewing web-pages and making web-pages is an incredible first step.

I... um, it's a first step we took 17 years ago, didn't we? [http://en.wikipedia.org/wiki/Netscape_Composer](http://en.wikipedia.org/wiki/Netscape_Composer)

<comment><USER3> [http://www.w3.org/Amaya/](http://www.w3.org/Amaya/) is not as old (1996) but is also pretty cool. I wish they had more funding to explore that idea that the web should be editable (as long as you have the authorization to PUT).

<comment><USER4> The very first web browser had editing built in. That's why HTTP has the concept of verbs in the first place! Otherwise GET would probably be implicit. Forms and POST came later, but PUT and DELETE was part of the original idea behind the web.

I totally agree that browsers should allow editing. Even if you are not authorized to PUT the page back to the server, it would still be useful to be able to edit before you print or save the page locally.

I really have no idea why we were robbed of this capability! It was probably just laziness from the people who wrote mainstream browser and httpd implementations.

</comment></comment></comment></comment><comment><USER5> This should be a separate tool. An add-on, or whatever, but it shouldn't be bundled with the browser. If you think about it, it doesn't make much sense.

Do you see audio mixing/mastering or video editing software being bundled with media players? Or do you see word processors/TeX IDEs bundled with PDF viewers? No, because you wanted to play your Black Sabbath .mp3, or read a .pdf scientific paper.

If you wanted to record your Black Sabbath tribute band and produce the recording, you'd get a digital audio workstation. If you wanted to write your own scientific paper, you'd get a TeX bundle. If you wanted to develop web apps, you'd want to download an IDE. Not use a web browser.

A vast, vast majority of people downloading Firefox wants to _just look at damn web pages_. The ones who want to make them are welcome to get dedicated software. Developers of that separate program for web dev could then go crazy and add a lot of features that wouldn't be possible so easily if it was bundled in a browser. Everyone wins.

So why this? No one is being done a favor by bundling a web IDE with a browser. A bullshit token reason like "it's easier for novices" will not qualify.

<comment><USER6> "Do you see audio mixing/mastering or video editing software being bundled with media players? Or do you see word processors/TeX IDEs bundled with PDF viewers? "

No, and that's a problem. Do you see programming languages shipped with every computer? No, but that's how it used to be. Most shipped with BASIC while Unix shipped with C. I guess Macs come with Python, but just CLI no IDE - not even idle. Is there some reason not to ship development tools? Do you not want the curious to have ready access to dig in and understand the stuff they use every day?

<comment><USER7> They won't though. All you see in web dev tools is the UI as all the actual clever stuff is still hidden away from you on servers.

<comment><USER8> With an increase of client-side apps combined with server api's this is less the case, though, isn't it?

I can imagine quite a few 'web apps' that won't try to actively obfuscate how their client app operates. In those cases having browser-based development tools makes it much easier to tinker with and inspect the app...

</comment></comment></comment></comment><comment><USER9>
      > We're working on a protocol adapter that will allow
      > clients using the Firefox Remote Debugging Protocol –
      > including the Developer Tools and WebIDE – talk to all
      > mobile browsers, regardless of rendering engine or
      > runtime. Our first targets are Chrome for Android and
      > Safari on iOS.

My company expects all of our internal web applications to function on the executives' iPads, but they refuse to purchase Macs on which to debug issues that manifest only on mobile Safari. And since the mobile Safari developer console was disabled in iOS 6, I haven't come up with anything better than alert-based debugging techniques (Firebug Lite was broken the last time that I tried, though admittedly that was a while ago). If Mozilla truly reverse- engineers Apple's remote debugging protocol it would be a godsend for us.

(And if I'm just an idiot who's overlooking some simple way of debugging mobile Safari, please let me know.)

<comment><USER10> Here's a crazy idea: what if we stop buying apple products until they stop pulling this walled garden crap and we are free to use the overpriced hardware we paid for as we damn please?

<comment><USER11> most customers don't realize the garden is walled.

<comment><USER12> Most customers have a better experience _because_ it is walled. Those who care, should indeed not buy Apple products.

</comment></comment></comment></comment><comment><USER13> It's crazy how history repeats itself ... This reminds me of Mozilla Composer ([http://en.wikipedia.org/wiki/Mozilla_Composer](http://en.wikipedia.org/wiki/Mozilla_Composer)) back when the Mozilla Suite was still a thing and Firefox was in its infancy!

<comment> codepo8-hn Not really comparable. Composer was a WYSIWYG editor for web pages; the WebIDE is an editor, but more importantly it manages the packaging and creation of manifest files of apps for you. I started with Composer and the output was so awful that I learned HTML instead. This doesn't hide any code from you or generates things you don't want. The templates of the apps are maintained by the community on GitHub.

</comment></comment><comment><USER14> I've always wondered why developer tools are bundled with browsers. Shouldn't they be available as separate downloads as:

1\. Most people use browsers compared to working with them for development, and

2\. The additional tools just add to the package size and possibly increased resource usage (if they are running with the rest of the browser)?

Thanks in advance for the replies.

<comment><USER15> I don't think Mozilla cares about the file size anymore. 10 years ago they cared about the file size of Firefox, the mandate was that it could not be greater than ~5mb, the stable download is now almost 6 times that size.

<comment><USER16> That wasn't a mandate. It was my proposal so I know. I suggested that we target "about the size of an MP3" because that was the most common unit of download that a lot of people understood in the early 2000s and downloading software was something people weren't terribly comfortable with. I did some quick estimates and came up with 4MB as the goal based on the size of popular MP3s. By the time we shipped Firefox 1.0 in late 2004, we managed to get the download to about 4.7MB.

That was 2004 though. Today the Web is a lot more capable _because_ browsers are a lot more capable. Also, typical download bandwidth for consumers is a lot more capable than it was in 2004.

Most of the growth in Firefox download size since then is a result of Gecko/Web platform feature growth, not the GUI features that users interact with.

That web platform capability isn't free. It takes code to make JS dozens of times faster than it was in 2004. It takes code to add HTML5 and CSS 3 features, WebGL, WebRTC, and all of the other great stuff the Web platform includes today. That code makes the download larger.

That being said, I'd love to see another round of evaluation to see what can be trimmed or slimmed. I don't consider that the same priority it was in 2004 though.

</comment></comment></comment><comment><USER17> Developing a moderately complicated plugins on Firefox and Chrome is a major PITA currently (not to mention that JavaScript is... somewhat moderately PITA to deal with as well).

I just wish that these vendors behind web browsers would put more effort on cleaning up their acts on the plugins development as well (stable and useful docs, tutorials, more tutorials, and mooooreee tutorials, sane development environment without jumping through hoops, better integration with IDEs and whatnot), not just building infrastructure upon infrastructure in which the development and deployment to the said infrastructure is PITA.

</comment><comment><USER18> This is amazing work. I hope it continues to go even further. I'd like to see a browser that is really just implemented on top of a kernel with full programmatic access to everything from the top down: just as Emacs happens to be a text editor built on the elisp kernel, Firefox could happen to be a browser built on a web kernel.

Everything that drives the UI are just functions that could just as easily be invoked from the scratch pad. If you know a bit of javascript you can write a few of your own functions to automate some common browsing tasks. And if you need even more functionality you can dig deeper and write your own libraries that seamlessly integrate into the kernel without a hitch and can be invoked from your own menus.

No plugin tom-foolery or artificial walls around the garden.

Looking forward to seeing how this develops!

<comment><USER19> You are pretty much describing the Firefox architecture. We are invoking Firefox UI code from scratchpad all the time when prototyping things. Some parts of the UI do not use standard Web APIs (e.g. XUL and XBL), as there are different opinions on how the web platform should evolve to fulfill those needs, but if you include all the experimental technologies to this web kernel, we are already there.

</comment></comment><comment><USER20> It's neat and all, but please Mozilla, don't include this with Firefox. At the very least, have a separate lean-version that doesn't have this "fluff" included. And a developer/power-user version that includes it. I understand that web-app development is big, and it's the "new-desktop", but that doesn't mean that this awesome _browser_ should include everything and the kitchen sink.

<comment><USER21> If it's anything like the existing developer tools it'll be fairly hidden and lazy-loaded when needed. I wouldn't worry too much.

</comment></comment><comment><USER22> Looking forward to the new Pheonix when someone gets fed up enough with the current heavyweight Firefox to write it.

<comment><USER16> The challenge here is that Gecko is the heavyweight bit here, not Firefox. If you wanted to shrink the size of Firefox dramatically, you could not do so without removing Web functionality (as opposed to Firefox functionality.)

I'd love to see someone give that a shot. It was really three or four people who "Firefoxed" the old Mozilla Suite and there's nothing stopping some similarly motivated group from giving it a go.

Still, I don't think they'd get nearly as far as we did back in 2002 and 2003, because Firefox is actually very trim and fit. There aren't a lot of extra features to cut and the code implementing most features is smart enough not to waste resources when not in use.

</comment></comment><comment><USER23> Google is working on an IDE inside Chrome, too. It's called Spark: [https://github.com/dart-lang/spark](https://github.com/dart-lang/spark)

</comment><comment><USER24> Yay! Can't wait to download an even bigger package to update my browser.. now with plenty of features I don't need. Looking forward to the {emacs,Lua,Perl}-embedded-Firefox!

</comment><comment><USER25> It makes sense so ship an editor with a reader. So that you can communicate both ways, both create and consume. Now we only need a way to share!

</comment><comment><USER26> Anyone know how I can access this on Windows XP? Don't seem to see the option to click "Web IDE" on Developer tools?

<comment> codepo8-hn App Manager. The label will be renamed in tomorrow's Nightly/

</comment></comment><comment><USER27> Netscape had an editor way back when also.

</comment><comment><USER28> Holy shit that's cool! Makes me want to get a FF phone.. just about now!

</comment><comment><USER29> Always glad to see more things happening in this space, but most devs already BYOIDE and would probably just like better integration with their existing tools:

[http://remotedebug.org/](http://remotedebug.org/)

<comment><USER30> Integration with external editors/IDEs is a very important part of this project. A lot of what WebIDE brings to the party on top of normal editing is device/simulator management as well as the usual Developer Tools inspection and debugging.

So there are three layers of compatibility we expect to see with external IDEs:

0) No integration - Open a WebIDE window with editing turned off and use it (or command line tools that drive it) to manage device connections/pushing/etc. 1) Simple integration - Most of the basic device connection management will be available through command line tools, it should be incredibly easy to drive that through editor/IDE configuration. 2) The whole nine yards: Speak a remote debugging protocol and get full control over the debuggee.

As far as the whole nine yards, you can either use remotedebug's protocol and proxies (although development seems to have trailed off there?), speak each browser's protocol natively, or maybe down the road the protocol abstraction we're working on at Mozilla.

</comment></comment><comment><USER7> Is this itself entirely a webapp?

As an aside, I'm amazed the way Mozilla have co-opted the term "Web" to mean whatever they want it to. The way they've branded all sorts of non-standard APIs in FFOS "Web" APIs to confuse people into thinking these are somehow more open than anything else is impressive.

<comment><USER31> > Is this itself entirely a webapp?

Actually, yes: [http://dxr.mozilla.org/mozilla- central/source/browser/devtoo...](http://dxr.mozilla.org/mozilla- central/source/browser/devtools/app-manager)

<comment><USER7> XUL is a web technology now?

That's my point. It's not.

EDIT: ici: [http://dxr.mozilla.org/mozilla- central/source/browser/devtoo...](http://dxr.mozilla.org/mozilla- central/source/browser/devtools/app-manager/content/index.xul)

<comment><USER31> There is no XUL in there.

<comment><USER32> Last time I checked, the vbox/hbox is XUL. [https://developer.mozilla.org/en/docs/XUL/vbox](https://developer.mozilla.org/en/docs/XUL/vbox)

<comment><USER31> Sure, but that's only in index.xul, which is a very small part of the project. Everything else is plain old js+html (xhtml necessary for localization). Apologies, I didn't notice that when I said "there's no XUL in there".

As a meta-discussion, <vbox> is just a fancy way of saying:

div { display: -moz-box; -moz-box-orient: vertical; }

...which is the old flexbox implementation. But I digress :)

edit: link to the MDN article about `display: box`: [https://developer.mozilla.org/en-US/docs/Web/CSS/box- orient](https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient)

<comment><USER33> We could probably rewrite the entire Firefox UI in HTML nowadays, but that'd mostly be busywork (and would break a bunch of extensions). I would bet that Servo's UI will just be HTML.

<comment><USER34> Servo is just the browser engine, like Gecko. The UI/browser-chrome will be a separate project (named Crow, but not started yet afaik). Also relevant is the fact that Servo wants to be embeddable, like Webkit.</comment></comment></comment></comment></comment></comment></comment></comment>


Vigorous Public Debates in Academic Computer Science - <AUTHOR> http://blog.regehr.org/archives/1430 <comment><USER2> Some of those are classics. The Lipton-Perlis-DeMillo argument against program verification is a good one.[1] They demonstrated that manual programming verification via hand theorem proving is buggy. Automated theorem proving was new back then.

This was an issue back in the 80s for a philosophical reason in mathematics. Mathematics classically approves of short, clever, elegant proofs. The paper- and-pencil crowd was trying to do that for code. In practice, program verification is about mechanized grinding through massive numbers of dumb assertions to catch off-by-one errors.

This used to bother mathematicians. When the four-color theorem was originally proved, it was done partly by hand and partly with computer case analysis. The computer part bothered many mathematicians. The culture has changed. Recently, someone redid the proof with the old hand parts re-done by computer. Since that eliminated some possible human errors, that was a step forward in solidifying the proof.

We also know now how to check a theorem prover. Some theorem provers emit a proof trace, huge files of "Step 2437: apply rule 42 to change 2*X to X+X". Proof traces can be fed into a dumb proof checker which does the indicated rewrite and checks that the expected output is obtained.

So progress has resolved that issue.

[1] [http://www.yodaiken.com/papers/p271-de_millo.pdf](http://www.yodaiken.com/papers/p271-de_millo.pdf)

<comment><USER3> Far as prover verification, these people mostly solved it:

[https://www.cs.utexas.edu/users/jared/milawa/Web/](https://www.cs.utexas.edu/users/jared/milawa/Web/)

They start with small logics you can do by hand in verified code. They gradually build on them, one layer at a time, increasingly sophisticated logics until they have a useful theorem prover in first-order logic. I also found a HOL-to-FOL converter. Since most of their stuff is HOL, that means we're almost done at that point for the verification chain.

</comment></comment><comment><USER4> While not exactly a debate -- more of a fundamental difference in outlook -- these are interesting, completely opposite claims:

Bob Harper[1]:

> There is an alternative… without… reference to an underlying machine… [W]e > adopt a linguistic model of computation, rather than a machine model, and > life gets better! There is a wider range of options for expressing > algorithms, and we simplify the story of how algorithms are to be analyzed.

Leslie Lamport[2]:

> Thinking is not the ability to manipulate language; it's the ability to > manipulate concepts. Computer science should be about concepts, not > languages. … State machines… provide a uniform way to describe computation > with simple mathematics. The obsession with language is a strong obstacle to > any attempt at unifying different parts of computer science.

[1]: [https://existentialtype.wordpress.com/2011/03/16/languages-a...](https://existentialtype.wordpress.com/2011/03/16/languages- and-machines/)

[2]: [http://research.microsoft.com/en- us/um/people/lamport/pubs/s...](http://research.microsoft.com/en- us/um/people/lamport/pubs/state-machine.pdf)

<comment><USER3> So far, evidence is leaning toward latter view where physics imposes hard constraints on how we build our CPU's, etc for max performance. Same with software where certain things keep showing up (eg caching) due to mechanical constraints. Best result would seem to be a combo of abstract models for mathematical analysis and high-level languages that easily map to both those and the machines. Of course, many people have produced such tools. We're going in what appears to be objectively correct direction. :)

<comment><USER4> Lamport also advocates abstract models and high-level specification, but in program logics (based on abstract state machines) rather than in programming languages.

<comment><USER3> That's what I said but in different words. That's slso been where the payoff has beenin about any, automated activity on software. Generally some math notation that's easy to analyze or something close to CPU/memory models.

Langsec is a notable exception where Chomsky's hierarchy paid off big time. The notations and implementations still more consistent with Lamport, though. So, semi-exception.

</comment></comment></comment></comment><comment><USER5> I was a co-author on one of the contentious papers [0] in log-structured file systems, addressing the question of whether log cleaning could be done during idle times (yes, for any reasonable workload).

There was a surprising amount of drama and personal rivalry. While distracting, knowing that our results would be picked apart motivated us to be really rigorous.

In the end, modern file systems take the best aspects of both. Like the RISC- CISC debate, it's hard to draw a firm conclusion about the two ideas because they're tied up with the quality of implementations, and the optimal answer involves a synthesis of the ideas.

[0] [http://www.eecs.harvard.edu/margo/papers/usenix95-clean/pape...](http://www.eecs.harvard.edu/margo/papers/usenix95-clean/paper.pdf)

</comment><comment><USER6> One debate that I thought would be mentioned is "Goto statement considered harmful", "'GOTO Considered Harmful' Considered Harmful.", and "GOTO Considered Harmful" Considered Harmful' Considered Harmful?" I think it's somewhat disappointing that a lot of CS education always mentions Dijkstra's original argument, but not the other side. The latter two can be found here:

[http://web.archive.org/web/20090320002214/http://www.ecn.pur...](http://web.archive.org/web/20090320002214/http://www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf)

[https://dx.doi.org/10.1145%2F22899.315729](https://dx.doi.org/10.1145%2F22899.315729)

<comment><USER7> That's because the original Dijkstra argument was part of a research line that created structured programming. The essay (and the other papers) has really nothing against the usage on that your first link. The real problem was goto into loops or subs, not out of them, and not as switch statements.

Current languages mostly don't even allow the bad kinds anymore, so people can ignore history, and complain that "goto isn't so bad, I've never seen anybody abusing it like he claims in the essay."

<comment><USER8> It's curious how unempirical these debates are.

The empirical approach would be to compare outcomes of different approaches, trying to control the independent variables.

But CS instead seems to be run by polemic, "Well, obviously..." rhetoric, and tribal affiliation.

I've yet to be convinced this is the ideal way to improve the tools and techniques of CS.

<comment><USER9> This is actually the main thing I like about Knuth. Things are either proven, in very strict terms, or they are empirically studied. Also typically in rigorous means.

People usually present his work in terms of proofs only. Typically with big O considerations. Reading him, he very quickly warns of the dangers in big O analysis. (He is still a fan of it. Encouraged it as a math aid for grade school work, at one point.)

<comment><USER10> > Encouraged it as a math aid for grade school work, at one point.

Do you have a link / some elaboration?

<comment><USER9> Apologies for not seeing this yesterday. I believe this is the link. [http://www-cs-faculty.stanford.edu/~uno/ocalc.tex](http://www-cs- faculty.stanford.edu/~uno/ocalc.tex)

</comment></comment></comment></comment></comment></comment><comment><USER11> I had heard vaguely of the 'microkernal debate' in the past, but never checked it out. Didn't realize the other main participant (aside from Linus Torvalds) was Andrew Tanenbaum. Very entertaining/interesting read. (The linked article refers us here: [http://www.oreilly.com/openbook/opensources/book/appa.html](http://www.oreilly.com/openbook/opensources/book/appa.html))

<comment><USER3> The Shapiro article in Tannenbaum's link is good too. He's a bright guy that did the EROS project for anyone that doesn't know. Here it is in archive.org:

[https://web.archive.org/web/20050514121653/http://www.eros-o...](https://web.archive.org/web/20050514121653/http://www.eros- os.org/papers/IEEE-Software-Jan-2002.pdf)

[https://web.archive.org/web/20050211090602/http://www.eros-o...](https://web.archive.org/web/20050211090602/http://www.eros- os.org/)

Two other good articles are why the EAL4 evaluations that Windows et al were getting are worthless and what a secure, build system might look like.

[https://web.archive.org/web/20040214043848/http://eros.cs.jh...](https://web.archive.org/web/20040214043848/http://eros.cs.jhu.edu/~shap/NT- EAL4.html)

[https://www.usenix.org/legacy/publications/library/proceedin...](https://www.usenix.org/legacy/publications/library/proceedings/sec02/full_papers/shapiro/shapiro.pdf)

</comment></comment><comment><USER12> To be fair, these are debates about issues that are rather insignificant from a broader CS perspective. Engineering problems (methodology, network protocols, file systems, kernel implementation details) or debates that are infamous mostly due to their polemic nature (Dijkstra-Backus, or Dijkstra- Anything, for that matter).

I think it's true. In CS there are no deep fundamental or philosophical debate-evoking schisms of the likes you sometimes find in other fields. Consider economics, philosophy, physics (theory of everything) or the soft sciences.

Even the hottest problem in CS (P vs NP, of course) doesn't seem to evoke much debate among computer scientists.

<comment><USER13> Let's not forget about tabs v spaces though

<comment><USER14> I've come to personally settle that one. Spaces for python and tabs for everything else. (Shrugs)

</comment></comment></comment><comment><USER15> Need a lot less rhetoric and a lot more controlled experiments.

<comment><USER16> We can't "control".

For example: someone in nineties-or-naughties once experimentally "proved" that Java was faster than C for matrix maths -- because of the overhead of `free()`! If that sounds ridiculous to you, then understand this really matters for certain implementations of certain matrix problems.

So the take-away hangs not on the nature of C vs. Java, but on whether the study matters in the real world. Emprics in CS are good for engineers quietly doing their own job, but for debates they are as fraught as in the soft- sciences.

Indeed CS is a soft-science. Or rather it is not a science at all, but a mathematical art, with bonus people issues.

</comment></comment><comment><USER17> Also of interest is one of regehr's commentators posting a link to Kahan's rebuttal to those "unum" numbers.</comment>


Alan Perlis: Epigrams on Programming (1982) [pdf] - <AUTHOR> https://www.gwern.net/docs/cs/1982-perlis.pdf <comment><USER2> Alan Perlis's own page listing the epigrams, in HTML for ease of readability, copying, and accessibility:

[http://www.cs.yale.edu/homes/perlis- alan/quotes.html](http://www.cs.yale.edu/homes/perlis-alan/quotes.html)

Herbert Klaeren's list, which includes some meta-epigrams:

[http://pu.inf.uni- tuebingen.de/users/klaeren/epigrams.html](http://pu.inf.uni- tuebingen.de/users/klaeren/epigrams.html)

<comment><AUTHOR> Interesting that the Yale website omits the last 10

<comment><USER3> It also has some subtle transcription errors, which is why I got a copy of the original to host & link instead. For example, I forget which, unfortunately, but one of the later ones makes zero sense in the HTML version, because it's based on some wordplay and the transcriber got a word wrong. (I always thought I was simply not getting it, until I got the original and rereading, realized that the problem wasn't me.)

<comment><AUTHOR> #116 on the Yale Website:

> You think you know when you _can_ learn, are more sure when you can write, > even more when you can teach, but certain when you can program.

in the scanned original:

> You think you know when you learn, are more sure when you can write, even > more when you can teach, but certain when you can program.

<comment><USER3> That might be it, yes.

</comment></comment></comment></comment></comment><comment><AUTHOR> > Adapting old programs to fit new machines usually means adapting new > machines to behave like old ones.

Made me think about backwards compatibility. Backwards compatibility often is what allows a new platform to be successful (or to have a shot at success) and yet it can hold it back from what it would have become without it.

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

Related a recent comment by munificent on all the effort that goes into JavaScript runtimes:

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

</comment><comment><USER4> A dozen threads but no real big ones: [https://hn.algolia.com/?query=epigrams%20programming%20comme...](https://hn.algolia.com/?query=epigrams%20programming%20comments%3E0&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)

</comment><comment><USER5> A favorite Alan Perlis quote that's not included here: "If Shakespeare were alive today, he'd be a programmer, and he'd be writing one-liners in APL."

[https://www.jsoftware.com/papers/APLQA.htm](https://www.jsoftware.com/papers/APLQA.htm)</comment>


The morning paper (a CS paper summary each weekday) - <AUTHOR> https://blog.acolyer.org/about/ <comment><AUTHOR> From the site:

The Morning Paper: a short summary of an important, influential, topical or otherwise interesting paper in the field of CS every weekday. The Morning Paper started out as a twitter project (#themorningpaper), then it became clear a longer form was also necessary because some papers just have too much good content to get across in a small batch of 140-character tweets!</comment>