Ask HN: Pre-launch feedback on my site - <AUTHOR>

Prompted in part by HN, I am in what I hope to be the final stages of launching v1 of a new site. Five sentences of background:
I am a blogger/freelance copywriter/marcom guy who is always monitoring the latest and greatest in tech. I have an immense interest in web services and a great admiration for the people/teams behind them, simply put, because they make my life easier. I do not however, have an appropriate outlet through which I can share the various services I come across and thank the teams behind them by giving them exposure. Most services I find do not fit well with the content I cover at the main blog I write for, so I needed another way. As such, I did my best to create one...
Services like Stumble Upon, Digg, etc are fantastic for people who have plenty of expendable time to devote. Even with the big-name blogs covering web apps and services, it can be hard for the average office worker to keep up with the waterfall. I wanted to try hitting the problem from a different angle - using the Woot.com principle as a basic model.
My site, worthyy, presents users with one new site to explore each day. The presentation is unique in that users experience each day's site without any outside influence from me or anyone else (beyond visible ratings). I want the developer's work to do the talking, so the homepage of worthyy is dynamic. It consists of two frames: The main frame being the actual site of the day and a secondary frame in front of it near the bottom of the screen (the 'worthyy bar'). Users can browse and experience the site of the day as if they had hit it directly. If they so desire, they can also use the worthyy bar to rate the site, bookmark the site or click through to interact with others and discuss the site on worthyy's supporting pages (wordpress).
http://worthyy.com
Thanks in advance for any feedback you guys might have. We do have a few issues left to be resolved - and when I say we I mean the developers I outsourced the project to. I know, I know - but without any coding experience or time to learn, I had no choice. For this reason of course, your feedback is invaluable. Barring catastrophe the site should be ready to launch next week. Thanks also to the few HN members who have been involved with preliminary testing and for their feedback. I already have some great additions lined up for v2 should I be lucky enough to get that far with the project. <comment><USER2> First of all - I like the concept - if it develops enough community weight behind it, it could be quite an influential tool.

What's not clear to me is what that community is exactly - are you targeting a particular segment?

I like the look and feel generally. Although - I find the actual site being reviewed today a bit bland, so that might give a poorer first impression.

I personally think the bottom worthyy bar is a bit too big vertically, especially given it's only giving a few discrete bits of information and some links - I work on a laptop a lot though, so I'm a bit precious about screen realestate.

If you are going to take up that realestate - then I'd put some more information there. For example a "worm" graph of what people thing - or have a sort-of twitter feed of top comments... Hmmm... On the other hand, that might be just annoying.

It also doesn't seem to play nice with resizing - (Firefox3 on Mac).

<comment><AUTHOR> Thanks so much for the feedback - With regards to my target, I'm going to have to let any exposure the site might get dictate this preliminarily. Ideally, my target is people who will likely never see any coverage worthyy might get on most relevant blogs. The less web-savvy casual user who has never heard of sites like TechCrunch, Mashable, Killer Startups, etc. These are the users who would not only benefit most from a site like this, but who many of the sites worthyy covers have the most trouble reaching.

Of course reaching these users is a time-consuming (let alone expensive) process I've yet to begin to tackle. If I survive the first few months, it will become my focus.

In terms of real estate, I would be very appreciative if you could shoot me a screen shot (zach --at-- worthyy --dot-- com). I've tried to keep the sizing as short as possible but I do have future plans for the currently unused real estate so finding a compromise was difficult.

Lastly with regards to resizing, I view this as a huge issue that I unfortunately don't think I'll be able to address with v1. After analyzing my spec, the developers agreed that iFrames would provide the best solution for the homepage. I did what research I could with the resources I had and eventually agreed. The site sizes and positions the frames according to the real estate available when the page loads and as such, resizing is a disaster. Whatever you do, don't view it full screen... ;)

Hopefully I can manage to generate some interest/traffic that might warrant revisiting the current implementation but for the time being, my budget for the site is pretty small. If you or anyone else has an idea as to a possible fix, I would love to look into it.

<comment><USER2> No worries - They are mostly just nitpicks - I think it's a interesting concept.

I'll fire you a screenshot when I get back tonight.

The community question is an interesting one - the site would be more sticky if it's relevant to the users. e.g. HN is useful because it's relevant to me in the startup domain, and the community reinforces that. At the same time, you also need to have it a little bit diverse to keep people interested.

So yeah, it's a fine line - but as you say, this could be something that evolves rather than being designed. I'm guessing the initial selections will jumpstart it in one direction or another.

<comment><AUTHOR> That's my hope, for sure. Ultimately, I'd love enough interest to be able to fan out a bit. By that, I mean keep the "less is more" one site, one day theme but break it down into less broad categories. ie hacking.worthyy.com, art.worthyy.com, social.worthyy.com, etc

Thanks again for taking the time to shoot me a screen shot - much appreciated.

</comment></comment></comment></comment><comment><USER3> Fails the critical "I visit the site and know what it does without prior explanation" test. Add a subtitle that explains what the site does: "A new site each day" or something.

<comment><AUTHOR> Point well-taken, thanks. I tried to use the tag line that appears in the browser header as an aid so as to avoid occupying more real estate within the bar but it might be unavoidable.

</comment></comment><comment><USER4> Nice idea. Small bug with Safari, when I scroll, the worthyy banner scrolls up the page and I'm unable to click any of the links. I'm using Safari v3.1.2 on Leopard 10.5.5.

<comment><USER5> Same with Chrome. The banner behaves weirdly.

<comment><AUTHOR> Yes Chrome has been a point of difficulty for the developers since the onset of the project (as has Safari on PC). They're still working on a solution and I hope to have it ironed out before launch.

</comment></comment></comment><comment><USER6> I really like this. It's simple and fun. I agree that the front page setup needs a little tweaking. I'd actually put the bottom bar up at the top with a little explanation blurb by the logo, as if you're introducing the site, which is essentially what you're doing.

Question: is there any harm being done to the sites you frame? Have you gotten any negative feedback from publishers? Everynow and then someone frames one of my sites and it irks me to no end, hence the little js breaker i run on all my sites. Thoughts there? I mean, essentially one could argue this is merely a slick little theft of content.

<comment><AUTHOR> Thanks! I thought about putting the bar at the top but I didn't want to obstruct logos and headers by setting the iFrame as-is, while starting the main frame at the bottom of the bar would then eat up too much real estate.

As for your question, it's an awesome one. To this point I have not received any negative feedback from developers but I've also only pushed testing traffic through the site. It's entirely possible that I will receive negative feedback as the site grows, though I obviously hope developers see worthyy as helping more than hurting.

My perspective is this: I could easily start yet another blog that covers web services and each post would be just another singular perspective on each site. Try as I might to avoid it, my opinions, impressions and perspective will inevitably come through as visitors read my take on each site. My perspective will weigh heavily on whether or not readers end up clicking through. I don't want this.

I want the developer's work to do the talking. Developers put tremendous amounts of time and thought into building these sites. I obviously don't need to tell you that. Why should I be just another guy who covers their work on my blog, inevitably misrepresents something, misses covering key functionality, etc? I want worthyy users to see and experience each site as the developer envisioned it - without preconceived impressions from my opinion or anyone else's for that matter. I then make it as easy as possible for the user to bookmark the site and should they choose to click through and discuss the site, there is always a direct link waiting for them.

That said, my intentions hardly invalidate the fact that some may potentially view worthyy as stealing their content. To that I can only assure those concerned that I will, without hesitation, remove content from my site immediately should the owner of the content request that I do so. No argument and no questions asked.

</comment></comment><comment><USER7> I was a beta user of this and when Zach first launched his site I left him a voice mail saying how awesome it was.

The problem: I left my congratulations for the site _featured_ on Worthyy instead of the Worthyy site itself. Oops.

