12,000 Requests per second with Nginx, PHP and Memcached - <AUTHOR> http://blog.martinfjordvald.com/2010/09/12000-requests-per-second-with-nginx-php-and-memcached/ <comment><USER3> A question I hope someone here can answer:

I'm now working on my first major webapp, so I've been learning how to be a sysadmin, pretty much from scratch (almost no previous experience with running webapps, lots of experience with other things though).

Anyway, I've been trying to find resources to help learn, but it's been extremely difficult. These are the questions that are still bugging me, hopefully someone here can point me to some good reading about them. Note that my stack is Python/Django over Apache (mod_wsgi) right now. Also note that my site has a "ping" system, where each client connected continuously pings the server every few seconds to see if any new info arrived, making me have to handle a larger amount of requests per second, I believe.

The questions:

1\. What kind of load do I need to handle? Is 12,000 requests per second terrible/good/great performance? How do I go about figuring out how many people are online at once for most sites? How do I even estimate it?

2\. How can I test the performance of my application? I've learned that Apache Bench is used a lot, but are there better tools?

3\. What are the best tools to help me monitor and understand the load on my server?

4\. How do I go about understanding the bottlenecks in my application? Right now, my Apache process is taking most of the cpu. What does that imply about where I should optimize?

Sorry to braindump, but I've been looking for answers to these questions online and haven't found any clear help.

<comment><USER4> As a "meta-answer", you might consider breaking these questions up and asking them on one of the stackexchange sites.

However:

1\. "What kind of load" depends on your anticipated visits to the site. There's no substitute for real traffic, but simulation can do in a pinch. Likewise there's no substitute for simulation, but capacity planning tools can do in a pinch. Look at _The Art of Capacity Planning_ , _The Art of Application Performance Testing_ and _Guerilla Capacity Planning_.

2\. There are many tools, some quite sophisticated. Look at siege, httperf and others like them. Consider also using automatic UAT tools (like Cucumber) as the basis for performance and stress tests.

3\. Look into monit, zenoss or nagios. There are others.

4\. Profiling, profiling, profiling. And ditch Apache, it's a memory hog. Consider lighttpd or nginx.

<comment><USER3> Thanks, I'll look into those.

When you say ditch Apache, do you mean completely? I know a fairly common setup is to use nginx+Apache to serve Django (with nginx serving the static content and Apache the Django code). Should I be running everything from nginx?

