Udacity and the future of online universities - <AUTHOR> http://blogs.reuters.com/felix-salmon/2012/01/23/udacity-and-the-future-of-online-universities/

<comment><USER2> Part of the backstory here is that ai-class.com is by Udacity (Sebastian Thrun), while ml-class.org and pgm-class.org are by Coursera (Andrew Ng and Daphne Koller). Formerly colleagues from the same department, now competitors with very similar education startups, all the way down to the naming conventions. Lot of fur flying about who copied who.

Coursera has been launching a ton of classes[1]. Probably Sebastian feels that to beat Andrew and Daphne, he has to go full time.

[1] <http://www.cs101-class.org/hub.php>

<comment><USER3> So, does this explain the unexpected delay of the Spring ML-Class? I haven't heard any news until a few days ago when I got an email saying there were delays in starting the new semester.

<comment><USER4> I'm interested in this question too. Two of my classes both sent the same type of email. I'd be very surprised if these aren't related.

<comment><USER5> All of the January classes have sent out the same email. Been receiving them for the last few days.

</comment></comment></comment></comment><comment><USER6> Took the AI class and it was just amazing. I never had a professor more passionate (yet still rational :) about a subject.

Even though the course made the math and the background sound simple, it wasn't. There is a probably thin line between breaking-down things into a set of well-partitioned and easy to understand statements and oversimplifying really complex systems.

Also, the applications (edge detectors, robotic cars, particle filter based localizations, ...) kept me very motivated throughout the course.

<comment><USER7> having taken all three classes (AI, DB, ML), I have to point out that in my opinion (and that of other people I spoke with) ai-class was _by far_ the worsely organized, passion of the teachers notwithstanding.

But I am sure Know Labs learned a lot from it and they can only improve.

<comment><USER8> The website itself sucked, the quizzes weren't very usable, but the videos themselves were wonderful — in my opinion the best. And I wouldn't be surprised if that was the part that's hardest to improve on, and also the most important one.

</comment></comment></comment><comment><USER9> It looks like Khan Academy for college-level, semester long classes. He should target the University of Phoenix's crappy online program. Their parent company, the Apollo Group, has a market cap of $7B. Thrun could easily take a huge bite out of that.

<comment><USER10> While I agree that a new education startup could go after something like the University of Phoenix, I'm not sure that Thrun and his crew are going for that.

To me, the University of Phoenix represents a credential factory. People see that all the jobs they want require a college degree, and so they go the easiest route to get that. I don't believe that University of Phoenix (or most of the other big for-profit names) have a strong interest in educating people, nor do I think that their customers are really interested in getting an education - instead they're interested in getting a piece of paper that says they're qualified to do the job they want.

Thrun seems to have far more noble, though possibly less profitable, goals in mind.

