On Stack Overflow's recent battles with the .NET Garbage Collector - <AUTHOR> http://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector <comment><USER3> Let me prefix this rant by saying I Love C# and .Net. I think it's a really good platform to build on, as demonstrated by it's growth outside of the Microsoft world.

This article highlights why (good) C/C++ have such a hard time moving to C#/.Net. In .Net memory management is, 99.9999999999% of the time, fire and forget, whereas a big chunk of learning and programming C/C++ is about memory management. Most C, and some C++, programmers would have baulked at having a massive object graph in memory - releasing it becomes a massive headache, and that's before you even get into synchronisation issues, and the .Net team have done a really good job of taking this headache away (yes, I realise they 're not the first). However, we're now at the point where there are a lot of C# programmers who've never heard of a linker (by default, csc compiles and links in one go), have little concept of static vs dynamic linking, and, more importantly, don't have the first clue about memory management. This manifests itself in things like not using IDisposable properly/consistently, using the string.+ operator rather than using StringBuilder/StringWriter, and developers have no idea about the difference between class and struct, especially when it comes to parameter handling. Even books like (the excellent) C# in Depth are pretty light on the memory management side of things, deferring this to books about the CLI and DNR. Whereas, the truth is, if you're going to write a big application, you're going to have some concept of this.

<comment><USER4> Could you explain what you mean about string + vs StringBuilder? I'm guilty of this one.

<comment><USER5> In C# strings are immutable , so string + string creates a new string. This means coping both strings into the new result string. That is a lot of copying and can be pretty slow if you do it on large strings, or often on small strings. Especially if you concatenate multiple strings at once (A + B + C + D means that A is copied 3 times, B 3 times, C twice, and D once) StringBuilder is mutable so appends don't recopy data. It is really only a problem if you do it on large strings more than a few times.

On the other hand I am not sure if this is a problem in .NET. I know the semantics look bad but no one said the execution model had to match the semantics. If I remember correctly the JVM has the capability to rewrite the code to the faster version, though I am not sure if the CLR does.

<comment><USER6> The JVM does rewrite individual concatenations as StringBuilders (so a+b+c+d results in one StringBuilder with three .append() operations), but the real performance problem is concatenating in a loop.

        String result = "";
        for (String str : myStrings) {
            result += str + " "; // on each execution, a new StringBuilder is created
        }

as opposed to

        StringBuilder result = new StringBuilder();
        for (String str : myStrings) {
            result.append(str).append(" ");
        }

The JVM can't hoist the generated StringBuilder out of loops to produce the second, faster piece of code. I believe the CLR is the same.

<comment><USER7> Later JVMs do escape analysis, though - so there's not necessarily any difference between the two methods...

<comment><USER6> At least in Oracle Java 1.6 update 24, which is supposed to have escape analysis enabled by default, it is a huge difference. I don't know if Java 7's analysis is smarter.

</comment></comment></comment></comment></comment></comment><comment><USER8> I think stackoverflow is the first high volume .net site that have gone in depth publically with how they are solving their performance issues. Microsoft should be paying them for the continued great PR

<comment><USER9> it's great that they share their findings and part of their code, even if I'm not a .NET dev I find the blog posts really interesting and their approach/tools inspirational.

But wasn't slashdot the first high volume site sharing their solutions to performance issues?

<comment><USER8> Notice I said .NET. You can find plenty of presentations / blogs on php performance, ruby / rails performance, python / django performance but not many on .NET - I guess simply because most high-volume sites don't use .NET

<comment><USER10> I'd say it's rather because most high volume sites using .NET are more commercialized , and often run by companies that's typically not been very open about anything they do internally.

<comment><USER11> Also StackOverflow are one of the few .Net sites hackers/devs flock to and care about. I work on a large scale .Net web app, but I don't think many hacker news readers would really care about the application itself (and, as you pointed out, my company would probably kill me if I started blogging about the internals!).

</comment></comment></comment></comment></comment><comment><USER12> I wonder whether all those gymnastics were more prudent than simply writing a C module to filter questions and feeding the results back to the C# web app. Opinions?

<comment><USER13> Jeff doesn't know C. Should he learn C was an ongoing topic in Jeff and Joel's StackExchange podcast, which was actually somewhat entertaining. Time for another episode.

<comment><USER14> Which episode was that?

<comment><USER13> It has been a while so I can't remember. They were getting people to do the transcripts for their shows.