<comment><USER5> You should at least try nginx/gunicorn (<http://gunicorn.org/>). And if your clients are constantly pinging and the data hasn't changed, make sure you are caching it in memcache (etc) to relieve the database.

[http://ericholscher.com/blog/2010/aug/16/lessons-learned- das...](http://ericholscher.com/blog/2010/aug/16/lessons-learned-dash-easy- django-deployment/)

<comment><USER3> Honestly, I'm a little scared of using something like gunicorn. I could be wrong, but it seems like an _extremely new_ technology, especially when compared to Apache, which has a lot of history behind it.

<comment><USER6> You can have a failover, so if one breaks you can quickly boot the apache one back up.

</comment></comment></comment></comment></comment></comment><comment><USER7> Here is the secret to getting the whole nginx/fastcgi vs. apache/mod_php thing to click in your head.

The trick is to think of it in two layers. The "spoonfeeding" layer and the "worker" layer.

In nginx/fastcgi, nginx is the spoonfeeding layer and the fastcgi worker procceses are, you guessed it, the workers. Nginx effectively acts as a proxy, holding open the thousands of connections users have made but only a small fraction of them are actually being worked on by the worker processes at any given moment.

With apache/mod_php there is no spoonfeeding layer. Every single apache child has the php interpreter loaded and acts as a worker process. When you look at your nginx vs. your apache setups think of apache children as the fascgi workers _not_ as nginx.

Most of the time people switch to nginx and claim amazing results what got them that was the addition of a spoonfeeding layer. Technically, you could have done that several other ways. Most higher end sites who've had to care about this stuff for years let the loadbalancer handle the spoonfeeder layer, that way the (web)appservers can focus on being appservers. Doesn't matter if its a $120K Netscaler or a $0 copy of varnish or ha-proxy bound to localhost, the point is you never want a 1:1 relationship between "active but idle user connections" and "worker processes".

</comment><comment><USER4> A core issue for modern websites is one of cache invalidation. The linked article essentially sidesteps the issue, with the in-memory speed of memcache obscuring the problem.

For traditional LAMP-style document-producing engines, cache invalidation strategies rely either on TTL (leading, as he says, to stale data) or on polling the source data (leading to an unavoidable performance hit, amortised over the improved speed of the cache).

Leaving aside TTLs, the key issue is that cache invalidation is driven by GET and not POST requests. I wrote a thesis proposal where part of the concept was to drive all cache invalidation from POSTs. New comment added to a story? A regeneration is queued up. New post on front page? A regeneration is queued up.

Firstly, you can improve both staleness by only regenerating when new data is added, and you improve performance by not needing to poll the source data for currency every time you touch the cache. In an ideal situation you could come close to raw HTTP serving speed.

You also allow some degree of dynamic responses to load. Under high rates of POSTs you can batch up regeneration events to prioritise the GETs.

However, I won't be pursuing that project -- I've been accepted for one I was more interested in.

<comment><USER8> I've been thinking along similar lines for my project and the issue i'm running into conceptually is tracking WHICH cache records to invalidate upon POST. Say an HTML list, an HTML detail page, and a full composite object all contain references to the particular item you updated. Single items - <USER2> detail page and object are fairly easy to know about, but what about a list view and a grid view that also contain that item. What are your thoughts?

<comment><USER9> A dependency graph between database tables and pages, no? How to define 'page' depends on the rest of the application, I guess in most frameworks it would be 'module' + 'action'.

</comment></comment></comment><comment><USER10> For 4 years I tried to run my WordPress site off of Apache + PHP.

For the first 3 years it was Apache+Prefork+mod_php+WordPress (default setup for any on RedHat-based or Debian-based setups for the longest time).

Any time I would get a story on Slashdot or Digg the site would die for at least half a day... god I hate it.

I went from a 1GB RAM VPS to a 12GB dedicated machine in 3.5 years trying to get it to stop crashing whenever I would get a flood of traffic and was never able to. I pushed back on the idea of being a Linux sys admin for so long because I didn't _want_ that hassle, but alas, I had to bother with it.

Finally at about the year 4 mark I decided no REAL site on the planet was running with this configuration since it didn't seem to matter the hardware you threw at it (yes I tweaked the Apache setup/mod-list tirelessly to scale with the improved hardware). I finally started digging into how real human beings setup Apache and came across the argument for using the "MPM worker" as opposed to the default pre-fork worker.

Made sense to me; less 30+ MB processes running around answering questions.

After that change, it helped a little... I have no hard numbers on hand, but it felt like a small improvement.

I kept digging and soon ran across the one-hacky-but-now-officially-supported method of using Apache + a family of PHP VM threads pre-launched and called via FastCGI to execute the .php pages from my WordPress site, the computer- science part of my brain loved this idea... the Java-trained side of me suddenly made me realize that prior to this with Prefork and mod_php, every time someone was connecting I was spinning up a new Apache thread and a new PHP VM every single time (please correct this if wrong... this is how I understood it).

With FastCGI I could have a family of say 20-some PHP VM threads living in harmony and responding to Apache constantly asking them questions.

After rolling that change out at about year 4, I noticed a big improvement; maybe about 50%.

At my next Slashdotting the server got REALLY slow, but hung in there; no crashes. I thought it was odd that all that hardware _still_ couldn't host things snappy... it seemed like every other day I was clicking a link off of Hacker News or Reddit front page to some dude's personal blog that was responding very quickly to me and I was _positive_ these people weren't spending $300/mo like I was on dedicated hardware to run their blog.

So I kept digging.

As you guys probably know, when you start searching for what sucks about Apache two things come up more than any other: "use nginx" or "use lighttpd" -- I had read that early versions of lighttpd had some memory leak issues (I think long-since fixed) and had a handful of Ruby friends that loved nginx... so I decided to stay up all night one night and port the site over.

25mins later I was done.

Yea so that was a lot easier than I expected. The only painful part was using some heavy handed redirect logic to convert my WP-SuperCache rules over to nginx (the author wasn't supporting nginx yet, but I think he does not).

I would point out that the server load with nginx running with NO CACHING (WP- SuperCache disabled, all queries execute PHP and perform a MySQL query) was something like 1/4 what my Apache/MPM/FastCGI/PHP/WP-SuperCache-enabled setup was using.

Once I got WP-SuperCache up and running on nginx, the different was stupid- big. The nginx/WP-SuperCache setup was using 1/8th or 1/10th the system resources that the Apache setup had been using.

Soon there after I got Slashdotted with a peak of roughly 400 users on at a time and the server load barely crawled beyond a 1 (screenshot): [http://www.thebuzzmedia.com/wp- content/uploads/2010/12/slash...](http://www.thebuzzmedia.com/wp- content/uploads/2010/12/slashdot-story-400-users-nginx-performance.png)

Overall I couldn't be happier with nginx. I think there are probably people that live in oxygen-rich test chambers inside of military bunkers who were bread to tweak Apache that can optimize it to have comparable performance, but that wasn't me. Out of the box nginx has been fantastic thus far.

And that is my little story related to this subject... for what it's worth.

<comment><USER11> I got someone to install nginx for me on a not-so-busy server. Twice it filled up /tmp and ran out of inodes, crashing the server. I'm in for peak traffic next month and am afraid it will all come crashing down again :) Oh, and any help you can throw at me, it's appreciated.

<comment><USER12> Filled up /tmp with what?

<comment><USER13> I'm going to guess PHP sessions. Off the top of my head its the only /tmp file creating thing I can think of in common web stacks.

If that is the problem mise is facing, you can swap out the storage that PHP uses for sessions (to use something other than files), I'd point out the relevant docs but I have a meeting to get to.

<comment><USER11> I'll look into this. My host Servint says that my inode allocation is "generous", so I wonder if I'm the only person running into this problem with PHP+nginx.

<comment><USER12> It has nothing to do with nginx.

<comment><USER11> Argh. But it happened precisely twice, only after nginx was installed, and without any traffic peak. :/

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Interesting, but let's be honest for a second, in 99.99% of the cases, a classic Apache+mod_php will be well suited. You could count on your hands the number of sites that require a setup that needs to handle 12,000req/sec and more.

If you need to speed things up, reduce the memory footprint, i'd recommend using APC or eAccelerator, and put something like Varnish or Squid in front. As well as ditch stuff like WP or Drupal, might be nice and easy to use, but the code behind it is just a disaster if you want something fast and optimized. Use extensions like XHProf or Xdebug to profile your code, and find the bottlenecks and memory eating functions.

Stop blaming Apache/PHP, they both have defaults, but in most of the case, the default is in the code.

</comment><comment><USER15> The real bottleneck in any apache setup is apache.

For those that need hassle-free backwards htaccess compatibility, try litespeed.

But there a few nice alternative to apache these days.

<comment><USER16> I had created a post here regarding a Varnish plugin we wrote for cPanel over a weekend codeathon (<http://www.unixy.net/varnish>). Based on benchmarks, Varnish+Apache came out ahead of Litespeed. But benchmarks are not always conclusive since user traffic patterns are difficult to reproduce in a benchmark environments.

The feedback we've gotten so far on the plugin is very positive (google if interested). Nginx can do caching but not with the same flexibility as Varnish.

Regards

<comment><USER15> Um, but varnish is just a cache and so of course it's faster for static content? Or am I missing something?

Litespeed can work with php several times faster than apache+php while serving dynamic content (and so can nginx).

<comment><USER16> Varnish is good for caching any object; static or dynamic. The plugin we wrote uses Varnish to do a lot of dynamic page caching. Varnish is better at dynamic page caching than Nginx.

Litespeed has a caching mechanism too (introduced recently). But I think it requires an enterprise licesense of 2+ CPU. Here are some benchmarks of Apache+Varnish vs Litespeed: <http://unixy.net/apache-vs-litespeed>

Regards

<comment><USER12> Not this again...here are the reasons that benchmark sucked: <http://news.ycombinator.com/item?id=1593611>

</comment></comment></comment></comment></comment><comment><USER6> With nginx+PHP script that just echoes "hi", I get a mere ~2000req/sec. What am I doing wrong? What are the specs of his server?

<comment><USER17> He's using the nginx full-page cache mechanism, backed into memcached. This way nginx does not touch PHP at all. It goes straight to memcached, which keeps data in RAM, so it serves pages in 7 ms.

<comment><USER6> Fair enough. Surely this would be mostly useless for anything other than static sites though?

</comment></comment></comment><comment><USER18> I am also experimenting with full-page caching and cache invalidation. Here are my prototypes:

<https://github.com/ertug/dynasta>

<https://github.com/ertug/jphpserv>

</comment><comment><USER19> WP is trash. You can speed it up about 10 times with just a couple query fixes and removing the 100 extra calls to stripslashes you get when you pull a get var 100 times.

</comment><comment><USER17> Just wanted to say thanks for the great comments on this topic. I'm just working on optimizing page speed for a client, and there's a wealth of suggestions on this page.

</comment><comment><USER20> Is using nginx with memcached support a good alternative to using varnish? Has anyone compared both on a system that gets real traffic?

</comment><comment><USER21> Just about enough to sell tickets to Comic-Con.</comment>


ES6 Performance - <AUTHOR> http://www.incaseofstairs.com/2015/06/es6-feature-performance/

<comment><USER2> The trouble with microbenchmarks like these is, JS engines nowadays are often clever enough to simply eliminate the code being tested, or change its character enough that the results are no longer meaningful. Vyacheslav Egorov (a chrome v8 engineer) has written a bunch of very good blogs on this. E.g.

[http://mrale.ph/blog/2014/02/23/the-black-cat-of- microbenchm...](http://mrale.ph/blog/2014/02/23/the-black-cat-of- microbenchmarks.html)

[http://mrale.ph/blog/2012/12/15/microbenchmarks-fairy- tale.h...](http://mrale.ph/blog/2012/12/15/microbenchmarks-fairy-tale.html)

Checking the tests here, the "default parameters" section shows some tests being 2000x faster than others, which sounds suspicious. Here's an es5 test case:

        function fn(arg, other) {
          arg = arg === undefined ? 1 : arg;
          other = other === undefined ? 3 : other;
          return other;
        }

        test(function() {
          fn();
          fn(2);
          fn(2, 4);
        });

Sure enough, an arbitrarily smart VM could compile that code down to `test();`. How much this and other optimizations affect each test is anyone's guess, but I think it's likely that at least some of these results are dominated by coincidental features of how the tests are written.

<comment><USER3> Although everything you say is true, your comment doesn't really add much value.

As you mentioned, micro-benchmarks are riddled with bias, and confusing results.

So putting micro-benchmarks aside and looking at ES5 / ES6 induced performance bottlenecks in actual apps, they are clearly present. (note, this is of-course limited to features actually implemented)

Unfortunately, a macro focused endeavor (only gauging full app performance) isn't as nicely actionable as the micro.

So in practice, in an attempt to produce high value but actionable feedback a hybrid approach, utilizing both micro/macro investigation yields the best results.

In addition the micro-benchmark vs optimizing compiler trap can be mitigated by investigating the intermediate and final outputs of the optimizing compiler.

Anyways, /rant.

There exist an unfortunate amount of JS performance traps, I wish where taken more seriously. Although more work, it would be quite valuable for someone to perform a root cause analysis to investigate potential bottlenecks brought to light by this post.

<comment><USER2> > So in practice, in an attempt to produce high value but actionable feedback > a hybrid approach, utilizing both micro/macro investigation yields the best > results.

I disagree. JS is obviously not fast by its nature; the only reason it's fast sometimes is because modern JS engines do incredible optimizations behind the scenes. As such, for real-world performance, writing code that the engine understands how to optimize _entirely dwarfs_ trivia like how Babel transpiled your default parameters. (Even the most microbenchmarked function will run dog-slow if the v8 optimizer bails out.) And if real-world performance is dominated by optimizability, then it follows that microbenchmarks are largely useless unless they happen to get optimized/deoptimized in the same way that your code does.

Incidentally for v8 at least, currently using _any_ ES6 feature (even a single "const" that's never used) causes the optimizer to bail out. So any question of "ES6-induced bottlenecks" is beside the point - it doesn't matter how fast the ES6 feature is if its mere presence slows down everything else.

</comment></comment></comment><comment><USER4> TLDR, use Babel in "loose" mode and you'll be fine for pretty much all the ES6 syntax features (by which I exclude Maps, Sets, and generators). Most of the features listed are zero-overhead when transpiled this way. As usual, the native implementations are much slower for some reason (probably because they aren't optimized yet).

Microbenchmarks and relative speeds are not super useful. I'm a performance nut and I love optimizing code -- back in the day I wrote a syntax- highlighting editor that was snappy in IE6's crappy JScript engine -- but I'm not going to worry that some syntax feature is 3x or even 10x slower than assigning to a local variable (which is what, one CPU instruction?). If you're that concerned, you should be avoiding object allocations ({}) like the plague, and that is just madness except in really performance-critical sections of code (and games).

</comment><comment><USER5> There might be some great information here but it's completely unreadable. Add some borders on your table, It's impossible to read in it's current state.

</comment><comment><USER6> Interesting data, poor presentation.

The tables need some formatting and colors would be nice, too. Instead of "slower" and "faster" it should be just a factor. So, 2x would mean that it takes twice as long and 0.5x would mean that it's twice as fast.

Also, what's the baseline? Where does that 1x come from?

</comment><comment><USER7> Promises - the assumption here is that native promises are fast - this is amusing. Userland implementations like Bluebird promises are significantly faster than native promises. Not to mention the fact that converting an API to use promises is slow with native promises - a native `promisify` will have to be provided for Node, it's being worked on.

<comment><USER8> How often do you do async stuff per millisecond that this starts to matter? At least for browser stuff I really don't see the problem.

<comment><USER3> The problem usually arises when the GC pressure introduced from the promises (often the intermediate promises) created by many active/concurrent tasks starts burning copious amounts of cycles.

As your concurrency increases, a poor promise implementation starts burning copious amount of valuable cycles, often largely due to GC pressure.

In the abstract this doesn't sound that bad, but when comparing well behaved implementations such as BlueBird, RSVP, When, ES6-Promise etc. with the current state, (July 3, 2015) native Promises, the difference is still staggering.

As for the browser, a promise is a great way to handle async and often a great abstraction around a single potentially remote entity. As more ambitious applications are created, it isn't uncommon to have thousands or tens of thousands of these remote entities. Wouldn't it be nice, if the overhead of using the promise was negligible?

</comment></comment></comment><comment><USER9> Super interesting, and somewhat disappointing as well.

Also — off topic, but I really wish they'd provided graphs, or at least given those tables some formatting love. Does anyone know of similar benchmarks that have?

<comment><USER10> I think you should complain on your browser's default table styling rather. Looks good with w3m ;P

Seriously though, graphs can be manipulated to look exactly how you want the user to interpret it.

</comment></comment><comment><USER11> See [http://kpdecker.github.io/six-speed/](http://kpdecker.github.io/six- speed/) for overview and better readability.

</comment><comment><USER12> Wow, this is all a bit disheartening to read the day after I spent all day updating my app to ES6 + babel.

These performance hits are extreme. I would never have guessed that so many of these features are taking 20-2000x speed hits.

I hope the browsers and V8 catch up soon so transpiling ES6 is no longer necessary.

<comment><USER2> Did you profile the before and after versions of your app? I think some of the more extreme results (like 2000x) here may just be due to the benchmarks getting optimized into empty functions.

</comment></comment><comment><USER13> tables not formatted!!!!!!!

</comment><comment><USER14> Add some borders to the tables, the presentation is horrible</comment>


Ask HN: Does anyone have a spare Product Hunt invite? - <AUTHOR> Hi HN,
Does anyone have a spare invite for product hunt?
Please drop me a tweet over at http://twitter.com/getsendyapp and I'll follow you so I can send a DM.
Many thanks to anyone who can help. <comment><USER2> I also need the invitation to PH.

[https://twitter.com/Jeditobe](https://twitter.com/Jeditobe) please help me</comment>


Pratt Parsers: Expression Parsing Made Easy - <AUTHOR> http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ <comment><USER2> Uhm, I wrote this a while ago: [http://eli.thegreenplace.net/2010/01/02/top- down-operator-pr...](http://eli.thegreenplace.net/2010/01/02/top-down- operator-precedence-parsing/)

[sorry for the plug, but I think my tutorial is more comprehensive in terms of explaining how the thing actually works]

<comment><USER3> I agree - I find your post is clearer than the original paper, Crockford's explanation, and Lundh's Python post. It helps that you start with just addition and multiplication, _then_ add more functionality after explaining the basics.

</comment></comment><comment><USER4> _I slapped together a crude lexer that works and we'll just pretend that tokens are raining down from heaven or something._

This perfectly describes all parsing discussions and papers I've read. I love it.

<comment><USER5> "I have a truly marvelous demonstration of this proposition which this margin is too small to contain."

</comment></comment><comment><USER6> I love Pratt parsers (or Top Down Operator Precedence parsers rather), I recently re-wrote the IronJS lexer and parser by hand (from using one generated by ANTLR) using the techniques described in this blog post and saw some pretty hefty performance increments [http://ironjs.wordpress.com/2011/03/19/new-lexer-and- parser-...](http://ironjs.wordpress.com/2011/03/19/new-lexer-and-parser-in- ironjs/)

Edit, I also have a generalized version that can take pretty much any input and any output (F#) here: <https://github.com/fholm/Vaughan>

</comment><comment><USER7> A post about... Programming? This isn't the HN I know!

Good post. I need to ruminate on this some more but it might well apply to something I'm working on.

</comment><comment><USER8> how to do it in python: <http://effbot.org/zone/simple-top-down-parsing.htm>

<comment><USER9> Unfortunately I can only upvote once. Way, way more complete than the post linked article.

<comment><USER8> not a problem

</comment></comment></comment><comment><USER10> I believe this algorithm is also known as "precedence climbing", and it's the most common way to deal with operator precedence in a recursive-descent parser.

<comment><USER11> I'd say that having a single production for each precedence level is a more common technique in recursive descent, but it that can be slow because every factor needs to be parsed by recursing through all precedence levels. This technique avoids that, and can parse factors straight away before going into the priority checking loop.

Delphi uses this parsing method for expressions, and is one of the reasons it's so fast at compiling.

<comment><USER12> I don't actually know if Delphi is fast or not, I'll take your word on it.

However, I'd be skeptical that the parser is one of the main reasons for its fast compile times. In my experience, parsing is really a tiny amount of compilation time. The VB.NET compiler, for example, uses the same parsing technique, and it is ... "not fast" at compiling. It spends most of its time binding symbols.

<comment><USER11> Delphi's parser binds symbols and types the tree as it parses. The only thing left to do after parsing is code generation, which is only a couple of passes over the tree.

The parser (or more accurately, the lexer) is the bit of the compiler which ultimately limits its performance, because it needs to see every character of the source. The compiler can never be faster than linear in the length of its input. Metrics on the Delphi compiler actually show that string hashing is the hottest piece of code, and that's already optimized about as far as it can go.

<comment><USER12> Which means its fast because of the way it binds symbols, not because of the way it parses infix expressions. One thing to consider is that such a design hurts the usability of the language. It's a lot easier to not have to worry about forward declarations and "module" interfaces. I don't know Delphi, but I imagine what you describe relies on something like the "unit" construct from Turbo Pascal.

<comment><USER11> There are many things that make it fast - or rather, it's the lack of slow things that make it fast. Excessive recursion during parsing is one of those things that is avoided (and that was what was on-topic here). Your focus on binding is instead a focus on something that another compiler does particularly slowly. That a different compiler is fast is not due to it being fast at binding specifically; it's due to being fast, or at least not slow, at almost everything.

Delphi does indeed inherit unit syntax from Turbo Pascal. This is both a blessing and a curse; it makes writing well-structured programs easier by enforcing a logical consistency in ordering (programs more or less have to be written in a procedurally decomposed way), but it also makes writing programs with complex interdependencies between parts more awkward. The unit format is also one of the things that makes the compiler fast (or not slow); relinking a binary unit based on a partial compile is very quick, and as it's not a dumb C-style object format, the compiler can be intelligent about dependencies. Every symbol has a version, a kind of hash, associated with it, computed from its type, definition, etc. When units are relinked after a recompile of a unit, only the symbols need be looked up and their versions compared; if there is no version mismatch between imports and exports, then dependent units don't need recompilation.

Random factoid: the guy who wrote the original source for the current Delphi compiler was also one of the developers for the .NET GC, and CLR performance architect (Peter Sollich).

</comment></comment></comment></comment></comment></comment><comment><USER13> I've also played around with combinatorial parsing using F#'s FParsec (a clone of Haskell's Parsec lib) and I found very pleasant and powerful to work with.

</comment><comment><USER14> Excited to see how this is integrated with Magpie</comment>


Using React Is a Business Decision, Not a Technology Choice - <AUTHOR> https://medium.com/formidable-blog/using-react-is-a-business-decision-not-a-technology-choice-63c4641c5f7#.jr7ruc8ii <comment><USER2> Sumnary: my preference is superior because some well-known companies use it. You could search and replace for any major component and have equally little to add to the conversation.

<comment><USER3> Hi acdha - sorry you didn't find this helpful. My intention wasn't really to bring anything new to the table. This actually was an adaptation of the real proposal we used to sell the technical leadership in a switch from Backbone based UI.

Mostly I've found blog posts about react to come in 3 flavors: 1\. Something geared towards an audience that lives and breathes web and wants to learn about new tech 2\. somebody's experience integrating 3\. A tutorial of some kind illustrating how to get started.

It was my hope that I could help provide a concise starting point for others who are trying to migrate old stacks to React not to convey new insights :).

<comment><USER2> The main problem I have is from framing it as exclusively a business decision; for almost any issue, it's going to be a combination of the two.

This felt particularly odd since most of your examples are more technical than business issues – the only one which didn't feel like it was something just about everyone else claims as well is the list of large companies using React since that gets to a core business question of risk exposure.

<comment><USER3> Risk exposure is a BIG issue and is actually one of the primary points of leverage since we were transitioning from a Backbone meta-library that had recently been deprecated. I'll agree that tooling choice needs to be a good technical AND business decision but I do think it's important to address the concerns of those who are maybe gunshy after their last transition from maybe jsp -> jQuery.

I agree that the information is technical but it's not above most many of the business side people who can speak the language a bit. I'm confident that most of these things can either be directly tied to the bottom line or help dispel concerns about how a transition can be made effectively.

Thanks for the feedback!</comment></comment></comment></comment>


In Defense of Sparta - <AUTHOR> https://newrepublic.com/article/154685/defense-sparta <comment><USER2> "Sparta preserved its regional dominance more by restraint than by hunger for conquest. Thucydides's history portrays the Spartans as reluctant to go to war and often more merciful than their more liberal-minded opponents."

As Donald Kagan writes in his book about the Peloponnesian War, this was very likely self interested restraint - the entire basis of their economy was the exploitation of the Helots, and there was a fear that battles of conquest would have resulted in a revolt back in Athens. There was also the fact that every time the Spartans attempted even modest naval excursions, it completely failed, making a larger empire in an area with a lot of water impractical.

I totally agree with emulating the best in other cultures as the other says at the bottom in summary, but in some cases, there are trade-offs that are hard to decouple. In the case of Sparta, the freedom to ignore the accumulation of wealth was a luxury earned by an elite on the forced labor of others.

<comment><USER2> "a revolt back in Athens" \- I meant "a revolt back in Sparta."

</comment></comment><comment><USER3> This article totally glosses over the Helots, the Spartans permanent slave underclass. Any "defense" of Sparta should have some explanation for this horrible situation.

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

<comment><USER4> My God really? Slavery was the uniform norm for almost all of human history [0]. If nothing good can come of a society that enslaved others, then the logical corollary is an incredibly short sighted and unnecessarily nihilistic view of the journey of humanity. Can we give history a break?

[0] [https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Sl...](https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Slavery_abolition.svg/1280px- Slavery_abolition.svg.png)

Edit: before somebody says blah blah race, there isn't a race on Earth that wasn't subjected to slavery in history.

<comment><USER5> A very great deal of good can come of exploiting others; a whole lot of good - for _me_. As for _them_ , fuck 'em. They're only <insert rationalisation here>.

Owning a slave pre-industrial revolution doubles your manpower. Owning ten multiplies it by 10.

And BTW slavery still exists, either literally or functionally. Plenty of sweatshops in the world, and I hear chocolate isn't always grown in happy edens.

<comment><USER4> "Functional" slavery as your implication describes is so catastrophically different from actual owning of persons that it's incomprehensibly dishonest and devalues the very real reality of slavery in past and present in the developing world. First world perspective, when you think having a job is the same as being owned.

</comment></comment></comment></comment><comment><USER6> Halfway down I was presented with a link to another Newrepublic article: "The Sparta Fetish Is a Cultural Cancer The myth of the mighty warrior-state has enchanted societies for thousands of years. Now it fuels a global fascist movement."

<comment><USER7> This is an explicit response to that piece, and even quotes it in the third graph.

</comment></comment><comment><USER8> As an amateur historian, I never understood the fascination for Sparta. They were quite powerful in militia, but not for so long and they got instantly owned once republican values were on the rise. They were famous in a period of time, but not more than that. It was a totalitarian system, with little freedom value to my eyes in comparison to Athens or Rome, for example.

<comment><USER9> >As an amateur historian, I never understood the fascination for Sparta.

Well, for one thing, Plato was an adherent of the 30 tyrants, who were allied and admirers of the Spartans. Since he kind of invented Western Civilization, Laconophilia has a rather long and storied tradition.

<comment><USER8> By 369 BC (~20 years before Plato's death), the Thebans defetead the Spartans with the messenians (the helots). That was the end of Sparta as a major military power. After this, the Spartan men had to work on farms to feed themselves and their children, and they couldn't train all the time. So they weren't the best army anymore, and Sparta became just another small town, without much power.

</comment></comment></comment><comment><USER10> This article seems well meaning until the end where it hints that forced participation in the community might be something to admire about Sparta. Talk about illiberal and fascist.

<comment><USER11> > Talk about illiberal and fascist.

Or communist, as the article itself mentions.

</comment></comment><comment><USER12> Also posted herein: "The Sparta Fetish is a Cultural Cancer[0,1]"

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

[1][https://newrepublic.com/article/154563/sparta-myth-rise- fasc...](https://newrepublic.com/article/154563/sparta-myth-rise-fascism- trumpism)

</comment><comment><USER13> Something I recently learned was the importance of the Spartans claim to have been descendants of Heracles (Hercules), and that they had a much more interesting power structure than is often assumed, but in general almost all of their stranger idiosyncrasies and rituals stemmed from that claim and the supposed instruction commanded to them by Hercules.

</comment><comment> BXLE_1-1-BitIs1 Sparta's modern day equivalent is Israel with Palestinians as Helots.

Universal military service (aka Helot suppression) for all citizens, just like Sparta.

<comment><USER7> There's one big difference - Israel has an economy independent of the Palestinians that is sufficient to sustain its society. This makes isolation and separation a more viable strategy, and makes the dynamic closer to that of late European imperialism. (There are particularly close parallels with the French in Algeria.)</comment></comment>


The ascendancy of Hacker News & the gentrification of geek news communities - <AUTHOR> http://anarchogeek.com/articles/2008/7/7/the-ascendancy-of-hacker-news-the-gentrification-of-geek-news-communities

<comment><USER2> The whole gentrification argument doesn't really hold well with the definition of gentrification. Plus, I don't think that link-sites other than digg will get really popular with the general population. I guess reddit could, but definitely not smaller sites like this one. Gentrification usually means restoring an old shitty/ghetto neighborhood and making it nice and desirable. I think this is a repost too..

<comment><AUTHOR> _"... Plus, I don't think that link-sites other than digg will get really popular with the general population ..."_

Digg is a newbie. There are others. Slashdot for example caught on in the general population after the hoards of readers would bring down servers after a single post ~ <http://pasadena.wr.usgs.gov/office/stans/slashdot.html> and news organisations through Journalists started using Slashdot as their geek filter and quoting it in news.

 _"... The whole gentrification argument doesn't really hold well with the definition of gentrification ..."_

Depends on what you mean by gentrification. I think in this case it might be the gentrification of ideas, implementation and audience. An inability to improve the quality of the site. Slashdot at the start (suid 2774) when I joined was full of new and interesting ideas. Full of readers with technical backgrounds who you could pose questions you would never get the answers to reading a book, news groups even the source. You had to be on the ball to answer or you would be howled down with logic and facts. I left slashdot when the discussion and flow of new ideas deteriated into low quality opinions. Just like this one.

<comment><USER3> Very true (1359 myself). I abandoned it when it gave up any pretense of being "stuff that matters" became "controversy for the sake of driving page views". The quality of comments there now is only one notch above YouTube.

Oh, and Slashdot PT Cruiser. 'Nuff said.

<comment><AUTHOR> _"... Very true (1359 myself). I abandoned it when it gave up any pretense of being "stuff that matters" became "controversy for the sake of driving page views". The quality of comments there now is only one notch above YouTube ..."_

Wow. It was partly your posts & ideas I was reading back then. Great stuff.</comment></comment></comment></comment>


How Bubble bootstrapped a visual programming tool for non-coders to $100k/mo - <AUTHOR> https://www.indiehackers.com/businesses/bubble <comment> le-mark Wow this has been a disappointing discussion up to now, with most commenting on how much visual coding tools suck. That's not the take away here, at all.

A frequently asked question is "where is Access for the Web?", closing aligned with "what happened to 4GL languages and tools" or "where are the RAD (rapid application development) app builders for the web?". This is an answer; they've hit $100k monthly. They have found a market where many, many similar projects (I've listed them here before) have not. The relevant and amazing thing is _how_? How have they succeeded where so many others have failed?

The interview gives some answers:

 _He (Josh) was in New York, and everyone, literally everyone, was asking him to be their tech co-founder to start a business._

 _We started "recruiting" users at tech meetups in New York. With the startup wave, everybody was looking for a tech co-founder, and there were plenty of co-founder-dating meetups. ... We went there and told people that while we couldn't be their tech co-founders, they could use Bubble, as it would allow them build the whole thing themselves. _

_The following year (2013) we did a pilot at Harvard Business School, which I had just graduated from. Their first year entrepreneurship class required students to build something under a very tight budget, and Bubble was a good solution for this._

Answer; these guys had a kick ass network and expanded it. They had direct access to people in their market who were starving for this type of app.

<comment><USER3> TBH (and it is an impressive app) there isn't much competition, not much going on despite coding-as-a-job being hammered in every article even remotely related to education and not just an extra skill but a vital one.

And in those meetups you tend to find a lot of people looking for someone to code their ideas. These guys put a lemonade stand in the middle of the desert.

<comment><USER4> The question then is, what happens when they drink the lemonade? Thirst quenching? Butterflies and rainbows? Diarrhea? Cirrhosis?

When you start building a normally-complicated application that isn't going to be thrown away at the end of the semester, well, then what?

<comment><USER5> Perhaps the point of Bubbles is product validation for a semi-technical founder without having to hire someone who can code.

</comment></comment></comment></comment><comment><USER6> I've seen plenty of visual programming tools and lots of other things to help "non programmers." I've even helped build one.

The fact is that if you can think and communicate precisely enough to describe your ideas then you can enter them into a computer fairly easily in a language like python or basic. If you can't then no matter how fancy your tools are you still need something intelligent (currently a human programmer) to pull the idea out of you and encode it.

Stuff like this isn't useful to people who are incapable of programming and is just a highly coupled mess that can't be easily automated and version controlled.

<comment><USER7> This and I would go one step further: visual programming tools are like GUIs and they are the main reason that people can't code nowadays.

When I switched back to a shell after 20 years I realized how much a GUI hurts, how much I unlearned to work with computers. After decades of Windows and OSX, I got Arch with i3 (so no desktop environment). I am mainly using text-based software like the shell, bash, tmux and vim every single day. Then, it's a very small step to program or to get a programmer because you are already programming in little steps here and there and every day (bash scripts, vim macros, etc.) and you deal all the time with text.

Visual tools don't teach you to code, they introduce an unnecessary layer and create an even bigger insecurity when dealing with real code. Real coding with text is quite easy—and this should be the actual message. A very good example for an educative text-based coding environment which is even functional is Logo. But again, the best way to get into coding is to get an OS on your personal computer which focuses on the shell.

<comment><USER8> Coding with text is easy, but then why we there is a gap between getting a prototype/design done and the actual implementation? Text based coding is certainly more efficient in representing logic in a concise way, but the current set of frameworks and tooling on text based environments requires an exhorbitant amount of learning to produce a working application(e.g React), that's where the rapid application development tools like bubble comes in. In my opinion a combination of text and GUI should work together to provide the best possible efficiency for developers and other members of a team..

<comment><USER9> > Coding with text is easy, but then why we there is a gap between getting a > prototype/design done and the actual implementation?

The solution for this is simple, really: simply declare the prototype the working implementation, and put devs on the hook for maintaining it.

<comment><USER10> Don't see why you are being down voted. That always seems to end up happening.

</comment></comment></comment></comment></comment><comment><USER11> I watched the demo video. It looks like what the Visual Basic form builder was for Windows programming in the 90s.

However it will be difficult for non programmers. The very first dialog about Google Maps has menus "API provider" and "Query". I wonder how many non programmers know what they are. They can take a guess and learn but maybe this is still too low level. The second example is about building a login form by configuring its input fields. Maybe adding a completely configured dialog would be good enough for non programmers. Programmers can edit the details. Same for every other component.

However I remember that non programmers didn't use Visual Basic, as easy as it was. Programmers did. Some non programmers built sites on MySpace some 10 years after VB, then wrote on various blog platforms and configured themes, then ended up on Facebook and other non programmable social media platforms. Outside the Web the most used non-programmers programming tool is still probably Excel. I've seen amazing stuff build there from people who couldn't write a two lines script in Python.

<comment><USER12> Your comment sounds like something straight out of a Show HN, not a thread about a 5 year old service with 100,000 users and $100k in monthly revenues.

There's obviously a big demand for this so either you're wrong or people using it are actually programmers.

<comment><USER13> I just took a quick look at it and GP has a simple misunderstanding here. When they say you don't have to be a coder that doesn't mean the target market is my girlfriend who has no interest in this whatsoever(she's a doctor).

The target market is those people that sit in places like the AWS loft or places like that, listen to tech talks and wish they had a coder to build their ideas for free.

Most of them already know what an API is. Even if you don't use the external data sources, what bubble provides is somewhat enough to win hackathons and get funding provided you can present and sell.

I've seen a bunch of traders, business people and otherwise people with random ideas that fit in that group. So yes, not at all surprised they make that much money.

<comment><USER14> From the people I've met in start ups so far, the most likely to use it would be Designers and Product people. The Product manager I work with knows what an API is, and could probably hack out a solution to something, but really prefers not to.

</comment></comment></comment></comment><comment><USER15> I had to learn and use Bubble to build an application (no choice, per client's request) and as a programmer I found it to be a nightmare.

I can definitely see it as a great and useful tool for non-programmers, but having to go throw your entire skill-set and decades of knowledge out the window to use a tool like this was just a horrible experience.

Again, I don't mean to disparage it, as I can see the benefits, but for programmers, you're better off building an app with the skills and knowledge you already possess.

<comment><USER16> There's something like an 'uncanny valley' between RAD tools and a more 'best practices' setup/workflow.

The upsides are obvious – someone that's not a 'software engineer' can program things that do real work!

The downsides tho are much less obvious; more 'hidden' costs really. It's easy and quick to bang out a new feature, but also really easy to inadvertently update or rollback another unrelated set of changes. As a professional programmer, I sure don't want to give up version control, unit tests, integration tests, automated builds, and automated deployments.

Tho in fairness to RAD tools, and both the code they produce and the whole workflow involved in using them, when I started my current position the non- RAD-tool code was (much) worse, and much more difficult to refactor and cleanup, than the RAD-tool code.

</comment></comment><comment><USER17> As a marketer, I've found Bubble to be really useful for building out small micro-apps for data-capture for clients who for whatever reason weren't ready to move to a solution like HubSpot.

I'm not sure how I'd feel about using it for anything larger than that, though I've seen some worked examples of Twitter clones etc. There's probably slightly too much Bubble-specific terminology and concepts to make it worth learning if you are not going to become a Bubble consultant.

Also, kind of expensive (monthly subscription) if you want to run a large production app on it. I love the range of API s and connectors though.

<comment><USER18> It sounds like the "remedy" for app dev.

</comment></comment><comment><USER19> What I'd really like is a smarter compiler. My normal dev process is

1\. Write code

2\. Run code

3\. See error

4\. Google error

5\. Write code to fix error

6\. Repeat

I'd like a compiler that helps speed up steps 3-5. I know IDEs do some of this, but I'd like a compiler that automatically fixes errors instead of just telling me what went wrong. One that fixes parentheses that I left off or automatically fixes typos in variable names or function calls. One that knows to keep things DRY and creates a function for me when it sees the same similar code written twice. One that knows when I wrote an inefficient bubble sort and swaps it out with a faster sorting algorithm etc. One that can make my code run faster. I think this is a long way off, and I know it's really hard to write a program that writes code, but it's always seemed that programming simple things is way harder and takes longer than it should to me.

<comment><USER20> Typesafe languages are potentially a lot better here; they move "see error" to before "run code". Visual Studio or even Eclipse are quite good at inserting parens or quotes for you, warning if they're not there, and providing completion over identifier names to avoid spelling errors.

> One that knows to keep things DRY and creates a function for me when it sees > the same similar code written twice

This is potentially an interesting idea.

> One that knows when I wrote an inefficient bubble sort and swaps it out with > a faster sorting algorithm etc.

This is also the sort of thing that optimises out your security-critical delay loop or memory wipe.

<comment><USER19> It wouldn't overwrite your code without your approval of course, but if it could at least provide helpful suggestions that I could choose to approve it would be immensely helpful.

</comment></comment></comment><comment><USER21> Am I right in understanding that Bubble is a GUI for building CRUD applications?

If so, great work! It shows there is a need for these simple, automated tools for building simple CRUD applications, and that it is possible for these to be built and automated.

<comment><USER10> We have had MS Access for years. It still requires a bit of knowledge about database design to use it properly.

I don't know Bubble but I am skeptical about visual programming, as syntax is one of the easier parts to learn when coding, and isn't in my opinion what makes our profession difficult.

<comment><USER22> IMHO visual programming should really aim more to be a scaffolding tool - <USER2> instead of replacing the syntax to focus more on speeding up the structuring of the code, helping you to easier manage and understand the blocks and the flow. Ideally it can then auto-generate the most of it and leave you to fine- tune the details of logic directly in the code (where it's faster and more expressive to be able to type the code directly).

<comment><USER23> Also if it's not in text, you can't use all the tools effectively, like diffing, versioning, to actually create reliable tools with few bugs. I'm very skeptical of graphical programming.

<comment><USER24> Unfortunately, there's a long history of graphical programming being foisted upon text-centric domains, which is just as bad as the reverse, so you're right to be skeptical. But if you shift perspective to another domain, graphical (or otherwise non-textual) programming becomes much more appealing.

For example: Game devs build themselves sandbox environments in which they can test out their physics engine, dynamic music systems, animation playback, etc. These sandboxes are like REPLs, but for non-textual data. One can imagine how much nicer it would be if the full system's code were represented first-class inside that sandbox, so that you were introducing and manipulating system abstractions close to the truest representation of the data, rather than having to leave the sandbox to go back to your text editor to make system tweaks, far away from the data.

Still skeptical about why that might be nice? Your text editor and terminal know nothing about the full, live representation of the data, so they do nothing to help you work in that domain. The nice things you get when working with text — diffs, versioning, etc — you don't get the physics engine / music engine / animation engine equivalents unless your code is somehow present in the same space as the live data.

</comment></comment></comment></comment></comment><comment><USER25> Bubble platform is the most advanced no-code tool that exists so far. It allowed many entrepreneurs (including me) create apps fast and with low budget which otherwise would take many months and tens of thousands dollars to build. It's true, I'm a bit biased here, because it also became possible for me to start a no-code development business which never existed before. So we focus on building apps without code for people who don't have time or patience to learn the no-code tools or who don't have budgets to afford the traditional development. And for the sceptics that doubt about the complexity of apps that can be built without code you could check our portfolio at [https://bubblewits.com](https://bubblewits.com) (this web-site is too built on Bubble). But we have taken it 1 step further and created a no-code platform for all things no-code. The main part of the paltform are the no-code templates built for Bubble. Which makes building new products and startups even faster (just like creating a web-site with Wordpress themes is easier than doing it from scractch). If you are curious take a look here: [https://zeroqode.com](https://zeroqode.com)

<comment><USER3> So you guys are a service that build apps on bubble (for people that I guess can't even deal with a GUI) and also sell templates?

</comment></comment><comment><USER26> "Josh and I both had enough savings from previous jobs to be able to live in NYC for more than two years (with a simple lifestyle…), and we didn't start paying ourselves a salary until 2.5 years in."

Critical factor here.

</comment><comment><USER27> Has anyone had experience transitioning a Bubble app into an actual coded app/DB outside of Bubble?

I could see it as an interesting solution for rapid prototyping of ideas, but I'd be concerned about lock-in and extra expense later when migrating to something more robust.

<comment><USER28> Based off the demos, it seems like you can integrate HTML directly, so it might be possible to move from Bubble to "external API + Bubble frontend" in a straightforward fashion.

You could also likely put a layer in front of Bubble to only serve some pages with Bubble, other with your replacement.

Also from the FAQ: > The good news is that Bubble is fully extensible via Javascript plugins. The Bubble model is to write the core website functionality using our super-simple language, and plug in Javascript to handle algorithms that are hard to build in Bubble.

So you could probably add shims and move around.

I think the most interesting way of doing this would be something like embracing Bubble for a lot of work and having the "serious" code relegated to places that are easier to manage, like complex API or some custom widgets

<comment><USER16> > I think the most interesting way of doing this would be something like > embracing Bubble for a lot of work and having the "serious" code relegated > to places that are easier to manage, like complex API or some custom widgets

This is basically what I do now at work. I was hired to, in part, work with several RAD-tool projects. I pretty quickly ended-up tho working on mostly backend code that the RAD tool projects interact with via, e.g. web requests. That's been a pretty good division of labor given that most of the RAD tool project's features are fairly simply in terms of UX. They're definitely not good enough to be widely used by lots of users tho, e.g. there's no real error handling.

</comment></comment></comment><comment><USER29> For a similar idea, but more aimed at programmers, there is Anvil: [https://anvil.works](https://anvil.works)

<comment><USER30> I tried them both and (probably obviously as a programmer) find Anvil faster to work with. Some things are really fast in the visual environment, but when you are stuck, getting code out is really convenient. I do like both approaches.

</comment></comment><comment><USER31> I'm very pessimistic of these types of products.

Mostly because there have been ideas to do this for around 40 years.

In the end any non-trivial business logic is too cumbersome to make in a GUI and is build much faster in text form ( programming language) or just can't be made with your platform. At that point it requires specialization and your need for a programmer is born.

<comment><USER16> > I'm very pessimistic of these types of products.

> there have been ideas to do this for around 40 years

You _should_ be "pessimistic" – if the implied claim is that "these types of products" will replace all of the other standard programming paraphernalia!

But, as you wrote, this stuff has been around for decades. And that's because there are lots of people that can do real work with these tools, but aren't otherwise willing to pay the (pretty) steep costs to get up to speed using the 'pro' programming tools.

</comment></comment><comment><USER32> I found this product awhile back and was so excited at first.

I have a design background ( but can dabble in css, hack at php and python) but had trouble trying to get some APIs connected and displayed with Bubble.

Please oh please, can one of you developers have Airtable and Webflow make a baby? This combo would be amazing for functional business use and data display and I would pay good money for it.

<comment><USER24> I agree — as someone with as much of a design background as a programming background, seeing something like Bubble described as "visual programming" feels a bit offensive. Yes, there's a bit of meaningful visual structure sprinkled here and there throughout their environment. But it's nothing like what one would imagine if they were left to freely ideate about some hypothetical, ideal "visual programming" environment.

In a post-Bret Victor world, we know what such an environment might look like.

Stop Drawing Dead Fish: [https://vimeo.com/64895205](https://vimeo.com/64895205) Drawing Dynamic Visualizations: [https://vimeo.com/66085662](https://vimeo.com/66085662)

As a visually-minded developer constantly hunting for such tools, and even working on some myself (in a small way — nothing that anyone here will ever end up using, surely), I can assure you that there's enough smoke that eventually we'll see something like what we desire catch fire.

If I had to guess, I'd say we'll see it come out of the world of video games, not web applications. So don't fret that Bubble looks like a step in the wrong direction. They're not building tools for visual thinkers, they're building tools for MBAs.

</comment></comment><comment><USER33> I just wanted to check out the website (not actually try it), but the Bubble page shows a blank page saying it doesn't support my browser (safari on iOS). What a pity that it won't even show me a landing page or whatever.

</comment><comment><USER34> "Then, in October 2105, we launched publicly on ProductHunt"

I'm guessing this should be October 2015, but it'd be awesome if Bubble was a product from the future sent back in time.

</comment><comment><USER35> yet another LightSwitch. with better marketing

</comment><comment><USER36> Keep it up!</comment>


SpaceX CRS-6 Launch Webcast - <AUTHOR> http://www.nasa.gov/multimedia/nasatv/#.VKcrD3vO87w

<comment><USER2> "Hold. Hold. Hold. Weather is no go" @ 4:31pm EST

<comment> Lx1oG-AWb6h_ZG0 > Launch postponed due to lightning from an approaching anvil cloud > ([https://twitter.com/elonmusk/status/587715056432889856](https://twitter.com/elonmusk/status/587715056432889856))

Anyone know how they detect lightnings? Is it just cameras, or do they have planes flying around?

<comment><USER3> Lightning can be detected from thousands of miles away. See [http://www.blitzortung.org/Webpages/index.php?lang=en&page_0...](http://www.blitzortung.org/Webpages/index.php?lang=en&page_0=30). Turn on "detectors" on the right to see the distances involved.

That site works by a using a network of cheap EMP detectors. It uses the timing differences from each sensor to trilaterate the position of the lightning strike.

<comment><USER4> That's a nifty website!

</comment></comment></comment></comment><comment><USER5> This might be the big one folks. Daytime launch with good weather, and calm seas.

If things go right, we might see the first rocket landing in the next hour.

<comment><USER6> Just called on account of weather.

</comment></comment><comment><USER7> Space-X's webcast: [http://www.spacex.com/webcast/](http://www.spacex.com/webcast/)

</comment><comment><USER8> As of 16:30:30 EST, launch was scrubbed due to weather.

It's still fun to listen to their verbal verifications to each other about shutting down the system though!

</comment><comment><USER9> And here's a YouTube link for good measure: [https://www.youtube.com/watch?v=UVUCVYRGcUo](https://www.youtube.com/watch?v=UVUCVYRGcUo)

</comment><comment><USER10> Livestream link: [http://livestream.com/spacex/events/3959775](http://livestream.com/spacex/events/3959775)

Broadcast starts at 1615 est.

<comment><USER11> Is livestream really laggy? I can't get more than 20 seconds of video to play after initial load.

<comment><USER12> Known (Flash on) Linux-related issue. Use the livestreamer ( [http://docs.livestreamer.io/](http://docs.livestreamer.io/) ) tool instead.

</comment></comment></comment><comment><USER13> From the SpaceX twitter account: "After Dragon and Falcon 9's second stage are on their way to orbit, the first stage will execute a controlled reentry through Earth's atmosphere, targeting touchdown on an autonomous spaceport drone ship approximately nine minutes after launch." So it sounds like if you stay tuned for nine minutes after the launch you can see the booster stage attempt to land!

<comment><USER14> That almost certainly won't be a live feed.

</comment></comment><comment><USER15> Here is a youtube link: [https://www.youtube.com/watch?v=UVUCVYRGcUo](https://www.youtube.com/watch?v=UVUCVYRGcUo)

For some reason my ISP blocks livestream.com.

</comment><comment><USER16> It's rainy here in central Florida but hopefully I can see it outside. What was fun was seeing the night launch they did a few weeks ago. That one was very easy to spot in the sky.

</comment><comment><USER17> No livestream of the dock ?

</comment><comment><USER18> T-8 minutes as I post this now, at 2025 UTC.

<comment><USER18> Today's attempt scrubbed due to weather at T-03:07 :(

</comment></comment><comment><USER7> Damnit, scrubbed for weather..

</comment><comment><USER15> Oh no, the mission is abort

</comment><comment><USER19> Abort due to weather.

</comment><comment><USER20> SO CLOSE!

</comment><comment><USER21> DC NO GO

</comment><comment><USER22> So close</comment>


Ask HN: Medium app mobile notifications going crazy? - <AUTHOR> Did something change with medium recently?  My phone is going bonkers with notifications from Medium since last night. <comment><USER2> Yeah, I'm noticing this as well. Android? Driving me nuts, about to turn off all notifications.

<comment><AUTHOR> Is this part of their new strategy to try to monetize of increase engagement? I know I saw something about them trying to pivot in the last month or so.</comment></comment>


Before and After the Adoption of Standard Time - <AUTHOR> https://asociologist.com/2012/01/11/time-zones-before-and-after/ <comment><AUTHOR> OP here. Found this interesting graphic in Adam Frank's fascinating book, _About Time._ While the new time zone shift proposals coming out recently aren't as bad as this, they're still pretty confusing!</comment>


What do you think about our website monitoring service (in public BETA)? - <AUTHOR> https://appbeat.io/ <comment><USER2> Looks really interesting, I like the flexible pricing model and the custom alerting rules. Especially for HTTPS many others don't offer anything.

While the sliders for the price are nice, I feel like something additional to get a quicker overview would be nice, e.g. a table with the default configurations.</comment>


Apple building store in Melbourne's Federation Square, residents slam tech giant - <AUTHOR> http://www.news.com.au/technology/online/social/apple-building-store-in-melbournes-federation-square-residents-slam-tech-giant/news-story <comment><USER2> The link seems to be broken.</comment>


NYISOToolkit: Tracking New York's power sector decarbonization status - <AUTHOR> https://github.com/m4rz910/NYISOToolkit <comment><AUTHOR> The CLCPA goals require New York to get 70% of its energy from renewable sources by 2030 and 100% carbon-free sources by 2040. As part of my master's thesis research, I created a module for tracking the progress toward achieving these goals. Check it out and share your thoughts on how to improve this tool!</comment>


This traffic camera blends in with its surroundings: camouflage in plain sight. - <AUTHOR> http://atohms.wordpress.com/projects/bird-camera/

<comment><USER2> Imagine if they get a camera like this to _fly_ to where it's needed. And peck at random, invisible bits of food. All the crazy people saying the birds were watching them would have to be re-evaluated.

</comment><comment><USER3> I always wondered if you could put a circuit near your license plate that detects a flash and sets off its own flash to over-expose the image.

It might help at night at least. What do you folks think?

<comment><USER4> I think so. That tech exists in the photo world.

Alternatively, you could cover your plate with a hyper reflective coating which would likewise overexpose the plate.

<comment><USER5> I think that exists as a spray. Basically a clear coat, but highly reflective.

I don't know if this one is legit, but I've heard of at least one brand that is. <http://www.photoblocker.com/>

</comment></comment></comment><comment><USER6> Luckily (California at least) law states that there have to be posted signs within 300 yards of a traffic camera :D

<comment><USER7> Legislators looking after themselves, most likely. I remember back in the early Pleistocene era when I lived there that the CHP was forbidden to use radar (legislators needed to be able to speed back to Sacramento).

If my neighborhood were abused by pink-light violators, I might be tempted to post _fake_ signs warning of a traffic camera. </confession>

</comment></comment><comment><USER8> Seems unlikely those teensy infrared LEDs are going to light up my license plate. At least here in DC, there's a giant flashbulb type thing that goes off.

</comment><comment><USER9> Brilliantly evil.

<comment><USER10> It seems it will catch people in order to raise revenue but not stop people from initially thinking twice about running that particular intersection and maybe saving a life.

<comment><USER11> Until these become so widespread that drivers think twice every time they see a bird on a wire...

<comment><USER12> Ah, just what I always wanted... living in constant fear that my government is watching me.

<comment><USER13> If it helps, it is probably watching the rest of us as well - even though its not even _our_ government. :-)</comment></comment></comment></comment></comment>


Ask HN: What is your technical or business "never again" story? - <AUTHOR> I'll start with mine.  I built an add-on for an ecommerce platform that lets shops add a delivery date picker to their checkout flow. Given a choice, I will never again build an app that involves calendars as I never anticipated just how complex and mind-bending dealing with time can be. <comment><USER3> I worked with storage arrays at a service firm. The storage arrays backed up to the cloud. They had an onboard proprietary GUI, where if you checked a single box, it would use HTTPS instead of HTTP when transmitting to S3 (no idea why S3 even allows HTTP to start with).

They refused to roll this out (HTTPS) across the 4-5 servers of this brand we managed.

Something just broke in their brain, because I was coming at it from a security angle, they thought "this must be a waste of time / I am a power- hungry sysadmin resistant to change". I still think about it to this day, and will get anxiety every now and then suggesting a mildly taxing security fix, because if ppl can say no to HTTPS checkboxes will they agree to anything?

<comment><USER4> If this is the biggest issue you've encountered, consider yourself lucky.

Why didn't you just roll it out yourself? I would've just checked the boxes and moved on to something else.

</comment></comment><comment><USER5> Joined a company as a very early employee. The company became successful (200+ employees, mid 8 figures revenues), but founders just won't sell it: instead of humbly admitting the luck we had (it's always about luck, I was in the front row seat the whole time so I can definitely and objectively state it) and take risk off the table, they are doubling down trying to make it much bigger (targeting mid 9 figures revenues, and they just took a HUGE investment round with a stellar valuation, which essentially prices us at beyond-perfect execution, so it's significantly risky). In the meantime, I am completely burned out and would just like to put an end to this adventure which lasted 5+ years, but I can't.

I can't leave due to my stock options otherwise expiring (standard 90 days window), and I don't want to put the liquidity necessary to exercise them and leave, too risky due to the appreciation of those shares, nor I want to take out a loan or stuff like esofund which will eat into 50% of my profits, and would still leave me with a taxable event if the company went belly up and the loan was forgiven. So, I'm a typical example of "golden handcuffed".

So, my "never again": never again work for founders who are already rich and are not looking for a reasonably early exit in case of success. My fault for not checking during the interview process, but I was young and naive.

If the founders were not already extremely affluent, I could assure you they would have already sold the company by now (probably at the 2-3 years mark), very likely realizing low 8 figures profits for themselves (and low 7 figures profits for me), whereas they are now shooting for high 8/low 9 figures for themselves, "hurting" me by exposing me to insane time cost opportunity, and also making the whole thing much riskier since as you grow your acquirer pool shrinks dramatically.

Realistically, I end up being a rest and vest employee, meaning I don't do much work these days, and I likely won't get fired since I have so much context, so I spend a lot of my working time avoiding getting burned out and mostly learning about new technologies, but it's still much less than ideal and it's hurting both me and the company.

At the same time, my emotions these days are very weird and nothing I ever thought I would ever experience: I am usually equally happy if the announced quarter results are a big win (meaning my equity valuation is preserved) or a big loss (meaning we are approaching the end of this company so I'll be free without having to voluntarily forfeit a potentially large payout).

<comment><USER6> Rand Fishkin's autobiography has a interesting few paragraphs about "rich founders" and why they are preferred over ones who want to "get rich" \- in short VCs don't want you to cash out ever - they want that moonshot.

<comment><USER5> I just added the book to my Audible wish list, thanks for the suggestion, and your comment is definitely on point. I'll keep this piece of wisdom I am painfully learning for the rest of my working life, never do business with people who can afford to risk/lose much more than you, whether it be time, money or mental sanity.

<comment><USER6> A lot of his argument against taking VC funding comes to what you say - <USER2> are playing with other people's money in a very risky way and choose you to invest in because they want you to go beyond the call of duty because you have everything to lose.

</comment></comment></comment></comment><comment><USER7> 1.) accepting angle funds for too much equity (45%) and not "quitting my day job" to focus full time on my venture.

2.) Paying (a lot, $35K) a high end IP law firm to "finish" two patents I'd drafted an file them. I now write and file my own patents for next to nothing; it just takes time.

3.) Letting a law firm convince me to pay even more ($40K) for foreign patents, which are pretty much worthless unless you're an Apple or Samsung.

4.) Not getting an up front firm quote for legal work (said firm tried to collect an additional $90K, which of course we did not pay).

5.) Not watching the company bank account like a hawk to make sure my partners weren't wasting precious raised capital on worthless overhead expenses (e.g. empty offices... and they were).

Oh, the list goes on...

<comment><USER8> Sorry dude, you've had the wrong law firms.

<comment><USER9> What percentage are 'wrong'? How do you find the right ones? Ask around? What if you don't know people to ask..

Hmm that would be a great website - for anywhere, it tells you who the right law firms are for what, with user stories, ratings, etc. And links to orgs who give good advice about those things etc.

</comment></comment></comment><comment><USER10> My "Never again" business/ people lesson is to avoid anyone with toxic nature be a part of a startup team, howsoever genius that person might be. Once bitten, twice shy about this.

For a Startup, destination obviously matters, but making the journey enjoyable should be one of the top priorities.

</comment><comment><USER11> Never will I use, stay on a team that uses, or assist any client which uses zip ties for cable management.

Anyone that says "we will just do this temprarily" will get charged double and need to send that statement in writing with firm start and end dates along with the consequence of not meeting the deadline.

Once your average deal size hits >$250k touch nothing less than $100k if it's a new client, leave it to inside sales.

If someone (or a business) has ever paid you for anything they never get free work. Free product? Maybe, but never free work.

Put it in a contract, regardless if buying or selling, or it doesn't exist. When asked to modify something on the fly from that contract, "we'll let you know" is the only acceptable answer until you review with your team.

"I don't know but will try to find out" is acceptable. "Yes if..." is preferred.

"No." Can help you live longer and healthier.

<comment><USER12> What's so evil about zip ties? They probably shouldn't end up in a real deliverable product but for prototypes and proof of concepts I've always found them to be very useful.

<comment><USER8> The prototype always gets pushed into production and then you're never again allowed to make any changes to it.

But you are still responsible for fixing all the problems.

<comment><USER12> Yeah I here you there I'm sure that happens all the time.

I've mostly done R&D work in my career so I guess my real question to you is what are all the problems that happen when zip ties are used in production.

</comment></comment></comment></comment><comment><USER13> Letting a Rude and Insulting client stay on for longer than we should have. Never again our company will deal with a Rude/Insulting client no matter how much they are paying. Rude = Fired. Be nice. And I am not a snowflake. I can deal with tough clients but not rude/insulting/entitled ones.

</comment><comment><USER14> I've dealt with clients that eat up 90 percent of your time while only providing ten percent of the revenue. Never be afraid to fire the client.

<comment><USER15> Some of this too is learning how to say _no_ , especially regarding time frames.

This of course works best when you "can" say no (i.e. multiple clients and other sources of revenue)

I have clients right now that I won't be able to attend to for a few weeks or so. If that doesn't work for them, I'll help transition them to a situation that works for them. But likely they'll stay around since good help can be hard to find.

</comment></comment><comment><USER16> I've been burnt recently, the self-hosted proprietary time tracking & invoicing tool I've been using for the last decade has decided they're only supporting their 'cloud' service from January.

Unfortunately, I haven't see any existing OSS options that quite work for me either.

<comment><USER17> Did you check out Hours? That could cover your time tracking needs.

[https://github.com/DefactoSoftware/Hours](https://github.com/DefactoSoftware/Hours)

Then the only thing that would remain is to take the hours registered in Hours and stuff them into invoices somehow...

<comment><USER16> I hadn't seen that before. Time tracking is probably the harder part to make a polished solution. Invoicing is much less frequent, and while I'm using to a desktop app now, I could live with a web app.

Time tracking though - if it's not a button in my menu bar I can click start on (and helpful stuff like noticing inactivity and pausing/prompting etc) I'm going to forget to enter times.

I've wondered sometimes if it'd be possible to fork the toggl desktop app (its open source) and reverse-engineer a backend to support it (or just update the desktop app with new backend calls).

</comment></comment></comment><comment><USER18> working with a genius programmer who is arrogant and insulting

<comment><USER19> he's not a "genius" if he also has a low EQ.

<comment><USER20> Would you class Isaac Newton as not being a genius, then?

<comment><USER19> Fine, I'll clarify : no "genius" is worth the money if they have a terrible EQ. Let them take their "genius" and terrorize somebody else.

<comment><USER21> They are tho

</comment></comment></comment></comment></comment><comment><USER22> FB ads when you don't really have enough money for a marketing budget anyways. FB ads is really a money game, the more money you spent, the more likely your ads will get conversion.

<comment><USER23> This is definitely not true. In general, the CVR for DR ads will slowly decline as more money is spent, as you are removing users from the pool with each conversion.

edit: s/pool/poor/

</comment></comment><comment><USER24> I used to sell grey market designer drugs. jumping thru hoops to be able to accept credit cards for such transactions is totally not worth it. I had so many chargebacks that were impossible to fight... some of them were $1000 orders. stick to Bitcoin or litecoin for your shady business ventures.

</comment><comment><USER25> If you inherit a large code base that is badly written AND you are planning to stick around in that company. I would strongly suggest to immediately start re-writing that legacy code even if you have to burn extra hours. Otherwise you would be doing nothing but firefighting in that job with limited control over your situation.

<comment><USER15> Unless you're communicating _all_ of this with your managers/supervisor/team, this is a fool's errand.</comment></comment>


Google also fails on standards - <AUTHOR> http://velsheda.lateralis.org/journal/2010/11-19/Google-also-fails-on-standard.html

<comment><USER2> It's even worse on Google+[1], you don't just get a banner but get redirected to <https://plus.google.com/not-supported/>

[1]: <http://news.ycombinator.com/item?id=3020920></comment>


Chatroulette + GeoIP + screengrabs = Chatroulette Map - <AUTHOR> http://www.chatroulettemap.com/

<comment><USER2> A dick-map! Great!

This needs statistics: dicks per square kilometre, dicks per million inhabitants …

Edit: There is a surprisingly low number of dicks in this map. Lots of bored teenagers/mid-twenties.

<comment><USER3> Go to the center of paris. That blob is pretty much all dicks.

<comment><USER4> Well for the 1 pic that is on the entire continent of Africa... it's dickless, but that guy was well on his way to getting his tackle out.

</comment></comment></comment><comment><USER5> Does anyone else find this disturbing in a Big Brother sort of way?

<comment><USER6> Very disturbing. I'm not going on Big Br-... chatroulette again.

It's just geoip though, so it's accuracy is low.

<comment><USER7> >It's just geoip though, so it's accuracy is low.

I do hope so, there's a man 2 streets away from me, masturbating into the camera.

For the record, it seems that the UK is a world leader in this regard.

<comment><USER8> I think all 13 of the pictures clustered in London are like that.

</comment></comment></comment></comment><comment><USER9> Just when I thought Chatroulette couldn't possibly get any creepier. Well done indeed!

How about laying a few of the details of this mashup's creation on us. Did you automate the "next" somehow to get lots of screengrabs with minimal work?

</comment><comment><USER10> Okay, I don't know about chatroullete anymore. I just came across (on the OP) a girl doing naughty naughty things... maybe this has already been considered, but what if she's not of age? Am I now guilty of possessing kiddie porn? The way current laws are written and enforced, who knows...

<comment><USER11> I highly doubt it. Chatroulette has been mentioned on all sorts of Real News sources, and it's well known (and easy to explain) that you don't personally choose what you're viewing over it. I think you'd be hard pressed to find a jury that would really agree to throw the book at you for accidentally coming across something illegal there.

Then again, I'm no lawyer, and crazier things have happened...

</comment></comment><comment><USER12> Someone should code up a Firefox plugin that pops up a map with a dot on the person you're chatting with.

<comment><USER3> And then if someone's doing something nasty just freak them out by telling them their address!

</comment></comment><comment><USER13> ...apparently there are 7 people chatting from Rosedale Cemetery in LA, on Normandie and W Washington.

<comment><USER12> Does that cemetery happen to be dead center in the middle of LA?

<comment><USER14> I heard that people are just _dying_ to get into that place.

</comment></comment></comment><comment><USER15> I've been in the webcam business since day one, this is one of the reasons why we make it purposefully hard to get to the real IP of our users.

Only after you jump through a fair number of hoops can you expose your IP, if by then you aren't warned yet you probably can't read.

We've had some stalking issues due to this in the past as well, especially the 'early days'.

</comment><comment><USER16> The IP address is in the filename of the image!?!

<comment><USER17> And the first part looks suspiciously like a timestamp...

Edit:

In [4]: datetime.datetime.fromtimestamp(1267675073)

Out[4]: datetime.datetime(2010, 3, 4, 0, 57, 53)

</comment></comment><comment><USER18> Wow: "We'd like to advise maine.edu to stop using student's names in their hostnames. We've decided, at least for the time being, to hide IP & host information as some user-identifiable information was found in some entries"

They put student names in their hostname? That's... bad.

<comment><USER19> Virginia Tech used to do that, back in the late 90s. 99% of people didn't know that, so when you initiated a direct connection via IM (or ICQ back then) you could find out all sorts of fun information.

</comment></comment><comment><USER20> Well, clicking around for two minutes I ended up seeing a group of map points that all resolved to...a domain specifying the res hall of a major university. I'd say that destroys any hope of quasi-anonymity.

<comment><USER21> I'm in Maine right now. Here's a warning message from chatroulettemap.com that I see when I visit:

"We'd like to advise maine.edu to stop using student's names in their hostnames. We've decided, at least for the time being, to hide IP & host information as some user-identifiable information was found in some entries."

</comment></comment><comment><USER22> this is why I'm scared of the South <http://grab.by/2YNw>

<comment><USER23> I spend too much time on the internet — I immediately recognized the both the paraphilia (<http://encyclopediadramatica.com/Plushie>) and the object with the dick in it (Pocahontas's pet raccoon).

<comment><USER24> Be careful, both the links above are NSFW. I accidentally clicked on them to jump from my chair :) Luckily nobody were around.

</comment></comment></comment><comment><USER25> ...where are all the Russian users?

<comment><USER26> Well, given that they're connecting through VMs that run in other countries...

</comment></comment><comment><USER27> Chatroulette is by far the most useless thing that has been created on the Internet. I wish I could have the memories of using it erased from my brain, and the electricity it takes to run the site and the computers connected to it back as well.

<comment><USER2> It seems that you have never been to zombo.com.

<comment><USER27> that is pretty useless, but my vote is still for Chatroulette

<comment><USER28> If I was still going to school, i'd get on Chatroulette and ask people for answers to my homework.

</comment></comment></comment></comment><comment><USER29> Whoa, are Chatroulette users connected directly to each other rather than proxying the streams through Chatroulette's servers? Certainly the former would be more efficient, but if so then it's not as anonymous as it first seems.

<comment><USER30> Yes, it uses some sort of newish P2P stuff in Flash.

<comment><USER31> Yeah, it's called Stratus and provides P2P for flash player 10+

</comment></comment></comment><comment><USER32> There's a bit more info here: [http://laughingsquid.com/chatroulette-map-not- so-anonymous-a...](http://laughingsquid.com/chatroulette-map-not-so-anonymous- anymore/)

</comment><comment><USER33> Doesn't this defeat the purpose of anonymous chat?

<comment><USER34> I think the point is that it's not that anonymous to begin with.

<comment><USER35> unless you are wearing a Nixon mask or your dog/cock/cartoon is on on the screen.

</comment></comment></comment><comment><USER36> Finally, a constructive use of Geo Location!

</comment><comment><USER37> I presume this site is created by the Chatroulette people themselves, as surely they'd be the only ones with access to the IPs of users?

[Edit: Just tried Wireshark with chatroulette and you can see the UDP packets going to/from the other user, I guess this isn't always the case if you're both behind NAT gateways]

<comment><USER18> Apparently Chatroulette involves a direct connection between individuals, so it's possible to determine the IP address of the person you are connected to.

For it not to be a direct connection, Chatroulette would require some pretty heavy resources to stream everyone's video.

<comment><USER38> As per [http://bits.blogs.nytimes.com/2010/02/13/chatroulettes- found...](http://bits.blogs.nytimes.com/2010/02/13/chatroulettes- founder-17-introduces-himself/?src=twt&twt=nytimesbits) :

"Network throughput is 7 gigabits a second." which would sort of line up with ~20K users at ~50K video streams.

</comment></comment></comment><comment><USER3> So I zoom in my geographic area and there's these two points on the map. One is this like 60 year old guy looking at his computer. His neighbor however is masturbating. Imagine if it were my neighbor. Guess it's not so anonymous anymore.

<comment><USER39> Imagine if you were 60 years old!

</comment></comment><comment><USER40> This calls for a Zillow mashup.

</comment><comment><USER41> Small bug report (assuming this is your mashup): clicking on the "zone" nodes in Chrome centres them but doesn't pop up the screengrabs.

Works in Firefox though. 10 clicks in, first penis sighting. Sigh.

</comment><comment><USER42> This is going to give HR departments an extra method of determining who to employ, at least. And given the number of people exhibiting their penises, I'm foretelling another drop in employment.

<comment><USER42> Also, whoever runs this site, if he plays his cards right, is surely going to be a millionaire by next Monday.

</comment></comment><comment><USER43> Adding a whole new level to the creepiness of Chatroulette. Exactly what it needed!

If only those dudes knew their location could be pinpointed, maybe it would make it a bit more bearable.

</comment><comment><USER44> Also, in Milano (Italy) there seems to be one house that houses all Chatroulette users. That's either a really, really freaky place to live, or Geo-IP has a pretty bad coverage of Italy.

</comment><comment><USER45> Interesting the very large number in the D.C., NYC and LA area, and the very low number in the Bay Area.

<comment><USER46> Relatively popular on the border of Nunavut and Manitoba though.

</comment></comment><comment><USER47> how do you know if you have been grabbed and why hasn't someone who knows about computers built an application so you can easily hide your ip? london would be a huge market for that...and for the record i find lol cats more useful than chatroulette

</comment><comment><USER48> how does this work?

<comment><USER49> Chatroulette uses p2p for video. So, I guess this new app simulates a client by connecting to chatroulette server, getting a new peer, geolocating his IP and taking a screenshot.

<comment><USER50> Since when does flash support this? And does it depend on upnp or something?

Just when I thought I understood Flash... now I'm confused again.

<comment><USER49> Check this: <http://labs.adobe.com/technologies/stratus/>

</comment></comment></comment></comment><comment><USER51> What a gross invasion of people's privacy as enabled by collecting information they already willingly submitted.

If chatroulette proper is an unwavering stare into the faces and bodies of the internet, chatroulette map is stripping one further layer of anonymity away. It's also terrifying to think what'll happen when this collides with registered sex offender counts.</comment>


Microsoft debuts trailer for live-action Halo 4 series - <AUTHOR> http://techupdates.com/go/127921

<comment><USER2> _nerdgasm_

</comment><comment><USER3> I would pay to watch this movie!</comment>


SpellThing - <AUTHOR> http://spellthing.com

<comment><USER2> Have I missed something, or is this simply giving the NATO alphabet spelling of the word you type, as you type it?</comment>


@font-face makes the web pretty (or ugly). (Needs FF 3.5 or Safari) - <AUTHOR> http://craigmod.com/journal/font-face/

<comment><USER2> Dear designers: COLUMNS DO NOT BELONG ON THE WEB.

If you want a thin column for design reasons, hey, go for it, but I hate scrolling down, then up, then down, then up, then sideways (in my browser there's a horizontal scroll on that page right now). ONE thin column. ONE. I should be able to read your page with my hand on the space bar and nothing else.

Think of this as the equivalent of the suggestion that no matter how awesome your 10" x 15" design may be, when it needs to fit on a 8"x11.5" paper it doesn't work. Jamming columns into this medium is simply bringing over old, inapplicable biases to a new medium; work with the medium, not against it.

<comment><USER3> You're right, tall vertical columns are total shit on a screen.

But fixed-height horizontally scrolling columns are _AMAZING_ : <http://amarsagoo.info/tofu/> \-- they work so perfectly on a screen when done well, better than anything else by far. The lines always stay in the same vertical alignment, and the columns in the same horizontal alignment, eliminating jitter -- the text changes without moving shit around.

<comment><USER2> Interesting. I'd like to see a video of that in action. I'm skeptical still, but I'm also a person who has no problem with the current status quo. I was reading books on my 160x160 Palm Pilot with little objection. This appears to make me an outlier. (I think it may because I started on the Commodore 64 on a regular television; against _that_ reading experience, a clean 160x160 is still an improvement!)

Properly done that could work.

Do you use it? When you scroll over one or more columns, the system jumps column-wise, right? Not like a scrollbar would on a normal web page, which wouldn't jump to columns at all, and would have problems with half-displayed columns (which are useless).

<comment><USER3> I used to use Tofu incessantly when I used Macs at home + work, I've been meaning to write a clone in some X toolkit or XUL for a while.

You have it exactly right, it jumps one column at a time XOR one screen's worth at a time. When you first set it up you tweak not just the font + colors, but the width + padding of the columns.

I used to use it on my 12" PowerBook all the time, set up with one of the Vista fonts in light lavender on very-dark gray, with two columns fit onto the 1024x768 screen with the window maximized. I read millions of words that way, it's easily the fastest and least-fatiguing reading method I've used, though the ergonomics of the laptop ain't great.

</comment></comment></comment></comment><comment><USER4> I really don't look forward to giving everyone the ability to use whatever crazy, hard-on-the-eyes font they want to use.

Hitler on fonts:

<http://www.youtube.com/watch?v=qDiDATbIG-o>

(Not for the humor-challenged.)

<comment><USER5> Oh, I think this will be hilarious...Everyone loves to see Comic Sans in every corporate email, because it's a "laid back" font. Now we get to have it plastered all over the web too. Every blogspot blog will not be graced with paragraphs of it.

<comment><USER6> I think it's great! Yet another tool for quickly answering that age old question: "Is reading this worth my time?"

</comment></comment></comment><comment><USER7> I realize that on the whole, broadband connections are getting faster, but 3.3MB for the full font set seems like it might be a little much: <http://imgur.com/Y3SHZ.png>

<comment><USER5> 3.3mb for a font used for headers across the site, or getting that much or more (as the site scales) from the images needed, or generated, or flash used replacement, et cetera.

It seems like a lot, but if it caches, it would probably end up being less overhead.

<comment><USER8> I'm not sure if that matters too much - it takes over a second for those to load on my (broadband) connection. That means the page first renders with standard fonts, then snaps into the fancy downloaded ones a second after load. It feels horrible.

<comment><USER9> What browser are you using? I'm on Safari 4 and the page looked like this <http://i31.tinypic.com/mvmgx0.png> until the font was downloaded (took almost 10 seconds on my slow connection).

Edit: I tried it with Firefox and it does indeed use the default font until the new one is downloaded. The transition is not nice but better than nothing.

<comment><USER8> Was using FF3.5, sorry for not pointing it out earlier.

</comment></comment></comment></comment></comment><comment><USER10> On the positive side: Fonts are really important in design and styling, and giving designers the flexibility to use whatever fonts they won't also opens up design doors.

It's the internet, there's always going to be stupid people using stupid things and doing stupid things. Is that enough reason to stop other people from doing cool things? Never.

</comment><comment><USER11> WARNING: this link crashed my mac safari 4.

Also before crashing it said the demo needs FF 3.5. So the title is wrong about supporting safari?

<comment><USER12> Worked fine on mine: Safari 4.0.1, Mac OS 10.5.7

I compared it to Firefox 3.5 and it was identical.

</comment></comment><comment><USER13> And this is how terrible it looks like in Opera on Linux: <http://imgur.com/o1unT.png>

<comment><USER14> Left column, near bottom: "Technologies such as (unreadable) and Cufon... "

Wow, I never thought there would be unreadable _text_ in browser. But this day finally came!

<comment><USER15> Unreadable is 'sIFR' <http://www.mikeindustries.com/blog/sifr/>

</comment></comment></comment><comment><USER16> FWIW: Although the site proclaims (dimly at top) that it appears only as intended on FF 3.5... I find that it looks essentially identical via Safari 4.</comment>


Google is 15 years old - <AUTHOR> http://www.theguardian.com/technology/shortcuts/2013/sep/04/google-15-things-didnt-know-15th-birthday

<comment><USER2> Google was originally called BackRub... "Let me backrub that for you" just doesn't sound as good.</comment>