</comment></comment><comment><USER11> I think Stanford is more for keeping things closer to the status quo. Students in seats is how they make their money, after all. Not to say that they won't make courses online. I think they would be more than happy to charge $5,000 like they do through SCPD. However, if this develops the way I think it does, the economies of scale have to take over, right, especially after reading about Professor Norvig's discussion last month (<http://remotelearningproject.com/interviews/peter-norvig/>) about potential business models that try to keep it mostly free.

I'm very excited.

PS: I've noted that the PGM course website says it'll start in Feburary.

<comment><USER12> > the economies of scale have to take over, right

Assuming there's enough competition, yes.

</comment></comment><comment><USER13> I have built something to keep track of all these courses <http://www.class- central.com>. Currently tracking just Coursera(Stanford's online learning initiative) courses, but would be adding UDACITY and MITx courses(when they are announced) soon.

<comment><USER14> It would be great if you could provide a RSS feed with course announcements.

<comment><USER13> The Facebook page has an option to get posts as RSS feeds. Here is the link : [https://www.facebook.com/feeds/page.php?id=305891199451158&#...</a>.

</comment></comment></comment><comment><USER15> I hope this is just a first step toward big future ideas.

Many highly sought professors already have great brands, and I'm surprised that they are so highly underpaid for what they do. Many of them could be getting paid a lot more in scale. Further, they could also be providing value- add services to directly validate some of the best on-line students and grant certifications of expertise. Think of the mozilla badge model [1]. There are hundreds of ways to spin out revenue and scale that model.

[1] <https://wiki.mozilla.org/Badges/About>

<comment><USER16> The average salary of a professor at Stanford is $148,000. I think it's unfortunate that he had to step away from the possibility of influencing those who do make it to Stanford in favor of catering to the world. It's great that he does so, but there's also plenty of reasons why he would be affecting many different minds at Stanford.

[1] [http://www.sfgate.com/cgi- bin/article.cgi?f=/c/a/2006/05/14/...](http://www.sfgate.com/cgi- bin/article.cgi?f=/c/a/2006/05/14/MNGEKIRLKU1.DTL)

</comment></comment><comment><USER17> The actual website is here: <http://www.udacity.com/>

For those interested, looks like they're offering two classes (CS101: Building a Search Engine and CS373: Programming a Robotic Car) starting in February and hiring actively, as well (<http://www.udacity.com/jobs>).

<comment><USER18> Anyone else having issues signing up to the classes?

<comment><USER19> I managed to sign up. (browser Chrome)

<comment><USER20> Can't enroll with Chrome or Firefox. Their site is all kinds of broken right now.

<comment><USER19> I enrolled with Chrome 7.0.517.44 on Ubuntu 10.04 from the UK no problem.

</comment></comment></comment></comment></comment><comment><USER21> Prof. Thrun is an _amazing_ teacher, but I think the 160,000 student sign-ups were due to the Stanford affiliation. Giving up that affiliation will cut enrollement sharply. Any likely business model will cause another sharp decline in enrollment. Thrun has all the right ideas, but on his own it will be tough to execute.

Education is ripe for disruption. Thrun+Ng+Norvig+Stanford as a cohesive team could have made a _history altering_ change in education. It's unfortunate that they aren't a team.

</comment><comment><USER22> It all comes down to certifying student proficiency (course credit).

Udacity and Coursera are not really competitors in the area of course content. They are competitors in the area of student certification. In the reputation behind the process. Meaning rigorous final exams, independently administered, suitable for inclusion on curricula vitae, etc.

By offering courses for free, Udacity and Coursera compete directly with Stanford. But Stanford can compete with them just as well, by allowing students to enroll in the free classes, mentoring them, and then offering their own certification exams -- for credit.

My guess is they won't do that. They'll just find someone else to teach the course. But I bet in the future they intend to keep a very close eye on the department.

</comment><comment><USER19> Since doing the online AI course, I have been hoping Thrun would teach Robotics.

I have signed up - woohoo. It looks awesome - I am stoked - Sebastian Thrun is an amazing teacher, he really makes me think hard and gives me the scaffolding to investigate further on my own.

</comment><comment><USER23> What I find problematic about all of these new online education startups (Udacity, Khan Academy, etc) is that they tackle the problem by simply providing online equivalents to traditional didactic learning methods like lectures and textbooks.

A professor standing in front of a group of students lecturing is definitely easy for the professor and cost-efficient to scale up to larger class sizes, but that's just not how a lot of students learn. I'd wager that most HNers learned programming through actually writing code, even those who learned CS through a formal program. In the humanities, I'd argue that the most effective way to learn is through small discussion groups, not a distinguished professor explaining literature or philosophical works to you. Just throwing that up on the internet is an easy way to expand your audience, but providing higher- quality educational materials doesn't do anything to improve the quality of _how_ we educate.

The internet has a lot of potential to improve the quality of education, and there are tons of awesome startups working on it (companies like Codecademy and Coursekit come to mind), but I personally hope the future of online education doesn't look too much like Udacity.

<comment><USER24> I agree, but it does provide value beyond a simple real-life lecture, most notably the fact that you can go at your own pace and rewind/replay at any point. This is huge. In addition, the lectures are much shorter for the most part, which also makes a significant difference.

Concerning the importance of discussion groups, face-to-face interaction, and networking opportunities -- those things are necessary in certain cases, but not all. The courses currently being offered through these sites are most often the ones that don't necessary benefit hugely from these real-life components.

</comment></comment><comment><AUTHOR> <http://robots.stanford.edu/>

<comment><USER19> This link is down

cache available by robots.stanford

</comment></comment><comment><USER25> I wonder if his departure has anything to do with the delay of the other courses? Maybe he took some students/staff/resources with him that were key to the infrastructure?

<comment><USER26> The other courses (i.e ML and DB) seemed to have a different arrangement. The slew of new classes seemed to be following the same arrangement as ML/DB rather than AI.

<comment><AUTHOR> Though as far as I know there was this idea of using Aiqus as the discussion forum platform for all the courses, rather than each course having its own separate forum. Aiqus was used by AI class during last session.

Although I am not aware who was behind the development and operation of Aiqus.

<comment><USER26> > _there was this idea of using Aiqus as the discussion forum platform for all > the courses_

Not sure if you're referring to the current bunch of courses or the first three (AI/ML/DB). I'm assuming it's the latter. Aiqus was only used for the AI class. IIRC it was set up independently but someone before the course began and ended up being the pseudo-official Q&A forum (linked to from the main site).

<comment><AUTHOR> ok, I was not aware that Aiqus was independent of the AI class. Though one of the developers of Aiqus posted in an unofficial FB group of AI class that all the rest of the courses will also use Aiqus during the next session.

<comment><USER27> Interesting that they seem to have tried to sell Aiqus recently.. [https://flippa.com/2673719-q-a-site-on-artificial- intelligen...](https://flippa.com/2673719-q-a-site-on-artificial-intelligence- with-approx-1-million-pageviews-last-month)

</comment></comment></comment></comment></comment></comment><comment><USER28> Relevant to this article is a blog post written by a Stanford Student taking the machine learning class:

[http://pennyhacks.com/2011/12/28/stanford-free-classes-a- rev...](http://pennyhacks.com/2011/12/28/stanford-free-classes-a-review-from- a-stanford-student/)

HN discussion here:

<https://news.ycombinator.com/item?id=3399976>

<comment><USER16> Also if I may make a shameless plug for mine:

[http://www.rioleo.org/a-reflection-on-stanfords-ai-class- db-...](http://www.rioleo.org/a-reflection-on-stanfords-ai-class-db-class.php)

Ironic, I just posted this 3 days ago.

</comment></comment><comment><USER29> What happens to the self-driving car? That was his life's dream.

<comment><USER30> In a few years, he'll teach a class on that too and... mission accomplished! ;-)

<comment><USER31> Not in a few years, but in one month:

CS 373: Programming a Robotic Car <http://youtu.be/aI8SQCEUYrg></comment></comment></comment>


Iowa Precincts Report Issues Using Caucus App, Potentially Delaying Results - <AUTHOR> https://www.bloomberg.com/news/articles/2020-02-03/iowa-precinct-chairs-report-struggles-with-caucus-phone-app <comment><AUTHOR> There were numerous concerns raised about this app when it was announced that it would be used: [https://news.ycombinator.com/item?id=22157536](https://news.ycombinator.com/item?id=22157536)</comment>


Show HN: API for Hong Kong public data - <AUTHOR> https://publicdatamarket.com/ <comment><AUTHOR> Thanks to saasify.sh for providing the front-end and API gateway. I used scrapy on scrapinghub, singer.io and getdbt.com for the data pipeline.</comment>


Interview with Scott McCloud about the Google Chrome comic book - <AUTHOR> http://www.techradar.com/news/internet/google-chrome-interview-with-artist-scott-mccloud-462793

<comment><USER2> I love this part:

"Q: Do you think, that, while Google is popularly perceived as being cool and open to ideas and freewheelin', that it might start to grow into the kind of staid, corporate behemoth some of its close rivals have become?"

" _Well I think there's that conventional wisdom in The Valley that integrity doesn't scale_ , and I suppose there's always the danger that it'll be hard to maintain that atmosphere, but certainly Google has risen to a considerable scale without losing that flavour so far, and I wish them luck."</comment>


Can you break my home rolled encryption? - <AUTHOR> http://news.quelsolaar.com/#comments101

<comment><USER2> As eru said elsewhere, you've created a stream cipher. To be secure, the generated keystream (the thing you xor against the plaintext) must not have any biases: the attacker shouldn't be able to guess the contents of any keystream byte (with P > 1/2^8). Otherwise, an attacker can probabilistically recover parts of the plaintext.

I played around with your C implementation a little[1]. I put it into 8-bit mode, and generated 16 random keys and output their keystreams[2]. Here's the first 32 bytes of those keystreams, in hex:

0002010203fd050607b0090a0b250d0e0f8b111213a4151617f5191a1be6003e 3b4a00790369050607004b170b820d0e0fb7111213d0005f1796191a1b321d1e 00130102036b05060734090a0b260d0e0fca111264141516178700671b534ae8 df7c806903d10506077fcc670b583600dec617580a2b8b161712191a1b1c00a7 00260102032f1d0082a0090a0bd30d0e0f4ca8c616aa151617a400a34f1c9e1e af7cb175036705060786090a0bc90d0e0f2a111213831516173700501bfa1d1e 000236ca58110506079c00090b860d0e0f8f111251009e1617b4191a1b311d1e 00250102039700ec0729090a0b2a0d0e0f961112133a151617e3a200956764b8 002a0102031e050607ed003c0b260d0e0fcf111213c000151a18191a1bb21d1e 413c0102031505060745090a0b060d0e0fc6111213b815161784191a1b341d1e 00890102039500b807a200570ba70d0e0fa31112134c1516172d191a1ba03900 00cd01020332050607e100b10bdd0d0e0f0d111213261516170e191a1b041d1e 0076010203c30506074e03c7880069000eb8078d54134604a61a142d1a0600c3 00f101020344050607a8090a0b0e0d0e0f11111213e6151617f3191a1b291d1e 00f1007a0369aab10068090a0b53b1ac0fd1111213531516171800ee1bde1d1e 0036010203570506076c00d60b050d0e0f2f27583f03591617bc09471b141d1e

As you can see, there are some significant biases here. For example, as an attacker, once I have a ciphertext, I can guess that bytes 18 and 19 of the keystream were (hex) "1112", and have a very good chance of being right.

While the 32-bit version isn't as bad, I think there's still significant biases. I generated 24495 keys. Here's the distribution for keystream byte 1 (script at [3]):

       92    82    82   104    99    90    99   111    90   102    91    95    94    91    73   102
      109   106    97    99    88    99    90    96    88    97   101   100   108    76    87    87
       91    94   111    90    92   104    88    97    94   100    89   102    90    91    92    89
       98    96    89    94   111   111   105    90    87    89    93   104   100   110   109    93
       77   107   103    84    88    96    89    87    77    96    90    84    87   106   101    98
       99    99   114   102   104   106    95    91    95    92    94   104    95    88    93    91
       91    78   102    89   104    88    94   100   102   105    94   102   100   105    99    94
       87    89    86    93    95    77    82    83    99    94    88   106   106   101   101    91
       82    88    98   111   104    93   102    91    87    93   106    89   102    78    88   105
       91    93   105    84   101   100    94    93    94   107    88    86   114    84   112    98
       97    84   111    87    91    93    89    95    92    96    78    85    90   104    84    80
      103    95    98   114    90    89    91   110    89   100    87   107    95   109    83   103
      112   102    93    93    87    90   101    91   108   108    90   107   103    95   111   126
       88    97    74   111    97    99    95    95   102    97   122    94   106    94    97   103
       86    90   102    91    95   108    83    97    91   102    99    90   103   111    93    84
       87   107    91    96    77    98    96    85   108   110   116   100    95    89    72   100

I should really get to sleep so I didn't do the statistics on this, but I'm fairly sure that's not a uniform distrubtion (i.e., bytes aren't being drawn uniformly from [0:255]). Also, keystream byte 0 only ever has 128 values, instead of 255.

I did not look at 64-bit.

All in all, I wouldn't use your cryptosystem :) but there's no shame in that! Crypto is hard! and youre only going to get better.

<comment><USER2> noooo it ate my references:

1 [http://canta.ucsd.edu/~kmowery/quelsolaar/crypto_test.c](http://canta.ucsd.edu/~kmowery/quelsolaar/crypto_test.c)

2 [http://canta.ucsd.edu/~kmowery/quelsolaar/keystreams.tar.gz](http://canta.ucsd.edu/~kmowery/quelsolaar/keystreams.tar.gz) First line of each file is the key generated by rand(), All other lines are the keystream (encryption of 00 data)

3 [http://canta.ucsd.edu/~kmowery/quelsolaar/keystreams.py](http://canta.ucsd.edu/~kmowery/quelsolaar/keystreams.py) Note that you might have to change to using os.walk to find files; I'm too sleepy...

<comment><AUTHOR> I'm not really sure how you can get similar results with completely different keys. I'm looking in to this. I tried generating a meg encrypted zeroes in 8bit mode and the most used 8 bit value was only 1% more common then the least used value.

<comment><USER3> Seeing your name again Eskil reminded me of the excellent tooling videos I used to watch for Löve!

Where are things at and what are you doing now? I think the whole of HN would be interested!

<comment><AUTHOR> In very bad at publicizing the things I do.... This year I have been working on a bunch of new things:

I have written a SDL/GLUT replacement: [http://www.youtube.com/watch?v=oMJP6vlsmbE](http://www.youtube.com/watch?v=oMJP6vlsmbE)

And a new library to create widgets and UIs: [http://www.youtube.com/watch?v=oDulGQnjsDQ](http://www.youtube.com/watch?v=oDulGQnjsDQ)

I have used all this to build a VFX editor for realtime applications: (Ill try to post a video of it soon-ish) [http://www.quelsolaar.com/Confuse_particle_system.jpg](http://www.quelsolaar.com/Confuse_particle_system.jpg)

That in turn used to make an installation using head tracking last month: [http://www.youtube.com/watch?v=UYSVEhSC2DU](http://www.youtube.com/watch?v=UYSVEhSC2DU)

My big project this year has been to work on my new RTS game. Its not a huge secret, but hasn't been properly announced yet.

</comment></comment></comment></comment></comment><comment><USER4> One of the necessary conditions for a secure cipher is security under chosen plaintext attacks, as specified by the following game:

I give you two plaintexts of the same length of my choice, you select one of them and encrypt it with a key of your choice and give me the resulting ciphertext. If I can determine with probability p>50% which of the two plaintexts you have encrypted, the cipher is considered broken at level p.

I chose the following two plaintexts relative to the C source liked to elsewhere in this thread, with

        #define DATA_SIZE (1024 * 1024 * 128)

Plaintext 1:

        for(i = 0; i < DATA_SIZE; i++)
            decrypted[i] = i;

Plaintext 2:

        for(i = 0; i < DATA_SIZE; i++)
            decrypted[i] = 0;

and claim that your algorithm is broken at a level of at least 95%. (I actually think it is 100% if I make the plaintext long enough, but I'm hedging my bets by conceeding 5%).

I don't need the full ciphertext, the output of the following code fragment is sufficient:

        for(i = 0; i < DATA_SIZE; i++) {
          count[encrypted[i] & 0xFF] += 1;
          count[(encrypted[i] >> 8) & 0xFF] += 1;
          count[(encrypted[i] >> 16) & 0xFF] += 1;
          count[(encrypted[i] >> 24) & 0xFF] += 1;
        }

        for(i = 0; i < 256; i+=1) {
          printf(" %8d", count[i]);
          if (count[i] > 2400000) {
    	printf("*");
          } else {
      	printf(" ");
          }
          if (i%16 == 15) {
            printf("\n");
          }
        }

<comment><AUTHOR> I have not considered this kind of game, and therefor not designed the cypher to withstand it. I need to run your code and do some tests to look in to it further.

BUT:

I currently think that the line:

key[pos_a] ^= key[pos_c] ^ i ^ output[i];

Is a problem as "output" can counteract "i". I would probably replace it with:

key[pos_a] ^= key[pos_c] ^ output[i]; key[pos_c] ^= i;

I'm also thinking about ways that "i" could influence in a less regular way and if that is useful.

<comment><USER5> > I have not considered this kind of game, and therefor not designed the > cypher to withstand it.

This seems to be the central summation of why most of us should not be rolling our own, and why peer review and cryptanalysis is so important to determine if something really is secure. :)

<comment><USER6> In fact I think everybody who's interested in the subject should try to roll their own crypto for the experience and fun in it. They shouldn't use it in the real world though.

<comment><USER7> Is there a club for this sort of activity?

<comment><USER8> yes. they meet at Fort Meade.

</comment></comment></comment></comment></comment></comment><comment><USER9> I don't have time to analyze it carefully, but you have created a stream cipher. It is actually quite fun to implement ciphers and learn about all of the various attacks. If you are to be serious about this you should really not start from a pure product of your mind, but learn about the latest and greatest techniques. The academic field of cryptography doesn't move /that/ quickly, so it is quite reasonable to keep up with it if you are passionate about it. You can do much better with just a little knowledge about basic attacks. You can basically keep designing algorithms that fewer and fewer people can break until you reach the point where no one can break it with known, modern, academic cryptanalytic techniques. And when you get there... you might be a Cryptographer :)

[http://en.wikipedia.org/wiki/Stream_cipher_attack](http://en.wikipedia.org/wiki/Stream_cipher_attack) \-- in particular, the period of your key stream is very weak. Also, without an IV, you will be in trouble.

Essentially, you need to take a key, and an IV, and feed it into your magic box (algorithm) and all that should come out is an incredibly long random string that does not repeat for a very, very long time. The shorter the period the worse off you are. I can't be sure, but I think you have a predictable, short period.

Even more interesting, read up on RC4: [http://en.wikipedia.org/wiki/RC4](http://en.wikipedia.org/wiki/RC4) \-- there were small but detectable biases in the initial part of the key stream, which allowed an attacker to break the algorithm. The solution was to advance the key stream a bit to discard the initial, biased part.

And thus we get to the hardest part of cryptographic algorithm design and why these exercises are so hard. It is very easy for someone to build an algorithm they can't break themselves. Obviously, you did everything you knew how to do to prevent it from being broken. It might even take an experienced cryptographer a while to break it (the key stream bias in RC4 was not found for a long time). Check out some of the WEP attacks.

Another thought for you: [http://www.rickwash.org/papers/stream.pdf](http://www.rickwash.org/papers/stream.pdf) \-- just how easy it is to be wrong. Page 8: If the swap operation of RC4 is omitted, the keystream becomes cyclic with a period of 2 n+1 -- very small changes can introduce non-obvious periods, etc.

Final thought: check out how WEP got broken. Stream ciphers are hard. This is why it is often very good as an educational exercise to write your own ciphers (I have done it), but you sort of do it once and either decide to get good at it or realize it takes a LOT of knowledge and it is better to just know the attacks and not invest a lot of time in it.

Anyhow, hope you had fun with this. Read up on the various ways stream cipher design can be broken, and check out how AES can be used as a stream cipher. Not sure I had a point, precisely, just wanted to share some thoughts having seen a dozen or more of these crazy algorithms in use in live code meant to protect truly sensitive data. Some programmer always thinks he is clever and ends up creating some XOR cipher (I know that is not you as you have the right goals, in my mind, for doing this).

<comment><USER10> Fewer and fewer people. The art world is similar. Artists should be aware what other artists have done, to not do something unoriginal unintentionally. But that's hard work because it requires so much time/energy to investigate. So the hard work of art criticism falls on the non-artist who can dedicate him/herself to the task full-time. My analogy is the critic is the codebreaker and the artist is the code-maker. Artists make great critics because they have inside knowledge of how the moves (decisions) are made. But artists often lack the historical perspective, awareness of emerging work and (while I can't read anyone's mind) they typically lack the vocabulary to discuss their decisions analytically. But splitting up the work allows for more specialization. They're both specialists with tons of overlap but they have different goals. So maybe the cryptography world will make the same split, if it hasn't already? Crypto-artists dedicated to creating complexity and then historian- critic-codebreakers to determine the value (strength?) of what was created. They need each other. One creates, the determines the value of it.

Anyway, as in art, "naiveté" (no formal education) can sometimes lead to a surprising breakthrough. While it's rare for an uneducated artist to do something interesting, I believe education hinders creativity in some instances. Though most unschooled artists, most of the time, tend to produce the same cliché results as predecessors, they do have the advantage of always thinking outside the box because the box is invisible to them. So outsiders can get breathtakingly weird results sometimes and part of that weirdness is due to their lack of education. It seems to me cryptography is like art in that originality is a goal. In non-objective art especially, you don't want anything recognizable. Like cryptography, non-objective art conceals the true meaning behind the intent. Sometimes cryptography and art even conceal the intent.

So creativity allows for infinite approaches and therefore infinite ways to conceal information. Anyway, I don't plan to become a cryptographer but I think it's a cool analogy (to compare to art) and would be interested in learning more about the "big picture" of cryptography if there are any good books on the subject, even if it's fiction.

<comment><USER9> This is a good point. The interesting there here is the raw level of information you need to have to even hope to do something new. From a period, say WWII up to when Shannon was just doing his seminal work, you could think maybe a little on a fairly broad area, and maybe come up with something new. Now, as with many areas of academic thinking, you have to learn so much just to get to a point where you can advance a really small piece of state of the art just a little bit.

I think a lot of real math and academic work follows this pattern, and it is the reason one has a right to be skeptical, or even dismissive, of someone doing something like this if they were to present it as a serious work. "Here, try to break this". It is great for someone to learn the true scope of their ignorance, but at the same time, it is also so unlikely you have done even the tiniest novel thing that it is almost always OK to dismiss it out of hand.

Cryptography is really just an applied branch of math/information theory. Things that work for advancing the state of art for math are generally the same tools that work for advancing the state of art for cryptography. In the raw, pure and abstract sense. In the practical world, where you have to have real bits on real physical things, the attacks are myriad and the innovators in that space often need minimal training in cryptography (relative to someone doing the theoretical work).

</comment></comment></comment><comment><USER11>
        decrypted[i] = encrypted[i] ^ key[pos_a] ^ key[pos_b];
        key[pos_c] = (key[pos_c] << 31) | (key[pos_c] >> 1);
        key[pos_a] ^= key[pos_c] ^ i ^ decrypted[i];

Expanding decrypted:

        key[pos_a] ^= key[pos_c] ^ i ^ encrypted[i] ^ key[pos_a] ^ key[pos_b];

You just xored key[pos_a] into itself so we can eliminate it:

        key[pos_a] = key[pos_c] ^ i ^ encrypted[i] ^ key[pos_b];

I'm pretty sure you just threw away one word's worth of entropy.

<comment><USER12> except pos_c might be equal to pos_a or pos_b, and key[pos_c] just got rotated. It's not quite equivalent, I tried it.

<comment><USER4> During the encryption phase the argument by Strilanc doesn't hold (as in that case decrypted[i] is given as the input and does not contain any key admixture), and it is exactly the case where pos_c equals pos_a that is problematic, as in that case the statement

        key[pos_a] ^= key[pos_c] ^ i ^ decrypted[i];

overwites key[pos_a] with the value

        i ^ plaintext[i]

that doesn't depend on any part of the key at all.

</comment></comment></comment><comment><USER13> To give you some pointers to the literature, you are trying to create a stream cipher here. (See [https://simple.wikipedia.org/wiki/Stream_cipher](https://simple.wikipedia.org/wiki/Stream_cipher))

As always, it's terrible easy to create an encryption algorithm that's complicated enough that you yourself can't break it. That doesn't make it safe. (It might still be a fun exercise for you.)

Have you tried breaking any ciphers, yet? Even obviously weak ones require some thought to break.

<comment><AUTHOR> My hope is that this one would be fun for others to break, rather then me having grand illusions of knowing better then everyone else.

I know a fair bit about security from an engineering standpoint, but wouldn't call myself a master. My mathematical background is much weaker.

Thanks for the links, I have already read it.

</comment></comment><comment><USER14> Personally I think you would be more likely to get a better response:

* If you delivered a complete implementation in a popular language like C, Python, or Ruby, rather than publishing pseudocode that may or may not be interpreted correctly by error-prone humans

* If there was a clear goal. "Find a weakness" is vague; "Recover the missing plaintext from this 1MB message" is specific.

<comment><AUTHOR> Here is a C implementation I just banged together. [http://www.quelsolaar.com/crypto_test.c](http://www.quelsolaar.com/crypto_test.c) (yet another possible source of embarrassment)

Ill try to put together a "test" for the algorithm.

<comment><USER15> Your key is based on an insecure RNG. It's trivial to reconstruct the seed and thereby recover the key.

Your key isn't random. It's the same every time.

This example also isn't communicating any secrets, so it's not really cryptography.

<comment><USER16> I think that the author is more interested in the design of the encryption algorithm rather than the specifics of the reference implementation provided. So yeah a dodgy prng was used but is there anything wrong otherwise - i.e. something inside the algorithm itself that reduces its efficacy and makes it vulnerable.

<comment><USER15> Well, if they would provide an actual implementation rather than a reference implementation, then I would break it. Breaking cryptography often depends on breaking implementations, not breaking the underlying theory. That's why AES- CTR is theoretically secure but so deviously hard to actually implement.

</comment></comment></comment></comment></comment><comment><USER17> This is a classic stream cipher. A stream of bits is generated and xored with the plaintext. In code size RC4 is of very similar size, but work on bytes rather than 32 bit words. RC4 has been used in a wide number of areas, like SSL/TLS. It is now known to have problems, but it was belived to be secure for many years, but now some quite bad attacks are known (and much harder to break than this algorithm)

I see one very big problem with the algorithm. If I know the first bytes encrypted (a known plaintext attack), I will recover the xor of two parts of the raw key. On the next word encrypted, it will be a shifted version of the raw key material. This will eventually mix, but the mixing is slow enough that the key can be recovered. Even ciphertext only attacks will be possible if you know or guess underlying statistical properties of the plaintext, like that this is english text, HTTP headers or whatever. In general, too much of the key material leak into the keystream, making the cipher breakable. In practice, the length of an HTTP header will likely leak enough of material to break it.

A better streamcipher would have a key schedule before the encryption, making a table of bits that are mangled based on the key bits so that there is less correlation between the keystream and the key instead of using the key directly. Any such correlation will make the cipher breakable.

Furthermore, there must be more mixing of bits than the given algorithm has. RC4 appear to have no more mixing, but that uses a much bigger table of 256 bytes, and not only the size of the key like this one, that makes it very likely that a byte has been mixed quite a lot the next time it is used.

<comment><AUTHOR> "I will recover the xor of two parts of the raw key."

Yes, but how is this useful since the relationship between these two are no longer valid before the next operation? the shift is slow, but the XOR destroying one of the two components that have a known relationship is instant.

<comment><USER17> They are extremely important because you can use it to construct an attack that let you narrow down the number of guesses you have to do to recover the original key, so that it becomes feasible to crack the code. In general, leaking information about the key like this is almost a cardinal sin in cipher design, as it will give an opportunity for an attack. Modern ciphers will leak practically no information about the key.

<comment><AUTHOR> True, if you want to brute force the algorithem you loose some bits by knowing that somewhere in the key there are 2 values that together become an xor. The question for me is if this information compounds over time. My thought was that it wouldnt since the key is modified.

</comment></comment></comment></comment><comment><USER18> This is a really cool idea, I like it a lot.

With that said, I'm not convinced that your pseudocode actually works. Specifically, the following doesn't make sense to me:

pos_a = key[0];

pos_b = key[1];

pos_c = key[2];

...

pos_a = key[pos_b] % key_size;

It would be really cool if you posted functioning encrypt() and decrypt() methods to github. Something that people can actually compile/run/analyze. In fact, if you do that get in touch with me and I'll try to crack it.

<comment><AUTHOR> Thanks! Its been driving me crazy to try to crack it. It cant be this easy right.....?

I thought a lot about the possible starting point for the algorithm, but i found having it just be "unknown" like this was all that was needed. A test to make sure, pos_a, pos_b, pos_c are never the same might be useful. The code obviously needs to be fixed to modulo pos_X never to be larger then the key size.

</comment></comment><comment><USER19> It feels like the key leaks a lot into the encoded sequence. Just try encoding a sequence of 0x00 0x00 0x00 0x00...

            #include <stdio.h>

            int main() {
                    char key[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
                    int key_size = sizeof(key) / sizeof(key[0]);

                    int pos_a = key[0];
                    int pos_b = key[1];
                    int pos_c = key[2];

                    char encrypted[100], decrypted[100];

                    for(int i = 0; i< 100; i++) encrypted[i] = 0;

                    for(int i = 0; i < 100; i++)
                    {
                            int old_a = pos_a;
                            pos_a = key[pos_b] % key_size;
                            pos_b = (pos_a + 1 + key[pos_c] % (key_size - 1)) % key_size;
                            pos_c = (pos_a + 1 + key[old_a] % (key_size - 1)) % key_size;
                            decrypted[i] = encrypted[i] ^ key[pos_a] ^ key[pos_b];
                            key[pos_c] = (key[pos_c] << 31) | (key[pos_c] >> 1);
                            key[pos_a] ^= key[pos_c] ^ i ^ decrypted[i];
                    }

                    for(int i = 0; i < 100; i++) printf("%02x ", decrypted[i]);

            }

<comment><USER20> Exactly. Unless I misunderstood the code, If the key size is small (compared to the plain text size) and we know the key length, frequency analysis will work just fine.

<comment><AUTHOR> How would you go about this? Obviously the key is smaller then the message (otherwise we would use one time pad and be done with it) The key needs to be large enough that A, it cant be guessed, and B so that the branches of possible positions in it quickly becomes unmanageable.

<comment><USER21> It sounds like you might enjoy the Matasano Crypto Challenges: [http://www.matasano.com/articles/crypto- challenges/](http://www.matasano.com/articles/crypto-challenges/)

</comment></comment></comment></comment><comment><USER22> As everyone said, you have created a stream cipher. But I feel that I have to add that your idea (OTP with small key) is usually implemented this way: the small key is a counter used an input to some PRNG specifically designed for this (you should try AES in CTR mode), which you increment every time.

This produces a sequence which is always the same for each session, but because the keyspace is so large (2^128 with AES-128), this is acceptable because these PRNGs are actually cryptographically secure hash functions, which makes them very hard to reverse. Therefore, the only efficient way to crack your session is to either catch the key (your counter) or to brute force it by using every value of the counter and test whether this leads to a successful decryption. Not only are there 2^n possibilities, but every possibility is extremely expensive to test and then you have to accurately check whether the decrypted values are coherent (this is difficult with packets with a fixed header and nearly impossible with raw binary data).

The big disadvantage is having to store your small key until decryption.

<comment><AUTHOR> I have always been curious why encryption keys are so small. with todays networks/memory 10kbytes key should not be un noticable.

<comment><USER23> If a cryptographic algorithm is fundamentally secure, a small (128 - 256 byte) key will be all it needs to be secure. If an algorithm can't be secure with a key that size, giving it a bigger key is likely to only make it marginally better.

<comment><AUTHOR> Yes but it removes the entire discussion about when a particular algorithm becomes viable to break brute force.

<comment><USER23> No, that's simply not true. A 128 - 256 bit key is already infeasible to brute-force, so long as the algorithm uses the key appropriately.

</comment></comment></comment></comment></comment><comment><USER24> > _anyone [...] can see an obvious weakness here: the procedural algorithm > will produce a pattern that can be found and used to break the key. [...] > But what if the algorithm isn't specific? What if the key describes the > algorithm? If the key is data that can be used as an algorithm to produce > data, we can create a cycle where the algorithm is self modifying and > therefor wont create a pattern._

This doesn't seem right. If " _the key describes the algorithm_ " you need another algorithm to generate the algorithm from the key. This other algorithm is unique and will produce patterns like any other deterministic algorithm. Patterns in the generated algorithms will eventually be reflected in the data.

</comment><comment><USER25> Creating new algorithms based on the key doesn't change the fact that the input for the encryption function is the key (and in this case apparently the plaintext).

You can reduce all this algorithm generation back into essentially one algorithm anyway: generating "changes to the algorithm" merely obfuscates the presentation of the underlying single algorithm. In the end, there's still a fixed set of input information that goes into an encryption function and no matter how you try to obfuscate it Shannon won't budge.

<comment><AUTHOR> No algorithm can ever be harder to crack then trying all permutations of the key: in other words brute force. The purpose of any encryption algorithm is to make it as close to impossible to crack it in any less time consuming way. One could argue that my algorithm is better then that because the plain text salts the algorithm, but that doesn't account for any potential guess work, or even an attacker trying to get a user to send a specific stream that would help crack the code.

</comment></comment><comment><USER26> Did you analyze it for biases in the distribution of bits and bytes?

<comment><AUTHOR> I did, but I couldn't find anything. its very evenly distributed even if the plain text just zeroes. Again, I'm not sure some one else cant find any bias just because I couldn't.

<comment><USER27> If I feed it a key of all zeros and a text of all zeros the output is a counter, that seems like a problem.

</comment></comment></comment><comment><USER28> there are various attacks on the 8-bit version at [https://github.com/andrewcooke/Stupid.jl](https://github.com/andrewcooke/Stupid.jl)

these include:

\- plaintext injection

\- ciphertext collisions

\- distinguishing attack

\- statistical plaintext matching

\- partial known plaintext attack

</comment><comment><USER29> Every time Bruce Schneier smiles, an amateur cryptographer dies....

</comment><comment><USER30> Is this going to be in that new Game you are making?

<comment><AUTHOR> Maybe, if no one can find a glaring problem with it. I think using in in a game would be a good place to test it since the world doesn't fall over if it is broken.

<comment><USER13> Why bother? Just use a standard encryption. (Unless you feature your algorithm as a puzzle to be broken. Would make for an interesting spy game. But one that's probably more involved and `work' than most people want from their games.)</comment></comment></comment>


Why Agile Is Critical for Attracting Millennial Engineers - <AUTHOR> https://www.infoq.com/articles/agile-critical-millennial <comment><AUTHOR> Ugh, there's a difference between hide-bound corporate IT processes, and "Agile". Both are liable to ossification and cargo-culting that gets in the way of actually doing work, instead devolving into mindless busy-work and politics.

</comment><comment><USER2> Because they're both meaningless buzzwords.

But if you gratuitously capitalize them, and especially f you repeat them, often enough -- "Agile, Millennial, Agile, Millennial, Agile", especially in article titles -- people will not only naturally assume they mean something, but that they're absolutely _vital_ terms to know about, and that is crucially important to stay on top of every facet of their meaning lest one fall woefully and irrevocably behind not only in one's career, but in the current Zeitgeist generally.</comment>


NASA's Phoenix Mars Landing: Where To Watch On the Web - <AUTHOR> http://www.alleyinsider.com/2008/5/nasa_s_phoenix_mars_landing_where_to_watch_on_the_web

<comment><USER2> nice, pretty cool to able to see it live(15 min delay). Who knows maybe we'll see some aliens</comment>


Ask HN: Anyone else having problems with Google Talk/GMail? - <AUTHOR>

For the last week or so I've been getting a lot of problems with Google Talk on all my devices. Every so often, people appear to not be able to send messages to me, and I cannot message them in turn. The error I get is along the lines of "NAME did not receive your chat."
This is happening fairly intermitantly and is sometimes solved by a refresh (although sometimes not).
Interestingly, I've also noticed Chrome/IE complain that "your connection to mail.google.com is encrypted with 128-bit encryption. However, this page includes other resources which are not secure. These resources can be viewed by others while in transit, and can be modified by an attack to change the behavior of the page."
(this is the experience on both my mac and windows machines).
I've disabled practically all the "google labs" plugins I have, but it doesn't seem to have helped.
So... Anyone else experiencing any of this? <comment><USER2> I had issues with gtalk with getting "contact is offline" messages a lot as well as having other people get them sending me messages. As a last ditch effort after a few weeks of this I signed into gtalk on gmail (I had it disabled in gmail prior). The issues went away, and have remained gone for over a week of having re-disabled gchat in gmail.

I don't know if this applies to you, but it seems there is something changed by signing in to gchat through gmail.

<comment><AUTHOR> I use Gchat in gmail most of the time (I should've probably said Google chat, not Google talk in the title), and it is where I see most of the errors. I'm now trying to actually use the google talk stand alone client to see if I still get the errors

<comment><AUTHOR> Nope, errors still happen, but in Google Talk standalone client the errors appear as "email@example.com/gmail.00D320A0 is offline and can't receive msgs right now. firstname.lastname@example.com is offline and can't receive messages right now. "

(00D320A0 was just a string/hex number that I modified for this example, not a particular error code)

<comment><USER2> Sorry, that's exactly the error I was getting, and signing in to gchat once in Gmail seemed to have fixed it.

</comment></comment></comment></comment><comment><USER3> At the risk of leaving a vacuous comment: Yes.</comment>


National Weather Service: Forecasts 'Will Stop Yelling at You' - <AUTHOR> http://www.nytimes.com/2016/04/13/us/politics/national-weather-service-forecasts-will-stop-yelling-at-you.html <comment><USER2> Are there any known reasonably accurate algorithms for taking all caps English words, and converting it to mixed case?

<comment><USER3> What's reasonably accurate mean? A straightforward way to do it would be to naively convert to sentence case and then run the text through a spellchecker with a corpus of proper words you care about.

<comment><USER2> Ah, but do not spellcheckers use the capitalization to detect proper nouns in the first place?

<comment><USER3> Firefox is suggesting I correct phillis to Phillis. So Phillis is in the corpus, phillis is not and phillis is a close enough match to Phillis that it is the first suggested correction.</comment></comment></comment></comment>


Maybe We Haven't Seen Any Aliens Because They're All Dead - <AUTHOR> http://cosmos.nautil.us/short/86/maybe-we-havent-seen-any-aliens-because-theyre-all-dead <comment><USER2> > Extinction is the cosmic default for most life.

It's the cosmic default for _all_ life.</comment>


TSQLFTW - Native Asynchronous Node.js Module for MSSQL - <AUTHOR> https://github.com/gfosco/tsqlftw

<comment><AUTHOR> This came together surprisingly quickly... looking for input on what direction this should go. Currently planning to remove the need to Connect/Close and instead allow .NET to manage the connection pooling. Also planning to add stored procedure execution & prepared statements.</comment>


Fake games in the Android market - <AUTHOR> http://www.reddit.com/r/Android/comments/kjywq/warning_fake_games_in_the_market_today/

<comment><USER2> Google should add some kind of "verified by Google" signature to the apps (or maybe "verified developer" to a developer's account)</comment>


Ask HN: Is there a legislative equivalent to unit tests - <AUTHOR> Taking a look at the similarities between drafting legislation and computer programming, it strikes me as odd that legislation seems to have no corresponding notion to unit tests or integration tests.
The closest I can see (from a laypersons view) would be case law as one could theoretically look back at old decisions and determine if the same decisions would be made under new legislation, but that's not how it works. It's way more nuanced and case law actually sets legal precedents.
Is there a more direct corollary between unit testing and legislation? <comment><USER2> Some legal changes are piloted and studied, like the various basic income studies. It doesn't make sense for all types of laws, though.

<comment><AUTHOR> Right, and you make a good point that it does not make sense for all types of law.

I think that these studies are a good thing and I would never want to discourage anything of the sort, but what is missing is a way to ensure consistency of test coverage. What I mean is that one study might record a particular measurement but a subsequent study may ignore that measurement all- together.

Maybe what I'm thinking about exists in the form of discussions on sites like law.stackexchange.com or as articles in legal journals read by the experts.</comment></comment>


Ask HN: Is hn.algolia broken? Any other options? - <AUTHOR> Hey,
I've used https://hn.algolia.com for a long time to search relevant topics in hacker news but lately it isn't showing good results.
Just now I was looking for gantt charts stories by popularity in the last year and got nothing relevant back: https://hn.algolia.com/?query=gantt&sort=byPopularity&prefix&page=0&dateRange=pastYear&type=story
Tried a few different things (custom time range over a long period of time for example) and nothing. Google is giving me much better results!
Same happened when I was looking into HAProxy articles... any other sites people use to search hacker news? Is it just me or is hn.algolia not as good anymore? <comment><USER2> I'm not sure about any algolia problems, but is there any specific reason you don't want to just use Google? (that's what I use to search HN) If you tack on "site:ycombinator.com" it generally works great for site-specific searches. You can do time ranges and more advanced searches as well.

</comment><comment><USER3> (algolia employee speaking) Please don't hesitate to reach out to us using firstname.lastname@example.com, we would love to better understand your issues and ultimately improve the relevancy.

</comment><comment><USER4> looks like it is working now</comment>


The Absurd (Lack of) Support for Android Developers - <AUTHOR> https://medium.com/@jgullo/the-absurd-lack-of-support-for-android-developers-c1e42b18b08e <comment><USER2> I've more experience working with iOS Reviews. Anecdotally, I was able to discuss with a real person, get at least some insights, and I even went through an appeal and won it.

It really sounds like Google is refusing to provide information, and just point to a specific rule which is too generic to really understand what it's going on. That's a pity. I hope you get some traction on HN to solve this</comment>


Show HN: Analytics for GitHub Repos - <AUTHOR> https://repo-analytics.github.io/ <comment><AUTHOR> Hi, HN, I am the author of Repo Analytics. Repo Analytics is an open source tool to record repo traffic, analyze star, clone watch data etc.

The initial reason I create it is because GitHub only stores 14 days of traffic data. I want to see early data. While I am build it, I find there are lot more I can do.

Like analyzing star history(I am the author of [https://star- history.t9t.io](https://star-history.t9t.io)), star-locations and other data of github repos.

There should be other interesting analytics we can do on github repos. If you have any suggestions please let me know by open an issue on github [https://github.com/repo-analytics/repo- analytics.github.io/i...](https://github.com/repo-analytics/repo- analytics.github.io/issues)</comment>


24 days of Rust – serde - <AUTHOR> https://siciarz.net/24-days-rust-serde/ <comment><USER2> It's been mentioned in the post, but it's a big deal, so for emphasis: serde is much nicer to use on nightly than stable, even though it will work on stable. This has been one of the biggest reasons people aren't on stable Rust. The tooling needed to get it working on stable with the same ergonomics as nightly is slated for Rust 1.15. It's not 100% for sure, but 99.99%.

This will also help crates like Diesel.

<comment><USER3> What is the tooling that's missing in stable?

</comment></comment><comment><USER4> There's also nom ([https://github.com/Geal/nom](https://github.com/Geal/nom)) which is similar to Parsec and more designed for parsing text formats but used for binary formats too.

<comment><USER2> Serde is short for "serialize/deserialize", nom is about parsing. Similar, but slightly different things.

<comment><USER5> Serde creator here. Steve's right, serde is fundamentally a generic protocol that implements serialization. I didn't use nom for serde_json (because it didn't exist at the time) but it's definitely possible to use nom and other parser generators to implement the serde protocol.

</comment></comment></comment><comment><USER6> And it's only for nightly (see "feature") and it means it's can be used in reliable code. Talks about stabilizing of this feature are endless.

<comment><USER5> Serde code generation can be used on stable Rust, it just requires a bit of boilerplate code to setup: [https://serde.rs/codegen- stable.html](https://serde.rs/codegen-stable.html). Things will be much better once macros 1.1 gets stabilized.

<comment><USER6> codegen? lol, never. It would be enough reason to forget about Rust at all.

<comment><USER6> for silent downvoter: this line "Next create a file src/serde_types.in.rs to hold all the types for which we need code generation." sounds ridiculous for web projects with hundreds of entities, needed to be transferred as json objects trough API.

<comment><USER7> For what it's worth, you only need one file to be included. Any other files will be included and translated as necessary, so the only file that needs the .in extension is the root of the serde types.

<comment><USER6> Doesn't matter. Duplication of hundreds of structs is a nightmare when you want to change some fields.

<comment><USER5> There's no real difference with what serde_codegen does, and what the compiler does for expanding macros. It's just expanding to source rather than raw AST.

The idea would be that these types would be put into a library (or just another module) that's used by the rest of the app. There wouldn't be duplication of these structures. It's not ideal, which is why we are working on stabilizing the compiler features to do away from codegen.</comment></comment></comment></comment></comment></comment></comment>


How Techstars Forever Changed the Trajectory of Our Company - <AUTHOR> http://blog.knowtify.io/the-best-tasting-pivot-ever/

<comment><USER2> lolz</comment>


Ask HN: Is MongoDB ever the best choice? - <AUTHOR> Many of us have written off Mongo for a while. I don't even really give it much consideration anymore. The open-sourcing of Parse Server reminded me that people still do use Mongo to successful effect, but would it ever be your first choice?<p>I there a use case out there where the answer is definitively, "Yes, you should use MongoDB"? <comment><USER2> Is there a use case out there where the answer is definitely "No, you should not use MongoDB"? Yes.. there is. And so are other use cases where you have a multiple choice answer, mongo being one of them.

<comment><AUTHOR> Right, so is there a subset of those multiple choice cases where Mongo is best?

</comment></comment><comment><USER3> MongoDB is web-scale.

<comment><USER4> Can you elaborate on that ?</comment></comment>


Russian startup wants to put billboards in space. Astronomers aren't impressed - <AUTHOR> http://astronomy.com/news/2019/01/billboards-in-space?webSyncID=bb9352c7-a369-7944-5cb1-b9c3a76ccd13&sessionGUID=e5619c21-6305-033e-8d6d-3ed329844e8b <comment><USER2> This is space pollution - there are better ways for urgent communication and definitely much better ways to advertise</comment>


Heavy metal: Life at the world's largest shipyard - <AUTHOR> http://www.bbc.com/news/world-asia-32811866 <comment><USER2> The first order Hyundai shipyard received was built WHILE the dry dock was being built AROUND the ship.

The second (?) ship Hyundai built failed buyer's inspection (or was it the buyer just backing out) and Hyundai couldn't find a buyer.

So the founder of Hyundai simply started a shipping company with that one unsold ship.

<comment><USER3> Woah, that's a pretty cool story. Anywhere where I can read more?

<comment><USER2> I can't recall where I read the stories I mentioned earlier but you can find more stories in some books like this

On Amazon \- Made in Korea: Chung Ju Yung and the Rise of Hyundai

Another legend about Chung Ju Yung. While he was out supervising construction of first highway ever (connecting Seoul to Busan) of Korea, he was so busy that he didn't take off his socks for a week at a time. I guess he went about his work until the moment he dropped off to sleep, for days. He was practically a soldier on the front line.

But to know how Hyundai Shipyard and other Korean industries rose, you have to know about this man, army-general/coup-leader/president/dictator, Park Chung Hee. You can read about him. \- The Park Chung Hee Era: The Transformation of South Korea

His daughter is currently the president of S Korea.

</comment></comment></comment><comment><USER4> Anybody who even has a passing interest in the explosive growth of the Korean economy might enjoy reading Michael Seth's "A History of Korea: From Antiquity to the Present" [1] The beginning is a little chaotic, but the 20th century on parts are really well researched, condensed and fascinating to read.

A lot of this article rings familiar. I have a relative on my wife's side that works for the second largest shipbuilder in the world, Daewoo Shipbuilding & Marine Engineering (DSME). He went to the top university in Korea for some kind of relevant engineering degree and Daewoo covered his tuition. In exchange he promised to work for them wherever they put him and for about 5 years he ended up at the DSME shipyards in Okpo-dong, Geoje-do [2], _just_ down the road from the Samsung Shipyard and not too terribly far from the shipyard in this story. The sites are so large they dwarf the nearby towns and are clearly visible on Google Maps without even turning on the Satellite view [3]

He had never been to Geoje-do, and he figured, being so far down south, it might have nice beaches or coastal areas like the next largest island (and only a few hours by ferry) Jeju-do -- also known as Korea's "Hawaii". What he found was rugged, rocky beaches and rough local fishermen. Either pushing their craft out to dangerous seas, or blowing off steam in the local bars.

Working as a member of the DSME engineering team, he at least got to work in a modern office building, the company put him up in decent, if spare, housing and he got a discount on a commuter car from sister division/company Daewoo Autos. The nearby towns had pretty good food and the scenery, though rugged was gobsmacking beautiful if you knew where to go.

He snuck me in on a tour of the facility. It has the kind of incomparable size a mountain does suddenly rising out of a flat plain. It looks big, but then you never seem to ever get near it and it just keeps getting bigger and bigger and more massive until your eyes start to resolve tiny people working around the site, too small to see before. I forget the number of ships they put out a year, something on the order of 60 or 70. Or all sizes and configurations: supertankers, cargo vessels, LPG transport, submarines on order. The waters around the island are _full_ of massive ships out on proving runs. [4]

He hated it down there, it was a dull rural life and he was trying to raise a family. In the last couple years of his indenture, he spent time studying to become a patent attorney and wanted to leave DSME, but the company finally relented and brought him back to Seoul to work a more normal life with better pay and seniority. He's now a senior engineer, working on better ways to build ships that keep the world running.

1 - [http://www.amazon.com/History-Korea-From-Antiquity- Present/d...](http://www.amazon.com/History-Korea-From-Antiquity- Present/dp/0742567168)

2 - [https://en.wikipedia.org/wiki/Okpo- dong](https://en.wikipedia.org/wiki/Okpo-dong)

3 - [https://www.google.com/maps/place/Ulsan,+firstname.lastname@example.com...](https://www.google.com/maps/place/Ulsan,+email@example.com,128.6524076,13z/data=!4m2!3m1!1s0x35662e8be2b2de81:0x7083fa7333d93101)

4 - [https://gcaptain.com/wp- content/uploads/2011/12/DSME.jpg](https://gcaptain.com/wp- content/uploads/2011/12/DSME.jpg)

</comment><comment><USER5> The descriptions of the place are quite awe-inspiring, but it seems like the photos don't do it justice. Where are the photos of "giant cranes (aptly called Goliaths) dominating the skyline"?

<comment><USER6> It's a strange thing, with the scales (I presume) are involved (here as well). I worked a bit with refurbishing "small" oil-rigs, now used mostly for search drilling. They "only" stand about 70m above sea level when elevated for refurbishing.

But even these "small" rigs (typically built in the 70s, with a goal of lasting 5-10 years) -- are so huge -- that most people that worked on them had no issues with vertigo/fear of heights. When you stand on top, looking down, all the sizes are so big, that your brain doesn't see a 70m drop down to the ocean as all that far, because the support towers are so huge, that you just cannot fathom their size. Sometimes you can look down, and make out the ant- like forms of people working -- but even then, the brain just can't process the dimensions.

I think I have some illustrative photos on a drive somewhere, but apparently not on hand.

One of the few photography projects I'm aware of that comes close to both capturing the size, and _displaying_ the size, is the series by Edward Burtynsky that I became aware of through the film "Manufactured Landscapes" \- scenes like:

[http://www.edwardburtynsky.com/site_contents/Photographs/Min...](http://www.edwardburtynsky.com/site_contents/Photographs/Mines.html)

The magnitude quite literally boggles the mind - the size is just super human. And that usually transfers quite poorly to film.

</comment></comment><comment><USER7> I was expecting this to talk about heavy metals[1] (which are (sometimes?) used in paints applied to ships), but it is using this title just to refer to the heavy industry. (Link bait?)

[1] [https://en.wikipedia.org/wiki/Heavy_metal_(chemical_element)](https://en.wikipedia.org/wiki/Heavy_metal_\(chemical_element\))

<comment><USER8> I wouldn't say link bait. It was just a different use of the music pun. "Worlds Largest" would most likely mean heavy ships and lots of metal, not necessarily having to do with environmental concerns.</comment></comment>


US income inequality jumps to highest level ever recorded - <AUTHOR> https://markets.businessinsider.com/news/stocks/income-inequality-reached-highest-level-ever-recorded-in-2018-2019-9-1028559996 <comment><USER2> Hmmm...other sources have the U.S. Gini coefficient at around 0.39, not the 0.48 that this says: [https://data.oecd.org/inequality/income- inequality.htm](https://data.oecd.org/inequality/income-inequality.htm)

OECD and the Census bureau both seem like reputable sources, so I wonder what the methodology difference is.

</comment><comment> purple-again A quick google shows the same thing is true in France and China. Those were the first two arbitrary countries that came to mind.

This seems to be a non story explained away by globalization or at least only of interest when discussed in the context of globalization as the trend seems to have little to do with the "US" specifically.

<comment><USER3> I don't know much about France, but China has all kinds of issues (egregious human rights, IP theft, dodgy business practices). Just the other day I read about how they're persecuting a Muslim population of their own people and harvesting their organs.

To compare that country to America and say this is a non story because something also happened there doesn't make sense.

America's always been about opportunity. Regardless of how people perceive our government, folks from everywhere on the planet have wanted to come and live work here. If something is now changing that and taking away the opportunity, that's a problem, and as an American, I absolutely care about it.

<comment><USER2> Well, at the very least, if something's happening in countries as different in their politics and economic policies as France, the U.S., and China, then you should not be looking at the specifics on a country to find the cause. It seems more likely to be something that is global in scope.</comment></comment></comment>


Ask HN: What's your task management checklist? - <AUTHOR> <comment><USER2> Do you mean my To-Do list? I use Notes on iOS and macOS. I've tried a ton of apps, etc., and Notes works best for me. When I was in a Windows environment I used OneNote the same way.

</comment><comment><USER3> I use OneNote,such a neat app</comment>


No more downtime - Amazon S3 based external JavaScript hosting - <AUTHOR> http://visualwebsiteoptimizer.com/split-testing-blog/no-more-downtime-amazon-s3-based-external-javascript-hosting/

<comment><USER2> But S3 does go down, even if they have SLAs. A Google search is your friend:

<http://www.google.com/search?q=amazon+s3+downtime>

I don't think anyone can guarantee downtime, but you sure can minimize it.

<comment><AUTHOR> Yes, fully agree with you. But Amazon will have thousands of engineers 24x7 for fixing up if things go really bad. Amazon S3 is a way to ensure someone will be working to get the site up again if servers go down 2 am in the morning and _somehow_ SMS alerts don't reach my phone.

</comment></comment><comment><USER3> S3 is meant as a storage system and very reliable in storing bits, but not serving them. CloudFront is meant as a CDN and very reliable in serving bits.

<comment><AUTHOR> Doesn't CloudFront builds over S3? I was reading about CloudFront and what I understand is that it is basically a distribution mechanism for S3.

<comment><USER4> Yes, CF is a CDN that sits on top of S3. It's usually very easy to turn on. Spend the hour to get it all running and you'll be glad you did.

<comment><AUTHOR> Yes, was just reading the comparision here [http://www.bucketexplorer.com/documentation/cloudfront-- amaz...](http://www.bucketexplorer.com/documentation/cloudfront--amazon-s3-vs- amazon-cloudfront.html)

Sadly, it says changes on Cloud Front take 24 hours to refresh plus it doesn't support HTTPS. While the latter is still okay but the first condition defeats the purpose of the whole setup.

</comment></comment></comment></comment><comment><USER5> You are still better off simply making a copy of the JS you are including and not having to put that 'huge responsibility' on someone else. It's the code you've tested against, after all. And if you feel S3 provides better reliability, you can put it there yourself. S3 fallback isn't going to do anything about 'I'm letting arbitrary 3rd party code run on my page'.

<comment><AUTHOR> That will not work for my specific case because even if my users include static JS file, they cannot include static JS file which will stall their browser in case the server falls.

</comment></comment><comment><USER6> If your servers go down, how will JS files on S3 will help you?</comment>


Ask HN: What tool does professional software engineers use to draw UML diagrams? - <AUTHOR> Hi.
I just graduated and am now involved with a (non-commercial) project where we are in the design phase.
I am using Visual Paradigm Community Edition to draw sequence diagrams since this was the tool I used in my uni classes.
I am not asking where to or not to use UML diagrams. I am asking which are the best tools to draw them. <comment><USER2> I use draw.io at [https://app.diagrams.net/](https://app.diagrams.net/)

It is free and online. I can draw diagrams that I used to draw with Visio but I don't have to install software and can use it from anywhere.

I can export the documents to my local machine as a master file (e.g. file type is *.drawio) or can export them as an image (e.g. JPG, PNG, etc.)

There are lots of subjects that you can turn on (also free) ranging from architecture to electronics.

I can usually find what I need or something that works well enough for my simple needs.

I can also use it kinda like a white-board in screen-sharing meetings.

Though - looking at other comments - yEd looks pretty powerful. I'll have to check it out.

</comment><comment><USER3> PlantUML [1] if you want to create diagrams with textual descriptions. I find that much easier to modify and maintain in the long run.

[1] [https://plantuml.com/](https://plantuml.com/)

</comment><comment><USER4> I don't do a lot of diagramming...But I've found Yed[1] to be nice. Free & Cross Platform.

[1] [https://www.yworks.com/products/yed](https://www.yworks.com/products/yed)

</comment><comment><USER5> Plant text [1],

\+ free \+ online no instalation needed \+ source is text file can be put in git for collaboration

\- source is text file no drag&drop

[1] [https://www.planttext.com/](https://www.planttext.com/)

</comment><comment><USER6> Not a heavy UML user but the Dia Diagramming tool has worked well for me. Link: [https://wiki.gnome.org/Apps/Dia](https://wiki.gnome.org/Apps/Dia)

</comment><comment><USER7> Check out Excalidraw - [https://excalidraw.com/](https://excalidraw.com/) It is an open source, no-frills tool that you can use to quickly draw simple diagrams.

I am using it quite often to sketch LoFi mocks.

It stores in your browser's localstorage, and you can easily collaborate with others in realtime.

</comment><comment><USER8> I've seen Microsoft Visio used pretty often in larger/non-tech companies.

I opt for [https://draw.io](https://draw.io) if I need a quick diagram personally (it's a big plus that you can guarantee the recipient has access since it can be opened from the browser version).

</comment><comment><USER9> I've made mostly due with Google Doc with Google Drawings. They are editable, so better than a picture. However, the canvas has limited size, smaller than a doc page. It forces multiple drawings for a single flow sometimes.

We used to use Prezi. It is pretty amazing.

</comment><comment><USER10> Pencil and paper or marker board. If you need share digitally, take a picture.

<comment><AUTHOR> I need to collaborate with other people and because of COVID we are doing everything remote. Also modifications would be hard and time consuming with pencil and paper.

</comment></comment><comment><USER11> I learned uml in University couple of decades ago. I don't remember ever using UML since.

If you are using UML during design phase, you probably are not going in right direction.

</comment><comment><USER12> first of all I would recommend to stay away from UML. It's a bloated tool. that don't translate to code.

for the design phase I think the C4model and a sequence diagram provide all the tools to think about your project.

in order to produce such diagrams you can use plantuml. Because that way you can store it with your code in git.

</comment><comment><USER13> Lucidchart is a great option</comment>


Nakatomi Space - <AUTHOR> http://bldgblog.blogspot.com/2010/01/nakatomi-space.html

<comment><USER2> This article made me think of video games and how a few of them have made really innovative uses of space (no, really!).

One of my all-time favorite is a game called X-Com from 1993 (called UFO: Enemy Unknown in the UK). It's basically a turn-based tactical strategy game. Perhaps its most defining feature is almost completely-destructible terrain. The gameplay ends up being very similar to the Israeli invasion described in the article: using the doorway is almost always the wrong choice. The computer will have the door covered. If you knock through/down the right wall, they have to spend the rest of the turn with their guns pointed the wrong direction (the game has overwatch) and their backs exposed. The most powerful weapon in the game does just enough damage to knock a man-sized hole in the side of a UFO; the qualitative change in gameplay is significant. Those corridors are twisty and treacherous, but entering from the middle instead of the start turns the advantage around.

The other game I thought of is the Splinter Cell series. Pandora Tomorrow, the second game, gave the series a very asymmetric multiplayer style of spies vs mercenaries. In addition to wildly varying, and anti-complementary, abilities, the two sides were practically playing on different maps. The spies could fit in air ducts climb over fences. The mercenaries could only navigate around in the "normal" space of rooms and doors, but effectively owned the places where they could walk, on account of automatic weapons. The result was effectively two maps, one wrapped around and between the other. Even before I was exposed to the idea of scripted spaces, the idea was mind-bending to me. After reading the article, it's even more impressive: one side in the asymetric conflict has an architectural advantage, balancing against its comaprative weakness in more traditional areas. I was never any good at the multiplayer, but it was still fascinating.

Chaos Theory, the third game in the Splinter Cell series, also had some impressive work in the single player. It's the first game I've played where using a non-traditional route like a duct or a drophole actually felt like I was hacking the level rather than following the route that was laid out for me. Games have been using air ducts since Half-Life, but whenever they're available it feels like you're supposed to use them, often because you have no other choice. I feel like I'm finding _the_ way to advance the level. It's difficult to describe, but the holes in the environment felt more natural, like I was following real-world logic rather than game-logic.

I haven't played Mirror's Edge for myself, I would be interested to hear people's perspective on how original that game's use of space is.

<comment><USER3> Mirror's Edge is extremely linear - there's usually exactly one right way to do things, and if you don't do it that way, you die, rinse, repeat, ad infinitum, ad tedium. I couldn't play it for more than a couple of hours.

Two games I relate to on the theme of navigation of space are the Thief series, and Far Cry 2.

With Thief, you have a rough map, and your task is to navigate the territory to get to your goals, avoiding hazards such as loud tile and metal, bright lights, guards, traps etc. With a selection of arrows for making the ground silent, extinguishing torches, and rope arrows for climbing, it can be a lot of fun. Constantine's Mansion (Constantine's Sword mission) is a particularly architectural delight, with optical illusions and a network of grassy tunnels joining different floors.

Actually, a defining metaphor of the first two Thief games is architecture as sexuality; in the first, your enemy is the earthy Pagan Trickster and his co- conspirator, wood nymph Viktoria, and you pursue him into the bowels of the earth. In the second, your enemy is a technocratic religious self-described prophet, and you pursue him in a monstrous skyscraper of metal, working your way up and up.

Similarly, a substantial and (for me at least) entertaining part of Far Cry 2 relates to the navigation between mission objectives. The roads are patrolled, and intersections are heavily enough guarded that clearing them risks depleting ammo, so the best policy is generally to navigate in the gaps between the roads, choosing crossing points, swimming in rivers, selecting the right angle of entry approach for mission destinations, etc. Given that every main mission involves at least three different destinations (one to your buddy in a safehouse, one to the buddy's preferred mission target, and a third as the original mission), you need to enjoy this navigation to get the most out of the game. (Most people didn't; it seems they stuck to the roads and found the guard checkpoints tedious.)

As to games like Half-Life and its successors in particular, they seem to me to inhibit exploration and be very linear. Any time there's an interesting passage hidden away in a corner, I make a note of it and scout out ahead to see what the mainstream alternative is; but in HL2 and episodes, it usually turns out that the main branch is a dead end, and you _must_ go back and investigate that hidden passage. So it kills any chance of you feeling clever, and makes the unorthodox mundane.

</comment></comment><comment><USER4> Excellent find. However he mischaracterizes one segment of Die Hard that would actually strengthen his thesis.

The article argues that the logic of Die Hard rewards those who "infest" the spaces they inhabit, traversing them creatively rather than via their intended corridors, elevators, and doorways.

He uses the L.A. SWAT team running across Nakatomi Plaza's rose garden as an example of this.

I'd counter that the SWAT team's approach was actually conventional. They try to get in through the front door, and get blown away. Had they tried to tunnel in from below, for example, in Die Hard's world they would have been more successful.

Also, his point that the subsequent Die Hard films would have been improved by holding onto the premise of exploring an architectural space rings true. Die Hard 2 tried to do this with an airport, but it was a much less interesting locale. You could debate whether or not Die Hard 3 was taking the same approach to NYC or not...

If, as he says, Die Hard is more about architecture than characters, I'd argue that the true spiritual sequel to Die Hard is Steven Seagal's Under Siege, aka, "Die Hard on a boat." Throughout the (awesome) film, Seagal travels around a navy ship in all sorts of unconventional ways, letting the viewer explore the unfamiliar space in a fashion similar to John McClane's adventure in Die Hard.

<comment><USER5> > Die Hard 2 tried to do this with an airport, but it was a much less > interesting locale

Im not sure it is less interesting; I think mostly they used it poorly. Airports are a fascinating place and at times (i.e. when he used the storm drains to get out to the runway) I think there were examples of "Nakatomi Space".

The main problem was that an Airport is a very large and very open space - they didn't use that well.

</comment></comment><comment><USER6> Quick summary: _What I find so interesting about Die Hard—in addition to unironically enjoying the film—is that it cinematically depicts what it means to bend space to your own particular navigational needs. This mutational exploration of architecture even supplies the building's narrative premise: the terrorists are there for no other reason than to drill through and rob the Nakatomi Corporation's electromagnetically sealed vault._

The article is all about how "Die Hard" and an Israeli invasion of Palestinian territory in 2002 are both about using space in unexpected ways, and moving through everything _except_ doors, streets and hallways.

</comment><comment><USER7> Fascinating. I never thought of Die Hard like that, but he's right. The hero doesn't just improvise ingeniously - a standard hero trope - but specifically in terms of architecture. He isn't _given_ clever gadgets like James Bond, but conjures them from the mundane. It's definitely hacking.

An architecture is a theory of space; he has other theories.

</comment><comment><USER8> "What I find so interesting about Die Hard—in addition to unironically enjoying the film—is that it cinematically depicts what it means to bend space to your own particular navigational needs. This mutational exploration of architecture even supplies the building's narrative premise: the terrorists are there for no other reason than to drill through and rob the Nakatomi Corporation's electromagnetically sealed vault.

Die Hard asks naive but powerful questions: If you have to get from A to B—that is, from the 31st floor to the lobby, or from the 26th floor to the roof—why not blast, carve, shoot, lockpick, and climb your way there, hitchhiking rides atop elevator cars and meandering through the labyrinthine, previously unexposed back-corridors of the built environment?"

So, basically, just like a hacker. Like Mel using the values of opcodes as numeric constants, spacing instructions just right on the drum to slow down the computer's execution rather than using time delay loops, and exploiting a register overflow instead of a loop test. Not constraining one's self to the artificial rules the system is built to enforce, but dropping back to the fundamental physical rules the system was built upon in the first place.

<comment><USER9> Exactly! The MIT hackers in particular were famous also for their exploration of the physical plant; see <http://en.wikipedia.org/wiki/Roof_and_tunnel_hacking>

</comment></comment><comment><USER10> In the Pixar film "Ratatouille", there is an amazing visual sequence where Remy the cutely digitally-rendered rat runs through the hidden spaces between houses/walls/interior.

</comment><comment><USER11> For a more general look at this topic: <http://johnaugust.com/archives/2006/air-vents-are-for-air>

</comment><comment><USER12> Would anyone really characterize the villains in Die Hard as 'terrorists'? What exactly is _terrorizing_ about drilling into a vault in a secure building in order to steal money? How are they not just _robbers_?

<comment><USER4> They pass themselves off as terrorists to the public to hide the robbery plans, for a lot of people, that's probably what stuck.

<comment><USER13> Also, it conveniently avoids spoilers.

<comment><USER14> The movie was released in 1988. It's hard to spoil something that has already been consumed, processed, excreted, and reused to make a garden.

<comment><USER13> Consumed and processed by you, perhaps. The film was released (somewhat shortly) before I was even born. I watched Die Hard for the first time last year. Before then, the only thing I knew about it was that it had Bruce Willis in it. I don't think I'm particularly special, I just don't watch that many old movies.

The point is, spoiling it adds nothing to the conversation: "I watched the movie and _you_ got this plot element that, while important to the film, is completely unimportant to your point ... wrong!". On the other hand, not spoiling it lets anyone a bit too young to have seen it the first time around not have their experience of the film permanently altered for the worse. There is no contest. Don't spoil things, even if it's old as hell. It really, honestly ruins things for some people who are a bit behind the times and care about this sort of thing.</comment></comment></comment></comment></comment>


German High Court Declares All Software Potentially Patentable - <AUTHOR> http://fosspatents.blogspot.com/2010/05/german-high-court-declares-all-software.html

<comment><USER2> Correct me if I'm wrong, but I don't understand this to be as big a deal as a court decision in, say, the UK. This is because there is no doctrine of precedent in Germany. Previous decisions don't bind courts the way they do in common-law jurisdictions. I have no doubt that this decision is significant, but it's not clear to me how significant. Is this really the German equivalent of Bilski?

<comment><USER3> The Federal Court is the ultimate appeals court and thus can overrule the Patent Court, hence forcing the German Patent Office ('Patentamt') to grant the patent.

What's more, and potentially worse, judgements of the Federal Court serve to interpret and further develop the law. Hence it is very much like a precedent in the common-law sense - except one that isn't open to interpretation by other courts. If legislators now think that this is not what they intended, they are free to change the law. But you'll find other courts very much basing future judgments on the opinions of the Federal Court.

The European Patent Office has granted a fair number of software patents for technical solutions (indeed, the issue of "technicity" is key) using software. So this may point to their validity in Germany and increase litigation.

<comment><USER2> > Hence it is very much like a precedent in the common-law sense - except one > that isn't open to interpretation by other courts.

I'm sorry, I don't follow this at all. I though it would be like a common-law precedent, but persuasive rather than binding with respect to future decisions?

My reasoning was that it's a different situation because civil law courts aren't absolutely obliged to follow past decisions.

<comment><USER3> Sorry, that was confusing indeed. It's late/early here.

Persuasive, not binding is correct. But in practice the authority of the court is such that most lesser courts will honor it. I was also wrong on the "highest appeals court" count - if the issue is of constitutional interest, there is the Federal Constitutional Court.

</comment></comment></comment></comment><comment><USER4> Oh, "Java Virtual Machine" is a scripting language now... (Page 6 of the Court's decision in German)

To understand the technical aspect, have a look at (14) in the court's decision - at first I got a heart attack since it talked about running Java Beans on a frigging micro controller, but in the second part it's made clear it will be run on a modified runtime environment for resource constrained computers (this is the innovation) while still allowing the same JSP document as on a normal Java runtime.

General concepts are still not patentable and any patent mustn't be based on conceptual thoughts, but on usage of technical instruments. (demand of technicality)

From a philosophical point of view, I think it's fair to grant patents like this (all usual requirements for patents persist, i.e. result of inventory activity, no prior art), _but_ I fear what the original article describes: People using technical innovation as a back door to software patents.

<comment><USER5> And since when using a modified runtime environment tailored to the limited resources of the target platform is an innovation?

<http://portal.acm.org/citation.cfm?id=802845> comes to my mind, just a Google query away.</comment></comment>


jsPerf: Easily create and share JavaScript performance test cases / benchmarks - <AUTHOR> http://jsperf.com/

<comment><USER2> I like it very much. I think it would be extremely useful if you would display statistics of previous runs carried on each test case so that: a. I will be able to see the aggregated performance on many machines (not just my own). b. I'll be able to see how a test case behaves on different setups (for example, it may yield different results on firefox and on mobile safari).

cheers! (if those stats are available somewhere, sorry, I must have missed them)

<comment><AUTHOR> I'm planning to gather test results automatically in the future, so jsPerf will be able to generate a neat overview of test results across browsers.

See the final question in the FAQ: <http://jsperf.com/faq> :)</comment></comment>