Freicoin: a P2P digital currency delivering freedom from usury - <AUTHOR> http://freico.in/

<comment><USER2> While technically interesting, this project is riddled with fallacious economic ideas that undermines its credibility. I do appreciate it that new kinds of money are being developed though!

A few particularly ridiculous notions from the about page:

\- that money-hoarding is the primary cause of wealth disparity

\- that the role of money as both a savings instrument and a transactional instrument is problematic and leads to financial crises

\- that demurrage would benefit working class people

If governments adopted a currency like this (or if it otherwise became forced upon us), banks or other institutions would issue alternatives and people would flock to them.

<http://freico.in/about/>

<comment><USER3> Apparently it worked for Worgl, Austria during the Great Depression.

<comment><USER4> Demurrage, not freicoin mind you, worked over a very short term in Worgl, and there are questions about whether the success there was sustainable[1]. Demurrage on it's own doesn't operate very differently than the mildly inflationary currencies used in the real world (dollars, euros, etc.). Freicoin on the other hand is promising all sorts of other things.

[1] Quoting at length from:

[http://bionicmosquito.blogspot.co.uk/2012/11/more-on- worgl-v...](http://bionicmosquito.blogspot.co.uk/2012/11/more-on-worgl- velocity-of-money.html)

" _So, would this be sustainable? If not, why not?

I believe the activity would not have been sustainable. I believe that once the taxes in arrears were completely paid and once the people paid in advance to the degree they felt sufficient (one year in advance? Five years in advance? I don't know, but at some point they would stop), the scrip would lose a key part of its attractiveness.

One way a government can ensure the demand for its currency is to demand (or accept) that taxes are paid in the subject currency. The other way is through monopoly legal tender laws. Wörgl obviously could not legislate or enforce monopoly legal tender, so the demand for the scrip could certainly be attributed to the need to pay taxes.

The demand could certainly not be attributed to the demurrage – not when there was the national schilling available – paying interest, and at a one-for-one exchange (setting aside the conversion fee).

Once this tax need was satisfied, what would happen to the desirability of a depreciating-value scrip vs. currency that did not come with a 1% monthly penalty? The answer to me is clear, not that we have to agree. I suspect the depreciating scrip would begin trading at a discount, and sooner than later would be regularly returned to the bank for the national currency, even with the 2% loss. Two percent might be too big a loss when one owes taxes and can satisfy these taxes with the depreciating scrip at full face value. However, when there is no benefit to holding a depreciating currency to the national one, I suspect many would eat the one-time 2% charge to avoid paying the recurring 1% charge.

In my opinion, this is exactly the situation that was immediately in front of Wörgl when the national government put an end to the experiment. Depending on which estimate of taxes in arrears used (see the discrepancy as pointed out in my first article), within one month, but not more than six, all taxes in arrears would have been paid. At that point, I suspect demand for the scrip would have fallen – resulting in the exchange for national currency that I described above."_

</comment></comment></comment><comment><USER5> Someone has invented a digital currency based on EVEN more dubious economic ideas than bitcoin itself!

We did it!

<comment><USER6> Theres a lot more where that's coming from:

<https://bitcointalk.org/index.php?board=67.0>

</comment></comment><comment><USER7> Time-preference (and therefore a non-zero interest rate) is an inherent feature of being a human being, for the simple reason that we all have a limited amount of time to live.

Present goods really are worth more than future goods, and interest is just a reflection of that difference.

Anybody who really "value[s] present and future holdings equally" is advised to try eating next year's crops this year.

<comment><AUTHOR> But that is precisely the point - we each have our own time preferences. I'd rather have 1 apple a day for 1,000 days than 1,000 right now, but if I was a baker making apple pie, I don't know what I would do with just one fresh apple a day.

However both inflationary (USD) and deflationary (BTC) currencies force an external influence on our time valuations. With inflation I'd rather buy things now if possible because the price could go up at any time, whereas deflation results in the opposite: exchanges are delayed as you can get a better price in the future.

Demurrage allows interest rates to drop to zero, which eliminates the influence monetary policy has on time preference, allowing me to be free to choose when and how much I buy without penalty.

</comment></comment><comment><USER8> Ok, so I am a Bitcoin fan and I am a demurrage fan but I couldn't figure out how you could combine these two.

5% of all coins disappear per year. (BTW: Gesell's Wörgl had a much much higher demurrage.) I read this would be equal to the block reward which I guess is the asymptotic value and not the truth from day one (constant block reward as opposed to halfing block reward like bitcoin with 5% demurrage will lead to an equilibrium).

Proof of work: Approximately the amount of money goes into mining that newly mined coins are worth. If the client shows me that I have less in my wallet every day, the block reward is simply worth more. The proposed system means that 5% of the freicoin's money reserve is spent on mining per year. Today's banks most likely burn the same order of magnitude of world's money supply. Hmm, might work but it's a waste of resources to burn 5% of the world economy to keep book of transactions.

Proof of stake: As mining might get excessively expensive if the value of Ƀ rises faster than the reward halves, proof of stake is an option to bring this waste of resources to an end. In Freicoin this would directly reverse the demurrage.

I assume the developers of Freicoin picked 5% exactly because of these issues. Else 25% would be much more reasonable. 5% is the average weekly volatility of bitcoin and was the average daily volatility last year. $ vs € have this volatility yearly. Calling this demurrage is a joke.

[My approach was to have - high - demurrage be cashed out evenly to people as a basic income. Only problem is that you would have to qualify as a natural person to get such a cash-out address which would lead to very very schizophrenic scammers or to total control if governments pick up the idea.]

<comment><AUTHOR> Ok, quite a bit to tackle. Here we go:

 _5% of all coins disappear per year. (BTW: Gesell's Wörgl had a much much higher demurrage.) I read this would be equal to the block reward which I guess is the asymptotic value and not the truth from day one (constant block reward as opposed to halfing block reward like bitcoin with 5% demurrage will lead to an equilibrium)._

The initial distribution is split 20% to miners and 80% through foundation grants via an open, transparent, competitive selection process. The 20% miner subsidy started at approximately ~255frc per block, and linearly decreases to ~95frc per block over 3 years of block time, at which point it will perpetually sustain a monetary base of 100MM freicoins.

 _Proof of work: Approximately the amount of money goes into mining that newly mined coins are worth. If the client shows me that I have less in my wallet every day, the block reward is simply worth more. The proposed system means that 5% of the freicoin's money reserve is spent on mining per year. Today's banks most likely burn the same order of magnitude of world's money supply. Hmm, might work but it's a waste of resources to burn 5% of the world economy to keep book of transactions._

It is excessive in the long-run; the 5% value was chosen for other reasons. However we have ideas for fixing this, but would require a hard-fork (and therefore community acceptance).

 _Proof of stake: As mining might get excessively expensive if the value of Ƀ rises faster than the reward halves, proof of stake is an option to bring this waste of resources to an end. In Freicoin this would directly reverse the demurrage._

And here you get to the meat of the issue, although I'm not sure what you mean by "directly reversing the demurrage". With proof-of-stake along the lines of Meni Rosenfeld's proposal ( _not_ PPCoin), proof-of-stake voting could be used by a plurality of stakeholders to mandate that a portion of the perpetual subsidy go to groups other than the miners. On the freicoin.org forums we've put together an outline of a proof-of-stake proposal nicknamed "republicoin" that would resemble parliamentarian system of proxy-voting for parties which enter majority-vote governments giving them to right to claim budgetary control over a portion of the perpetual subsidy, the amount of which would be negotiated with the proof-of-work voters. Government-by-protocol, if you will.

This would obviously represent a hard fork. There are a lot of issues to sort out first, which is why it's been shelved for the moment.

Baby steps :)

 _I assume the developers of Freicoin picked 5% exactly because of these issues. Else 25% would be much more reasonable. 5% is the average weekly volatility of bitcoin and was the average daily volatility last year. $ vs € have this volatility yearly. Calling this demurrage is a joke._

To be pedantic, it's closer to 4.89% per annum (1 __-20 per block), but 4-5% was the design goal. The reason has to do with interest rates, specifically what Gesell calls "basic interest" and what modern economists call the "liquidity premium." The reasons why demurrage should equal the liquidity premium of money is outlined on our about page and covered in detail in Gesell's manuscript, Natural Economic Order (<http://www.ces.org.za/docs/Gesell/en/neo/index.htm>).

</comment></comment><comment><USER9> I'm confused. Why would anyone hold assets in a currency designed to penalize people who hold assets in that currency?

<comment><USER10> When I was five I asked this question and got a simple answer. I'm not an economist so it is probably incompletely or completely wrong.

If you notice that your money is worth more tomorrow, you are going to save your money and spend it tomorrow. This is true in situations of "deflation".

This sounds good to you, because all you have to do is wait and you'll be better off tomorrow. You don't even have to work to get more stuff.

However, you aren't the only person with this idea. Everyone saves their money in the bank. The people who sell goods and services, sell fewer goods, and maybe go out of business.

The economy slows down.

On the other side, if you design an economy so that inflation exists. People want to spend because in the future their money will be worth (a little bit) less.

Money flows around a lot. People who sells things make money and stay in business. People have jobs and the money is still worth something.

Remember money isn't worth something, trading good fluidly and efficiently is worth something. Money lets us do that. So a currency that lets us do that is good.

If anyone knows more about the situation, please add it. I don't know any economists so this story is probably pretty incomplete.

<comment><USER9> I'm not asking a deep economic question. I'm saying, why would any real business accept payments in a currency that overtly and deliberately penalizes them for holding that currency when alternatives that don't do that are even more available? It just makes no sense to me.

<comment><AUTHOR> Because the customer wants to pay in freicoins, and tools exist (or will exist - I'm talking from the future) to make acceptance hassle-free, and the value will be stable long enough to convert into the currency of your choice.

(Of course the macroeconomic recession-proof nature of demurrage currency makes it desirable for merchants as well, and the zero-interest loans are a boon for entrepreneurship. I'm just saying even if you're skeptical, that shouldn't be a barrier to acceptance.)

<comment><USER11> Why would anyone want to make an interest free loan with an arms length party? I understand that from time to time these things happen, like KIVA, but seriously why would I lend out my money for the opportunity of not getting it back?

<comment><AUTHOR> Then add appropriate interest representative of the risk you are taking on.

When we say zero-interest, we're talking about basic interest/liquidity premium: the interest which is attached to loans simply because of the opportunity cost of lending, not the risk taken on.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Original discussion on HN during it's Indiegogo campaign:

<http://news.ycombinator.com/item?id=4157456>

</comment><comment><USER12> As long as we're in the business of building cryptographic financial systems to test out the theories of economics -- I want a "market basket of commodities" currency to test out Hayek's theories.

(I am not sure if I could make a sustainable business out of it, or even a fundable business, but a chaumian blinded digital token system (software and then multiple hosting options) where people got to then run their own arbitrary currencies, with a lot of them choosing to do commodity or equity/debt currencies, would be a pretty awesome thing. It would probably cost $2-5mm to do, though, and while I think you could avoid most legal challenges by separating out the software dev vs. hosting mints vs. hosting exchange vs. currency underwriting vs. marketing vs. wallets vs. merchant services vs. end users, I'm not sure how you could realistically make money doing it.)

<comment><AUTHOR> You might want to look into Open-Transactions [1], which is a Chaumian blinded token system supporting basket currencies out of the box. You'd presumably have a list of reliable issuers that mint their own tokens backed by real- world assets, then do a basket currency over all of them together.

[1] <https://github.com/FellowTraveler/Open-Transactions>

<comment><USER12> I wonder who that is (is he public?)

<comment><AUTHOR> Chris Odom:

<http://monetas.net/team>

</comment></comment></comment></comment><comment><USER13> 5% fixed seems pretty arbitrary. Would be nice if this could be variable to get the desired liquidity properties, in some kind of feedback control system. I doubt there is one permanent ideal depreciation rate that could be determined ahead of time.

I realize that would be harder to design but isnt a fixed depreciation just a hacky band aid solution compared to a properly designed "control system"?

The ideal target variable might be: what % of existing money that was transacted per month perhaps? Make 50% the target and adjust the depreciation to track this target. Then we get into a debate about that 50% number, but at least we are getting closer to measuring the effect we want.

<comment><USER8> Demurrage's value is equal to miners' reward. This greatly limits Freicoin to not set a too high percentage. Imagine 50% of the existing money reserve going into bookkeeping of Freicoin transactions. To put 5% into perspective consider exchange rate changes between well established currencies. 5% per year is nothing.

</comment></comment><comment><USER14> this entire thing is nonsense. seriously.

> Freicoin's parameters are carefully chosen to eliminate the basic interest > component of investments, called the liquidity premium by economists

Liquidity is a real thing, not a product of currency "parameters" (whatever that means). I prefer to hold dollars over gold because I can go to McDonalds and buy a cheeseburger with dollars, but I cant do that with gold. Thus, if someone was like, would you rather have a dollar bill, or $1.01 worth of a gold bar, most people would probably say the dollar bill. If you wanted to eliminate the liquidity premium of a currency, you would have make the currency super illiquid. (Ironically, they've already achieved this because nobody accepts Freicoin right now)

> Usurious non-zero basic interest distorts the free market, incentivises > poisonous greed, excess, and short-term thinking, and perpetuates a vicious > cycle of boom/bust recessions

No they don't. Maybe if this "argument" had some reasons behind it, I could refute it.

> When business is conducted in Freicoin, participants value present and > future holdings equally, and favor sustainable processes.

This sounds pretty magical. Do YOU value present and future holdings equally? Would you rather that I give you a iPhone now, or in 1 year? Okay, now let's say that iPhone is denominated in Freicoin, what now?

> Separation of money's roles as store-of-value and medium-of-exchange allows > money to flow when it is needed, in good times and bad

Is money flow an issue? In the modern era, has the quantity of cash available ever deterred anyone from spending money?

</comment><comment><USER15> Congrats to the "Freigeld" proponents to actually put something in motion. I wish this would see some adaption so that they could finally get a reality check of their theory (which I personally think wouldn't be very positive)

</comment><comment><USER16> If there's anything on this Earth that's subject to network effects it's currency. If the creators of Freicoin appreciate Bitcoin enough to name their efforts after it, why would they even try to fragment it in the first place? Does demurrage make it _that_ much better?

<comment><USER17> I would argue that the network effects belong to cryptocurrencies in general. Since there can't be any barriers of entry to implementing cryptocurrency exchanges, exchanging them from one to another will always be trivial and cheap, if they have any kind of market.

In fact, it is possible to make a hosted bitcoin wallet, which can be integrated with an exchange, and users can pay in any cryptocurrency the merchant requests.

So I believe that the more different cryptocurrencies, the better.

</comment></comment><comment><USER18> Don't you fuel asset bubbles by targetting 0% interest at all times ?

If your incentive is to just get rid of your money because of the inherent penalty, aren't you tempted to, say, buy overpriced houses, to use a recent example ?

<comment><AUTHOR> It's too lengthy an explanation to get into, but it's the combination of inflation plus low interest plus the usurious liquidity premium that leads to asset bubbles. Gesell covers this in great depth in his work, Natural Economic Order (<http://www.ces.org.za/docs/Gesell/en/neo/index.htm>).

With Freicoin we're talking about counter-balancing that liquidity premium (which, historically, has always been around 5%), thereby eliminating basic interest and keeping price levels stable.

</comment></comment><comment><USER19> does it require an external port to listen on? i started the client but it doesn't seem very happy (i am behind a firewall with no way to open a port).

<comment><AUTHOR> It listens on port 8639, but a firewall rule is not required (it does help). You should be able to connect to other clients that are port forwarding.

There's a small chance that you might have connected to a bad peer and therefore have a limited view of the network. Try restarting the client if the block chain doesn't start downloading within 30 seconds.

<comment><USER19> ok, so i tried again and have the same result (still says "out of sync") and there's what looks like an error icon with a red x bottom right (this is the QT client).

if you want i can file a bug report? if not, no problem (i was just curious, don't have any plans to use it, particularly since it doesn't contain a miner so i'd need to buy something just to play around).

<comment><AUTHOR> A bug report would be helpful if you include the debug.log file in your Freicoin data directory (~/.freicoin on UNIX, Library/Application Settings/Freicoin on Mac OS X, %APPDATA%\Freicoin on windows).

There's a couple of faucets popping up where you can get some free starter coins: Here's one: <http://endlessfreico.in></comment></comment></comment></comment>


Ask HN: Can you count on users to use the backspace/Back button to go back? - <AUTHOR>

I'm designing the pagination for my site. I noticed HN simply has a "More" and assume this is because users, if they want to go back, can simply click Back on their browser. Can we trust users to do this? <comment><USER2> No. Users are fickle and unpredictable.

</comment><comment><USER3> HN is not a typical audience.</comment>


Realtime power grid status and generation mix for France - <AUTHOR> http://www.gridwatch.templar.co.uk/france/ <comment><USER2> France isn't too big of a country so it is all aggregated into 1 bucket. The US splits reliability functions to RTO/ISO entities. You can get similar information from ERCOT, SPP, MISO, PJM, ISO-NE, CAL-ISO...etc.</comment>


Register Domain Names Using Amazon Route 53 - <AUTHOR> http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html

<comment><USER2> They should start reselling SSL certificates now too. Then provide a one-click button in Route 53 to buy a domain with optional SSL and set up the DNS all at once. Even better if you could start a LAMP EC2 instance with the domain/SSL configured and the DNS pointed to it at the same time too.

<comment><USER3> Go on. It should terminate SSL at an ELB instance and spin up two EC2 instances for HA.

</comment></comment><comment><USER4> Earlier discussion -> [https://news.ycombinator.com/item?id=8116233](https://news.ycombinator.com/item?id=8116233)

</comment><comment><USER5> Thanks for posting this, As an owner of a simple CMS ([http://getsimplesite.com](http://getsimplesite.com)). I wanted to offer my customers the ability to buy domain names, and this makes it much simple. However, the pricing is a bit higher, the most registered domains for my customers '.com' ($12) '.in' ($15) are much higher than something that godaddy offers. I'd love to see them offer competitive prices.

<comment><USER6> Anywhere other than GoDaddy would be my suggestion. There are plenty of people that will suggest registrars that they like. My personal favorite is name.com, great support!</comment></comment>


Today is a bad day to buy a GPS watch - <AUTHOR> http://chrislukic.com/android-fitness/ <comment><USER2> Well, won't these companies finally open their silos to Google and Apple? What is to fear here?

<comment><USER3> 2 things. My guess is they'll hold onto that data like gold, because it's their only leverage. And 2 you'll have bought a dedicated runners watch at $250+ when you can get an integrated watch that can run apps and give you directions and recieve text messages for less.</comment></comment>


Unicode support in MySQL is... - <AUTHOR> http://www.codeka.com.au/blog/2014/02/unicode-support-in-mysql-is-- <comment><USER2> _Now presumably there is some drawback from doing this, otherwise "utf8mb4" would be the default (right?) but I'll be damned if I can figure out what the drawback is._

There are a couple, and they are insidious. From [http://geoff.greer.fm/2012/08/12/character-encoding-bugs- are...](http://geoff.greer.fm/2012/08/12/character-encoding-bugs- are-%F0%9D%92%9Cwesome/):

 _This is when I discovered that InnoDB limits index columns to 767 bytes. Why is this suddenly an issue? Because changing the charset also changes the number of bytes needed to store a given string. With MySQL's utf8 charset, each character could use up to 3 bytes. With utf8mb4, that goes up to 4 bytes. If you have an index on a 255 character column, that would be 765 bytes with utf8. Just under the limit. Switching to utf8mb4 increases that index column to 1020 bytes (4_ * _255)._

And later:

 _You might say, "OK, now we're finished, right?" Ehh… it's not so simple. MySQL's utf8 charset is case-insensitive. The utf8mb4 charset is case- sensitive. The implications are vast. This change in constraints forces you to sanitize the data currently in your database, then make sure you don't insert anything with the wrong casing. At work, there was much weeping and gnashing of teeth._

Good luck. The real solution is to switch to something that isn't MySQL. The project in that post ended up switching to Cassandra. For new SQL stuff, I now use PostgreSQL.

Edit:

To those of you who point out that utf8mb4_unicode_ci is case-insensitive, we did try that. This whole fiasco happened two years ago, and I don't remember what the show-stopper was, but we decided not to use that collation. Whatever issues we had with it were bad enough to warrant switching to utf8mb4_bin and sanitizing everything. Really, the solution is to switch away from MySQL and forget about collations and encodings.

<comment><USER3> _> For new SQL stuff, I now use PostgreSQL._

That's so true! Years ago I switched almost all projects to PostgreSQL. I never looked back. I use MySQL only for very legacy applications.

MySQL has so many bugs an inconsistencies, unicode support is only one of many issues. (Unsafe GROUP BY, silently cutting concatenated text fields when the result grows too big, silently converting invalid dates to '0000-00-00', and so on ...)

In the past, MySQL had some performance advantages over PostgreSQL, but only for MyISAM, i.e. without real transaction safety. Nowadays, if you want to trade ACID for speed, you wouldn't use MySQL but some "NoSQL" database instead. So even from a performance point of view, I see no point in using MySQL for anything but legacy stuff.

<comment><USER4> I switched to _sqlite_. I've done my time on SQL servers. In my view, they simply have too much complexity for many scenarios. Basically, one big database server equals one big downtime when issues occur. Sharded data architecture on the other hand can design for failure and maintain graceful degraded performance, not to mention optimized resource allocation and the option of adopting vastly different security and backup policies across different parts of the datastore (eg. encryption, snapshots, etc.). Yes, you lose database-internal consistency guarantees. No, that doesn't mean you have to lose consistency.

<comment><USER5> I did that in 2006. A big win was maintenance, since downloading/uploading a copy of the database was so simple. Eventually I had performance problems when doing read-write-read-write stuff, since writing locks the entire db file.

You could argue I shouldn't be doing that, and you may be right. But I just switched back to MySQL, and the problem went away.

<comment><USER6> SQLite fixed that issue in 2010 with write ahead logging (version 3.7). Writes go to a separate file so there is no impact on readers of the main file. It is a little more complex than that and described at [https://www.sqlite.org/wal.html](https://www.sqlite.org/wal.html)

</comment></comment></comment></comment></comment><comment><USER7> Anther nice "feature" of mysql: If you have a table configured to UTF-8, and you use utf-8 client encoding but then accidentally try to send something that's not UTF-8 (shit happens), then mysql will happily accept your data and truncate it on the first byte it doesn't understand.

It issues a warning, but most frameworks don't care to inform the caller if a warning has happened (some don't even provide a way to access them).

Yes. You should not be sending invalid data to your database, but holy sh*t, your database shouldn't (mostly) silently alter the data you entrust it with.

If the input data is wrong and you can't deal with it, blow up in the face of the user. Don't try to "fix" it by corrupting it.

Disclaimer: This happened to me in 2008 ([http://pilif.github.io/2008/02/failing-silently-is- bad/](http://pilif.github.io/2008/02/failing-silently-is-bad/)), so it might have been fixed since, but stuff like this made me lose my trust in MySQL long ago.

<comment><USER8> Except for causing annoyances, the truncation of data may also have security implications. Last year, I found that WordPress (which has the utf8 character set by default), was vulnerable to PHP object injection because their filter could be bypassed by (ab)using the truncation of strings in MySQL. For more details: [http://vagosec.org/2013/09/wordpress-php-object- injection/](http://vagosec.org/2013/09/wordpress-php-object-injection/)

</comment></comment><comment><USER9> I recently moved an application off mysql to postgresql after hitting this error. After over a decade of mysql doing things their way and it always being a pain in the ass for everyone else when is enough, enough?

I no longer develop software to run on mysql because I like my sanity.

<comment><USER10> Interesting, pretty much every system has insane things in it. Is postgresql an exception?

<comment><USER11> Certainly not! However, its WTFs per minute count is far lower than MySQL.

I started off my career as a PHP/MySQL developer. PostgreSQL is definitely years ahead of MySQL. It used to be that MySQL had far superior read performance for simple queries, but that hasn't been true since around 2006. Also Postgres' SQL optimiser is really good.

<comment><USER10>
      > PostgreSQL is definitely years ahead of MySQL

I guess this does not apply to replication, upserts, etc. Well, I think I will just grab some popcorn and wait. It will be fun to watch how those who never bothered to learn MySQL (and by this I don't only mean its peculiarities) will get bitten for not bothering to learn PostgreSQL.

<comment><USER12> Why? Because you think everything is equal, everything has its own gotchas and not one is better than the other?

That is against all history, not only in software. Postgres is obvectively better (safer, better engineered, easier to use, etc.) than MySql, just as Python is objectively better than PHP, and an AK47 was better than most other assault rifles of its time.

<comment><USER13> The lack of upserts is a problem in postgres, as much as some people say they can get away without them. There are objective concurrency issues with the lack of it, that have been acknowledged by postgres developers when they started work on upserts.

<comment><USER14> > There are objective concurrency issues with the lack of it, that have been > acknowledged by postgres developers when they started work on upserts.

These concurrency issues don't fully go away by adding the feature, which is why it is taking time to work out the desired behavior there.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> > _Why they call this encoding "UTF-8" is beyond me, it most definitely is not > UTF-8._

This is a confusion of concepts. That an encoding can encode a particular value does not mean all applications using that encoding will support that value. You can store any size number you like into a JSON number, but if you send me a 256-bit value in a field for temperature in celsius, I'm going to give you back an error.

Encodings ease data exchange, they do not alter the requirements or limitations of the applications using them. MySQL's original unicode implementation supported only the Basic Multilingual Plane, so unsurprisingly, characters outside that plane are rejected. That would be the case regardless of the particular encoding used.

What you want is support for all Unicode characters. This is a reasonable request, but it is decoupled from the encoding used to communicate those characters to MySQL.

<comment><USER16> Say what? UTF8 allows for any character that the Unicode standard defines. If they wanted to restrict a characterset to the BMP, then they should call it UTF-8-BMP.

</comment></comment><comment><USER17> That people still _use_ MySQL for anything new is something I find completely amazing.

But then again, masochism is a reasonably common, if not normal, thing.

<comment><USER18> IMO this is a combination of "doesn't know any better", "works for me", and "it's easy enough, don't bother me with complicate solutions".

Which is unfortunate as the "complicate" solution is often just the right solution but if the wrong solution doesn't blow up into their faces in 99% to 90% of the use cases, many people are satisfied enough with it.

I think these reasons also play a role in PHP's ongoing popularity.

</comment></comment><comment><USER19> Concerning this issue please also consider Mathias Bynens's article from 2012 [http://mathiasbynens.be/notes/mysql- utf8mb4](http://mathiasbynens.be/notes/mysql-utf8mb4)

It has a good treatment of how to migrate encoding-wise which includes additional precautions not mentioned in the originally linked article.

</comment><comment><USER20> Also, if you set a column charset to "Latin1", guess what encoding MySQL actually gives you. If you guessed "like windows cp1252, but with 8 random characters swapped around", have a cookie.

(Though I have to admit, based on the title I was hoping for a deeper problem. MySQL has plenty of stupid gotchas like this, but it's (marginally) easier to deal with them than to cluster postgres)

</comment><comment><USER21> I also hit this issue when saving wikipedia pages to database, since some languages use these "4-byte UTF-8":s.

AFAICR, there is performance issues about this. Western text does not "need" this representation and thus the MySQL utf8 handling could be faster.

I was also shocked to learn this while using MySQL 5.3 (where utf8mb4 is missing), which led me to upgrade to the 5.5 alpha.

From [https://dev.mysql.com/doc/refman/5.5/en/charset-unicode- utf8...](https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html)

"The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters.

As of MySQL 5.5.3, the utf8mb4 character set uses a maximum of four bytes per character supports supplemental characters"

PS. I have migrated to MariaDB. Take this chance to move away from Oracle MySQL!

</comment><comment><USER22> Does anyone know if MariaDB fixes this issue by default?

<comment><USER23> It can't. Because of index sizes it would mean incompatibility.

But it's not really all that much of an issue - just use the mb4 character encoding.

The hard part is knowing you need to :)

</comment></comment><comment><USER24> I can recommend reading the comment from Alex on there as well; it has some good info on UTF-8:

[quote] 😸 works just fine in PostgreSQL by default (Python too).

The UTF-8 issue is pretty complex, so it's not really a surprise that implementations (like MySQL's) are incomplete. The basic encoding from the code points into UTF-8 bytes could handle up to 30 bits of data (first byte of 0xFC indicating 5 following bytes with 6 bits of the code point each (6 bytes for 36 bit code points are only impossible because UTF-8 bans 0xFF and 0xFE as byte values other than for the Byte Order Mark). Yet various standards attempt to restrict the range, currently with RFC 3629 putting the ceiling at 0x10FFFF (4 bytes per code point). That RFC doesn't bother to justify the constraint, other than as a backwards compatibility band-aid with the more limited UTF-16. The point isn't to rag on UTF-16, which made sense once, but to express sympathy for the various attempts made to avoid coping with the full, 30-bit range the underlying encoding can actually handle.

Not only is there a wash of hodgepodgery on the range, but UTF-8 (and other similar encodings) can put small values in large byte encodings. There's nothing stopping someone from just using a 6-byte long, 30-bit codepoint block of RAM for each character, even just ASCII (obviously this violates a bunch of RFCs, but the coding system _does_ provide for it). The result would confuse many UTF-8 parsers (and blocked by the more complete ones, a Pyrrhic victory), since ASCII characters are expected to be exactly one byte long in UTF-8, not _seven_. Even in RFC-compliant UTF-8, an ASCII character codepoint value can be encoded in four different ways. Example: an "a" (ASCII 97, hex value 0x61) can be encoded as any of (pardon any bit errors, I'm doing this off-the-cuff, late at night...):

00111101 - 0x61 - conventional ASCII 11000000 10111101 - 0xCO 0xBD - two-byte UTF-8 11100000 10000000 10111101 - 0xE0 0x80 0xBD - three byte UTF-8 11110000 10000000 10000000 10111101 - 0xF0 0x80 0x80 0xBD - four byte UTF-8

The latter three overlong encodings aren't considered canonical, and software devs have to fix them to make string matching efficient and so forth, to save space, and most worrisomely to prevent attackers from sliding special characters into strings to crack systems - say by using larger, noncanonical encodings to evade filters that would catch and block the canonical, shorter encodings.

Some developers would try to limit UTF-8 characters to four bytes because that's a power of two, and fits comfortably into a 32-bit long int.

UTF-16 also complicates UTF-8 with the banning of codepoints between 0xd000 and 0xdfff in UTF-8, used as "surrogate pairs" in UTF-16. See [http://www.unicode.org/version..](http://www.unicode.org/version..). for an update that mentions this explicitly)

Anyway, the general idea is that I can sympathize with MySQL having incomplete UTF-8 support, most implementations _are_ incomplete in some way, and one could argue the RFC's variant is pointlessly incomplete itself (no 24 and 30 bit code points, though apparently UNICODE's Annex D _does_ allow the use of those two larger sizes for characters outside of the UNICODE range, perhaps widely interpreted as a constraint of UTF-8 itself instead of being about the UNICODE subrange of UTF-8). Implementations vary enormously, and with good reason (see [http://www.unicode.org/L2/L200..](http://www.unicode.org/L2/L200..). for some of them).

Fortunately, MySQL's limitation doesn't trouble me, since I do almost all my work in PostgreSQL or some non-SQL database or another anyway. ;-P [/quote]

<comment><USER25> I don't know; to me it reads like someone trying to show off, but I don't think it's helpful.

> The latter three overlong encodings aren't considered canonical, and > software devs have to fix them to make string matching efficient and so > forth, to save space, and most worrisomely to prevent attackers from sliding > special characters into strings to crack systems - say by using larger, > noncanonical encodings to evade filters that would catch and block the > canonical, shorter encodings.

This is misleading. "Software devs" don't have to "fix them". Overlong encodings in UTF-8 are invalid since Unicode 3.1, precisely because of the security considerations, and conformant implementations are required "not to interpret any ill-formed code unit subsequences" (Unicode Standard section 3.9). RFC 3629 also states that "[i]mplementations of the decoding algorithm above MUST protect against decoding invalid sequences."

Fortunately, it's pretty straightforward to achieve this, and the Unicode standard contains a nine-row table listing all valid combinations of ranges of one to four bytes.

</comment></comment><comment><USER26> It'd be really interesting to hear from an engineer at one of the big MySQL users (I'm thinking Twitter, Facebook, Github) how they solve this problem.

</comment><comment><USER27> This bit me pretty hard. I was trying to debug other Unicode issues an application had, and in my infinite and enduring wisdom decided to use one of those "turn text upside down" sites to generate sample data. Turns out they use a bunch of very high codepoints (Mormon text or something) and MySQL choked on them. Took me ages to figure out that was the issue.

</comment><comment><USER28> UTF-8 is handled correctly by Firebird and Flamerobin You can create a new db with utf-8 charset as default and then you can insert/select

Unicode codepoint U+1F638 a perfectly valid Emoji character

[http://flamerobin.blogspot.ro/2014/02/utf-8-is-handled- corre...](http://flamerobin.blogspot.ro/2014/02/utf-8-is-handled-correctly-by- firebird.html)

</comment><comment><USER29> Does anyone else just see squares instead of whatever unicode symbol it is supposed to be? I'm using Chrome 33.0.1750.117 m

<comment><USER2> It's an emoji thumbs-down. You should be able to see it using Safari or Firefox on OS X. There is an outstanding Chrome issue related to this: [https://code.google.com/p/chromium/issues/detail?id=62435](https://code.google.com/p/chromium/issues/detail?id=62435)

<comment> ezequiel-garzon Available here [1] on page 18, or just look for "1F44E". I found the twist really clever, and first thought the author had simply used a generic block.

I didn't spend much time reading the cited document, but it looks like some existing glyphs may be merged with newer ones under certain conditions. What a mess... I feel Unicode has tried to compass way too many things (even italics!). Go figure...

[1] [http://www.unicode.org/L2/L2011/11149-webdings.pdf](http://www.unicode.org/L2/L2011/11149-webdings.pdf)

</comment></comment></comment><comment><USER30> I think it's actually CESU-8 encoding: [http://www.unicode.org/reports/tr26/](http://www.unicode.org/reports/tr26/)

I'm guessing it's implemented like this for performance reasons and calling it utf-8 was just a marketing ploy as everyone knows we should always use utf-8 for everything...

</comment><comment><USER31> Interestingly, Hacker News does not show the "thumbs down" emoji in the title. No UTF-8 support either?

<comment><AUTHOR> I think it was removed by the moderators, it was definitely there before.

</comment></comment><comment><USER32> I'd this same issue a couple of days ago. If you use Rails you can use my migration: [https://gist.github.com/eduard- io/9268175](https://gist.github.com/eduard-io/9268175)

</comment><comment><USER33> Is this also an issue with Google's Cloud SQL or Amazon RDS?

From what I understand these have the same interface as MySQL but internally are different.

<comment><USER34> RDS is just hosted, managed MySQL (or Postgres, or Oracle). Don't know about Cloud SQL.

</comment></comment><comment><USER35> Unicode support in <insert name of popular library or program that touches characters> is...

</comment><comment><USER36> every time I see a MySQL is XYZ article I think about switching to MariaDB or PostgreSQL.

</comment><comment><USER37> Sounds like the OP should read "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" over at: [http://www.joelonsoftware.com/articles/Unicode.html](http://www.joelonsoftware.com/articles/Unicode.html)

<comment><USER38> In this article, Joel says he "decided to do everything internally in UCS-2 (two byte) Unicode". He fell into the same trap that MySQL did and the software he describes would also fail on Emoji.

It is still a very informative piece and Joel was way ahead of the curve by supporting and evangelizing Unicode at all in 2003. But it is not the best article to point the OP at, as it does not mention the BMP or discuss proper handling of characters beyond the BMP.

<comment><USER39> I never got that. He wrote a great article about the issue and then ended with using UCS-2. I always wondered if there was something I missed that made him choose UCS-2 over UTF-8, since UTF-8 can represent every Unicode code point.

<comment><USER40> I imagine it's linked to Win32 and .Net using UCS-2 internally, since then there's no need to convert strings before and after API calls.</comment></comment></comment></comment>


Some People's Brains Are Wired for Languages - <AUTHOR> https://www.scientificamerican.com/article/some-people-rsquo-s-brains-are-wired-for-languages/ <comment><USER2> This article must have been written in 15 minutes. Painfully lacking in detail. The juicy bits:

"A team of researchers looked at the structure of neuron fibers in white matter in 22 beginning Mandarin students. Those who had more spatially aligned fibers in their right hemisphere had higher test scores after four weeks of classes, the scientists found."

The terrible conclusion:

"What language aptitude really is and how it manifests in the brain are complex questions, touching on the nature of attention and even consciousness."

<comment><USER3> So, by brains wired for languages they actually meant "wired" for teaching methodologies at schools that are known not to be effective for teaching languages to begin with.

<comment><USER4> The first thing I thought was: so they're good at taking tests? How is this related to actual langue.

</comment></comment></comment><comment><USER5> As a dyslexic, it seems that my brain does not process sound in the same way that those good at learning language does. I was recently talking with an Emeritus Professor of Neuroscience - it seems that my brain can remember how words sound because I can remember someone saying the word, however, words for me do not have phonics attached to them, and understanding the sounds that letters make together is incomprehensible for me. Related :[http://www.bu.edu/research/articles/tyler-perrachione- dyslex...](http://www.bu.edu/research/articles/tyler-perrachione-dyslexia- paradox/)

</comment><comment><USER6> The most succinct and truthful sentiment about language learning that I have come across:

"For kids, it's about biology; for adults, it's about desire and determination."

-Christine Gilbert, "Mother Tongue: My Family's Globe-Trotting Quest to Dream in Mandarin, Laugh in Arabic, and Sing in Spanish"

<comment><USER7> Children don't have a desire and determination to communicate!?

Children who don't yet speak any language have 100 times more motivation than an adult who already speaks the language around them - particularly if that language is the words lingua franca.

<comment><USER8> You missed the point. Motivation is the determining factor for adults.

<comment><USER7> My point is it's the determining factor for kids as well. They _want_ to speak.

<comment><USER8> OP never suggested otherwise. Motivation matters for adults _because_ not all adults are equally motivated.

<comment><USER6> Ok, maybe that quote was too brief.

To expand it, almost every baby is born with the ability to speak any language. [1]

Some of the 'biological' categorization here comes from research that finds that the fundamentals sounds of human language are much like bird song in that the all languages share commonalities, despite their differences. [2] Language is more about nature than nurture, at its very root.

As early as age one, the ability to speak other languages other than the most dominant languages the baby rapidly diminishes. [3]

Studies of Genie, a child who was raised in inhuman conditions until around age 13, found that, despite improvement, she never was able to develop her language abilities to adult level. [4]

As for motivation, learning a language to intermediate-level proficiency may be one of the most difficult things you can learn, even a relatively simple language like Spanish. It is so easy to get _frustrated_ and lose confidence, especially as an adult who is used to being "good" at things like abstract thinking and fixing/making complex software systems.

[1] [http://www.livescience.com/4459-infants-amazing- capabilities...](http://www.livescience.com/4459-infants-amazing-capabilities- adults-lack.html)

[2] [http://www.dailymail.co.uk/sciencetech/article-2600623/Langu...](http://www.dailymail.co.uk/sciencetech/article-2600623/Language- biological-instinct-Babies-dont-learn-develop-speech-theyre-BORN-ability.html)

[3] [http://www.nytimes.com/2011/10/11/health/views/11klass.html](http://www.nytimes.com/2011/10/11/health/views/11klass.html)

[4] [https://en.wikipedia.org/wiki/Genie_(feral_child)](https://en.wikipedia.org/wiki/Genie_\(feral_child\))

</comment></comment></comment></comment></comment></comment><comment><USER9> I'm curious if there is an emergent component to learning language?

Anecdotally, I was raised in a non-religious home, in a community that remains to this day very religious. Other kids had the correctness of the Bible hammered into their heads and struggled to accept language that contradicted it. Granted this is through the lens of time, but I vividly remember one kid reacting very strongly to a comic book, as if it's very existence meant reality itself was about to implode.

On the other hand, I was exposed to multiple STEM topics early and had it explained that experimentation leading to discovery are the way.

I'm not saying religious thinkers are idiots. I've met religious folks that are wicked smart in STEM topics. But in my experience, they too were still encouraged to question, not just accept it, and largely raised under the modern Church acceptance of evolution and the like.

Where I'm going is the restricted access to varied language early on impacts this? It seems to fit too with rural areas, small villages, heavily favoring a local slang and "way". Reducing access to alternate "language" (it may still be English, but language of a very narrow scope)?

Does anyone know if this is a researched topic?

<comment><USER10> In linguistics, there is the Sapir Whorf hypothesis [1], in which it is conjectured that language affects the speakers world view and/or thought processes. If you read the George Orwell novel 1984 [2], you might recall the use of Newspeak, an invented language designed so that dissidents would be unable to express themselves, and thus not have treasonous thought. The Sapir Whorf hypothesis is actively debated and not fully accepted by linguists, you can see some of the debate at [3].

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

[2] [https://en.wikipedia.org/wiki/Nineteen_Eighty- Four](https://en.wikipedia.org/wiki/Nineteen_Eighty-Four)

[3] [http://linguistlist.org/ask-ling/sapir.cfm](http://linguistlist.org/ask- ling/sapir.cfm)

<comment><USER11> Sapir-Whorf is not just "not fully accepted". Most linguists believe that linguistic determinism, which is what most people are talking about when they refer to Sapir-Whorf, is false.

Linguistic relativity is the weaker form of the Sapir-Whorf hypothesis that is largely accepted, but it doesn't come close to supporting the 1984 can't form treasonous thoughts without the requisite language scenario.</comment></comment></comment>


Diceware Passphrases - <AUTHOR> http://world.std.com/~reinhold/diceware.html <comment><USER2> The EFF improved on Reinhold's original Diceware wordlist which included unmemorable and short words such as "wq", "ll" and "zf" by replacing them with longer, actual words. The same technique still applies.

[https://www.eff.org/deeplinks/2016/07/new-wordlists- random-p...](https://www.eff.org/deeplinks/2016/07/new-wordlists-random- passphrases)</comment>


Gas is not a transition fuel to a safe climate. That ship has sailed - <AUTHOR> https://www.smh.com.au/environment/climate-change/gas-is-not-a-transition-fuel-to-a-safe-climate-that-ship-has-sailed-20200826-p55pec.html <comment><USER2> If only we had a source of relatively clean power that was efficient to generate and created enough energy to last until we can make renewables sustainable. Something extremely energy dense with the ability to generate regardless of conditions...</comment>


For all you hacker wannabe's - <AUTHOR> http://www.hackertyper.com/

<comment><USER2> Lol, this is awesome. Now, if only I needed to film an episode of CSI, Die Hard 8, or some other drama that happened to have a hacker ruining the world...

For what it is worth, I was expecting to be further informed on how my language choice was not appropriate and how fortran was the one true language.</comment>


Show HN: Qranberry, easy QR codes for the people - <AUTHOR> http://qranberry.me

<comment><AUTHOR> I'm launching this in very beta. The idea is to give an easy way to use QR technology to the people: rent stuff, promote conferences, bands, etc. Plans for businesses will come soon. Thanks for your feedback.</comment>


Open Pixel-art Platformer - <AUTHOR> https://github.com/DDR0/open_pixel_platformer <comment><USER2> At first I wondered why this was on Hacker News (there are zillions of open source games out there) - but there is some more information in the linked forum post that makes it interesting: [http://www.pixeljoint.com/forum/forum_posts.asp?TID=16828&PN...](http://www.pixeljoint.com/forum/forum_posts.asp?TID=16828&PN=1)

Looks like the key points are "fairly modern engine with full hardware acceleration", "it runs on darned near everything", and "a bunch of pixel-art specific features in it; we wanted to be able to do a lot of the typical pixel-art tricks you're familiar with from classic games".

</comment><comment><USER3> It's a minimalistic game demo based on the Anura engine which is the engine of Frogatto (old-school styled platformer with pixel graphics).

Why should you be excited?

Well, the engine supports nearly every trick Bret Victor has shown in his Inventing on Principle talk. While looking really old-school it's actually rather advanced modern engine with a lot of love and advanced computer science put in it. For example it's scripting engine uses pure functional programming disguised to look like something imperative.

</comment><comment><USER4> Shameless plug, I also work on an open-source pixel-art platformer [1]. It's written in Lua and runs on Windows, OSX, and Linux. If you're looking to learb game development, we're always looking for experienced developers to help out.

[1] [https://github.com/hawkthorne/hawkthorne- journey](https://github.com/hawkthorne/hawkthorne-journey)

<comment><USER5> The immediate screenshot on the OP is a big win.

</comment></comment><comment><USER6> Latest checkin: "Added a toucan." :D

</comment><comment><USER7> Ah, pixels. From technological limitation, to art.

<comment><USER8> That said, I wish there was more innovation in the genre, if that makes any sense.

</comment></comment><comment><USER9> If I understand correctly, the sourcecode (GPL) of the engine seems to be at:

[https://github.com/anura-engine/anura](https://github.com/anura-engine/anura)

(see [http://www.frogatto.com/developer](http://www.frogatto.com/developer) for details)

</comment><comment><USER10> Can't find the source code for the engine, so it's pretty worthless to me...this is like someone open sourcing a Unity demo, there isn't anything technical they've released just some graphics and game level maps which typically you can't reuse in your own code anyway.

<comment><USER11> The engine is open source and available at [https://github.com/anura- engine/anura](https://github.com/anura-engine/anura)

</comment></comment><comment><USER12> .. there's no source code.

<comment><USER13> i think there is. the .cfg files include some kind of instructions, probably for the engine.

</comment></comment><comment><USER13> seems like this is "only" the art and the .cfg files for usage with the anura [1] engine.

[1] [https://github.com/anura-engine/anura](https://github.com/anura- engine/anura)</comment>


Fortnite teen hackers 'earning thousands of pounds a week' - <AUTHOR> http://www.bbc.co.uk/news/technology-46624136 <comment><USER2> I think the real issue here is not the kids doing the hacking but the parents who know what they're doing and let them continue - even help them bank their earning in some instances. That makes the parents just as responsible in my opinion.

We've all taken stupid risks as kids. I'd done my fair share of hacking too when I was younger. But I tread a very fine line because I knew my parents would have gone _mental_ if I was caught. Just as I would if I found out my kids were doing something reckless and illegal. So to endorse such behaviour in their own children really doesn't cast them in a good light.

Sorry if this sounds high and mighty. I know comments about parenting often can sound "holier than thou", but the parents in that article have crossed the line by in my personal opinion.

<comment><USER3> I don't agree that much with what you are saying, mainly from personal experience.

1\. Even if parents find out they probably have no idea what it means (legally or literally) 2\. You can open a bank account really easily online for free. (You can find photoshop ID templates for every possible country, maybe they check them more nowadays but some years ago you didn't even need to change any of the hashed numbers and it would be accepted by most services, even PayPal) 3\. I did get caught at one point by my parents, they proceeded to take away every bit of technology they could find, so I ended up doing more shady stuff (on a lended machine at mcdonalds) to make enough to buy a new computer and keep on with life as usual. Had to re-buy a new computer every year or so when they found out.

My perspective on the thing is that most parents won't even fathom the idea of what hacking is, so finding out their kid is a "hacker" won't change a thing in their day. And if it does a "hacker" will always find a way to keep on going anyway, trying to not get caught along the way, it's the job spec.

Now what I can agree on is that if the kid tells their parents they're getting money illegally and asking their parents to hold it in their bank account, and the parents agree, then that's just plain stupidity, and a lot of that goes on in the world, parent or not parent...

<comment><USER4> > _Even if parents find out they probably have no idea what it means (legally > or literally)_

At least one kid admitted that his parents know exactly what he's doing, in the article:

> _He said he knew what he was doing was illegal, but his parents were aware > of his activities and had not stopped him._

Furthermore, parents aren't idiots. I got into some shit as a kid, and while my parents weren't the tech-savviest folks around, they were usually pretty quick to catch on that something was amiss. And keep in mind, that today's parents probably grew up with computers themselves.

<comment><USER5> > Furthermore, parents aren't idiots.

Plenty of adults are idiots, and many of those are parents.

<comment><USER5> Relevant example in the news today:

[https://www.nbcnews.com/news/us-news/maryland-father- accused...](https://www.nbcnews.com/news/us-news/maryland-father-accused- directing-his-daughter-5-steal-package-porch-n950436)

</comment></comment></comment></comment></comment><comment><USER6> I receive 2-5 emails a week with 'someone has tried to log in to your account' from Epic games. After seeing this article it makes me wonder how much prevention of brute forcing passwords Epic games are providing vs Just how persistent these kids really are.

<comment><USER7> 2-5 attempts per week sounds like their brute-force prevention can't really be asked to do much more.

<comment><USER8> I was getting a few a night for a couple of weeks, with no option to permanently lock my account. I had 2-factor enabled and that did nothing. There's no way to disable the emails. I was just getting endlessly spammed by someone who was never going to guess a 24+ character password via any dictionary or bruteforce. Very annoying.

</comment></comment></comment><comment><USER9> While stealing is obviously wrong, there's no real impact from losing a video game account. For the victims hopefully this will be a cheap lesson in the importance of following good security practices: choose strong passwords, use multi-factor authentication, and keep your devices free of malware.

<comment><USER10> Do you think the same when people get their jewelery stolen? The sentimental value of in-game cosmetics might be the same to a lot of people.

<comment><USER9> I would think the same if the jewelry cost like $5. It's just a game, don't take it too seriously.

<comment><USER11> "It's just a game" works when it's about Tetris or Solitaire. If it's something like WoW or Eve Online, where you need to invest years of effort and/or thousands of dollars, it's no longer "just a game".

<comment><USER9> It's just a game. There's nothing wrong with playing games, but you're paying for _entertainment_. It's not an investment.

And honestly those who devote years to playing WoW or whatever are more deserving of pity than sympathy. People can spend their time however they like but it's just such a sad waste of human potential.

<comment><USER2> You could prefix any statement with "it's just a" and it wouldn't change things.

Just because you don't care it doesn't mean it's

        a/ any less of a crime
        b/ any less important to the victim

I mean where would _you_ draw the line? It's just car (after someone steals a car) because you happen to take the train to work? Or "it's just a house" (after an arson attack) because you happen to live in a hotel? And why should anyone else care about your personal property - physical or virtual - if/when that gets stolen if you don't consider other peoples property to be important?

Thankfully the law isn't defined by your specific benchmark of personal importance.

<comment><USER9> The law is defined by the fair market value of the thing stolen or destroyed, and by the risk or damage to human life. That seems like a reasonable way to draw the line. Any sort of working car is worth a lot more than a video game account.

And there's obviously no comparison between the impact of an _arson_ attack versus anything that could happen related to a video game. I can't fathom why you'd even bring that up. Let's have a sense of proportion.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> > the teenager said he had spent about £50 of his pocket money to build up a > collection of skins

Isn't that the underlying problem? In-game purchases have really disrupted the economics of online gaming; £50 used to be something around the final price for the whole game.

<comment><USER13> The underlying problem here is theft.

You're discussing an unrelated problem.

<comment><USER14> It's not unrelated if the problem exists solely because these kids can make money off of microtransactions, and would otherwise be unable to if the game was a flat price.

<comment><USER13> Valuable property existed prior to 2016, including digital assets. There are many valid criticisms of these business models but none of them are a significant factors in explaining this behavior.

If the parents won't discipline these children, the state needs to discipline those parents.

<comment><USER9> While account hacking is wrong and should be punished, the state has limited enforcement resources. I would prefer that law enforcement focus on children who commit more serious crimes, like breaking into cars, littering, or spraying graffiti. Video games are way down the list of priorities.

<comment><USER13> True

</comment></comment></comment></comment></comment></comment><comment><USER15> This is a good learning opportunity for the kids to use better passwords. Hackers rely on large lists of leaked hashed passwords and usernames. Not sure how good Fortnite security is but it's easy to enforce longer passwords, delays and account locks on repeated bad password entry and of course 2FA which they do support and reward players for using

</comment><comment><USER16> What we really need is minimum authentication standards with incentives for compliance - password reuse isn't limited to Fortnite.

<comment><USER17> I get emails from Epic to enable 2 factor often enough, I refuse because I have a strong password, I don't want to give them my phone and I have nothing to lose if I lose my account since I am not spending anything on it.

It should be much harder to change the email linked to an account, if the email password is in the data leaks then there is really nothing you can do.

<comment><USER18> I hate the tendency to demand phone number to activate two factor. I see no practice reason why not simple TOTP isn't good enough. It's probably not a practical reason though...

<comment><USER19> Probably want phone as fallback auth for the inevitable people who lose their TOTP device and didn't save any emergency codes.

<comment><USER20> That could be setup as an option. The fact that there is no option provided and a phone number is mandatory means that they want to be able to track people with a globally unique identifier.

</comment></comment></comment></comment></comment><comment><USER21> Phishing not hacking is the term you look for.</comment>


Ceylon: Quick introduction - <AUTHOR> http://ceylon-lang.org/documentation/1.0/introduction/ <comment><USER2> I was wondering how Ceylon is supposed to be different from Scala. I found this blog post from 2011 that compares Scala, Ceylon, and Kotlin: [http://blog.lunatech.com/2011/08/24/scala-ceylon-kotlin- goal...](http://blog.lunatech.com/2011/08/24/scala-ceylon-kotlin-goals). Basically, Scala aims to be concise and "scalable" by explicitly aiming for both OOP and FP support. Ceylon aims to be an improved Java that is more concise, powerful, and modular, while still being familiar. Ceylon also aimed to be less complex than Scala while still being as powerful, but I don't know if it has succeeded.

There is also this huge 2013 article comparing eight JVM languages with each other: [http://zeroturnaround.com/rebellabs/the-adventurous- develope...](http://zeroturnaround.com/rebellabs/the-adventurous-developers- guide-to-jvm-languages-java-scala-groovy-fantom-clojure-ceylon-kotlin-xtend/)

<comment><USER3> I really like the look of kotlin, but is there a release date for 1.0?

<comment><USER4> I've heard Q4/2014 thrown around. I wish Jetbrains updated their Kotlin blog more often than every 2-3 months.

</comment></comment></comment><comment><USER5> In the same space there is Haxe [http://haxe.org/](http://haxe.org/) . It's also an Algol-like language that targets both JavaScript and Java (and flash, c++, .net, php).

<comment><USER6> Haxe has a few more language features (abstract types) and compiler features (dead code elimination) but it lacks a few from Ceylon such as union types.

The Haxe compiler is much, much faster than Ceylon. I wonder if certain features just can't pass a speed threshold.

<comment><USER7> haxe's enums seem like full-fledged union types: [http://haxe.org/manual/types-enum- instance.html](http://haxe.org/manual/types-enum-instance.html)

<comment><USER6> There's also Ceylon's enumerated subtypes, which look similar: [http://ceylon- lang.org/documentation/1.0/introduction/#enume...](http://ceylon- lang.org/documentation/1.0/introduction/#enumerated_subtypes)

However, Haxe's algebraic data types are really not the same thing. It takes a bit more code to achieve an identical effect. On the other hand, algebraic data types are much more general purpose, and allow techniques like pattern matching.

[http://en.wikipedia.org/wiki/Algebraic_data_type](http://en.wikipedia.org/wiki/Algebraic_data_type) [http://haxe.org/manual/lf-pattern-matching- introduction.html](http://haxe.org/manual/lf-pattern-matching- introduction.html)

In the case of Haxe, you can construct a pattern that uses guards and/or extractors (e.g., a pattern that matches cases where you have an empty Tree, or a tree that contains a specific Node. You could also do matches on structural subtypes, etc.)

</comment></comment></comment></comment><comment><USER8> From the language specification[0]:

> This code is not legal, since all three statements occur in the initializer > section of the class body:

        class Point() {
            Float x => y;  //compiler error: y is not referenceable
            Float y => x;
            Float->Float xy = x->y;
        }

> However, this code is legal, since the statements occur in the declaration > section of the class body:

        class Point() {
            Float x => y;
            Float y => x;
        }

If I'm reading things correctly, class declarations are split up into "initializer" and "declaration", with only an implicit split (the last statement that is not allowed in the declaration section). This seems very awkward.

0: [http://ceylon- lang.org/documentation/1.0/spec/html_single/#r...](http://ceylon- lang.org/documentation/1.0/spec/html_single/#referenceabilityofdeclaration)

<comment><USER9> It's not that awkward, C# does the same thing:

       interface IPoint
        {
       // Property signatures:
       int x
       {
          get;
          set;
       }

       int y
       {
          get;
          set;
       }
       }

(taken from [http://msdn.microsoft.com/en- us/library/87d83y5b.aspx](http://msdn.microsoft.com/en- us/library/87d83y5b.aspx))

<comment><USER8> I don't see the similarity. The Ceylon feature I find awkard is that class definitions have two parts (initializer/declaration) with different semantics, without explicit demarcation.

In the example above, this code:

        class Point() {
            Float x => y;
            Float y => x;
        }

is fine, because both declarations are parsed as being in the declaration section. However, when you add another line _after_ that:

        class Point() {
            Float x => y;  //compiler error: y is not referenceable
            Float y => x;
            Float->Float xy = x->y;
        }

The original two declarations are now part of the initializer section, because the third line is a statement that is not allowed in the declaration section. This changes the semantics of the first two lines.

<comment><USER10> Seems like a bug.

</comment></comment></comment></comment><comment><USER11> Seems like Gavin King of Hibernate fame is leading this project.

<comment><USER12> I don't see how that is supposed to be any recommendation. If Ceylon is going to be similar to Hibernate in terms of quality, simplicity, performance and amount of design WTFs, I don't want to touch it.

<comment><USER13> Too be fair, Hibernate was a whole lot leaner when Gaving was leading the project. And Hibernate was one of the first ORMs, so he was at least pioneering a field, even if the idea admittedly turned out to be less great than initially thought.

And while working on CDI and Weld, Gaving really was the one who pushed for "plug and play" in JBoss, mediating between departments and making sure stuff got usable and in some cases even quite fast. In the end, the Seam guys more or less abandoned EJB and more or less started the POJO trend.

Additionally, I thing that Gavin was one of the first to spot where Hibernate was heading and started to work on ceylon quite early (I forgot when). And if you read what he has written you can tell that he knows his stuff!

You have to give the guy some cred!

<comment><USER14> Well, not sure. When he started Ceylon, he wasn't even aware of the existence of Scala.

Kind of reminds me of the quote from the Groovy creator.

Seems like most of the JVM languages these days are created because people are too lazy to research the state of the art...

<comment><USER15> Or... the other projects need to do a better job of marketing to raise awareness in the first place?

</comment></comment></comment></comment></comment><comment><USER16> I like the direct approach to Union and Intersection Types.

I wonder if the goal of making the language 'immediately readable to people who aren't Ceylon programmers' limits them too much. This might be why the type signature for functions in `void repeat(Integer times, void iterate(Integer i))` is so macabre.

Tuples and comprehensions are always nice. The 'tree syntax' stuff seem a lot like JSON-javascript, which I guess has found it useful.

At the end of the day I'm not convinced why this is a better language than the lot of JVM languages out there.

</comment><comment><USER17> Ceylon looks very interesting. The union type is a brilliantly simple way to combine types. It's something that once you've seen it you would ask how come type combination not done this way all along.

The map comprehension is very interesting, going beyond list comprehension. Should make functional style programming easier.

I wonder how big the download of the runtime is for running as Javascript inside the browser.

<comment><USER16> Python has map comprehensions like this:

        {i: i+1 for i in range(10)}

Works pretty well.

<comment><USER18> Perhaps more comparable to the comprehensions shown in this post would be generator comprehensions:

        list(p.first_name + " " + p.last_name for p in people)
        dict((p.first_name + " " + p.last_name, p) for p in people)
        set(j.organization for p in people for j in p.jobs)
        print(", ".join(p.first_name + " " + p.last_name for p in people))

(Of course, Python has sugar for the first three.)

<comment> iso8859-1 What's the sugar for the third?

<comment><USER19>
        set(j.organization for p in people for j in p.jobs)
        {j.organization for p in people for j in p.jobs}

The latter is available from Python 2.7+.

</comment></comment></comment></comment></comment><comment><USER20> The verbosity of reserved words seems like it would get annoying quickly, both in writing and readability("shared actual X"? C'mon!).

I think that conflating clarity of keywords with the clarity of language is a huge and pointless confusion, especially when touting metaprogramming, comprehensions and variadic function arguments.

It doesn't look like a bad language; its features seem well rounded, yet there's a lot of stuff out there that's both more capable, with features that are more orthogonal. There's less feature mishmash than Scala, certainly, but it doesn't seem that far up in the power spectrum to justify learning another language, especially when compared to Kotlin, its closest competitor.

Kotlin just seems to be better in most regards: much more compact syntax, similar features set without some of the questionable overhead of Ceylon, and extension methods.

</comment><comment><USER21> > If these code examples look boring to you, well, that's kinda the idea - > they're boring because you understood them immediately!

This sales pitch finds me at home!

Also there seems to be some nifty features in there e.g native unions and intersections.

</comment><comment><USER22> Just so you know, Ceylon is a name of a country (now known as Sri Lanka). The name is more popular due to the tea which is manufactured in Sri Lanka (Ceylon Tea)

</comment><comment><USER23> I've been poking around the site and there was a mention of running in the browser. I have been unable to find any examples. Does anyone see any?

I'm thinking of something modifying form text boxes or something simple like that.

<comment><USER24> There's a bit about it on the linked page (look for the description of "dynamic" blocks), plus a tutorial on their blog: [http://ceylon- lang.org/blog/2013/02/26/ceylon-in-the-browser...](http://ceylon- lang.org/blog/2013/02/26/ceylon-in-the-browser/)

</comment></comment><comment> rishi-dragon Why is that we need new languages? Why not improve existing languages? We, as a community, would benefit from solving the very limitations that lure developers into other languages.

<comment><USER25> Because that would break backwards compatibility.

<comment><USER26> I don't think that's the right argument. Re-writing few parts or writing entire app in new lang, which one would be better for app developer?

<comment><USER27> If only you could write a new service in a different language and then make requests to it... oh wait, you can!

At my last job we had a Node.js app talk to a Scala backend and the other end of the system ran PHP. I mean we already had like 30 servers at least, so dedicating one to Node and a few to Scala wasn't a problem.

</comment></comment></comment></comment><comment><USER10> I see that immutability is not a first-class citizen in this language... mmmhhh....

<comment><USER17> Immutability is kind of an overrated fad. The world is very much mutable. I want to see how languages manage mutability. Languages that provide simple mechanisms and tools to manage mutability go a long way to help the programmers to cope with the real problems.

<comment><USER14> > The world is very much mutable.

LOL, what?

<comment><USER28> Depending on your concept of time, it very much is. If you choose the same abstraction of time for reasoning about the program state and the real world, the same "reference" might change its properties over time. The speed of a car is mutable over time. The question is if the way we reason about time when talking about the "real" world is appropriate for reasoning about time in programs.

<comment><USER29> Attach a date stamp to your references and facts and BOOM, everything is immutable!

</comment></comment></comment></comment></comment><comment><USER30> The recent profileration of languages amazes me. Every major computing house now has one or more programming languages. Is this a strategic approach to reign the future.? Or has it become easier to design languages. Thinking of how little Java helped Sun to escape disappearing I m curious of the opinions of people in charge..

Ps: welcome again Ceylon, hope you'll give RedHat a brighter future in the enterprise.

<comment><USER31> What is a language? How deeply up and down the abstraction scale does a "language" need to implement to be called a language?

Some languages, like Go, implement a different edition directly atop many various OS's, with their own garbage collection and type inference. Whereas others, like Coffeescript, are text generators sitting atop and relying on features of other languages. And there's many shades in between, such as languages that produce JVM bytecode rather than executables for each different hardware target the JVM sits atop.

Then there's the issue of how much support atop the text files a language directly supports. Some, like Kotlin, make IDE support an official policy, whereas others, like Java, don't, instead relying on third parties to provide it. Some languages _only_ provide the visual interface. Macros, like in Clojure, and compiler directives, like in C, could also be considered "atop the text file syntax".

If readable source code in some certain language can be generated from a VM or an AST that many different "languages" target, then in a sense they're not really languages at all, only "bytecode generators" or "transpilers".

<comment> Chiba-City This is a very good question. Unix/C came from the glorious "system building" era. They took responsibility for building and documenting "the whole stack" \- from assembly to signals to troff. Wirth's Oberon OS/language were codesigned in the same fashion. Smalltalk/V took over a PC.

Ceylon seems like a very nicely designed language (and I don't mean syntax). I would love to see a LLVM back end and the requisite docs for low level system hacking.

</comment></comment></comment><comment><USER32> The beating of web programmers with new languages will continue until morale improves :-) I mean, until somebody figures out that the HTML/CSS/DOM etc make the task nearly impossible, no matter what language.

<comment><USER33> Oddly, I think the problem is orthogonal. Mayhap that isn't the correct word.

Regardless, my assertion is that the problem is when most of us write web apps, we think of it as a single application. Frameworks often make this worse, as half of them treat the goal as to hide that you are writing a distributed application.

Contrast this with what is really going on, where you have -- at a minimum -- a front end and a backend operating independently of each other. And I'm not just talking multithreaded. They are literally completely disconnected from each other.

So, consider how we use all sorts of paradigms to try and make writing a multithreaded program easier. Now, consider at the end of the day many of these tasks can be done with simple locks and semaphores. Better yet, consider that most of the higher abstractions build on those.

Now, when is the last time you saw a tutorial for using a semaphore between an html front end and a backend?*

* I'm really hoping someone proves me wrong on this question. :)

<comment><USER34> But they _are_ disconnected, one is running on the client, the other on the server. Regardless of any magical unified framework, there will be two processors talking asynchronously over network protocols. GWT does this kind of integration and it's far from a panacea.

<comment><USER33> Apologies for poorly making that point. That is, my point was that we need more ways to embrace this separation. I'm not sure unifying the language on client/server would really help.

</comment></comment></comment></comment><comment><USER35> > A new language

Version 0.1 was released on Dec 20 2011 : [http://ceylon-lang.org/download- archive/](http://ceylon-lang.org/download-archive/) .

<comment><USER24> The first production-ready version was released in late 2013: [http://ceylon- lang.org/blog/2013/11/12/ceylon-1/](http://ceylon- lang.org/blog/2013/11/12/ceylon-1/)

The language is still relatively new, and under active development: [https://github.com/ceylon](https://github.com/ceylon)

</comment></comment><comment><USER36> How come it is a new language if the version 0.1 was around 3 years old.? In that sense i should call Python 2.7.8 a new language which was released a week back.

</comment><comment><USER37> >Ceylon's syntax is ultimately derived from C. So if you're a C, Java, or C# programmer, you'll immediately feel right at home

...yet we introduce the VB-keyword "shared" instead of "public", "variable" instead of C#'s "var" and use square brackets instead of curly braces for array initialization. You know, just because fuck you.

Seriously I see this all the time in new languages. Why invent or change keywords just for the sake of changing? Why does Rust use "let"? Why does Scala use "def"? If you want easy adoptation from one of the two largest languages in the world, change what matters and stick with the rest.

<comment><USER38> > Why does Rust use "let"?

let is the standard keyword for introducing a new, shadowing variable binding. It is a very old tradition and is immediately recognizable to functional programmers.

> If you want easy adoptation from one of the two largest languages in the > world, change what matters and stick with the rest.

In the case of "let", it would be a false consistency with C/Java. Assignment in C/Java does not have the same semantics as a let binding in Rust, although a let binding in Rust has very similar semantics to a let binding in Scheme or Haskell.</comment></comment>


Commodore 64 turns 30: What do today's kids make of it? - <AUTHOR> http://www.bbc.com/news/technology-19055707 <comment><USER2> Should have demo'ed with the floppy drive!</comment>


On June 11th, the Strand was designated a landmark - <AUTHOR> https://www.strandbooks.com/protect-strand <comment><USER2> For the full infuriating timeline: [https://landmarkscomplaints.com/chronology-of- events/](https://landmarkscomplaints.com/chronology-of-events/)

</comment><comment><USER3> Previously on HN: [https://news.ycombinator.com/item?id=21228237](https://news.ycombinator.com/item?id=21228237)

There is clearly a real problem when private landowners suddenly face much, much lower property values at the same time residents ensure their own continued enjoyment of the historically valuable building.

The real irony will be if the Strand moves its bookstore elsewhere, or simply closes. The value of this building is largely tied in with the business, not only that New Yorkers love the facade.

<comment><USER4> Also this bit from a year ago: [https://news.ycombinator.com/item?id=18610699](https://news.ycombinator.com/item?id=18610699)

</comment></comment><comment><USER5> Not an effective website as a passerby.

I'm unfamiliar with both the Strand and the landmarking process. It took me to the third screenful of text to figure out why The Strand doesn't want to be designated a landmark,

 _For every repair and every upgrade, The Strand would have to go through the slow bureaucracy of the Landmarks Preservation Commission which adds to the expanses to keep Strand alive._

This type of information should be at the top of the page.

<comment><USER6> > For every repair and every upgrade, The Strand would have to go through the > slow bureaucracy of the Landmarks Preservation Commission which adds to the > expanses to keep Strand alive.

The reason they bury this line is that it's a lie. 826/828 Broadway was only designated for its exterior not interior ([http://s-media.nyc.gov/agencies/lpc/lp/2615.pdf](http://s-media.nyc.gov/agencies/lpc/lp/2615.pdf)) as was widely reported at the time ([https://www.nytimes.com/2019/01/30/arts/design/strand- bookst...](https://www.nytimes.com/2019/01/30/arts/design/strand-bookstore- landmark.html)). They can repair anything they want inside the building, small outside repairs are allowed, but anything that changes the character of the outside of the building must be approved.

This was a great move by the Landmarks Preservation Commission.

<comment><USER7> That sounds pretty annoying, even just for the exterior. Right?

<comment><USER6> Annoying? Sure! Talk to anyone who lives in Europe and deals with such buildings all the time. It's not the end of the world.

The overreaction by the owners is simply because of greed. Their building is worth less because it's harder to change now. This doesn't materially impact the business.

The argument that their building wasn't in any danger of being demolished is totally crazy. That is not one of the criteria used by the Commission! No one cares.

</comment></comment></comment></comment><comment><USER8> What amazes me is that they have the gall to do this against the wishes of the owners.

In a few years Amazon will buy the place as a "good will" gesture.

<comment><USER9> For those that don't know, Netflix recently bought and reopened New York City's iconic Paris Theater (ostensibly to host limited showings of Netflix Original films so they're eligible for Academy Awards):

[https://www.theverge.com/2019/11/25/20982216/netflix- paris-t...](https://www.theverge.com/2019/11/25/20982216/netflix-paris- theater-movies-new-york-oscars-irishman-marriage-story-egyptian)

<comment><USER10> That makes sense. Probably will make money just showing Netflix content on the big screen. Netflix has also been trying to buy Grauman's Egyptian Theater in LA.

</comment></comment></comment><comment><USER11> If preservationists want a building to stay as is, they should buy it. Otherwise they have no business dictating how others use their property.

<comment><USER12> NYC has learned the hard way that there should be some preservation; destroying/modifying a building is a one-way act, and over a long enough time horizon someone will eventually make a bad decision that everyone regrets later. See for example Penn Station: a beautiful landmark that was demolished by a real estate company because they deemed it too expensive to maintain. In the act they created a horrible black mark on the city.

There are arguments to be made on both sides, this isn't a black and white issue. The history of preservation is fascinating. Especially after Penn Station's demolition, NYC went through a big debate on other landmarks like Grand Central: [https://www.smithsonianmag.com/history/preservation- battle-g...](https://www.smithsonianmag.com/history/preservation-battle-grand- central-180969446).

> While few doubted the significance of Grand Central, the terminal's owners > took issue with the law itself—how, they wondered, could it constitute > anything other than an unreasonable violation of their rights as property > owners? Preservationists like Onassis, working with groups like the > Municipal Art Society, continued to insist that saving Grand Central and > buildings like it wasn't a mere real estate matter, but an issue of public > good. On June 26, 1978, the United States Supreme Court agreed with them in > Penn Central Transportation Co. vs. New York City, not just in regards to > Grand Central but in the spirit of the Landmarks law itself...

In retrospect I don't think you could find a New Yorker who regrets that Grand Central was saved after seeing what Penn Station became.

<comment><USER13> The problem with Penn Station's destruction isn't the destruction itself, it's that the building that replaced it is so hideous. Most historic buildings aren't valuable because they're historic, they're valuable because they're beautiful. We can still build beautiful buildings again, but with modern materials and code. Modern buildings don't have to be soulless abstract nightmares.

I'd much rather have codes that require a particular aesthetic on a site than try to retain a particular object building in perpetuity.

<comment><USER14> On the other end of this is the proposal to redesign the Notre Damn to have a glass ceiling after the fire. A glass ceiling is actually surprisingly popular and would make the building look amazing both outside and inside it. Unfortunately, this proposal was shot down pretty quickly despite public support in order to stick to the status quo.

</comment></comment></comment></comment><comment><USER15> Why is this here?

<comment><USER16> 20-something year old technology tinkerer interests often broaden as the tinkerers gain repeated experience with the non-tech portion of the world.

To connect it to technology, statistics & economics could be used to evaluate the counterfactual property valuation should historical status for the home had never been declared.

<comment><USER17> You could make that claim about any random article from Reddit.</comment></comment></comment>


Answering "Why Do I Feel Bad?", by HN MFT (1K Followers on Medium) - <AUTHOR> https://medium.com/the-coffeelicious/answering-why-do-i-feel-bad-part-1-introduction-and-context-aea2fca49d87

<comment><USER2> I think before seeing a counselor reading this article and stopping to think about some of these questions would really improve the first appointment (which is often extremely hard on some people).</comment>


PDB – ANSI-C to PostScript compiler (1993) - <AUTHOR> http://compilers.iecc.com/comparch/article/93-01-152 <comment><USER2> As I recall, PDB stood for "Pure Dead Brilliant" \- this was written in Glasgow... :-)

This was related to the NeWS/PostScript based HyperNeWS GUI environment that I still have very fond memories of. We used it on an EU ESPRIT project with a Lisp backend (Harlequin LispWorks).

Meant I got to work in PostScript, C and Lisp on the same project, which was interesting.

</comment><comment><USER3> Anyone knows if there is another C -> PS being Open Source?

P.S. Not strictly related to this, in addition to Ghostscript (GPL), I would like to see up to date MIT/BSD Postcript interpreters and renderers. Anyone knows of any, even if being an old implementation?

<comment><USER4> [https://github.com/luser-dr00g/xpost](https://github.com/luser-dr00g/xpost)

I'm not sure how complete it is though.

<comment><USER3> Thank you!

</comment></comment></comment><comment><USER5> I remember seeing a demo of PDB at the British Telecom Software Engineering Centre at Glasgow running on a Sun workstation around 1993.

I contacted Arthur van Hoff (who went on to Java fame) a few years ago and he put me in touch with Tim Niblett who still has some source code, but if I recall correctly, didn't feel that he had the authority to release it.

[https://twitter.com/avh/status/62644685486825473](https://twitter.com/avh/status/62644685486825473)

I believe that PDB came out of the Turing Institute [https://en.wikipedia.org/wiki/Turing_Institute](https://en.wikipedia.org/wiki/Turing_Institute) which sadly closed in 1994.

It would be great to resurrect it, but we only seem to have the binaries.

<comment><USER6> Can PDB compile PDB?

It might not be as useful as the source code, but it would at least open the program up to being run by people without sun4 or rs6k machines.

</comment></comment><comment><USER7> If anyone wants to play with the demo from 23 years ago, the code can still be found at ftp://nic.funet.fi/pub/languages/pdb/

<comment><USER6> Sadly it doesn't look like it's been preserved:

        pdb2.1-demo/
        pdb2.1-demo/COPYING
        pdb2.1-demo/bin/
        pdb2.1-demo/bin/rs6000/
        pdb2.1-demo/bin/rs6000/pdb-cpp
        pdb2.1-demo/bin/rs6000/pdb-comp
        pdb2.1-demo/bin/rs6000/pdb-opt
        pdb2.1-demo/bin/rs6000/pdb
        pdb2.1-demo/bin/sun4/
        pdb2.1-demo/bin/sun4/pdb
        pdb2.1-demo/bin/sun4/pdb-comp
        tar: Truncated input file (needed 253952 bytes, only 245760 available)
        tar: Error exit delayed from previous errors.

<comment><USER7> hunting for another copy...

Found an intact copy: ftp://ftp.sra.co.jp/pub/lang/postscript/pdb2.1-demo.tar.gz which someone recompressed from compress to gzip at some point. The original compress archive seems to be lost except in truncated form :(

<comment><USER6> Cool thanks.

Now I need to find some ancient boxes...

</comment></comment></comment></comment><comment><USER8> I'm really curious how to program in postscript now.</comment>


Lending App Publicly Shames You When You're Late on a Loan Payment - <AUTHOR> https://restofworld.org/2020/okash-microlending-public-shaming/ <comment><USER2> I have yet to see positive press regarding these techno loan sharks. How can we provide loans to the working class without exploiting and humiliating them?</comment>


India shelves plan on countrywide ban on single-use plastic products - <AUTHOR> https://economictimes.indiatimes.com/news/politics-and-nation/india-shelves-plan-on-countrywide-ban-on-single-use-plastic-products/articleshow/71402017.cms <comment><USER2> _The plan was for Prime Minister Narendra Modi to outlaw six items on Wednesday, the 150th anniversary of the birth of independence leader Mahatma Gandhi, as part of a broader campaign to rid India of single-use plastics by 2022._

But it was seen as "too disruptive for industry", so instead:

 _For now, government will ask states to enforce existing rules against storing, manufacturing and using some single-use plastic products such as polythene bags and styrofoam ... "There is no new ban order being issued ... Now, it's a question of telling people about the ill-effects of plastic, of collecting and sending for for recycling so people don't litter."_

Gandhi wept.

</comment><comment><USER3> Pakistan is also experimenting with something similar. Ambitious effort, but without the infrastructural help to shift to alternatives that's just not going to happen</comment>


Bettors Beat Pundits - <AUTHOR> http://tierneylab.blogs.nytimes.com/2008/11/24/bettors-beat-pundits/ <comment><USER3> Bettors simply aggregated the opinions of the pundits, the statisticians and media, and their sheer number averaged it out. Without access to the media, the bettors would not have enough information to be as accurate.

What the markets are are just an averaging of more informed opinions - <USER2> what happened when Sarah Palin got picked - the media hyped that up, and the bettors went with it.

<comment><USER4> The opinion of bettors is not a simple aggregate though. They weight information based on what they believe to be most credible. A mildly credible source isn't worth putting at risk.

</comment></comment><comment><USER5> I'm not surprised.

There's a selection bias in the people who bet on elections. You only bet if you think you know something other people don't -- if you're wrong you lose your money. If you're wrong as a pundit, nothing happens. As they say, the bettors put their money where their mouth is.

There's an interesting counterargument: people who use prediction markets to hedge against the outcome they don't want. I don't know how many people actually do this, though.</comment>


Large scale reuse of FFP2 and N95 masks - <AUTHOR> https://blog.vermorel.com/journal/2020/3/29/large-scale-reuse-offfp2-and-n95-masks.html <comment><USER2> We were hesitant to use our masks because we would run out quickly, until this:

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

Now, we just pop them in the oven and reuse them.

<comment><AUTHOR> Unclear. I am part of the MIT+Harvard+Boston General initiative on REUSE of masks. Log reduction of pathogens though limited heat (dry or moist) is VERY unclear. Then, if you don't control very precisely the heat, their filtration capabilities are toast. I would ABSOLUTELY NOT recommend using an oven. At this point, heat might be a decontamination option, but early results indicates that duration will be long (18 hours) under precisely controlled temperature (like 70C).</comment></comment>


What Emails Reveal About Your Performance at Work - <AUTHOR> https://joshbersin.com/2018/10/what-emails-reveal-about-your-performance-at-work/# <comment><USER2> Do not click this link. There's a rather evil browser-hijacking ad on the page.</comment>