[http://meta.stackoverflow.com/questions/19244/community- podc...](http://meta.stackoverflow.com/questions/19244/community-podcast- transcription-project-idea)

If your Google-Fu is good.

</comment></comment></comment></comment><comment><USER15> Fantastic read. Thanks for posting it!

After reading this article I felt extremely humbled. As a developer doing relatively "simple" work day to day, seeing this level of programming proficiency is very impressive. There isn't a chance I'd be able to figure out a problem such as this. At least certainly not within the timeframe that the SO team fixed it in.

It's articles like this that make me want to continue pushing my limits as a developer.

<comment><USER16> > There isn't a chance I'd be able to figure out a problem such as this.

Don't sell yourself short. You generally don't know what your _actual_ limits are until you really push hard against them or break through them. I've had to hunt down and fix some very unusual problems - with few or no references or no results from google.

Those kind of mind-bending problems actually give a great deal of satisfaction. I'm serious that you never really know your limits until you break them. I think the trick is to keep growing and expanding your abilities and knowledge.

<comment><USER15> Very true. This is generally why I appended that with "at least not within the timeframe that the SO team did".

I think that I have gotten to where I am by constantly pushing myself, but reading articles like this just reminds me that I still have a ways to go.

</comment></comment></comment><comment><USER17> Why not write a script that periodically takes a machine of the loadbalancer, forces a GC on each of the servers, and then adds it back again.

I think this would be a cleaner approach than changing the entire code base.

<comment><USER18> I disagree. Your solution attempts to fix the symptom. Their solution fixes the root cause of the problem.

<comment><USER19> It does? What is the "root cause" though? You seem to take it to mean the generation of references that must be traversed in gen2, but that sounds like just as much a hack to me: they modify the code in ways that don't represent the semantics of the problem to work around a limitation of the implementation.

Hell, you could argue the "root cause" is the use of a garbage-collected environment in the first place. All popular GC implementations have latency issues like this. All of them. If you can't deal with occasional high latencies, you should identify that requirement before choosing Java or C#.

All the solutions provided are just patching around that issue. I don't see anything in the post that looks like a root cause, and the GP's post has the advantage of being much simpler to implement.

<comment><USER18> I consider the root cause to be a mis-match between the memory management needs of the application and the assumptions of the GC. Their solution matches the application's memory usage with the assumptions of the GC.

What would be more useful to them is to be able to provide either hints to the GC, or to actually have some control over memory management. That is, keep the application the same, but let it influence GC behavior. They're forced to go at it the other way: keep the GC the same, but change the application so what the GC does becomes the right thing.

 _they modify the code in ways that don't represent the semantics of the problem to work around a limitation of the implementation._

That is always true when you start optimizing for performance. And nick_craver explains why the proposed suggestion may be easier to say, but there are hidden complexities. Personally, once you start introducing external control to your application like that, alarm bells go off in my head.

</comment></comment></comment></comment><comment><USER20>
      I can not stress how important it is to have
      queryable web logs.

I'd love to read some (actionable) articles on how to set up some of the benchmarking / logging stuff that you guys have. For sure I'll check out _.NET Memory Profiler_ and _mini profiler_ linked in the article, but I'd be grateful if anyone wants to post more comprehensive info on where to start.

</comment><comment><USER21> I'm not one to hate on C#, or be a programming language snob but this certainly looks like a case where poor performance and a lot of extra work were created simply because of a deficiency in a language. Languages like C# are advertised as being simple to use, and for the most part they are. They fit the bill in a lot of different use cases.

But it certainly seems like to me that if you want to build a high- performance, scalable piece of software, you don't want to have to bang your head against wall and fight against deficiencies within the language implementation itself in order to get your software working properly.

<comment><USER22> You are conflating the language with the runtime, first. And second, we were experiencing the occasional page taking maybe one second, which we considered unacceptable but 99% of the world wouldn't notice.

(NB, languages like Ruby and PHP are lovely, but are over 10x slower than C# and Java.)

<comment><USER23> I'm so tired of benchmarks that play with ints and floats which show how fast Java is.

Most business app work is string manipulation. If you think Ruby is slow, look at the timings for "sequential" operation in the table on this page (yes, it's my site):

<http://roboprogs.com/devel/2009.12.html>

If you think that I have badly blundered in my methodology, get the benchmark code, fiddle with it, and run it on your own hardware:

<https://github.com/roboprog/mp_bench>

FYI: I'm not trying to say that "Ruby is the most awesomest language, like ever, d00dz!!!". I like different tools for different jobs. I'm just tired of seeing people judge implementation speeds based on bit twiddling benchmarks, rather than stuff that at least churns through a large number of strings, if not other object types, and does some I/O.

<comment><USER24> I noticed some differences in the code that I think are not equivalent

Perl: print $local_process_var, " ", &gen_pg_template(), "\n"

Python: print local_process_var, " ", gen_pg_template()

Java: System.out.println( timestamp + " " + genPgTemplate() );

I'm not sure, but I think the Perl/Python code sends the strings as arguments to print that will just output them directly. In Java you will concatenate 3 strings before sending it to "print". This adds some extra CPU usage that the other versions don't have

<comment><USER23> One item of possible note: It wasn't possible to have list driven output syntax in Java before 1.5. I'm not sure if they added an output method with elipses in it then, or not. Even if so, I'm not sure it would be faster.

Still, I could modify the scripting output lines to bring them down to Java's level :-)

</comment></comment></comment></comment></comment><comment><USER4> Slightly off topic, for any SO employees here, have you all ever experimented with using mono-fastcgi-server for any part of your sites and what were your findings? Assuming any of your code compiles under mono.

<comment><AUTHOR> We have not, has anyone ran any benchmarks/tests comparing the mono GC to the Microsoft GC? I am pretty sure we would need to change large chunks of our system to run it in mono.

<comment><USER25> My understanding (from discussions with some Fog Creek devs who've done the mono dance for FogBugz) is that ASP.NET on mono is an awful lot of trouble, and doesn't run under IIS.

<http://www.mono-project.com/FAQ:_ASP.NET>

Seems to validate the IIS bit.

</comment></comment></comment><comment><USER26> These two phrases, early in the article, could give someone an interesting problem to solve:

 _Our initial tag engine design was a GC nightmare. The worst possible type memory allocation. Lots of objects with lots of references that lived just enough time to get into generation 2 (which was collected every couple of minutes on our web servers).

Interestingly, the worst possible scenario for the GC is quite common in our environment. We quite often cache information for 1 to 5 minutes._

(Curiously, this is under a header mentioning "abuse of the garbage collector". I'd put it the other way around ...)

</comment><comment><USER27> Less a stop watch in the brain, more likely a case of simply pressing F12 in the browser. All of the consoles have profilers these days.

I must admit I am a little surprised that tags are stored as a free text field.

<comment><AUTHOR> The issue popped up once in a hundred times, in general people do not notice.

Tags are stored both in a posttags table and free text. Fts is faster for many queries.

<comment><AUTHOR> I do admit it surprised me that we stored tags in an fts field when I started, but after a few months it made quite a bit of sense, the queries are just way faster.

</comment></comment></comment><comment><USER28> To SamS and the SO team: what drove the choice to Free Text Search? Any other options evaluated at the time?

</comment><comment><USER29> Great post. I always learn something new when the SO guys share their experiences with .NET in a large scale web application. Thanks for the link to the memory profiler. Hopefully it will be better than struggling with windbg.

</comment><comment><USER30> If they used an array of structs they would've cut down on the GC's graph traversal significantly.

Another option I was surprised they didn't mention was to run GC.Collect periodically to clear out gen2.

<comment><USER31> Running Collect periodically probably won't help much in this scenario - <USER2> huge data structure isn't actually being collected during the GC.Collect. But the GC doesn't know this until it spikes the CPU while it walks a bajillion references.

Since nothing is actually getting collected, if you ran GC.Collect periodically, you would just be incurring more lag with no benefit. I think your idea might help more in a different situation, one where you do have large amounts of memory getting reclaimed with each GC sweep.</comment></comment>


From Disco to Techno, He's Seen It on Sugar Hill's Dance Floor - <AUTHOR> https://www.nytimes.com/2019/04/05/arts/music/sugar-hill-brooklyn-eddie-freeman.html <comment><USER2> Sugar Hill is such an evocative name.

There are quite a few neighborhoods and towns named Sugar Hill around the country. Most of them (all of them?) perhaps named as either a descriptive or hopeful reference to the possibility of a post-emancipation "sweet life" for black Americans.

Sugar Hill Records takes its name from the Harlem Sugar Hill, rather than this article's Brooklyn-via-North-Carolina Sugar Hill.

</comment><comment><USER3> Ah, new realization!

When I was in high school in the 80s, one of the most popular songs on the local mixed-tapes was an early rap song-- 'The Sugar Hill Gang'. I expect this is where the song got it's name.

That music still takes me back to good times.

<comment><USER4> Apparently the Sugar Hill Gang were named for a different Sugar Hill, per another comment on this article. Good eye though -- the Sugar Hill Gang were the first hip-hop act to make a record that had widespread commercial success.

</comment></comment><comment><USER5> Open since 1979! That's fantastic considering the business a club is in. Major kudos to Freeman staying relevant for so long. Turning down 15 million - that's passion :)

</comment><comment><USER6> I actually met this guy at one of the said "techno" parties a few years ago. I was sitting at the bar and all of a sudden he just started talking to me. We chatted for a while before he mentioned he owned the joint.

A real nice guy. His philosophy was "back then, I bought real estate instead of investing in my company's stock...[but NYC is expensive AF now so good luck doing that!]"

Also, the article implicitly suggests (while still playing identity politics, as NYT just can't help), that gentrification revitalized his club.

<comment><USER7> Isn't a comment about an entity or author playing identity politics in itself identity politics as well?</comment></comment>


19-year-old gets 135 months in prison for sending SWAT teams to his enemies - <AUTHOR> http://blogs.dallasobserver.com/unfairpark/2009/06/the_blind_little_hacker_gets_1.php

<comment><USER2> Probably worth pointing out that this is not exactly news: the article is from 2009.

</comment><comment><AUTHOR> Another cool (better) article about him is here [http://www.wired.com/politics/law/news/2008/02/blind_hacker?...](http://www.wired.com/politics/law/news/2008/02/blind_hacker?currentPage=all)

</comment><comment><USER3> 11 years is a long long time, OTOH this is pretty far from a joke gone wrong if the even half of the press release is true.

<comment><USER4> Thank god the SWAT teams didn't actually kill anyone. 11 years is about right given his age. If he were older I'd ask for more, sending an armed crew of trained killers into someone's house is extremely serious.

<comment><USER5> Exactly. This is one sentencing I can completely agree with. People need to realize that there's a huge difference between having a bunch of pizzas delivered to someone's house and sending a SWAT team.</comment></comment></comment>


Greenland's ice is melting at the rate thought as worst-case scenario in 2070 - <AUTHOR> https://www.businessinsider.in/Greenlands-ice-is-melting-at-the-rate-scientists-thought-would-be-our-worst-case-scenario-in-2070/articleshow/70683698.cms <comment><USER2> Extinction of the human race so some people could live the really good life for a really short period, how many yachts and front yard golf courses does one needs?

<comment><USER3> Extinction won't come about because the handful of people with yachts and golf courses led really good lives and used a fantastic amount of resources to do so. It'll come about because hundreds of millions of "regular people" with cheap cars and jet travel led really good lives and used a mere extraordinary amount of resources to do so. And neither group wanted to diminish their standard of living one bit.

</comment></comment><comment><USER4> I can't help but think about "flying car" on 2010.

<comment><USER5> I don't get the 2010 reference, but flying cars are something that might fall into the "just because we can doesn't mean we should" category. I'm assuming keeping something in the air costs much more energy and pollution than using an axel. Maybe there's more to it.

</comment></comment><comment><USER6> Can someone give some clarity on how bad this is? As I understand it the projected 2070 melt value is the expected average, so if this is an extreme outlier then it might not be as bad as it seems.

</comment><comment><USER7> "faster than expected" seems to be a common theme with climate change news these days... but so long as its not happening in my lifetime it doesn't matters I guess.

<comment><USER8> "Right now" is not in your lifetime?

<comment><USER7> well if you look at the predicted time for Greenland to melt, its still ~1000 years so skeptic could easily brush it aside with this tongue-in-cheek.

btw if its not obvious this was a /s remark.</comment></comment></comment>


Groupon Is Working On A Big Pivot - <AUTHOR> http://www.businessinsider.com/groupon-is-working-on-a-big-pivot-2012-7 <comment><USER2> I think the big challenge for them in taking on Square is that businesses already know what groupon is. They expect it to be a coupon platform, and one that already has a mixed reputation.

On the plus side, they already have a large salesforce and can go out selling their new product.

Personally, I think they are too far behind and won't be able to get away from their history.</comment>


Frustrated iOS developers might be starting a union - <AUTHOR> http://venturebeat.com/2012/06/07/ios-developers-union/

<comment><USER2> I'm continually amazed that iOS developers demand _more_ from apple. It's not enough to simply provide a lucrative marketplace, I guess.

<comment><USER3> Sure that is one way to look at it, but I have a different view given the fact that Apple takes 30%, to me I view Apple as being paid to provide a service. The fact that Apple takes such a high cut, makes them at least a little beholden to the developers of that platform. As well for a good deal of developers it is not a lucrative marketplace and for many of them it is due to the blatant app cloning that is taking place. The problem is in the question what constitutes a clone. Apple has answered the question by staying out of it, but doing so has cost developers revenue. But the alternative could be worse where anything that remotely performs similar functions would be considered a clone. It is the most rampant in games and I hope if they do step in the resolution on applies to games.

<comment><USER2> The thing is, they're NOT being paid to provide a service. When you participate in the App store, you're sharecropping.

It's very, very different.

They basically break even on the app store. The 30% is there to cover the costs, not to "profiteer".

</comment></comment></comment><comment><USER4> Wouldn't it actually be a cartel, not a union?</comment>


Startup stock options explained - <AUTHOR> http://maxschireson.com/2011/08/23/startup-stock-options-explained/

<comment><USER2> Excellent, thorough discussion. Should I ever need to negotiate employee options again, I'll use this as a refresher course.

<comment><AUTHOR> If I'm lucky, some day you'll use it against me :)</comment></comment>


Passion in your field is overrated - <AUTHOR> https://sdegutis.com/blog/2017-10-23-passion-in-your-field-is-overrated/ <comment><USER2> The author has been programming for 18 years. Of course he doesn't share the same passion for programming as his younger self. Passion is a necessity in this field unless you have decades of experience to lean on.

<comment><AUTHOR> Good point. You're right that passion helped me to gain the experience I have now. But at this point I can't lean on that same passion, I had to find another motivation. I wonder how many people hit this same point and just let themselves fully burn-out instead.</comment></comment>


Chinese startup Makeblock is bringing robots to classrooms - <AUTHOR> https://www.fastcompany.com/90242046/chinese-startup-makeblock-robots-are-invading-classrooms <comment><USER2> Well, as long as they're not going to eventually replace the teachers, I think that this is a great idea to teach kids. It's innovative and it will inspire them to actually pay attention to their lesson. It will also allow them to learn the lesson quickly, right?

<comment><USER3> I work at Makeblock so I will chime in. We design our robots to be a tool for educators that, as you mention, helps them make classes so much more engaging.

The number of students who will be able to learn, and be interested in learning, to program or to engage with scientific subjects when they see their instructions executed by their own coding companion right in front of them is so much greater than those who will find an IDE exciting. I started programming in QBASIC when I was around 10 but got bored pretty quickly as writing text-based games isn't that exciting, and started playing games instead. I probably could've been a lot better at programming today if I'd had something to keep me engaged.

We have a whitepaper available that is written by an organization that have created their STEM courses around our robots, for those that are interested: [https://educators.makeblock.com/whitepaper-how-to-design- ste...](https://educators.makeblock.com/whitepaper-how-to-design-stem-courses- in-six-steps)

<comment><USER2> That's good, because one of the misconceptions when it comes to robots and other automation is that it will take people's jobs away from them. I do believe that there's a middle ground that we can find where robots and humans can work side by side. This (as in education) is one of them. Students tend to get bored easily in class. If you bring this in, they will engage and pay attention more, which seems to me is what your company aims to achieve. Great job on that!

The only problem I can see here is that not all schools will be able to afford this because not every school has a budget for this.

</comment></comment></comment><comment><USER4> Anything that makes a classroom more like the workplace of the future is a win.

I think we have a much higher probability of humans assembling robots in an office environment than needing to use a book or to know cursive.

Not that we have a high probability that humans will build robots in an office.

<comment><USER5> The role of School should be to grow kids into smart and empathetic grown ups that understand how the world works and can find their place in it.

It's not just there to prepare people for the cubicle.

I don't think a classroom should resemble a workplace, much less a workplace of the future as we currently imagine it.

<comment><USER6> Thank you for putting my thoughts into words. The comment you replied to is an incredibly depressing way to look at life.

</comment></comment></comment><comment><USER7> I've got the mbot robot from them which is pretty cool - [https://www.makeblock.com/steam-kits/mbot](https://www.makeblock.com/steam- kits/mbot)

It was a little fiddly to get it working via bluetooth via Linux with the 'scratch' interface, but I did eventually manage to get it to work :) (by choosing serial port, rather than the bluetooth button, and using Linux's rfcomm module)

We've only tried simple things with it so far like making the robot controllable via the keyboard which works pretty well.

This reminds me I need to finish building a decent line follower in scratch.</comment>


The Research Is Clear: Long Hours Backfire for People and for Companies - <AUTHOR> https://hbr.org/2015/08/the-research-is-clear-long-hours-backfire-for-people-and-for-companies

<comment><USER2> >So why do we keep doing it? Why can't we put the book down?

So that I can keep my job. Easy.</comment>


Internet of Things Temperature and Humidity Monitor - <AUTHOR> https://www.robertputt.co.uk/2016/11/29/internet-of-things-temperature-humidity-monitor/ <comment><USER2> That's amusing. Everything has to be "cloud" oriented. This is a simple temperature and humidity sensor which requires a web server to which it can report. It can't talk to a local machine, unless it has a local DNS name and routing. How did we manage to screw up networking so bad that you can't talk to a local machine easily?

<comment><USER3> How would you suggest getting that information (say, a fixed IP address and gateway) into a part that has no user interface and no removable storage? How about after deployment?

<comment><USER4> Isn't the usual approach for these things to not use IP or wireless at all, but some other simple serial protocol like ZigBee and have them talk to a gateway "controller" that's connected to the outside world? The last time I played with wireless sensor networks that's how it worked, and they can actually form their own mesh network.

<comment><USER5> That's still the case indeed.

</comment></comment></comment></comment><comment><USER6> Has anyone had luck with a battery powered ESP8266? I built one of these temperature loggers and gave it 3xAA but it never lasts more than 2 weeks, while "real" things (SmartThings sensors) last months on a single smaller battery. I'm a beginner in EE but I'd like to know what's possible to stretch the juice.

So far I have it sleep between every 15m measurement which brought it up from three days of battery life.

<comment><USER7> > I built one of these temperature loggers and gave it 3xAA but it never lasts > more than 2 weeks

For comparison purposes, I just changed the 3 x AA batteries on my outside sensor[1], the batteries lasted for 13 months (again, in outside conditions, including a very harsh winter).

I'm planning to write a post one of these days, but the gist of it is:

\- attiny84 (don't even think about using an Arduino)

\- DHT22 sensor (looking into SHT7x for better accuracy, but they're expensive as hell)

\- TX module (I went with 433MHz because of better penetration)

I made 4 of these sensors, powered by batteries, so I can put them anywhere (within range, of course).

They send the reading every 4..7 x 8 seconds[2], both to keep the frequency clear (as required by law, I think it was 95% of the time) and as a poor man's anti packet collision.

They all report to a master RX, which is connected via USB to my server (which is always on anyway).

A small parser reads from serial USB and saves it in Mongo.

From there I can see the data in a simple webapp[3].

Oh yeah, and as a bonus, I made another thing that intercepts the outside sensor and display it on a 7 segment display[4], which looks really cool (plus I don't have to open the web page to see what's it like outside)

[1] [https://twitter.com/emilburzo/status/799886284730892288](https://twitter.com/emilburzo/status/799886284730892288)

[2] [https://github.com/ambient- monitoring/node/blob/master/node....](https://github.com/ambient- monitoring/node/blob/master/node.ino#L130)

[3] [http://ambient.emilburzo.com/](http://ambient.emilburzo.com/)

[4] [https://www.flickr.com/photos/eaglex/30242342623/in/datepost...](https://www.flickr.com/photos/eaglex/30242342623/in/dateposted- public/)

<comment><USER8> It's not just the DHT22's accuracy that's a problem, it's the calibration.

I have 8 of these, and they are up to 30%RH off - both in terms of their readings relative to each other, and relative to the true RH of a saturated salt solution[1]. Moreover, some of them have a strange "stickiness" to certain levels.

I've heard good things about the BME280, and that's what I intend to replace my DHTs with.

[1] See e.g. [http://www.omega.com/temperature/Z/pdf/z103.pdf](http://www.omega.com/temperature/Z/pdf/z103.pdf)

<comment><USER9> Same, I had a lot of trouble with the DHT22 calibration, for temperature as well. And it was nonlinear, so I couldn't just add a correction. I switched to a mix of BME280, Si7021 and DS18B20s. Si7021 is pretty similar to the DHT22 in terms of nominal specs, but it's much better and cheaper.

[http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.ht...](http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html) does a pretty comprehensive review.

</comment></comment></comment></comment><comment><USER10> If you're interested in playing with the ESP8266, I would really recommend the D1 mini, by Wemos. It's an ESP8266 breakout, with a 5v regulator, a USB programmer, and a micro-USB port built in (in a very small package). They also make 'shields' that will plug directly into the headers, with a variety of functionality (including the sensor used in this build).

[https://www.wemos.cc/](https://www.wemos.cc/)

(I'm not affiliated in any way, just my go-to product for DIY IoT stuff)

</comment><comment><USER11> Cool project! I recently did roughly the same, publishing to the MQTT server on my Raspberry Pi, which will be the 'backbone' of my home automation system. It's insane how cheap you can get these parts off Ali Express and the likes.

I powered it from a programmer for now sticking out of a powered USB HUB (probably not so wise!), but ordered a few sub-dollar 'power' modules to try out as well.

</comment><comment><USER12> I think this could be done using MicroPython as well (e.g. [https://github.com/micropython/micropython/tree/master/esp82...](https://github.com/micropython/micropython/tree/master/esp8266)). Should be the same functionally, but using Python 3 instead of Lua.

</comment><comment><USER13> Are there any recommendations for combining these sorts of sensors with long- range radios (e.g. HC12) and building a mesh network? Power consumption is less critical an issue as usually a small solar panel can provide topups. I am tempted to use micropython and effectively write my own mesh protocol but I'd hate to be reinventing the wheel.

<comment><USER14> [https://www.pycom.io/solutions/py- boards/lopy/](https://www.pycom.io/solutions/py-boards/lopy/) Lora, works for kilometers. Micropython, easy sensors (supports the DHT out of the box).</comment></comment>


United States of Insurance - <AUTHOR> http://dilbert.com/blog/entry/united_states_of_insurance/ <comment><USER2> I should nitpick in the main article's discussion, but: "The U.S. probably has the best disaster emergency resources in the world. "

Really? They looked downright incompetent as seen from here when Katrina struck. I'm trying to find a credible disaster preparedness / emergency management metric, but skimming the Google results seems to point out that European countries and even Australia are better at disaster preparedness.</comment>


Antibody tests show what parts of NYC were hit hardest - <AUTHOR> https://www.nytimes.com/2020/08/19/nyregion/new-york-city-antibody-test.html <comment><USER2> As if this wasn't all confusing enough, the worst hit area is named Corona: "The hardest hit ZIP code in the city — 11368 — was the one in Corona, a predominantly Hispanic neighborhood..."

<comment><USER3> Like we needed any more proof that we live in a simulation.

<comment><USER4> Here you go, more proof, the CoronaVirus Anthem: [https://youtu.be/Ah0Ys50CqO8](https://youtu.be/Ah0Ys50CqO8)

</comment></comment></comment><comment><USER5> NYC's Covid data repository[1] has more data in case anybody wants to play around with it. Happy that NYC committed to Open Data[2] initiatives in previous years[3].

[1] [https://www1.nyc.gov/site/doh/covid/covid-19-data.page](https://www1.nyc.gov/site/doh/covid/covid-19-data.page)

[2] [https://opendata.cityofnewyork.us/](https://opendata.cityofnewyork.us/)

[3] [https://datasmart.ash.harvard.edu/news/article/new-york- city...](https://datasmart.ash.harvard.edu/news/article/new-york-city-open- data-a-brief-history-991)

<comment><USER6> I'm getting a paywall on NYT article. But my first thought is, I bet this correlates strongly to property values/density. I don't know how to build that viz but if anyone is bored with the know how please post it.

<comment><AUTHOR> [https://archive.vn/czNKW](https://archive.vn/czNKW)

<comment><USER6> Thanks this was helpful!

</comment></comment></comment></comment><comment><USER7> Worth noting the limitations listed at the bottom.

> The accuracy of antibody testing varies widely. Moreover, most antibody > tests were done for people seeking them out, which means that those who got > tested are a self-selecting group and not a random sample.

> It also appears that New Yorkers in some neighborhoods with lower infection > rates were more likely to seek antibody testing.

> In some wealthy and largely white ZIP codes in Manhattan, some 30 percent of > people may have gotten an antibody test. But in Corona, for instance, where > the positive rate was highest, less than a quarter of people got tested.

<comment><USER8> 30% and "less than a quarter" ... that actually seems rather homogenous. Variations in testing of 10-15% across very different neighborhoods seems rather reasonable. Given the disparity in impact that a positive test means to one's working life, I was expecting something more like 1% and 30%.

<comment><USER9> It's a bit more interesting when you consider the disparity in infection rates. The people most likely to get it were less likely to get tested for it.

The reality is probably just that these people didn't have damn time or energy to go to a testing center for a blood draw, or were already concerned about spending so much time in public and didn't want to travel more than they needed to. Being working-class in NYC is hard nowadays due to the very long commutes (caused in turn by people fleeing excessively high rental prices).

</comment></comment></comment><comment><USER10> Disclosure: I suffered through two weeks of covid

The test for me was $165, and my insurance would not cover it.

My recovery was punctuated with almost daily calls from the local hospital i tested at asking me to come back for a follow-up antibody screen for research purposes.

This was $400. It was not covered by insurance so I skipped.

I was then contacted by my insurance company asking if I had completed the antibody test and told it was covered, so I passed the antibody test and went back to work. Three weeks later I wound up fighting $600 from a hospital collections agency for covid ab lab work.

My disease advice is this: If possible, avoid being a working class American.

<comment><USER11> I think I saw a reddit post about hospital collection agencies, there was some good advice there; I'm not an american citizen so I'm in no position to give advice; I hope you sort it out without paying the 600$.

</comment></comment><comment><USER11> 27% of people have antibodies, thus 2.4 million were infected.

23k deaths, thus a 1% mortality rate.

I guess this the final nail in the "this is just a flu" .

<comment><USER12> For a good percentage of the population it is about as deadly as the flu though, perhaps even less. For a smaller percentage of people it's far more deadly than the flu.

I still think we could have gotten through this quicker if we didn't lock down the young and healthy, while taking extra care to keep at risk populations safe.

<comment><USER13> Mortality rates for flu are correlated with very similar risk factors as COVID-19 and COVID is more deadly by an order of magnitude overall. Also, it is now becoming clearer that children are just as susceptible to adults and can harbor substantial infections and be highly contagious even without symptoms.

[https://www.washingtonpost.com/health/2020/08/20/children- co...](https://www.washingtonpost.com/health/2020/08/20/children-coronavirus- spread-transmission/)

<comment><USER14> IIRC the CDC said that COVID-19 was actually _less_ dangerous for people under 30 than the flu is. Of course, the CDC has not exactly covered itself in glory this year, so who knows.

</comment></comment></comment></comment><comment><USER15> It has been said that there is some likelihood that exposure to a previous Coronavirus made some people partially resistant to Covid-19. Would that mean that there is a chance that some people test positive for Covid-19 antibodies due to a different strain of Coronavirus?

<comment><USER16> I don't think so. Antibodies are pretty specific. However it's possible and there is some data to suggest that some people have T-Cell level immunity to SARS-Cov-2 that was likely induced by exposure to an earlier coronavirus.

<comment><USER17> > Antibodies are pretty specific.

Not always. Famously, cowpox antibodies protect against smallpox.

</comment></comment></comment><comment><USER18> My biggest concern with this study is sampling.

My read is that test subjects were entirely self-selected, which mean strong bias to those who suspected (or feared) exposure, had access to testing, and (where and when necessary) could pay for same (I don't know whether or when NYC instituted universal free test access).

That's in addition to any issues with test accuracy, procedures, or reporting itself.

The information tells a story. It's not immediately evident just how accurate that story is, an uncertainty which may further muddy conversations and decisionmaking regarding the outbreak.

As any statistician worth their salt will tell you, _sample size_ is _vastly_ less relevant than _sample method_ , and a rigorous, though small (a few hundred, perhaps 1,000 or so _randomly_ selected casess) would be highly valuable. The alternative (at far greater cost) is near-total testing. Itally have conducted comprehensive testing within specific small towns. Some smaller countries and territories (Andorra, Faroe Islands, Monaco, Luxembourg) have attained 100% test coverage. These still suggest 1-6.% CFR.

New York City's test coverage, whilst _large_ , could still remain quite _biased_.

</comment><comment><USER19> I'm glad to see NYC drive testing like this. There's still a lot of decisions that need to be made in our collective efforts against further harm.

Really it comes down to 3 dimensions:

1\. Where do we direct tests

2\. Where do we allocate non-pharmaceutical interventions

3\. When ready, where do we direct a vaccine

These are all questions that we can find a signal for within the data. There are obvious constraints, such as reagent and pharmaceutical availability and the viability of certain policies.

I'm flabbergasted and agitated that on the federal level we haven't come to a consensus on testing and data. If there is anything certain to increase harm relative to where it could be, it's this "slow down testing" narrative.

</comment><comment><USER20> Its kind of ironic that the neighborhood is called Corona...

<comment><USER21> No, it is a coincidence

<comment><USER22> Or a data input mistake.

<comment><USER23> > Or a data input mistake.

It's not - Corona Park and Elmhurst were the two hardest-hit neighborhoods from near the very beginning.

<comment><USER24> No Corona Park(it's actually Flushing Meadows-Corona Park) is the name of an actual park, named in part after Corona one of the the neighborhoods it's located in.

</comment></comment></comment></comment></comment><comment><USER25> So in those 50% antibody areas in this unethical experiment we gain the knowledge, if herd immunity is possible, I guess. Or - if it's like the flu - USA just gradually weeds out everyone that can't handle this specific disease while still rotating seasonal waves for everyone else.

<comment><USER26> You seem skeptical about herd immunity being a thing. This video discusses studies showing that immunity should be long lasting.

[https://www.youtube.com/watch?v=D5Z6wdu1eI0&t=270s](https://www.youtube.com/watch?v=D5Z6wdu1eI0&t=270s)

<comment><USER25> > the antibodies might not last for more than three or four months

He says a few seconds into your timestamp. Thank you for trying to soothe my thoughts. But now I'm even more concerned. Wouldn't that render a vaccine pretty useless if it's gone after 4 months?

<comment><USER27> Antibodies simply teach memory cells, which is what gives you the secondary (long-lasting) immune response. See: [https://en.wikipedia.org/wiki/Memory_B_cell](https://en.wikipedia.org/wiki/Memory_B_cell)

Still, it's an absolutely brutal way to handle the virus and it's accepting deaths on the order of large wars.

<comment><USER26> Yet we handle influenza that way every year. Covid is a worse virus, but not orders of magnitude worse.</comment></comment></comment></comment></comment>


Significant card decline rate - <AUTHOR> Hello.<p>We are using Stripe for our recurrent billing and this month we saw 4x more card declines that ever before. As far as I now there are some other companies with same problem. Does anyone have same problem? And how do you solve it? <comment><USER2> We've seen a problem where certain cards stop working at Stripe. Sadly, and perhaps through no fault of their own, Stripe isn't going to be much help in getting this resolved. You're bound to get an email from Stripe saying that this is a "standard bank decline" and that they have no more information than that. Then you'll need to either tell your user to use a new card or ask them to ask their bank what's going on. Overall, you don't really have any play here.

Sorry to be the bearer of bad news.</comment>


Can Wind Power Revive Jobs in America's Heartland? - <AUTHOR> https://www.citylab.com/work/2017/04/why-is-trump-ignoring-these-good-heartland-jobs/521823/?utm_source=SFTwitter <comment><USER2> I think the top commenter ("cobo") nailed it. The main problem is that a lot of people see their job as their identity. When someone suggests they adapt themselves to another, more modern industry, they see that as an attack on their identity and way of life and dig in. The result is almost always a political mess, as those running for office come up with protectionist, regressive policies to appease those people to be able to get or retain their votes.

<comment><USER3> People tend to be much too glib about this. Megan Mcardle nailed this:

"Moreover, people invest a lot in building up a professional identity, which helps make the work more bearable (and, by giving people pride in what they do, probably ensures that the work is better done). Suddenly abandoning something that has constituted a major part of who you are, and taking a job at the bottom of a new field, is not any easier for a machinist or a coal miner than it would be for a professional."

[https://www.bloomberg.com/view/articles/2017-01-06/some- blue...](https://www.bloomberg.com/view/articles/2017-01-06/some-blue-collar- workers-probably-shouldn-t-do-pink-jobs)

<comment><USER4> It's more than professional identity: it's social identity too. Conservative society has an answer for everything: how to be a man or woman, who is appropriate to marry, why you shouldn't worry about death or global warming and what is a socially appropriate job, so retraining to do something that comes from outside society is an even bigger identity threat.

</comment></comment></comment><comment><USER5> A coal plant requires a lot of workers to keep running. It requires even more workers to keep it supplied with coal. Per megawatt hour, electricity from coal is more labor-intense than from natural gas, wind, or a utility scale solar PV installation.

A wind farm does not require many full time workers for operation and maintenance. Most present wind industry jobs are in installation and manufacturing. When wind power stops growing and reaches steady-state, employing people for O&M plus manufacturing/installing replacements for aged- out components, the job count is going to plunge.

I don't actually think that wind's low labor intensity is bad. I think it's great that renewables can produce electricity with far less pollution _and_ significantly less human labor than coal plants. But it does mean that switching energy jobs away from coal, even if it were frictionless, still leaves you with fewer jobs than the status quo ante. It's somewhat like trying to switch everyone unemployed by robots into new robot-maintenance-technician careers. The numbers don't work.

<comment><USER6> They just need people around to pick up all the dead birds...

<comment><USER7> Roughly 3 billion birds are killed by housecats each year while 200,000 are killed by wind turbines.

Curiously, when coal/nuclear/gas industry lobbyists (also Trump) emphasize the latter fact they usually fail to point out the former.

<comment><USER8> House cats don't kill Golden Eagles.

<comment><USER7> Is there any part of this you find to be inaccurate?

[http://www.awea.org/Issues/Content.aspx?ItemNumber=832](http://www.awea.org/Issues/Content.aspx?ItemNumber=832)

<comment><USER9> TL;DR. AWEA is a pro-wind lobbying group for wind companies by wind companies, and the "facts" in this link have many problems. Some of my responses below:

> Turbines almost never kill bald eagles.

Better to attribute the ramping of Bald Eagle populations across North America to the ban of DDT and other organochlorines, as well as successful restorative nest hacking in areas where they were extirpated. Windfarms are simply not common enough to be a mitigating factor (yet).

> Golden eagle fatalities are relatively uncommon at wind projects.

This is a clever turn of phrase. One could also say wind projects are also relatively uncommon, which is probably the biggest reason there haven't been more eagle fatalities. One need to look no further than Altamont Pass, California, to see what happens when you install a windfarm adjacent to the largest known population of nesting Golden Eagle in the world. That's a worst case scenario, of course. But the point is that good siting is pretty much the key to making bird killing a non-problem. As more windfarms are installed, the problem will likely become more common.

With that said, state and federal regulators in the USA have either by omission or intent set very low bars for "voluntary reporting" and mortality monitoring. The lion's share of the mortality data that exists is strictly "proprietary", and has never been shared. And most windfarms do practically no monitoring at all apart from the laughingly inadequate pre-construction and post-construction surveys mandated by the USFWS. And why should they? The hostile legal environment surrounding permitting, for example, would make it foolhardy for any company to go out of their way to collect data that could only become a giant liability down the line. Simply put, the absence of data for eagle mortality should not be taken as a sign that there is no eagle mortality occurring.

> The majority of golden eagle deaths occur at older wind farms build in the > 1980s, when the relationship between turbines and eagles was not understood. > Better-sited, modern turbines are replacing outdated ones and lowering > deaths by 80 percent.

They are referring to Altamont Pass, again. Modern turbines are definitely better. Rather than the picket-line or gauntlet of high-speed blenders installed atop hills where birds slope-soar and hunt, modern turbines tend to be spaced much farther apart, greatly reducing the likelihood of a collision. However, reducing incidence of collision does not mean "lowering deaths"--it just means that that each "pass" an eagle makes through a windfarm becomes less dangerous. This distinction is important. In windfarms where choice prey is abundant, hunting eagles will typically make several extended passes through a windfarm each day, making their likelihood of an "encounter" with a turbine quite high over a period of several days or weeks.

They say "lowering deaths by 80 percent", then backpedal a bit farther down:

> It is estimated that eagle fatalities will be reduced by as much as 80% as > those long-standing wind sites replace their shorter, more numerous, faster- > rotating old turbines with taller, less numerous, slower-rotating modern > turbines that are sited based on more experience.

I was about to say: the only windfarm in the country that's employed any serious "repowering" effort is Altamont Pass. And the speculated improvement that new turbines are better than the old turbines for "lowering deaths" there has, so far, been inconclusive. It's not that modern turbines aren't an improvement, it's just that this webpage doesn't yet have any justification to be making this claim!

> Modern turbines have slower-rotating blades, and fewer are needed to > generate the same amount of electricity.

Modern turbines' rate of rotation is indeed slower, but the speeds of the actual blades (especially on the distal half) is actually appreciably _faster_ than smaller bird blenders. In practice, it just means the risk is harder to model, since birds can at times ably pass through the relatively slow rotating part of the blade path near the nacelle but be likely to be literally sliced in two if attempting the same manoeuvrer more toward the end of the blade.

> It also seeks scientifically credible ways to lower and mitigate wind > energy's impacts.

Translation, wind companies are trying to dig up some legit-sounding research on the cheap that backs up what they say. With very few exceptions, the business of wind energy is incompatible with properly funding the research on its impacts. This slack is left to underfunded academics and conservationists, not companies built for the purpose of profit.

> Developers thoroughly evaluate risk to eagles before projects are sited and > built. Developers make adjustment to wind farm design, turbine locations and > project operations to reduce potential impacts. They abandon the riskiest > sites in order to avoid significant impacts.

This is basically BS. It wasn't until the Duke Energy settlement over its WY wind projects that wind companies starting taking this much more seriously. Ten years ago, it was more normal to find an environmental consulting group who'd be willing to game the EIA and pre- and post-contructions surveys to help you through the federal site permitting process.

> If the risk for eagle collision is high, operators are often required to > continuously monitor for any impacts on eagles and mitigate for them should > they occur.

This is BS. Under "voluntary reporting" guidelines, who's to even know? It's only very recently that regulators have imposed any sorts of requirements like this.

> These permits are similar to take permits available under the Endangered > Species Act (ESA), which is the gold standard for wildlife protection.

They are not so similar at all, with the sole exception that permit issuance smacks more of capriciousness by regulators than helping mankind find a sound(er) balance between wildlife and the needs of man.

I could go on, but why bother? This is just a dumb PR page ...

<comment><USER7> >This is a clever turn of phrase. One could also say wind projects are also relatively uncommon

One could. I could also say that I drove by about five or six hundred wind generators today...

Nothing in what you said above really convinces me that you should have anything against wind farms in general. It's all FUD.

<comment><USER9> I'm sorry it was not convincing, but I'm not sure why you're saying my rebuttal is FUD when the PR page is crafted exactly to muddy the very waters of this topic. You driving by "five or six hundred wind generators" tells me you went by one larger park, or perhaps a handful of small or medium sized parks. If you're in the USA, you've also pinpointed a few locations on the map where you probably live, because there are only a few places presently in the country with that much installed capacity. Yes, I'm saying that even "five or six hundred" is miniscule.

But, seriously, I see too many bad faith owners/operators who really don't give a shit about their effects on wildlife. And I see regulators setting a low bar and showing no teeth when it actually matters. Altamont Pass is a prime example--despite knowing about the "bird problem" there for many years, there has never been a requirement by state or federal regulators for any sort of mitigation at all. I find that honestly a bit disgusting.

Even the Eagle Take Permit's primary tool of "compensatory mitigation" (usually in the form of utility pole retrofitting) does not address where the problem actually occurs. You don't balance wildlife populations like you would an algebra equation--instead, the side subtracted from is simply subtracted, even if you conceivably enable gains elsewhere.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> If people weren't so obsessed with their jobs it wouldn't matter _where_ you worked. Unfortunately, we are.

Case and point -- North Carolina and their need for farmers [1]

[1] [https://www.washingtonpost.com/news/wonk/wp/2013/05/15/north...](https://www.washingtonpost.com/news/wonk/wp/2013/05/15/north- carolina-needed-6500-farm-workers-only-7-americans-stuck-it-out/)

<comment><USER11> That's a pretty poor example. The laborers were paid $9.70/hr. No American would want to do that when you can make more working at a gas station.

That seems to be the biggest problem with lower class work in the US at the moment. Cost of living is always going up, but the companies want to pay the same paltry wages they were a few decades ago.

<comment><USER12> That article is several years old now, and maybe there are some regional factors at play, but as a farmer myself, these days I regularly see offers of $20/hour if you're willing to show up, and closer to $30+/hour if you bring any skills to the table. Despite that, there is still is a lot of struggle to fill those jobs.

And maybe the price just needs to go higher still. I'm not going to tell someone how much they have to work for. But it's interesting that – once you account for the significantly lower cost of living generally found in these rural areas – you're practically making programmer in a big city wages now and that's still not appealing to someone who is unemployed.

In a lot of ways, I think enraged_camel (and cobo) hit the nail on the head[1]. Nobody wants the identity of working on a farm. There are a lot of negative connotations related to that type of work that have been built up over the years.

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

<comment><USER13> Farm labor tends to be seasonal; making programmer wages for a few weeks and then being unemployed might not be as attractive as a steady but lower paying job.

<comment><USER12> The jobs I'm thinking of are full time, year round, but I understand that may be an issue in some segments of agriculture.

</comment></comment></comment></comment></comment><comment><USER14> "federal tax credit—which gives producers 2.3 cents per kilowatt-hour of electricity for 10 years—is set to expire at the end of 2019" Roughly a 50% tax credit? Once this goes the pretty graph in this article will drop like a rock.

Wind power is not suitable for base load power, not just because of its intermittency but also because the tech running it is designed to exploit government subsidies rather than provide reliable power. A great example of this immaturity here (software defaulted to protecting the wind farm at the expense of an entire state's power supply).

[https://www.aemo.com.au/-/media/Files/Electricity/NEM/Market...](https://www.aemo.com.au/-/media/Files/Electricity/NEM/Market_Notices_and_Events/Power_System_Incident_Reports/2017/Integrated- Final-Report-SA-Black-System-28-September-2016.pdf)

Relying on wind power is like using your home router in an ISP datacenter.

<comment><USER15> Without subsidies, utility solar and wind are already cheaper than coal. Rooftop solar is still behind, will catch up in 24-36 months.

[https://cleantechnica.com/2016/12/25/cost-of-solar-power- vs-...](https://cleantechnica.com/2016/12/25/cost-of-solar-power-vs-cost-of- wind-power-coal-nuclear-natural-gas/)

"The first point is the very basic fact that new wind power and/or solar power plants are typically cheaper than new coal, natural gas, or nuclear power plants — even without any governmental support for solar or wind.

Not only are they typically cheaper — they're much cheaper in many cases.

Yes, these are levelized cost of energy (LCOE) estimates from Lazard based on various assumptions, and they are averages for the US as a whole rather than prices for specific locations within the US, but the lower estimated costs for these renewables are reflected in the real world as well, where solar & wind accounted for 69% of new capacity additions in 2015, 99% of new capacity additions in Q1 2016, a large portion of new capacity additions in Q2 2016, and probably ~⅔ of new capacity additions for 2016 as a whole."

[https://www.lazard.com/media/438038/levelized-cost-of- energy...](https://www.lazard.com/media/438038/levelized-cost-of- energy-v100.pdf) (warning: pdf)

Even with a reduced capacity factor, if you can shift non-essential loads to when renewables are producing (my pool pump needs to run X hours a day, but I'm happy to wait until the cost of power is low to run it), that's essentially "storage" without needing to pay for storage.

</comment></comment><comment><USER16> No, simply because it doesn't offer enough jobs to make a macro impact, and many of the issues tied to the destruction of the middle class are much larger than just job availability.

You know what could do it though? A new new deal focused not just on national roads and bridges, but public owned internet.

<comment><USER17> > many of the issues tied to the destruction of the middle class are much > larger than just job availability.

Isn't job availability the biggest issue when it comes to destruction of the middle class? Could you name a bigger issue?

<comment><USER18> In Canada anyways, a combination of 10+ years of zero interest rates, culture, and who knows what else has resulted in a housing bubble such that even if you have a fantastic job, in many cities you're not going to be able to buy a house, ever.

And now, because any policy change (normalizing interest rates for example) that might affect these precious lottery winners is a non-starter. Meanwhile, this bubble is well underway bleeding into the rental market. So it is literally government policy to create a society of have and have nots.

<comment><USER11> I think the insanely high housing prices are also largely due to the centralization of most new jobs centering around urban areas. People go where the jobs are, which drives up demand for urban housing.

That's how it is in much of the US, at least. I'm not sure if Canada is different.

</comment></comment></comment></comment><comment><USER19> No, because they keep wanting to dig coal out of the ground? :-/</comment>


Ask HN: why is it so hard to find dedicated programmers? - <AUTHOR>

I am building a tech startup which I have program a website on my own and have finish it and now in the process of launching it soon and start rolling.  I have found a couple of programmers to join me on this adventure. But it seems things get in their way. And they lose focus on the startup. Why is this task do hard? And does a startup really need co-founders? <comment><USER2> Programmer here. A bit more context about your situation would be helpful.

How many of them are there? How long have you been working with them? How long is it before they lose focus before you need to re-motivate them?

</comment><comment><AUTHOR> I am not Currently paying. Money does speak so im have to try to start paying I guess. At the moment it is hard since I have no money at the moment.

</comment><comment><USER3> You should motivate them enough which also means compensating them well. Else you will end up searching for new developers over and over.

</comment><comment><USER4> What do you mean by "things get in their way"? Are you paying them?

</comment><comment><USER5> Why is it so hard to find fair, grateful, appreciative employers?

</comment><comment><USER6> motivate, lead, pay.</comment>


Radicle Architecture - <AUTHOR> http://radicle.xyz/blog/index.html <comment><USER2> When would I want to use this? What problem that people currently have does this solve? The website tells me what Radicle is and what you can do with it, but as far as I can tell it doesn't explain why/when I would want to do that.

</comment><comment><USER3> When a blog about a collaboration tool devolves into a formal state machine definition and blocks of lisp syntax, I have my doubts about the project's ability to communicate with potential users.

<comment><USER4> If you're not interested in how things work under the hood, there are nice high level docs for you here [http://radicle.xyz/docs/index.html](http://radicle.xyz/docs/index.html) :)

</comment></comment><comment><USER5> Following the introduction tutorial, in which you add to the Radicle Garden[2] (which is a nice idea btw.), I get a 'The machine owner appears to be offline' when I try to propose my changes.

I think the very idea of Radicle is nice, but having a rock solid VCS is crucial to a developers workflow, so they really need to iron things like that out.

1) [http://www.radicle.xyz/docs/index.html#installation- setup](http://www.radicle.xyz/docs/index.html#installation-setup)

2) [http://www.radicle.xyz/garden/index.html](http://www.radicle.xyz/garden/index.html)

<comment><USER6> After being optimistic enough about IPFS to create a whole service around it ([https://www.eternum.io](https://www.eternum.io)), and mostly because of the service, I now have my doubts. Nodes can routinely not discover each other. I'll add a file to my node then request it from a gateway and it will take multiple minutes before the file is resolved. There's no information on how far along a pin is. The API for pinning things is atrocious (you need to keep the http request alive for the multiple days it might take to pin something). I have to resort to just retrying the pins over and over until they succeed.

I'm sure there's some information hidden somewhere if I shell out to the binary and parse the response well enough, but if a paid service required me to do this, I'd laugh and never touch them again. These days, whenever I see that something is "based on IPFS", I mentally translate it to "not working".

<comment><USER7> > I'll add a file to my node then request it from a gateway and it will take > multiple minutes before the file is resolved.

Sadly, I've noticed this myself. Have you reported these things to the IPFS developers?

> you need to keep the http request alive for the multiple days it might take > to pin something

I didn't understand this part. You make the HTTP request towards your local IPFS daemon? Why does it take several days to pin something?

<comment><USER6> Yes, I've reported everything, and they were extremely helpful (to the point where they debugged things with me), but nothing changed.

> Why does it take several days to pin something?

The daemon doesn't act like a torrent client, where you can add a pin and then come back later to check progress. You need to do an HTTP POST (or whatever verb) and then wait until it's done, which due to availability issues and size might take days to complete.

<comment><USER7> > Yes, I've reported everything, and they were extremely helpful (to the point > where they debugged things with me), but nothing changed.

Do you remember how long ago this was? I'm still hoping this is a solvable problem since I really want IPFS to work.

> The daemon doesn't act like a torrent client, where you can add a pin and > then come back later to check progress. You need to do an HTTP POST (or > whatever verb) and then wait until it's done, which due to availability > issues and size might take days to complete.

Oh. That does sound awful. I wonder why they designed it like that.

<comment><USER6> > Do you remember how long ago this was? I'm still hoping this is a solvable > problem since I really want IPFS to work.

This was around two years ago. I hope it'll get solved too, but it doesn't seem to have been solved yet.

> I wonder why they designed it like that.

I guess it was just easier, but they haven't done anything in years. The ticket has been open since 2016: [https://github.com/ipfs/go- ipfs/issues/3054](https://github.com/ipfs/go-ipfs/issues/3054)

</comment></comment></comment></comment></comment></comment><comment><USER8> How does this compare to scuttlebutt and ssb-git? I know IPFS and ssb are different but conceptually in how data is segmented and distributed?

<comment><USER9> git-ssb was one of the inspirations for Radicle, we're big fans of the project and we've spoken to cel, the author of that project a few times. one of the most meaningful distinctions is visibility in the network, git-ssb repos are distributed through the Scuttlebutt social graph, while Radicle projects are seesed to the whole network. We've written a little on this in the FAQ, 4th question: [http://radicle.xyz/docs/#faq](http://radicle.xyz/docs/#faq)

<comment><USER8> RTFM is an underrated comment, thanks for reminding me so politely. Will definitely review now!

</comment></comment></comment><comment><USER10> Love the style on this website, in particular the use of Vulf Mono!

</comment><comment><USER11> Is it just me or does this blog not have links for each entry? There seem to be two entries at present but no way to link directly to either of them?

</comment><comment><USER12> Does it have a viniculum?</comment>


A poor imitation of Alan Turing - <AUTHOR> http://www.nybooks.com/daily/2014/12/19/poor-imitation-alan-turing/ <comment><USER2> Well, I guess I'm glad I skipped this one in theaters.</comment>


Ask HN: What board games are you playing? - <AUTHOR> What board games are you playing? What's your #1 and why? For me, board games are a great way to be away from screens for a few hours, and they fill up my socializing gas tank too. <comment><USER2> Though not currently playing it my #1 goes out to chess, it's the one game that doesn't make me feel guilty the more time I put into it.

</comment><comment><USER3> #1 would be Through The Ages for me, the newer edition. But only if played 1v1 because it's too bothersome waiting for 2 or 3 other people. Also, I don't have that many friends.

</comment><comment><USER4> I really enjoy coup.

</comment><comment><USER5> Spirit island</comment>


Ask YC: How to prepare for interviews? - <AUTHOR>

I am a recent graduate. I am looking for a job in C++ or Java. What's the best way to prepare for interviews at Google, Microsoft, Apple etc.
Thanks, <comment><USER2> I'm going to start with the assumption that you're already covered on the technical side of things (from looking at the other comments in this thread, they have it covered).

The people side of an interview is often overlooked when advice is being given.

How are your speaking skills? It's important that you don't answer every question with a hundred "ums" and "uhs" mixed in.

People want to work with people who seem confident with what they know. If you do have an umming and ahhing habit, I would suggest recording yourself speaking about a random topic you've picked from a hat (or otherwise randomized) and keep doing it until you can consciously stop your self from doing it.

This is the number one problem I see with new graduates - they may be smart as hell, but they interview terribly.

Some other things that always makes an interviewee stick out in my mind:

\- An interviewee who asks questions.

\- Someone who takes notes when we talk about problems.

\- Someone who can answer the question "why do you want to work here".

Good luck!

</comment><comment><USER3> A few weeks back someone posted this on Hacker News: [http://www.indiangeek.net/wp- content/uploads/Programmer%20co...](http://www.indiangeek.net/wp- content/uploads/Programmer%20competency%20matrix.htm)

It might help you gain insight on how some employers might evaluate candidates, you can assess where you fit in the matrix, and work on improving in the areas of weakness (this is a long term thing).

I recommend reviewing the technical stuff so you can come out sharp and talk intelligently about those topics. Brain teasers often come up. It's been a while since I interviewed with Microsoft, but I remember lots of questions about data structures, linked lists, traversal algorithms, etc.

Employers are looking for people that are technically solid or show potential, have a good attitude, can work in teams, are good communicators, etc.

Good luck.

</comment><comment><USER4> I've found that knowing about stuff like data structures, algorithms and Big-O complexity will make you stand out from most other candidates.

It's good stuff to know regardless.. :)

</comment><comment><USER5> Make sure you get 8 hours of sleep.

</comment><comment><USER6> One shouldn't be looking for a job "in C++ or Java." You should be looking for a job in which your task is to solve problems. The choice of language comes second (unless you are an elite hacker and can dictate your terms).

</comment><comment><USER7> get enough sleep, a while ago i went to a google interview after an all- nighter. it felt like 100-hour long. read more about data structures and algorithms, and make you can explain it in laymen terms.

<comment><AUTHOR> Thanks..do you recommend any books, tutorials other than CLRS ? Do I need to learn advanced algorithms like tries,suffix trees, vertex cover etc. What kinds of coding problems can I expect from Google ?

<comment><USER4> I got asked in a Google interview: "What is 2 to the power of 64?"

.. I wasn't really expecting a question like that so it really threw me off.

See if you can figure it out without a calculator. :)

<comment><USER8> 4 exabytes?

EDIT: err, 16 exabytes, I'm thinking now</comment></comment></comment></comment>


CAP: Don't settle for eventual consistency - <AUTHOR> https://yokota.blog/2017/02/17/dont-settle-for-eventual-consistency/ <comment><USER2> > CP systems can be made to be highly available in practice.

Yes don't, if you happen to have Google's level infrastructure. Complete with private fiber connection down to GPS synchronized clocks in your data centers. Otherwise sometimes you don't have a choice. Now I am not being sarcastic as I understand Google offers Spanner as an API in GCP so you could technically do that by paying for it.

[https://cloud.google.com/spanner/](https://cloud.google.com/spanner/)

Also in general it is important to keep in mind that keeping consistency in a large distributed system is fighting against the laws of physics. There is nothing wrong with fighting them, and it sure is fun to do but it takes effort and money. Often is possible you can architect your solution to work with eventually consistency. There are CRDTs and other things that can help there. Eventually consistent system have also been around for a while so it is not a totally new and uncharted territory.

The bottom line is consider the underlying assumptions. What is true for Google maybe not be and probably isn't true for your use case.

<comment><USER3> It not clear at to me what you are actually advocating for. The article is pretty clear that most people should choose a CP database over an AP database. This is true regardless of your scale unless you don't care about consistency at all.

A start up does not need to make a CP system highly available but they will likely need consistency. They can probably make eventually consistency work for them but it does take effort and money. I don't see many cases were AP is the right choice. Again CRDT are good but you need to design carefully to make sure you system can work with eventually consistency. Once you have done that you are only gaining availability during partitions which does not increase your up time much. I would recommend a standalone database, a stock CP database, or renting spanner over an AP if time and money is a concern.

</comment></comment><comment><USER4> Nope. Eventual Consistency seems to be the best policy.

The constant "C" isn't changing (or if it is, it's not much). that means there's a definite amount of time for a DB to be consistent to cover transit around the world. When the 3 DB machines are in the same rack, sure, we can approach 11.8"/nanosecond latencies, but the latencies are still there.

The larger and more global (and soon, interstellar), the more these C related lags become. And it is glaringly obvious to me, that "eventual consistency" is the big solution here.

The only case where it doesn't seem to be good, is transactional stuff like banking and investments. In those cases, seem to require CP and hardware like atomic clocks to verify every copy of the DB is on the same page.. Or perhaps an internal blockchain would be more appropriate, since it enforces consensus. But I digress on that one.

<comment><USER5> To go a little further, I suspect with CP cases like banks the real underlying problem is more fundamental. You can't realistically, under the laws of physics, have a hard notion of transactional ordering (did the account's money come in before it went back out?) without pinning down the concept of an account to a location. At least, not efficiently or quickly.

In other words, eventual consistency in the face of asynchronous remote actors never makes sense when your requirements dictate hard, consistent transactional ordering. You have to think of it as "the transactions happen in the order they arrive at the account's virtual location in New York". To think of them as globally-distributed in nature is always going to cause logical problems at some level. If your database was eventually-consistent, you'd have to build in some sort of after-the-fact safety checks that have the ability to abort the outer transaction, at which point you've wasted a lot of effort patching over the wrong model.

So either you have a need for strong consistency guarantees (order really matters), in which case you have to pin the transactions' locality down (where do they meet up at for their efficient strict ordering?) and CP is your model, or you don't (simpler things like social network updates) and you're better off with AP and eventual consistency to scale things out easier and make it faster for everyone, and really who cares if once in a great long while a user-visible race happens and some people see a couple of posts in a different order than someone else does for a few minutes until things snap back into sync?

<comment><USER6> > You can't realistically, under the laws of physics, have a hard notion of > transactional ordering (did the account's money come in before it went back > out?) without pinning down the concept of an account to a location

You've just made me realise that the universe itself is only eventually consistent - that's what all those weird quantum observer / wavefunction collapse events are.

<comment><USER4> Yep, that's what I was trying to get at, but failed in my explanation.

Everything's eventually consistent on an ever-present sphere around the incident expanding at the speed of light. No faster.

Even if the sun were to blink out of existence, we'd have 8 minutes that we wouldn't know. Gravity would still be there, holding Earth in place. The light would still warm us. Then 500 seconds later, darkness. We'd be flung out on a tangential course.

<comment><USER7> This isn't quite right. Even with SR and the speed of light its possible to build consistent systems and achieve consensus. Not-eventually-consistent doesn't mean instantaneous. The SoL just sets a lower bound on the speed of consensus.

It's important to not overstate the importance of that bound, though.

<comment><USER4> Sure. CA fulfills that requirement. Of course, you throw away any semblance of partition tolerance.

Of course, a single machine guarantees there can be no partitioning, and really easy to obtain consensus. It might not be terribly fault-tolerant, however.

<comment><USER7> CA is a not really a valid/possible thing in the context of CAP. The original phrasing of the theorem was poor and the "choose 2" myth persists. You can choose to (or accidentally) give up C or A but you don't get to choose to not have partitions. Not being partition tolerant doesn't really make sense (you're just broken?) if partitions are going to happen. A better phrasing of CAP is "in a network with partitions a distributed system cannot be both consistent and available." (note: this doesn't guarantee that you are one of C or A, you just can't be C _and_ A.) You can see that definition used in formal treatments, e.g. Theorem 1 in [https://users.ece.cmu.edu/~adrian/731-sp04/readings/GL- cap.p...](https://users.ece.cmu.edu/~adrian/731-sp04/readings/GL-cap.pdf)

(Briefly, note that the original article is critiquing that definition of availability in practice which is legitimate but not relevant to this sub- thread.)

What I'm saying is that EC is most definitely NOT a requirement of physics/the speed of light (what your original post claimed.) The speed of light only sets a (theoretical) limits on how fast you can implement a consistent system.

The original Paxos paper ("The part-time parliament") uses an analogy of a quorum of parliamentarians occasionally getting together in the the same building and agreeing on something. Of course it being the same building is arbitrary and doesn't actually matter, but it's easier to intuit that the speed of light isn't an insurmountable road-block at that scale.

<comment><USER4> My comment was a bit tongue-in-cheek. Who actually runs a single DB server, with no replication, no slaves, no nothing other than the primary?

CA is the correct way to understand a single un-replicated DB instance. And it's really really wrong :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It seems like this has the same opinion as CockroachDB said a couple days ago in "The Limits of the CAP Theorem"[1].

Do both of these really boil down to misunderstanding the "A" in CAP? Until the first time I actually used an AP system, I thought "A" was talking in the sense of "five-9's highly available". I'm far from an expert on this, so please correct me if I get this wrong, but here's my take-away from these two articles:

Since CP systems can be made "highly available" (in the five-9's sense of the term), I think what they are both saying is the only _real_ benefit of AP is low latency.

CP still depends on some coordination, and despite tricks with locks and consensus algorithms, it's often still limited (even for reads) by the highest latency between nodes.

AP, on the other hand, can respond to both read and writes much faster because it doesn't need to care about the consistency -- the trade-off is the application must handle eventual consistency.

AP can also handle certain types of network partitions that "highly-available" CP systems can't (when DB nodes can't all talk to each other, but are still able to talk to client(s)) but in practice that type of failure almost never happens (at least not when your DBs all live in datacenters), so it's not a good reason to choose AP over CP.

Also, not all CP systems _can_ be made "highly available" (in the sense of five-9's), so it's not always an apples-to-apples comparison, and that I think causes a lot of confusion.

(Again: Not an expert. Please correct me if I got anything wrong here.)

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

<comment><USER9> Every part of the cap theorem is commonly misunderstood. Availability is probably the most commonly misunderstood aspect as is outlined in this article. People commonly conflate consistency with durability when really CAP says nothing about durability because CAP is based on a model where the only type of failure is a network partition. And of course there are the people who claim network partitions don't happen in their network so they can choose CA.

CAP is also not stated with a sharded database in mind. Availability is stated as follows:

"For a distributed system to be continuously available, every request received by a non-failing node in the system must result in a response"

This means that if you have 100 machines and you store each row on 3 of those, if the 3 machines storing a row are partitioned from the client then the client can read and write the row on any machine. That machine must respond with something like "the row doesn't exist" or "the row is empty" if queried about the contents. This quickly devolves into an unusable system if you follow this train of thought to its conclusion. No practical sharded database is truly AP under this definition and it only makes sense to talk about CAP in the context of a single shard of a sharded database (which can be AP).

It is actually quite easy to have consistency without sacrificing latency: Don't replicate. What you are sacrificing in this scenario isn't consistency, it's durability, which is totally ignored by CAP. Where the latency is really introduced is in trying to achieve durability. A durable AP system will end up with close to the same write latency as an equivalently durable CP system, but no one bothers to build AP systems with the same level of durability as a CP system. It is possible to build a durable CP system where reads are just as fast as in any AP system as long as there are no partitions at the time of the read. The trick is to use read leases so that reads only have to touch one machine.

The CAP theorem is nowhere near as important as many people think it is with regards to performance and uptime of real world systems. It is a theoretical result based on a very simplified model.

The only thing AP buys you is handling certain types of network partitions that almost never happen as you said. They have better uptime when you can talk to some machines but less than a quorum. This is not common.

The real reason AP systems are common is because consistency+durability is really really really hard.

<comment><USER3> If you are not replicating, than it not a distributed system and cap doesn't apply. Sharding just gives you two centralized databases. Talking about durability is just adding more confusion IMO.

</comment></comment></comment><comment><USER10> Why does this read to me as an advertisement for cloud spanner?

<comment><USER11> or Spanner-like guarantees which I heard might be possible with CockroachDB. I'm not really sure how the two compare, and whether or not there is anything out there with similar strong consistency guarantees.

<comment><USER12> There's a pretty good blog post from CockroachDB that explains the tradeoffs for not having the same level of time synchronization as spanner.

[https://www.cockroachlabs.com/blog/living-without-atomic- clo...](https://www.cockroachlabs.com/blog/living-without-atomic-clocks/)

CockroachDB is, though, only in it's first "real" 1.0 release. You see the sort of bugs you would expect to see in their repo. That is, basically, it's not really suitable for anything important yet. They do seem to be making a lot of progress though.

<comment><USER11> Right. There is no GPS sync'd atomic clock in Cockroach so I imagine lock requests for a distributed object must use some consensus protocol, and that's overhead. Am I off by a lot?

<comment><USER13> We use Raft underneath the hood to maintain consistency across the replicas.

re: 'There is no GPS sync'd atomic clock in Cockroach', Cockroach actually has a command line flag (--linearizable) which makes it behave like Spanner: wait for the max clock offset before returning a successful commit[1]. This isn't practical if you're using NTP synchronization, but if you have atomic clocks at your disposal..

[1]: [https://www.cockroachlabs.com/blog/living-without-atomic- clo...](https://www.cockroachlabs.com/blog/living-without-atomic-clocks/)

</comment></comment></comment></comment></comment><comment><USER14> I think the point of this post is: You can use [https://cloud.google.com/spanner/](https://cloud.google.com/spanner/) to work with a CP model (typically much less of a headache than AP), while sacrificing so little availability that it's essentially CAP.

The big concern I'd have (assuming using a Google-hosted database was practical) is the SLA. Unless I'm misreading [https://cloud.google.com/spanner/sla](https://cloud.google.com/spanner/sla), it seems like the SLA is...not very strong. Given how they discuss availability elsewhere, it seems like they're totally unwilling to put their money anywhere close to where their mouth is.

That said, it does seem like going with Spanner to have the ease (and power) of consistency while also having reliability and scalability would be something to consider in a whole lot of situations. (Though I'd be reluctant to jump on it _this_ early.)

</comment><comment><USER15> (Unmediated) Human personal perception has always been CP. But then we humans are akin to mobile agents that visit co-local (thus non-partitionable) data spaces and perceive a coherent 'classical' (as in Physics) world that is equally available.

But AP is (by necessity) baked into the story of collective human perception. Collectively, we are more akin to static clusters that communicate information _about_ data spaces.

("Your full deposite will be available to you the following business day. Your book balance is x. Your available balance is y < x." Dealing with AP is a day to day common experience as old as organized hills.)

I think the root of the surprising fact that programmers find it difficult to reason about AP data spaces (given the _fact_ that that is how we humans achieve 'civilization' and 'culture') is due to the personal perspective nature of iterative programming. We see this again when we consider the quite related issue of correct understanding of memory models.

</comment><comment><USER16> Transactions are an answer for atomicity, not consistency. It's possible to have transactions and not be consistent. Hopefully this is just the mistake of a non-technical product manager and not the engineering team that works on Cloud Spanner.

</comment><comment><USER17> Sounds nice in theory, I would like to see few years of history of production systems using Spanner before we have enough evidence that nothing goes wrong with this approach.

<comment><USER18> While Spanner has only been available to be used outside of Google very recently (GA in May), it's been in production at Google across hundreds of products, including AdWords, since 2012.. with global consistency to boot...

(work at G)

<comment><USER19> Isn't that global consistency in effect frequently weakened because applications have to batch writes to get throughput? It's great to be able to have consistency, but in many other cases the source of inconsistency will largely just moved to outside of the data management system.

</comment></comment></comment><comment><USER20> Sigh, quoting from an earlier comment I made here: ([https://news.ycombinator.com/item?id=14648745](https://news.ycombinator.com/item?id=14648745))

It is true that if you assume your client app is not important that a CP system is the right choice. And I would also say this /was/ true up till about 2004 when Gmail was released. But it definitely stopped being true in 2007 when the iPhone was released and you started having installed apps.

Since then, users have slowly grown to expect both mobile apps and SPAs to work regardless of whether the servers work, regardless of load balances, regardless of connectivity.

If you look at the market trends, things are increasingly going in this direction. From self-driving cars, to IoT devices, to drone delivery, to even traditionally server-dependent productivity tools like gDocs and others - people need to get work done even if the internet to your server doesn't exist.

Will banking applications still need mostly server-dependent behavior? Yes. Is CP still important? Yes. But it is biased to say that CP systems are better. Choose the right tool for the right job. CP systems are definitely the right choice for a strongly consistent database, but they aren't the right choice for everything. My database is an AP system, but it should not be used for many apps out there. Neither of these are "better", they are just tradeoffs you have to decide upon.

<comment><USER21> If your client has to work when the database isn't available anyways, then isn't that an even stronger argument for a CP database?

<comment><USER22> To be CP, your client and the server database have to both view the same consistent data, so your client can't be available if the database isn't available.

If your client is available even in this case, then you have some kind of eventual consistency.

<comment><USER21> The article was specifically comparing database software, not entire systems; if your client is available when the DB is unavailable, then you can have an AP system regardless of the design of the database.

<comment><USER23> I think the argument is that people expect mobile and client-side web apps to continue working offline, and eventually sync and merge changes across clients. So you need a good solution for resolving inconsistent updates made by two offline clients. The same solution could be used for resolving inconsistent updates made on two database servers.

<comment><USER22> > So you need a good solution for resolving inconsistent updates made by two > offline clients. The same solution could be used for resolving inconsistent > updates made on two database servers.

Exactly what I was trying to get at, thanks. The line between client state, server state and db state is a thin illusion. As REST makes explicit, every client operates on a _representation_ of some server resources, which means CAP can come into play in even the most trivial online apps.</comment></comment></comment></comment></comment></comment>


Our Next Stop  dumeet.com - extremely simple online meetings - <AUTHOR> Dear All,<p>I would like to introduce our new simple Video Conferencing tool for simple online meetings, we have been working on. It's still in it's early alpha stage. We would love to listen to your feedback.<p>duMeet.com will be the perfect solution for teams as it will support the following features in its alpha version:<p>
1. Host upto 6 people in the same meeting room !
2. Superb audio and video conferencing quality !
3. Starting a meeting is as simple as clicking a link !
4. Support text, audio, and video chatting !
5. Amazing UI and user-experience !<p>
6. Provide a white board for teams<p>
we are really looking for all the feedback we can get, please email us on<p>firstname.lastname@example.com <comment><AUTHOR> Would appreciate your feedback. We are building exciting features in the coming weeks.

firstname.lastname@example.com</comment>


24in60.com has closed.  DayToMe.com is carrying the torch. - <AUTHOR> http://daytome.com/

<comment><AUTHOR> 24in60 was previously discussed on HN here:

<http://news.ycombinator.com/item?id=2544778> 65 points</comment>