I love Woot (there's a Woot off today btw) and I really like this site. I think it appeals to the masses much better than a delicious or stumbleupon. One site. One day.

<comment><AUTHOR> If I remember correctly, I think the site that day was Open Source Food. Trust, if I was Yongfook I definitely wouldn't be having the iFrame problem mentioned below... ;)

</comment></comment><comment><USER8> One suggestion: Prominently display the URL of the site you are showcasing. I suggest the title bar and/or your worthyy bar.

I like the idea.

<comment><AUTHOR> Thanks blogimus - highlighting the name/URL of the current site somehow will definitely be implemented.

</comment></comment><comment><USER9> Cool idea. Please make it sensible for the user (me) to understand that I have to turn JS on to use the site.

<comment><AUTHOR> Great point rw, thanks. Perhaps I can pop up a warning if JS is not detected.

</comment></comment><comment><USER10> The Safari bug was announced. I like the idea, but I wish there was a method of letting users index featured sites (tagging or the like) to help people find related sites.

<comment><AUTHOR> Thanks unalone, would you mind elaborating a bit? Do you mean it should allow the user to add his/her own tags beyond the existing tags - or that the user should be able to find related sites from the homepage as opposed to the supporting pages?

<comment><USER10> The former.

I'm a fan of certain kinds of sites. I'm a sucker for elegant interfaces and elegant bookmarklets, for two things. And I think that some sort of a way of identifying _those_ sorts of sites would keep your layout elegant, while at the same time letting people into particular sorts of sites find good solutions.

<comment><AUTHOR> Awesome point. I'm afraid addressing the issue will fall outside the scope of v1 but I've already added it to my list of functionality to examine for the next build. Thanks!

</comment></comment></comment></comment><comment><USER11> Awesome idea - I love it.

I'd just recommend making the design of the discussion page/layout a little nicer.

<comment><AUTHOR> I will definitely be cleaning up the individual post layout pre-launch. Thanks mssteff.

</comment></comment><comment><USER12> Add an RSS feed. I doubt I would visit worthyy.com everyday to see what new site is being highlighted, but I'd definitely take a look if it showed up in my feed reader.

<comment><AUTHOR> Thanks for the feedback toddcw. There actually are feed / email subscription options but the locations are intentionally 'out of the way' as this is not my preferred method of consumption. Beyond the homepage, you can find subscription options at the bottom of the sidebar on every page.

</comment></comment><comment><USER13> Uh yeah, that already exists:

<http://www.stumbleupon.com/toolbar/> (random page)

This won't take off at all. If you still want to pursue this idea, least you could do is add a top iframe with some info on the site, comments, etc..

Edit: well, you said in your original comment that there would be a frame, but it doesn't seem to work on the current page that is displayed. (safari, mac)

<comment><AUTHOR> Yeah, the bug in Safari on Mac is a showstopper - my browser window was way too big during testing to notice it, but if your window is shorter than xxx pixels the bar is 100% obscured. Rest assured though, this issue will be addressed asap.</comment></comment>


Hardly-used SQL Server functions that should be used more often - <AUTHOR> http://sqlservercode.blogspot.com/2007/02/ten-sql-server-functions-that-you.html <comment><USER2> Here's a counter argument. Continue ignoring functions which are non-standard or are confusing.

[http://stackoverflow.com/search?q=nullif+%5Bsql- server%5D](http://stackoverflow.com/search?q=nullif+%5Bsql-server%5D)

1500+ questions on NULLIF on SO...

<comment><USER3> The same argument can be made for not using non-standard data types in your schema. I'm actually torn about that, because as time goes on I prefer to put more and more constraints in the schema to ensure the data is valid, and remove errors in how it's accessed.

Should IP, JSON or geolocation data types (to name a few from Postgres) be ignored for portability if you are targeting Postgres during development and have no plans to port your app to another database? I suspect the answer relies on the specifics of your situation, and how likely it is you actually will need to target another DB.

In some ways, non-standard functions are easier, because you could probably recreate most of those from scratch if you had to.

<comment><USER4> I constantly wish we had had some sort of standardized DBMS wire protocol. Then the answer to "should you use higher-level datatypes" would be obvious: sure, use them, and then if you switch to a DBMS that doesn't support them, just stand up a proxy that has polyfills for those types, exposing them on its front but turning them into lower-level types when it passes the request on.

Such a wire protocol standard would likely evolve a _lot_ faster than the stick-in-the-mud that is the SQL standard, because the "shimability" of such proxies would allow app developers to start confidently using new DBMS features much earlier, the same way frontend developers use new Javascript APIs rather fearlessly given the existence of a rich system of polyfills in NPM. And then DBMS vendors—like browser vendors—would be driven to add said features to their own systems much more quickly, since now their developer- base would use the polyfills—but be annoyed by them as they did so—and the vendor could ameliorate that annoyance by shipping the feature. (Rather than the current world, where the best-practice is "just don't use anybody's custom extensions", so developers don't tend to know what they're missing to get annoyed.)

<comment><USER3> You know, I wonder if this could be done with ODBC. It would admittedly not be as spiffy as what you're suggesting, but event with the absence of discoverability, I bet an ODBC proxy with specifically loaded filters for DB-A to DB-B could achieve a lot. It would be a project ot make sure the conversion filters worked well and were up to date, but something like that might be the best we can expect for a while.

</comment></comment></comment></comment><comment><USER5> Some of these functions (like SIGN, STUFF, and PARSENAME) set off little alarms in my head that sound vaguely like a full-stack developer furiously yelling "DON'T HANDLE THIS IN YOUR DATABASE LAYER."

Of course we don't always have that option, but I feel like I have to acknowledge those alarms if I'm going to use them.

<comment><USER3> STUFF is actually _needed_ in the database layer to not kill performance of your app. SQL server has no built in convenience function the equivalent of mysql's GROUP_CONCAT. Instead, you do a subquery in the selected field, interpret it as XML, pull out the specific XML elements you are looking for as a list, and then use STUFF to join them.

As much as you might recoil in horror at this (and I _still_ do), it's actually fairly performant because the optimizer recognizes the subquery is dependent on the main query, and does the equivalent of a join under the covers or something.

E.g.

        # MSSQL
        SELECT
          movie.id,
          movie.name,
          STUFF( (SELECT ','+producer.last_name FROM actor WHERE producer.movie_id = movie.id FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(32)'),
        FROM movie;

        # MySQL
        SELECT
          movie.id,
          movie.name,
          GROUP_CONCAT(producer.last_name),
        FROM movie
          LEFT JOIN producer ON movie.id = producer.movie_id

<comment><USER6> Although SQL Server vNext (14.x) will get string_agg: [https://msdn.microsoft.com/en- us/library/mt790580.aspx](https://msdn.microsoft.com/en- us/library/mt790580.aspx)

In the latest version of the SQL standard (SQL:2016) the LISTAGG function was added for this purpose. I find it "disturbing" that the next SQL Server release gets a function for this, but the new function doesn't follow the new standard.

Even worse: the name "string_agg" was apperently borrowed from PostgreSQL. But if you think that SQL Server will stick to the syntax of PostgreSQL's string_agg — nope. They use the same function name, but a different syntax.

Microsoft double fail, I'd say.

I've just written an article about LISTAGG, btw: [http://modern- sql.com/feature/listagg](http://modern-sql.com/feature/listagg)

<comment><USER3> That doesn't exactly surprise me. MSSQL feels like MySQL's old MyISAM table type technology that's been hacked and extended for decades rather than a shift to something more technologically competent. I still get errors on a regular basis about the deadlock manager killing queries because they became deadlocked. Because of course the way to deal with your system easily running into deadlocks is just to implement a checker that runs once a second and kills those queries that deadlock, and not to actually make the system work better....

This is even more ludicrous when you consider all the extremely cool stuff the team responsible for porting MSSQL to other platforms accomplished in order to get it functioning on Linux[1].

1: [https://arstechnica.com/information- technology/2016/12/how-a...](https://arstechnica.com/information- technology/2016/12/how-an-old-drawbridge-helped-microsoft-bring-sql-server-to- linux/)

<comment><USER7> > Because of course the way to deal with your system easily running into > deadlocks is just to implement a checker that runs once a second and kills > those queries that deadlock, and not to actually make the system work > better....

If your database design and code frequently deadlocks, I'd argue it is not a sign of the database engine being incompetent. After all, it's doing what you asked it to do. The comparison to MySQL is simply not true and it ignores the years of new features and enhancements to the product.

<comment><USER3> I admit it's entirely possible most of my bad experiences with SQL Server is due to a horrible schema. I don't control the schema in this case, nor the majority of different types of queries that run against that schema.

What I do know is that I _routinely_ get single, non-transactional select queried deadlocked and killed. That _seems_ like something that shouldn't happen. If I had to guess, it's likely because of the subselects to approximate group_concat, as outlined above, and they have different lock times than the main query, allowing for this single query to attampt to get locks at different times. Unfortunately, this is an ORM generated query, so sticking NOLOCK all over the place is easier said than done, and since I don't control the DB, I can't change default transactional levels. Perhaps that would solve it too.

It just seems odd that what appears to be (from my admittedly non SQL server expert) eyes to be a fairly standard database schema is so easily susceptible to this problem.

</comment></comment></comment></comment></comment></comment><comment><USER8> Cool I didn't know about PARSENAME. I've always written udfs for that. I suppose it wouldn't work in all cases since it can only split on '.', but with REPLACE it gets you a long ways.

Edit: Looks like PARSENAME is more exciting than that. It actually unescapes escaped identifiers:

        select n, parsename('[srv with
        newline].[db [ with ]] brackets].[schema with . dot]."quoted . dot"', n)
        from (values (1),(2),(3),(4),(5)) n(n)

        /* results:
        1	quoted . dot
        2	schema with . dot
        3	db [ with ] brackets
        4	srv with
        newline
        5	NULL
        */

Another fun fact about SQL Server: Object identifiers support _newlines_ , among other crazy characters. Don't believe me?

        create table #t ([newline
        here] int)

        select * from #t

Stay safe, and always use QUOTENAME [1]. :D

[1]: [https://docs.microsoft.com/en- us/sql/t-sql/functions/quotena...](https://docs.microsoft.com/en- us/sql/t-sql/functions/quotename-transact-sql)</comment>


Dammit, MySQL - <AUTHOR> http://www.draconianoverlord.com/2010/07/22/dammit-mysql.html

<comment><USER2> The design philosophy differences between Postgres and MySQL should be a case study.

When I first started using SQL databases, Postgres had a reputation for being a fully ACID compliant database that paid a performance penalty for it, and was hard to use. They made it "correct" as a top priority.

MySQL had a reputation for being blazingly fast, even outperforming expensive commercial DB's in some areas. However, things like foreign keys were missing. There were debates in the MySQL community as to whether foreign keys were even necessary, since you could just do all that stuff in the application layer.

That seemed reasonable to me at the time and MySQL was trivially easy to install at a time when Postgres was a huge pain, so I picked MySQL. I almost immediately got bitten by the lack of foreign keys, and although I didn't know it at the time, spent most of my time coding application logic that was a workaround for MySQL's lack of views. So I switched to Postgres, it solved many of my problems and have tried to use it whenever possible.

Every release the MySQL people get closer to Postgres's features, but there's always something missing, and as of a few years ago at least, all of these features were dependent on what backend table type you were using, which became especially annoying if you didn't have control over the installation (cheap web hosting.)

The funny thing is, MySQL's performance on microbenchmarks really meant nothing in more complex applications. A few years ago I was doing something more than a simple search that involved a few joins and intersections with MySQL; the query optimizer in MySQL seemed determined to pick the slowest possible path to return a result (intersection of a small set of rows with a huge one somehow would cause MySQL to check every row of the large set for a match). It ended up being 50 times faster to implement the logic in PHP and use two queries instead of one.

So I switched to a host with Postgres access, and the identical query that took forever in MySQL was no problem for Postgres.

After a few experiences like that, you begin to see the virtue in doing things right the first time and optimizing later. You also see the virtue in using a database system that takes the onus off of the application developer to implement logic that should be in the DB.

<comment><USER3> MySQLs lack of views for a _long_ time was just killer. I'm truly surprised MySQL has done as well as it has for as long as it has done. I thought that it's popularity would have tailed off when people realized just how much it was missing (I felt a little bit unwell when I found it didn't have views), but it seems that it just hit critical mass.

<comment><USER4> I have a feeling that the basic "need" for ORMs was originally driven purely by the unwieldiness of querying a MySQL database. When everything is in the application layer, you have to write abstractions on top of it to keep it comprehensible.

When you have triggers and views, on the other hand, you can just "ask the right questions" of the database, and get your information; the SQL becomes self-documenting, rather than a tangled mess.

<comment><USER5> [http://en.wikipedia.org/wiki/Object- relational_impedance_mis...](http://en.wikipedia.org/wiki/Object- relational_impedance_mismatch)

Whatever their merits, ORM layers and the problems they try to address existed long before and quite independently of the particulars and limitations MySQL.

<comment><USER6> I've always felt that begs the question, by assuming that a mismatch is somehow fundamental, rather than an implementation artifact.

Just as real RDBMSes don't strictly adhere to the formal math relational model, object-oriented languages vary in their, for lack of a better word, orientation.

Looked at another way, what about a relational-object model instead? Making a useful one for MySQL doesn't seem as plausible, given its chronic feature absence.

</comment></comment></comment></comment></comment><comment><USER7> The last MySQL limitation to bite me was that time columns are truncated to whole-second granularity - no milliseconds or microseconds.

<http://bugs.mysql.com/bug.php?id=8523>

If you want sub-second granularity, the advice is to store milliseconds-since- epoch as a BIGINT and have your application convert it to a time:

[http://feedblog.org/2007/05/26/why-doesnt-mysql-support- mill...](http://feedblog.org/2007/05/26/why-doesnt-mysql-support-millisecond- datetime-resolution/)

<comment><USER8> I had the same problem (and, really, 5 years?), but "solved" it at the time with ISO8601 strings. They sort, they're standard, they support microseconds, they're fairly common in web services. Slower than a reasonable native type though, obviously.

</comment></comment><comment><USER6> I only wish I were so lucky as to have been spoiled by Postgres for so long.

My favorite quote from an experience DBA is "MySQL's biggest feature is that it's retarded." Sadly, as someone who actually _likes_ technology and working with it, I can't possibly see that as a feature.

 _DDL Doesn't Respect Transactions_

My Oracle DBA friend tells me Oracle doesn't, either, not that this is any kind of excuse.

 _Maybe with the first-class replication in the 9.0 release, it will happen sooner rather than later._

I thought RDS wasn't so great on MySQL replication, either, or is that only if one wishes to do it off-AWS?

<comment><USER9> MS SQL Server and Oracle use CREATE SCHEMA and ALTER SCHEMA for DDL transactions. I think it is the ANSI/ISO standard way to do it. But, also "The CREATE SCHEMA command does not support Oracle extensions to the ANSI CREATE TABLE and CREATE VIEW commands (for example, the STORAGE clause)."

<comment><USER6> I'm certainly no expert on standard SQL, but I suspect that's academic.

Since my knowledge of transactional DDL is PostgreSQL[1], which supports effectively everything, with no onerous locking, I now have the question: what's the difference? Was my DBA friend in error, or merely out of date?

[1] first-hand knowledge, anyway. My 3rd-hand knowledge of MSSQL is that it's more or less Sybase, which does fully support DDL inside a transaction.

<comment><USER10> Yes, MSSQL does support transactional DDL, via locking rather than versioning. Not sure how PostresSQL implements it. Anyone? Row versioning would be more concurrency-friendly, and arguably more "right".

I'd be interested if anyone took advantage of versioned transactional DDL to persist arbitrary data structures on the fly.

<comment><USER6> Postgres does it with versioning, as that's how everything is stored on disk.

As I've seen DDL outside of a transaction take much longer than inside one, it may use locking there.

</comment></comment></comment></comment></comment><comment><USER11> I see that many of you are discussing PostgreSQL. I have to admit that I'm already using PostgreSQL 9.0beta3 in production, and it's been rock stable so far.

</comment><comment><USER12> Does Postgres have reliable, tolerably-easy-to-install-and-configure master/slave replication yet? That's the only thing that kept us off postgres last time we were looking, we definitely need a fast, reliable, read-only slave.

<comment><AUTHOR> I think what you're looking for is the marque feature of 9.0:

[http://developer.postgresql.org/pgdocs/postgres/release-9-0....](http://developer.postgresql.org/pgdocs/postgres/release-9-0.html)

<comment><USER12> Oh, man, sweet. :) Now to get the Ops guys on board...

<comment><USER6> Any "Ops guys" who don't find something like Slony _tolerably_ easy to install might not be suited to your environment.

I've found the "feature" that MySQL replication is integrated[1] to a huge problem, especially when faced with messes made by those who installed/implemented it because understanding something more complex (like the realities of database replication) would have been too high a barrier to entry. It also, of course, meant that competing solutions were rare, something that, in the case of MySQL, I _do_ consider a benefit.

[1] I hesitate to use the term "built in," since there's a giant piece missing: initial synchronization. They want me to do _what_?! A full dump and restore, before I even _turn on_ the replication? That, as well as the "tip" of just copying files over always struck me as amazingly manual.

<comment><USER13> The way we do initial synchronization with MyISAM:

* Everything is on LVM

* Run FLUSH TABLES WITH READ LOCK

* Take an LVM snapshot then record binary log filename and position

* Run UNLOCK TABLES

* Mount snapshot, rsync to new server and bring up replication with recorded file and position

Very fast and only locks tables for a short time.

<comment><USER14> Beware of FLUSH TABLES WITH READ LOCK potentially causing an exclusive lock. The percona guys give an explanation: [http://www.mysqlperformanceblog.com/2010/04/24/how-fast- is-f...](http://www.mysqlperformanceblog.com/2010/04/24/how-fast-is-flush- tables-with-read-lock/)

</comment></comment></comment></comment></comment></comment><comment><USER15> MySQL: Visual Basic's "On Error Resume Next" for databases.

</comment><comment><USER16> This didn't mention that check constraints are _completely_ ignored. That one bit me pretty hard the last time I tried to use MySQL.

For whatever reason, app developers kept getting longitude and latitude backwards. I wrote a check constraint that prevented that from being possible (in many cases), so if an app was doing it backwards, the DB would reject it.

I ended up losing data (in dev -- which really meant I lost 45 minutes in having to restore it) in testing this. Then I read the docs. I expect things to do what I tell them too frequently.

</comment><comment><USER17> Only the auto-updating timestamp thing has really got in my way in the past. Much as I liked Postgres when I used it, I have such easy access to MySQL and I so rarely encounter any problems that I kinda ignore the toy jibes.

Maybe I'm not pushing it enough but if that's the case, why should I jump through hoops to set up something I won't be making good use of?

<comment><USER3> It depends how valuable your data is to you. For many/most companies, data is incredibly valuable, and as the company grows, it gets more valuable over time.

If you find the usability of MySQL better than Postgres, and you don't put a lot of value on your data, then choosing MySQL is fine. The author is right to point out that a lot of the complaints are really just "this doesn't have to be this way." You should really expect your database to enforce non-null, especially if it lets you specify it and doesn't warn you it's not going to do a damn thing about it.

As I mentioned in my comment above, you can fix buggy applications, but you can't fix incorrect data.

<comment><USER18> > You should really expect your database to enforce non-null

It does. The author of the article was wrong.

<comment><USER19> You're technically correct (the best kind of correct!) -- it's not inserting NULL. But it is inserting a value it pulled out of its ass, which I posit is actually worse. For text types it uses the empty string, for numbers it uses 0, etc. It seems to flag this as a "warning" but said warning does not appear in my terminal or in the mysqld logs, so I have no idea what it says.

<comment><USER18> Type "show warnings" to see them.

I really don't understand why people have such a problem with this (and boy oh boy am I loosing a lot of karma for this opinion).

It's not like it forces this on you. First you can turn it off, and second it only happens if you leave out the columns from the insert, don't leave out the columns and you have nothing to worry about.

I personally find it quite useful. I set column defaults as needed for real data, but when testing I let MySQL put in empty values - it saves having to type each and every column that I don't care about.

<comment><USER20> When you add "NOT NULL" to a schema, you should be thinking: "make sure the user specifies a value for this column" not "this column should be defaulted to zero." This is insane.

If you want to specify a default, well, _specify a default_.

</comment></comment></comment></comment></comment></comment><comment><USER21> I wrote about how I ran into his complaint #1 here:[http://www.trk7.com/blog/programming/innodb-mysql- implicit-a...](http://www.trk7.com/blog/programming/innodb-mysql-implicit- autocommit/) . MySQL is quite annoying but, it seems to do the job for most of the projects that I have worked on.

</comment><comment><USER22> The only feature that tipped in MySQL's favor was easy replication. Now that Postgres has it too, there's no more reason to use it.

</comment><comment><USER23> Postgres has no unsigned 64 bit integer. :(

<comment><USER24> No, but you can define your own:

[http://bytes.com/topic/postgresql/answers/423780-numeric- typ...](http://bytes.com/topic/postgresql/answers/423780-numeric-type- problems)

Also note the issues with MySQL and it's large integers :) Although they might have fixed things since that post.

<comment><USER23> Thanks a ton for this.

</comment></comment></comment><comment><USER25> MySQL is the same thing as PHP - illusion of simplicity, and as a result - vast and active community and availability in any distro and on all cheapest hosting. While quality of the code and design decisions were seconded.

Hype and community - that is why it was sold for a billion dollars.

</comment><comment><USER26> What's the beef with the timestamp? I would expect, by default, that a timestamp reflects the last change to the row. Most systems use timestamps for optimistic locking/replication purposes.

<comment><USER27> Um... no. Shouldn't a timestamp reflect a specific point in time? And it shouldn't change unless there is an ON UPDATE condition set. That would be the correct thing to do according to the principle of least surprise. You could then set a column to auto-update, but it shouldn't be the default action.

I'm fairly shocked that I haven't been hit with this "feature". Thankfully, I usually set a DEFAULT on timestamp columns.

<comment><USER28> In MySQL (and SQL Server, apparently), it reflects the specific point in time when this row was last updated, and neither database will let you have more than one such field in a table. The data type everyone here seems to want is "datetime", which behaves like you want a "timestamp" to behave.

<comment><USER29> > neither [MySQL nor SQL server] ... will let you have more than one > [timestamp] field in a table.

Wait, what?

<comment><USER19> There can be only one because it exists solely to be the "last updated" field. There's no point in having more than one. In MySQL, it simply only updates the first -- so you get a _sometimes_ magic field.

<comment><USER29> I would think it useful to have 'created' and 'updated' fields, for instance. And silently updating only the first...

<comment><USER28> But you can have this: the "created" field is a datetime field, and the "updated" field would be "timestamp". This is far less problematic, in my opinion, than things like requiring a table with exactly one row to do simple selects, or pretending the empty string and null are the same (both of these behaviors are Oracle, by the way, not postgresql).

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> Every one of his complaints is a practice I've constantly yelled at everyone around me not to use -- for my whole career.

Application logic belongs in the application. Don't rely on a database to do it for you, or you're going to wind up with a giant ball of mud driven by side-effects.

<comment><USER31> Don't rely on the database to not put null in a column marked not nulls? That's like saying don't rely on C to not put a struct in a char*. It's got nothing to do with application logic.

<comment><USER18> He's wrong about that BTW.

It doesn't put a NULL there, it puts zero for a number field, or a blank (0 length) string for a string field. Date fields also get 0 (00-00-0000).

Edit: I get a downmod for this? The group think here is amazing. I suppose if I bash MySQL I'll get some upmods even if the bashing is incorrect?

<comment><USER32> Inserting a default value is even worse than inserting NULL. Now you can't tell what data was wrongly inserted if you tried to clean up the mess later.

<comment><USER18> What?

Have you ever programmed SQL? Because what you wrote doesn't make sense.

No data is inserted wrongly - you are simply leaving out a field. There is no mess. Just an unused field.

Are you thinking it's like csv where if you leave out a column all the others are shifted? It's not like that.

The standard says if you leave out a column that does not have a default the SQL should return an error. Instead MySQL puts in a default (but only if you tell it too in the configuration). Putting a NULL in a non-NULL field would be much worse.

<comment><USER32> Oh I agree they are both very bad. Putting NULL in a non-NULL field is totally wrong.

However I really do think that inserting an unexpected default value is worse than inserting NULL into a NON-NULL field. The NULLs will cause problems, but they are problems you can see and resolve.

The default values are silent errors that will corrupt your data and be very difficult to recover from in the future. You can only guess which data was wrongly inserted.

<comment><USER18> I still don't see how it's possible to insert wrong data, or corrupt it??

There IS no data. How do you corrupt something that doesn't exist?

And NULL doesn't help either. NULL is valid data, NULL is not a replacement for programming errors (which is what this is).

This argument is pointless. People love to bash on MySQL, they look for the silliest things. The more popular something is the more people bash on it.

I understand that, but at least bash on real problems? Like the transaction DDL - that's a real problem. This? This is nonsense. (It's actually a very useful - and optional - feature BTW.)

<comment><USER3> I'm not sure you understand the use of NULL.

NULL is not "default value" or "I don't care", NULL signifies "this might have a value, I just don't know what it is".

There is a very significant difference between a payroll record which states your pay is "0" vs. NULL. If the database is putting in default values, you have no way of knowing whether the employee really did have a salary, but it was incorrectly inserted as NULL, or whether the employee is unpaid.

<comment><USER18> I understand NULL very well, and that's not the only use for a NULL.

NULL also means "value does not exist", not just "value is unknown". For example if a student is not in a class, put NULL in the class id.

NULL is perfectly valid data, and is not a replacement for a programming bug.

And with mysql if your salary field is defined as accepting NULL then you will get a NULL in there.

And to use your example if the field accepts NULL, you would also have no way of knowing if the salary was not negotiated vs a programming bug.

If you want to argue the insert should fail, then fine, no problem. (And MySQL can do that.)

But arguing that putting in NULL is better (in a field that does not accept NULL), is simply wrong. I'll say it again: NULL is not a replacement for a programming bug - NULL is valid data, and should not be used to find programming errors.

<comment><USER24> > For example if a student is not in a class, put NULL in the class id.

I think you mean "don't insert a row in the student_class table, which is a many-to-many join between student and class".

As a general rule of thumb, if your data schema requires NULLs for things like that, then your schema is wrong, for most of the reasons that people are trying to point out. NULLs are the absence of data, and should really only be used for exceptional circumstances - hence the reason that silently inserting NULLs into NOT NULL fields is a Bad Thing(tm).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER33> You're creating the wrong impression here by calling MySQL a toy and citing a handful of user preference issues you have with arcane features.

<http://www.mysql.com/customers/>

MySQL is used by the largest and most successful companies in the world. It is incredibly performant and stable in the most brutal environments.

Who on earth expects transactions to be available when you're creating a schema? "drop table if exists" is a fine way to back-out if your deployment dies.

Deferred key constraints? You should be spanked for using those in the first place.

<comment><USER34> _MySQL is used by the largest and most successful companies in the world. It is incredibly performant and stable in the most brutal environments._

I hate that line, you know what most of these companies have in common? They where started by guys with only a few years in the field and a vision. Some of them not the best developers in the world, just guys with a great idea for a product and a passion. The other thing they have in common, is that they have spent millions if not more on rolling their own solutions to compensate for a technology decision they made a long time ago in a garage.

This is the way it works, the new guys come in, they say well company X uses this, they build something on it because X is using it and they hit growing pains at a certain point.

Twitter is experiencing those growing pains now, fortunately they seem to be throwing out the bad and trying new things. A good deal of companies become dogmatic about their choice and given their success just throw money at it to build compensating workarounds.

MySQL was not chosen by those companies because of its merits, it was chosen because those companies started in a garage, and the technical selection was "what are the other guys using in their garage".

<comment><USER35> Or just because MySQL is really to get started with when using Rails and other frameworks, and that when you're starting a business, you think "if I actually ever run into MySQL scaling issues, that's a good problem to have".

<comment><USER36> Name one database that won't have scaling issues for sure. Scaling DB-wise is not only a good problem, it is inevitable if you constantly grow.

<comment><USER6> _Name one database that won't have scaling issues for sure_

You are, in effect, asking someone to prove a negative.

I don't think there's any contention that scaling will always be an _issue_ , but, rather, where along the scale curve debilitating issues occur and how painful the resolutions to those issues are.

For example, with MySQL, without sacrificing ACID properties[1], one cannot even separate a table's indexes onto a separate spindle from its data. For rotating storage, this make creating a new index astonishingly painful. Even with SSDs, more sequential/bulk I/O combined with eliminating contention for the paths to the drive, there can be a performance improvement.

Then there's query optimization. Is there even anything remotely close in MySQL to the EXPLAIN ANALYZE functionality in PostgreSQL?

I posit that scaling issues with MySQL come early and, once they do, require sweeping and _expensive_ changes to address. One can't merely exercise a little cleverness and cheap hardware to tide one over for another factor of 2-4 growth.

[1] i.e. InnoDB, not MyISAM</comment></comment></comment></comment></comment>


Germany bans children's smartwatches - <AUTHOR> http://www.bbc.co.uk/news/technology-42030109 <comment><USER2> Just to clarify, since this article just talks about smartwatches in general: The issue are watches that allow someone to remotely listen in, not all variations of smart watches for kids. They are banned for that ability, not for general concerns about IoT security.

Hidden listening devices (devices with listening capability that are disguised as other harmless items) are illegal to possess or sell in Germany under existing law. The regulatory agency for this just made a press release pointing out this specific device category and that they have taken action against sellers.

German press release: [https://www.bundesnetzagentur.de/SharedDocs/Pressemitteilung...](https://www.bundesnetzagentur.de/SharedDocs/Pressemitteilungen/DE/2017/17112017_Verbraucherschutz.html)

<comment><USER3> This should include all smart phones with children's games installed on them too.

My niece asked me to install some games on an old smartphone I let her play with. Out of about 15 I looked at, 15 asked for access to one or more of the camera, microphone, address book, location or just blanket ask for every permission under the sun. None of them needed these permissions for the actual game play of course.

How does Google find this kind of spying on children acceptable?

<comment><USER4> Why is spying on children any different than spying on adults?

<comment><USER5> While in absolute terms it's not any more ok to spy on adults than children, the idea of spying on children being more morally repugnant is based around the idea of children as innocent and by spying on then we're depriving them of that and allowing malicious actors to prey on that innocence (hey, now someone knows where this child will be, when, and most of the important things happening in their life; much easier to trick.)

In reality the same arguments apply to adults, but we find it less morally repugnant because adults aren't innocent and are expected to gaurd themselves against such actions. However, it becomes more and more difficult to guard against.

<comment><USER6> > While in absolute terms it's not any more ok to spy on adults than children, > the idea of spying on children being more morally repugnant is based around > the idea of children as innocent and by spying on then we're depriving them > of that and allowing malicious actors to prey on that innocence (hey, now > someone knows where this child will be, when, and most of the important > things happening in their life; much easier to trick.)

This seems like a very mushy reason. I'm pretty sure the real reason is that children are not considered able to knowingly consent to many things - including contracts such as EULAs or TOS. Given this, a child is also not expected to be able make a reasoned decision about privacy tradeoffs.

The reason it's "ok" to spy on adults is that they can make an educated decision about whether they're ok with being spied on. I don't necessarily agree that this is true in practice, but I think that's the theory.

<comment><USER5> It is not "ok" to spy on adults. It simply doesn't elicit a feeling of disgust in most people.

<comment><USER3> I think it does elicit the feeling of disgust, but most people don't know it's happening. (Or downplay the risks - such claiming that it's only machines and not people watching).

It should also be completely illegal, but the justice system can't keep up with technology. Imagine you found out that your next door neighbor has drilled a hole through the wall and fed a camera into your house - what do you do? (Call the police, certainly). Is it really any different when the camera feed isn't a physical wire but done over the internet?

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> German law prohibits "transmitting equipment which, by its form, purports to be another object or is disguised under an object of daily use and, due to such circumstances, is particularly suitable and intended for intercepting the non-publicly spoken words of another person without their detection" (§ 90 TKG). This was the basis for this statement by the regulator and explains why it was not restricted to certain uses. It was not based on insecurity of those devices. Even if they were perfectly secure that would not change anything.

<comment><USER8> It's pretty well known though in this day and age that smart watches can have recording capabilities, so if the problem is that "a watch looks like something that can't record" all smart watches should be banned by that logic.

I don't feel like that actually applies here, but if it does it should also apply to the entire smartwatch category.

<comment><USER9> In the USA maybe, but german culture in general doesn't track the newest tech as fervently.

<comment><USER9> Goddammit you people are fucking idiots.

</comment></comment></comment></comment><comment><USER10> This may be an unpopular opinion, but I agree with the decision. Perhaps this will push the producers of such devices to up their privacy game, and in the future there should be security audits before allowing them back on the market. Regulation of production would be more difficult and more liable to error than if a producer were forced to prove itself reliable and trustworthy before being allowed to sell products to children.

For me as well this is an issue of high concern. Many parents blindly put faith in technology in their children's hands (especially in this case, where the smartwatches are marketed as a safety feature), but this may now encourage parents to be more mindful as to such decisions. In our society, we have a ravenous competition for who can grab children's attention and keep it. Perhaps if the competitors are willing to prove they have products that will actually improve a child's well-being, this game wouldn't be as odd as it seems to me now.

edit: I see now that this is only a ban on smartwatches with recording/audio capability. This makes my point somewhat irrelevant.

<comment><USER11> Or, parent should put more trust in the world and their child. You don't need to know what your kid does at all times.

<comment><USER10> That is also a good option. GPS trackers on children do not solve any inherent problem. Teach the child how to be responsible, allow the child to prove themselves responsible and trustworthy, and there is little to worry about.

</comment></comment></comment><comment><USER12> Apart from the privacy issues: my niece got a "smartwatch" recently at the age of 5 with many games installed on it. She was instantly addicted to it. After she was nearly ran over by a car because she looked at the thing instead of left/right at a street her parents got rid of that thing. They said it was straight out of hell...

<comment><USER13> I had a watch with Tetris on it about 25 years ago. My wife reads while walking(!). I don't think this is a new technology problem

</comment></comment><comment><USER14> I know that my voice will be in a minority, but I would absolutely forbid the use of smart devices for children under 14 years old.

<comment><USER15> Speaking as someone of similar mind, but who has children, it's rather challenging to accomplish when your child's friends and peers are all equipped with such devices _and_ the teachers assume that they are available. It's hard enough on your children to be the odd one out, it's harder still when the teachers are assuming that students are equipped with immediate access to the internet and productivity software.

I wonder what the future is going to look like when analog methods of communication have been eschewed for several generations. Imagine how vulnerable we will be to a massive Carrington event when most of the population is barely capable of (or incapable of) multiplication and division. Antique solar-powered calculators will be back in vogue!

<comment><USER14> I also spoke as a parent of a child (6yo). In our family, the child does not have access to TV, computers and smartphones. I can now see the difference between children of his age who have endless access to telephones, gaming consoles, TV, and with whom "old" ways of knowing the world are practiced: games, drawing, music, reading books with parents, crafts, etc.

This is very hard to do, as the parent. We live in a society in which a lot of parents not even though to reflect on this topic and to think what will happen next with their child. So often you can see how parents use the phone as a means of appeasing a child in any situation.

These children are no longer ways to come up with something. Their head is already full of forms, images from computer games, TV shows. Many of them are physically weak for their age. This is scary.

<comment><USER16> There's quite a difference between 6 and 14.

I'm not sure you understand the amount of hatred a 14 year old might have against you if you forbid him to have a smartphone.

A case could be made in court that such a restriction is illegal and a form of bad parenting.

<comment><USER17> Ha. My 14 year old can have a smart phone when she gets a job, saves up for it and pays for it herself.

That'll teach her to value it (and not lose/smash it like my 15yo mentee keeps doing.) It also means she probably won't have one till she's 16 or so.

Disclaimer: I actually only have a two year old. Maybe I'll change my mind in the next twelve years, who knows.

</comment></comment></comment></comment></comment><comment><USER18> The market is not self regulating here. Most parents cannot know or understand the security issues behind these devices, and are unable to make an informed decision on the risks.

In that respect, it makes total sense to put a blanket ban on these until regulations can put put in place that only allow the sale of devices that respect privacy.

At the end of the day if you really want a smartwatch on your child you can just buy one anyway.

<comment><USER19> > The market is not self regulating here.

The market is rarely self regulating here in the U.S., either, assuming you're referring to people making decisions with their dollars. Rather, the market is driven by a combination of advertising, media coverage, speculative investing, and established big interests. We as a consumerist culture enjoy indulging in the illusion that we are making our own purchase decisions.

The market is more like a game of hungry hungry hippos. Yes, the balls move in all sorts of directions at many different speeds, and while they appear to be doing so in response to collisions with one another, their propulsion is a result of the hippos chasing them, chomping at them, and generally moving the board with the force of their jaws coming down.

Examples of this include diamond engagement rings, the growing size of single family homes, sugar's infiltration of our diet, tax havens, and $1k+ phones.

Disclaimer: I apologize for hijacking your comment. Also, I understand the need for HN to ignore my comment or intensely downvote it; I know what I'm doing and saying as I post this.

Cheers.

Edit: spelling

</comment></comment><comment><USER20> GPS trackers for kids should be banned altogether. At best they're for helicopter parents, at worst they are the favourite tool of the abuser. A healthy upbringing requires trust.

<comment><USER21> I always figured it was kinda the opposite, a GPS tracker allows a parent to feel more secure about letting the child out of their sight thus decreasing the "helicoptering". I'd be much more comfortable letting a child walk a couple 2 miles to see their friend if I know I'd be able to quickly recognize if something went wrong (i.e. the child stops moving, or starts going in the wrong direction very quickly.).

Now there is a point as the kid ages where it could get creepy but I think that really depends on you a person, if you are a generally creepy person on not. For example my family of all adults share an iTunes family account to share movies and stuff, this also lets us look at each others location via find my iphone. However this isn't a problem because not of us are creepy assholes.

<comment><USER20> > a GPS tracker allows a parent to feel more secure about letting the child > out of their sight thus decreasing the "helicoptering"

A GPS tracker is a long-range spying device; it feels oxymoronic to claim you're letting them out of your sight if they're wearing one. If you can't trust your kids to be out of your sight without tracking them, you don't trust them.

<comment><USER22> > If you can't trust your kids to be out of your sight without tracking them, > you don't trust them.

It's not always about trusting the kid. It's about trusting the rest of the world.

<comment><USER11> Why would you not trust the rest of the world? The world is safer today than it was 10 years ago.

<comment><USER22> Haha. I'm 10 years older than I was 10 years ago. Does that mean I'm the oldest I possibly could be?

</comment></comment></comment></comment></comment></comment><comment><USER23> As frustrating as their rigid concerns about privacy have been, one day we may all be thanking the Germans for their vigour in resisting the inevitable.

</comment><comment><USER24> Hi guys, i must confess i just came across a reliable and incredible hacker who helped me track my cheating husband, you don't have to stress yourself anymore, if you have the strange feelings your husband or wife is cheating on you, be smart enough to contact him at email@example.com. You don't have to touch his phone or computer while you have access to his privacy/conversations through the software he bought and install remotely on my phone. i don't know how he did this but i think he's perfect at it.Tell him Janet referred you, a trial will convince you, then you can thank me later. God bless.

</comment><comment><USER25> What an odd solution to the problem.

<comment><USER26> The advise about 'destroying' watches you have is a bit odd too. Why not just return them or remove the listening in capability with a firmware update?

<comment><USER27> This is a legal thing: they decided that merely owning one of the affected devices is illegal. So the best way back to legality is to destroy the device and keep a proof of its destruction. Nice and tidy.

A firmware based fix alone does not make the device easily distinguishable from one without it and the fix is not permanent, making it possible to revert the device into its illegal state.

</comment></comment></comment><comment><USER28> The ban puts manufacturers on notice, but in reality, devices are becoming so ambiguously advanced from a technical perspective, that " _smart_ " is not an adequate adjective to describe all that myriad use-cases and features that represent a hazard to any naive user (whether they are children or not).

Such a premise is also inadequate to address the reality that an adult parent or guardian might let their child handle sufficiently advanced devices, unwittingly harming their children and themselves by failing to understand the product they employ. What about placing a child in a " _smart_ " car? How do you anticipate protecting the safety and privacy of anyone under such circumstances?

</comment><comment><USER29> The report from the original findings:

[https://fil.forbrukerradet.no/wp- content/uploads/2017/10/wat...](https://fil.forbrukerradet.no/wp- content/uploads/2017/10/watchout-rapport-october-2017.pdf)

</comment><comment><USER30> If your young child gets lost, why is a watch that reports GPS once an hour a bad thing?

This is very different than spying on a teacher or recording audio.

<comment><USER31> You could just give your kid a gps device. Your children do have a right for privacy, you can't simply spy on them without their knowledge. Also if your kid tells you it is going to play with their friends. You are not only spying on your own child but on other people children. That's clearly illegal, since the other childs can't know your kid wears a GPS spying device.

<comment><USER30> Young kids (who should rarely be own their own) are different than teenagers.

<comment><USER32> In what regard? That they have no right of privacy? That people around them (teachers, other parents, ...) have no reasonable expectation of not being monitored? Should I now treat every four-year old as a walking covert listening device? That six-year olds cannot be trusted to obey rules and recognize limits? And if the kid is so young it should absolutely not be on it's own, then parents should be around and there's no need for a monitoring device.

<comment><USER30> Once an hour GPS (as I suggested) is not the same as "privacy", and yes if the adults trusted with care of a six year old take them somewhere unexpected for a long time, the parents should be able to find out.

You could claim this is a slippery slope that leads to more kinds of tracking (and this may be true), but I am saying that very limited tracking can be a net positive.

<comment><USER32> You could just give your kid a phone that it can use to call you when it's lost.

<comment><USER30> I think most six year olds should not have phones. But am happy with Apple's "find my friends" in that case.

<comment><USER33> You seem to be unaware that phones without addicting games continue to exist.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> Simple question: why does the government need to ban this? Can't people make their own decisions?

We have given government too much power. They ought not be our mommies.

<comment><USER7> How do I go about making my own decision? I do not have the power to stop random children next to me from wearing such devices.

<comment><USER35> You also don't have the power to stop random teenagers or adults next to you from wearing such devices either, so that doesn't explain this decision.

<comment><USER7> Random teenagers and random adults are banned from wearing such devices as well under this law (they are even banned from possessing such devices at all).

</comment></comment></comment></comment><comment><USER36> On one hand it is a good decision by Germany, but on the other hand its essentially telling parents that the government knows more about what your kids should and shouldn't wear than you do. I think a better approach would have been to raise awareness through a PSA about the dangers of children wearing these devices instead of an outright ban.

<comment><USER37> >but on the other hand its essentially telling parents that the government knows more about what your kids should and shouldn't wear than you do.

Here in Germany children are not just property of their parents, they are citizens in and of themselves. In this case it is the state's study to uphold their rights, which their parents are apparently not aware of or violating.

The argument that parents are somehow wise elders who know what the best thing is for their children has very little pull here.

<comment><USER22> So instead you substitute "The state is somehow a wise elder who knows what the best thing is for its child citizens"?

Clearly, both the parents and the state have an interest in ensuring the health and safety of children, and when the parents fail in that responsibility, there comes a time when the state must step in.

But let's not kid ourselves. Both parents and the state can make bad choices on behalf of children.

<comment><USER38> The basic assumption that Barrin92 is making is that the German government is benevolent and always puts the interests of its citizens first.

<comment><USER39> The basic assumption that jjawssd is making is that government is never benevolent and always puts its own interest before that of citizens, regardless of the fact that government usually is made up of said citizens.

It's really scary how much distrust some people have towards representative democracies/republics and instead think going back to some kind of de-facto anarchy where the strong rule over the weak, is somehow the "better" solution that we've never even tried before.

We have plenty of human history not involving "government", guess what it did look like? Much worse.

</comment></comment></comment></comment></comment><comment><USER40> > "According to our research, parents' watches are also used to listen to > teachers in the classroom."

I wonder why they want to ban them outright instead of not allowing them in schools. It's also not clear from the article if they are banning particular, poorly secured smart watches, or all smart watches for kids altogether. The former seems more reasonable.

<comment><USER41> As others in this thread have said, it is against the law in Germany to have hidden listening devices, which they ruled these watches were.

<comment><USER40> I see that now. Thanks.</comment></comment></comment>


Mezzanine 3.0 and Cartridge 0.9 released – Django CMS and e-commerce platforms - <AUTHOR> https://groups.google.com/forum/#!topic/django-users/xTA9VPcp8uM

<comment><USER2> A lot of sites built on Cartridge seem to be based in Australia. What's the reason for this? I assume it's developed in Australia? How did you/they get users in the first place?

<comment><USER3> Keep in mind that not all site owners report to mezzanine team that they use their cms. I've used it for a few sites that are small and unpopular (freelance orders for small shops) and none of them will be in their list, that I know for sure. It still has some drawbacks, but in general I like it. Especially the part with automated fabfile for deployment and update.</comment></comment>


Should You Tell You Children How Much You Make? - <AUTHOR> http://marginalrevolution.com/marginalrevolution/2015/02/should-you-tell-your-children-how-much-you-make.html

<comment><AUTHOR> I linked to this rather than the NYT's piece for two reasons:

1\. The NYT piece has already been on HN and so most people have seen it.

2\. This post has a different opinion and one I don't think many people have been exposed to.</comment>


Monzo – Tone of Voice - <AUTHOR> https://monzo.com/tone-of-voice/ <comment><USER2> Don't start sentences (or worse, paragraphs), with "so" \-- sounds like an excuse.</comment>


Ask HN: Why aren't wireless screens/monitors available yet? - <AUTHOR> I have 2 screens connected to my computer at work in addition to my charger coupled with adapters and what not (MBP so all USB C). Dangling all those cables got me wondering why and if/when will we have wireless screens so that we can practically be wire-free and can move around/connect to other desks seamlessly. <comment><USER2> Huge amount of data being passed to the monitors 1-3 Gb/s, having latency within 1/60th of a second (60hz) is not trivial either especially keeping that latency stable

</comment><comment><USER3> There was an app out several years ago where you could use your iPad as a second screen with a macbook. A friend used it and said it was useable for working at a coffee shop.

<comment><USER4> I recall using something exactly like that with my iPad 1 in 2010. If I remember correctly, it did work quite well for simple programming related applications.

</comment></comment><comment><USER5> Mostly bandwidth, reliability and interference robustness. The Wii U certainly proves it's possible, although that's streaming 1280x720. Displays at much higher resolutions require considerably higher bandwidth and are much more expensive as a result. Plus, if your screen is in one place, the source is likely to be there too, so why not just make it more reliable with a cable.

</comment><comment><USER6> [https://www.techjunkie.com/best-wireless- monitors/](https://www.techjunkie.com/best-wireless-monitors/)

</comment><comment><USER7> The real problem sounds like you are stuck having to hot-desk or some other foolishness. A dedicated workstation should not be a luxury.

</comment><comment><USER8> Airplay works pretty okay. Bandwidth and latency can reduce quality substantially though.

</comment><comment><USER9> latency issues</comment>


Semi-synchronous Programming in Python - <AUTHOR> https://github.com/madisonmay/SemiSync

<comment><AUTHOR> Although it's not ready for production, this has been a fun hack and I'm looking for feedback to continue improving this little library. Let me know what's intuitive, what's less straightforward, and what's outright broken.

Happy hacking,

Madison</comment>


Higher level programming in C - <AUTHOR> http://libcello.org/

<comment><USER2> This is truly impressive.

What are the advantages of using this against c++? It's for performance reasons?</comment>


JavaZone 2013: Javapocalypse - <AUTHOR> https://www.youtube.com/watch?v=E3418SeWZfQ <comment><USER2> Amazing felt like a real movie, Java really is ubiquitous

</comment><comment><USER3> This is brilliant. Fantastically done and made me laugh.</comment>


NoTCP - <AUTHOR> http://notcp.io/ <comment><USER2> A bit of UDP history by its creator [1]:

      Actually, UDP was "un-designed" by me and others.By this I mean that
      UDP was the final expression of a process that today we would call
      "factoring" an overcomplex design. Originally, the ARPANET end-to-end
      protocol NCP was a "kitchen sink" oriented toward providing remote
      teletype-centric access using the "telnet" protocol and the "FTP"
      protocol to remote machines over a packet network.

      A group of us, interested in a mix of real-time telephony, local area
      networks, distributed operating systems, and communications security,
      argued for several years for a datagram based network, rather than a
      virtual circuit based network. The group involved me, John Schoch and
      Yogen Dalal of Xerox PARC, Danny Cohen of ISI (now at Caltech, I think),
      and Steve Crocker, with Jon Postel as a supporter, and Vint Cerf and Bob
      Kahn as neutral referees.

      UDP was actually "designed" in 30 minutes on a blackboard when we decided
      pull the original TCP protocol apart into TCP and IP, and created UDP on
      top of IP as an alternative for multiplexing and demultiplexing IP
      datagrams inside a host among the various host processes or tasks. But it
      was a placeholder that enabled all the non-virtual-circuit protocols since
      then to be invented, including encapsulation, RTP, DNS, ..., without having
      to negotiate for permission either to define a new protocol or to extend
      TCP by adding "features".

[1] "udp and me" [http://www.reed.com/blog- dpr/?page_id=6](http://www.reed.com/blog-dpr/?page_id=6)

<comment><USER3> Exactly. For those of us who like to play around with protocols over the real Internet, availability of UDP as basically a proxy IP protocol is a godsend. Well what _really_ matters is that a few uses of UDP over the internet are well established (DNS, VOIP etc.) and that makes it hard for ISP's and middle- boxes to block arbitrary UDP ports. And _that_ makes UDP the perfect conduit to invent custom protocols.

</comment></comment><comment><USER4> Yes, this is a joke, but it's a ha-ha-only-serious kind of joke.

A rhetorical question: if other protocols are better at this or that, what forces have made TCP the only transport protocol of note for so long?

Well, in TCP, _window scaling_ needs to be OS-global to avoid flapping. This means TCP lives in the kernel. And _this_ means, if you want a protocol with any property similar to window scaling, it _also_ needs to live in the kernel.

Which is to say, if you want your protocol to do anything that requires machine-level resource pooling, it has to be machine-global, not app-local.

This is true trivially if your protocol wants to live in layer-4; anything peer to TCP or UDP has to have its own kernel driver in every major OS, and in every major firewall/load-balancer/NAT appliance.

But even when you build on top of UDP on "layer 4.5", you're still under the same constraint. Even if you're not in the kernel, you still need a single- instance-per-machine daemon or somesuch. You still need to install something as root. The 1993-era user story of "my ISP just told me to enable something called NetBEUI!?" still applies.

The reason much of this will be decreasingly relevant?

Unikernels.

If your app has guaranteed 1:1 ownership of a "machine", then your app can speak whatever wire protocols it likes; an app-level resource pool _is_ a global resource pool.

Unikernels _talking to other unikernels_ can easily make use of new layer-4 protocols. That's exciting!

Combined with the coming wave of "cloudlets" (small VMs paired to an individual customer of a device manufacturer or ISP, where the customer's mobile devices and home network use the cloudlet as a featureful VPN proxy), these new layer-4 protocols can be tunneled out to customers, too, avoiding any and all intervening muck.

The next 10 years of networking will be interesting!

<comment><USER5> Can you expand on why "window scaling needs to be OS-global to avoid flapping". I have googled it and a I got to

[http://en.wikipedia.org/wiki/Route_flapping](http://en.wikipedia.org/wiki/Route_flapping)

and I couldn't work out how this related to TCP living in the Kernel.

Not trolling, real question. Thanks in advance.

<comment><USER6> the TCP stack is controlled entirely by the kernel. so it handles things like requesting dropped packets and rate limiting.(which relates directly to "packets in flight")

with UDP, that layer of ACK, ordering and rate limiting is gone.

if you want to send a million packets a second to 56k modem, sure the kernel isnt going to stop you.

Whilst it might be possible to have per TCP connection windowing parameters, I doubt it'd be very efficient.

<comment><USER7> > Whilst it might be possible to have per TCP connection windowing parameters, > I doubt it'd be very efficient.

If you had kept going here and explained why you doubt that, you would have answered the parent's post.

</comment></comment></comment></comment><comment><USER8> Aeron from Martin Thompson of mechanical sympathy fame uses a custom, reliable protocol over UDP to achieve much lower latency than is possible with TCP solutions. There seems to be a growing awareness that one-size fits all protocols like TCP don't necessarily offer the best tradeoffs, even when you need reliability. [https://github.com/real- logic/Aeron](https://github.com/real-logic/Aeron)

</comment><comment><USER9> There is no better way to get to the top of HN than by writing something so deadpan sarcastic that all parties think you're secretly on their side.

</comment><comment><USER10> I completely lost it when I got to this line: "So suppose we're conscientiously setting artisanal timeouts for all our TCP messages."

Well done.

<comment><USER11> Yeah that line bothered me too. Still I thought the content of the article was valid.

</comment></comment><comment><USER12> TCP has an advantage over UDP which hasn't been mentioned yet in this thread: it effectively prevents source IP spoofing. This is a huge issue for some UDP- based protocols, since it allows an attacker to send a packet with a spoofed source IP address. The response is then sent to that IP address. Protocols like DNS and NTP, which send large answers for comparatively small requests, can be misused for DDoS attacks this way (amplification).

<comment><USER13> This is a solved problem with BCP38. By filtering ingress traffic that does not originate from the networks they claim to be from handshakeless protocols are possible and abuse is prevented.

<comment><USER14> A quick read of Wiki tells me that BCP 38 was introduced by RFC 2827 in May 2000. But it's still not a "solved problem" since many ISPs and companies don't implement it.

How do you get more widespread adoption? It's been 15 years.

</comment></comment></comment><comment><USER15> This is not new. This is an attempt to make something that has existed for decades seem new, hip, and edgy. Prefixing "no" to existing traditional technologies does not make something new or cool.

The only people who would buy into this are people who have no experience with networking, and thus this would only affect their probable usage of libraries down the road with the wrong intentions.

Hell, I don't even know who this is really suppose to address. My best guess is people with very little knowledge of network protocols and their usages.

<comment><USER16> This is a joke. They're making _fun_ of NoSQL and its ilk.

<comment><USER17> I don't think they are. Other than the first paragraph, with its self- deprecation and references to Node.js and NoSQL, which seems intended to head- off the derision such a hipsterish manifesto would rightly incur, the rest seems entirely serious.

<comment><USER18> The very last link in their "are you serious?" section is the sentence "Or maybe you have some clue about how the internet actually works, and you don't need a manifesto to tell you what you already know" with a link to an article titled "TCP doesn't suck, and all the proposed bufferbloat fixes are identical." I read the whole thing as a joke, and I don't see anything that suggests otherwise anywhere in it.

Seriously, how can you read "just as the Reactive Manifesto reminded us that new branding can give a youthful glow to decades-old ideas" as anything but funny?

</comment></comment></comment></comment><comment><USER19> Holy shit this trolled me hard. I was raging reading about how people were too dumb to understand how to handle TCP failures but were apparently smart enough to re-implement re-ordering and error recovery in their own manner.

Well done.

</comment><comment><USER20> I couldn't agree more. TCP is wonderful _when you need it_ , but you very often don't need it (and pay a heavy price for features you don't need).

I wouldn't want to write HTTP over UDP, but neither would I want to send telemetry data ('{"timestamp":343821902, "value": 43}') over TCP. UDP is brilliant for systems where you're more concerned about tracking the current state of things than accurately replaying the last n set of transactions.

<comment><USER21> Disagree. In most cases you want TCP. Rarely do applications gracefully deal with loss.

<comment><USER22> Simple example: Player positions in a FPS.

Would you rather wait for a transmission of the missing position update 1 sec ago or just forget about it and continue processing the next one ?

In this context, you'll prefer the second option. It will probably cause a visual glitch but the game can go on, and players will say "lag" :)

<comment><USER21> Yes. You can show me a relative corner case. But in most cases you want TCP.

<comment><USER22> It's far from being a corner case. UDP is commonly used in multiplayer games to provide a channel for unreliable data.

</comment></comment></comment></comment></comment><comment><USER23> "yet another hipster technology manifesto" so good content. I guess it is a good summary what is wrong with the tech industry (lots of "solutions" are abused, built for different era, etc.) and also bashes a bit on technology like node.js but not too much. Entertaining read.

<comment><USER24> This is the best summary of what it is, and indeed an entertaining read.

</comment></comment><comment><USER16> I lost it at "renaissance of artisanal protocols".

</comment><comment><USER3> I honestly can't make out if the author is trying to be serious or sarcastic. For instance:

 _" We follow in their Chukka-booted footsteps by challenging the comforts of the ubiquitous Transmission Control Protocol and recognizing the well-deserved renaissance of artisanal protocols built on UDP. We didn't start this fire, we're just calling it what it is: the NoTCP movement"_

I'd admit to being too dumb to parse the exact sentiment behind that paragraph. Though it does sound somewhat like sarcasm to me.

Then in the rest of the paragraphs, he actually goes on to make a pretty good case of why one might want to get rid of TCP (especially from under the complex beast that HTTP/2.0 is with it's own flow-control, multiplexing etc.)

For what it's worth, I wrote my own manifesto against using TCP in all cases a few weeks ago. But this one is geared very specifically towards the needs of mobile native apps.

[https://packetzoom.com/blog/](https://packetzoom.com/blog/)

</comment><comment><USER25> If you like the idea of REST over UDP [http://coap.technology/](http://coap.technology/) has been around a while, seems to have traction.

</comment><comment><USER26> One serious argument for using a connectionless protocol is mobile. The reason is that mobile networks have a MAC/RLC layer (talking 3G/4G here, e.g. LTE) and those layers have ARQ (in other words retrans). At times, those re-trans can spike (sudden Signal drop for example). That will blow the RTO on TCP and you get needless TCP retrans. This is where you have to competing retrans mechanisms flapping. The obvious fix would be for the mobile operators to terminate the TCP flow at the base station and use the Hybrid ARQ mechanism, although that could happen eventually, but would mean a lot of re-design for them i.e. cost. So if your app is going to be on mobile, it might perform better using a connectionless protocol depending on the situation.

</comment><comment><USER27> I like the irony of serving the message via TCP

<comment><USER28> From their twitter account ([https://twitter.com/notcp](https://twitter.com/notcp))

> Sign the manifesto: [http://notcp.io](http://notcp.io) . If you can figure > out a way to sign it using UDP, let us know.

It's pretty clear they know they are being ridiculous.

That said, it is nice to have reminders that there are alternatives to the overwhelmingly popular default. Kids these days grow up using TCP so much they become devs who can't conceive of whole categories of software that don't happen to line up with the tradeoffs designed into TCP. Heck, seems like most people have a hard time remembering that there's more to the Internet than HTTP.

<comment><USER29> I personally prefer it to being that way.

UDP while is very simple from design point of view is actually very complicated to use if you plan to do something more than just send few packets.

The issue is primarily, that you don't have a feedback loop that tells you the rate at which you should send the data. Also badly written applications that use UDP can create congestion collapse in a network (no congestion control/avoidance).

</comment></comment></comment><comment><USER30> I don't know if the actual post is funnier, or the fact that this is just satire went over so many people's heads.

</comment><comment><USER11> This article has a ring of truth. With HTTP/2 gaining traction I cannot help but wonder if a lot problems could be solved by going down a level of complexity instead of stacking more layers on top of TCP.

For example why not allow UDP from Javascript in the browser with CORS like protections to limit DOS attacks. I.e., only allow UDP connections back to the origin unless the server explicitly allows non-origin access from the requesting domain.

This approach seems a lot simpler and opens the doors to all kinds of improvements not just those designed into HTTP/2.

</comment><comment><USER31> Tons of discussion and nobody mentioned this: [https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protoco...](https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol) Reason for using TCP is that using UDP requires application specific implementation and making it good and efficient would require more work than making rest of the software. That's why the applications only use UDP where it really does make difference. Others just won't bother.

</comment><comment><USER32> Notably, ICQ was implemented over UDP, though IIRC they basically implemented most of the features of TCP on top of UDP when creating their protocol.

</comment><comment><USER33> What ever happened to SCTP, anyway?

<comment><USER34> It was designed by telcos for telcos; I don't know if they ever got around to using it. It can't be used in the normal Internet because it doesn't pass through NATs.

<comment><USER35> You interact with it every day if you use a cell phone. The control plane of the nodeb/enodeb(or "cell towers") and further into the core network in UMTS/LTE is using SCTP. Control messages for voice calls and SMS is carried a top of SCTP. Control plane interconnect between carriers for roaming is done over SCTP.

(Though there's still plenty of gear still using TDM or ATM)

</comment></comment></comment><comment><USER36> The only problem is: good luck getting corporate firewalls to support connection state tracking for your custom UDP-based protocol, and getting IT managers to turn this on.

</comment><comment><USER37> I don't see the point of the joke/sarcasm. UDP has its use if you want to have real time stuff and more granular and fine-controlled data. TCP is just for larger batches.

Of course UDP is useless in many cases, but it does have its uses.

It looks like this is just mocking people who can't follow the "don't reinvent the wheel" rule, but why assume that all types of wheel are already invented? P2P networking needs fine control. Bare metal is not here for nothing.

</comment><comment><USER38> Once the non-TCP protocol has been written, we'll need to make sure it's portable through corporate and ISP firewalls, so we should write an HTTP extension that tunnels the non-TCP protocol over HTTP proxies without using CONNECT, and on port 80. We'll need to patch the proxies and the browsers and the web servers, of course, but it's all in the name of a better, newer protocol that doesn't have the clunky overhead of TCP.

<comment><USER39> I thought Googles experiments have showed that this is less of an issue that what people generally think. Most networks pass UDP traffic just fine. And most failures occur early phase enabling reasonable fallback policy to TCP

<comment><USER38> Most networks aren't what you think they are.

For example, most modern-day commercial firewalls more closely resemble a NAT machine than anything else. All your packets may be changed as they pass through in order to verify their authenticity and integrity once they return. And if the protocol isn't supported, it may not be passed through at all.

If you want to support existing networks, it has to be either TCP or UDP. In order to support next-generation firewalls, you also have to use the OS's tcp/ip stack. In order to support typical commercial network/proxy configuration, you have to use a higher level protocol like HTTP. And this isn't even talking about the "features" of the different protocols and how they're handled.

A replacement for TCP has to be done by a standards body and accepted by vendors, or [at least] half of the world will never be able to use it.

</comment></comment></comment><comment><USER40> From Article:

"are you serious?

Oh, absolutely. There are plenty of successful, purpose-built protocols that used UDP before it was cool: DNS, NTP and RTP, to name a few."

DNS and NTP are built over UDP because they are light weight applications. RTP is built over UDP because you don't care about loss. Hell even DNS still uses typically uses TCP when doing zone transfers between DNS servers because of the amount of data involved.

What point is the author trying to make with this statement?

</comment><comment><USER41> Kind of tired of the "your technology is Hipster swill" parodies.

All technology is a tool, use the right tool for the job and move on.

</comment><comment><USER42> It seems to be they don't understand TCP. Indeed, TCP has drawbacks, but without studying TCP they probably repeat old mistakes and will add new ones (not present in TCP).

</comment><comment><USER43> Good thing (as well as in-process TCP stack implementations). One note: text of black color would be much easier to read than this light gray.

</comment><comment><USER44> abou Quic: "you probably haven't heard about it". Gives the true condescending hipster feel :)

</comment><comment><USER45> Why the hell is wnevets' comment flagged? Does this just happen automatically when enough downvotes pile up? If "flagged" is a separate thing for really objectionable stuff then it doesn't make sense in this case.

<comment><USER46> my comment was flagged? hmm.

<comment><USER45> Yes the "how cute" comment is still displayed to me as "[flagged]", as well as being completely grayed out.

<comment><USER45> Oh this is nice. Simple points of order concerning HN operation are downvoted now? (Hint for drive-by downvoters: if you don't know what we're talking about, you probably have "showdead" set to "no".)

<comment><USER46> >you probably have "showdead" set to "no".)

I did but I can still see my comment as normal.

<comment><USER45> Open the page in an incognito tab, so HN won't know who you are. (or log out if you prefer) I expect that your original comment will no longer be visible. This appears to be similar to the hellban functionality, in that it's hiding from you the fact of flagging this one comment. Although I have no problem with the use of hellbanning, I don't see how the behavior we see here, with respect to a mildly sarcastic response to more strident sarcasm in TFA, could be considered a good thing. Hmm, maybe I'll write a Chrome extension to remove this misfeature.

<comment><USER46> thats what it sounds like, whats kinda funny it had 3 points before getting flagged.

</comment></comment></comment></comment></comment></comment></comment><comment><USER47> I think they are actually serious. And it makes sense. TCP is holding back a lot of stuff. Its a legacy thats grandfathered in and we can do better both in terms of general purpose and specific needs.

</comment><comment><USER48> i read this website as "not cpio"

</comment><comment><USER49> Tiny type, disabled zoom. Hipster indeed.

</comment><comment><USER50> But is it web scale?

</comment><comment><USER51> I read this as Not CP...

</comment><comment><USER52> These guys should make their site's even text smaller, thinner, and lighter in color.

For the moment, we still notice that there's something that we're supposed to read.

[http://contrastrebellion.com/](http://contrastrebellion.com/)

Sorry for the rant, that's the final straw...

<comment><USER11> I have found that high contrast is actually bad for my eyes. I regularly spend 8+ hour stretches programming. If my screen is black on white my eyes get tired after about 6 hours. If it's white on black I get similar but less pronounced results. However, if I use a light grey on a dark grey, with moderate contrast, I can work indefinately, or at least my eyes are no longer the limitation.

<comment><USER53> Rather than have web sites alter their color schemes to suit you, and cause trouble for others in the process, why not turn down the contrast on your screen?

<comment><USER54> I have my monitor calibrated for photo editing. I'm not going to mess with the brighhtness and contrast because some site is using a hard to read colour combination.

If it's a site that's worth reading I'll overide the CSS with Stylish otherwise I'll just not bother reading the site. It's funny how many sites fall into the later category.

<comment><USER53> Good answer! It didn't occur to me that there might be useful calibrations where, say, pure black on white is hard to read, but you still want pure black and white to be at those levels for other purposes.

</comment></comment></comment></comment></comment><comment><USER55> I'm scared to click the link because of the URL. ... ... ...

<comment> vezzy-fnord Don't worry, it's just "yet another hipster technology manifesto" (their quotation).

</comment></comment><comment><USER56> "UDP" would have been a better name than "NoTCP". (Because non-TCP would also include ICMP, for example). Also, why not just go to IP, rather than UDP? Much more flexible than UDP and even more efficient.

</comment><comment><USER17> "Oh yes indeed. Just as Node.js and NIO proved to the world that bare-metal performance is always worth the consequent unreadable code"

Node.js is hardly bare metal and non-blocking IO is hardly new; Unix programmers have been writing select()/event-loop and poll()/epoll() servers for decades. The presentation of this false dichotomy between Node.js representing "bare-metal" at one end and readable code at the other suggests the author is some type of opinionated Ruby/Rails hipster programmer upset that his pet language and framework is falling out of favor, and in no small part because of its abysmal performance.

<comment><USER57> I'm not sure, but I think the author was being sarcastic?

I mean, I can hardly imagine "node.js" and "bare-metal performance" being in the same phrase and not being sarcastic.

<comment><USER17> No, I think the author genuinely views Node.js/NIO as a bad performance/readability trade-off that was over-hyped and inferior to other existing platforms.

<comment><USER58> Well, they're right that NIO code is pretty low level and hard to read. But then, 95% of Java devs won't need to touch NIO, they'll just use Netty which does all the NIO for them.

</comment></comment></comment></comment><comment><USER59> This is too low level for me.

I don't care. I don't care about TCP, I don't care about UDP, I only care about QUIC because I'm a Google fanboy.

I shouldn't have to care about this. All I want is some very fast, very reliable underlying protocol for my web apps and api endpoints to run on.

<comment><USER60> Hacker News caters to a wide audience. While it may not be of interest to you, someone else is geeking out over it.</comment></comment>


The Dark Side of the Placebo Effect: When Intense Belief Kills - <AUTHOR> https://www.theatlantic.com/health/archive/2011/09/the-dark-side-of-the-placebo-effect-when-intense-belief-kills/245065/ <comment><USER2> I wonder about magnitudes and how different the rates are versus other hypotheses - say take the approximate risk profile for their genes and similar impact of just stress from traumatic events with negative health impact.

Essentially I wonder how comparable "bonus stress" is to a nocebo effect in terms of magnitude and if they can be distinguished.

</comment><comment><USER3> They should add another title, "The Dark Side of the pharma effect: When excessive belief in profit kills". I am in no way advocating any sort of blind belief.</comment>


Multi-Dimensional Analog Literals in C++ (2006) - <AUTHOR> http://www.eelis.net/C++/analogliterals.xhtml <comment><USER2> Discussed a bit in 2015: [https://news.ycombinator.com/item?id=9305786](https://news.ycombinator.com/item?id=9305786)

</comment><comment><USER3> Filing a ticket for fractional length support.</comment>


Engineers of Jihad | The Oxford Study on "Engineering Mindset" and Terrorism [pdf] - <AUTHOR> http://www.nuff.ox.ac.uk/users/gambetta/Engineers%20of%20Jihad.pdf

<comment><USER2> I liked Clive Thompson's summary of the paper: [http://www.collisiondetection.net/mt/archives/2008/01/this_m...](http://www.collisiondetection.net/mt/archives/2008/01/this_means_that.html#001728)</comment>


1 way HN could REALLY help: ERIC NEEDS YOU - <AUTHOR> http://bfe242.com/please-help-my-awesome-friend-eric-who-is-bat

<comment><AUTHOR> Please help my friend Eric. He really is awesome! And he really could use your help!</comment>