Arcosanti, Paolo Soleri's Arizona experiment in urban planning - <AUTHOR> https://motherboard.vice.com/en_us/article/bj7jjd/arcosanti-city-future-paolo-soleri-arcology <comment><USER2> My father had been excited and advocating about Arcosanti for years. We visited on a trip through AZ and he left just forelorn and heartbroken. It was somewhat humorous because he went from weeks of not being able to stop talking about it to just silence in the span of the one hour visit.

Great idea, but as with all projects - execution trumps vision.

<comment><USER3> Do you mind elaborating? What specifically was so disappointing?

When did you guys visit? Has anything changed since then?

<comment><USER4> I liked arcosanti when I visited it. It was very much a small group of people essentially working for the artist though. I think the concept has merit. But this particular example was maybe co-opted for cheap labor.

I say that as that may be something OPs father saw and felt disillusioned. I think even that may be a fine thing. Things have to start somewhere.

<comment><USER5> I agree. It quite lived up to and even surpassed my expectations. But this would have been in the 90s. They had a nice little core built and it was a functioning artist colony. I've got a metal tile I bought there on my computer desk right now, as a little reminder of other possibilities.

<comment><USER6> But that's just it. It was supposed to be the FUTURE, not just some people making bells like you can kind anywhere.

<comment><USER4> And we were going to have flying cars and colonies throughout space by now ;)

</comment></comment></comment></comment></comment></comment><comment><USER7> AMA from HN contributor nkoren who lived in Arcosanti for five years:

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

<comment><USER8> Hah, you beat me to it! :-) Still happy to answer questions, although this is trending on a particularly bad day, as I'm moving house. Leave a question here, however, and I'll answer it.

<comment><USER9> I'm reading through your AMA, but how about, what would you do differently today if designing it from the ground up?

EDIT: The ama wasn't very long. Also the place seems pretty small, but as someone who doesn't really know anything about it, what was the plan once it breached 5000 people?

<comment><USER9> Also, what did they do with the garbage?

<comment><USER8> Answering this question first; will come back to your other tomorrow.

\- Organic waste is composted for the farm. \- Glass is broken down into aggregate for the concrete (glass recycling is barely ecologically justifiable; reuse is better). \- Other recyclable and non-recyclable waste is separated on-site and shipped off-site for a waste-disposal company to handle.

So not _overwhelmingly_ different to other places, in that respect.

<comment><USER9> Thanks. Looking forward to the other answer :) Hope the move went well.

<comment><USER8> Posted an answer for you. As for the move -- I feel like I've spent the last two days in a bar fight. Definitely need to be rich enough to pay for professional movers the next time I do this!

<comment><USER9> Can't agree more. moving is the worst.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I visited Arcosanti in 2014. On one side, amazing place. On the other, it's a failed project. Soleri stated that it can only be self-sustaining when it reaches 5,000 people. I think it never went above 200, and it's now below 100.

<comment><USER11> I was there earlier this year.

The story is complex, but my understanding is that the main failure point was the local officials not wanting Arcosanti to exist and putting up regulatory barriers.

It's worth noting that Soleri ran the project as a benevolent dictator, and when he fell into the poor health of old age most decisions stopped. He's recently past and left behind a bit of a power vacuum and the other people involved are reorganizing to deal with that. Coming out the other side of that reorg is an opportunity for change and it's too early to assume Arcosanti will stay in it's current form.

They are basically blocked by money. If they could get enough money to pave the road to the property they could get building permits again. They need either a rich benefactor or a group of people interested in buying into the concept (and the leadership capacity to manage that).

<comment><USER12> Even with paved access and a substantial budget, I'm not sure building permits would be feasible for any future construction. I don't know that they've been singled out by local officials so much as the original designs weren't forward compatible with modern (1980's+) building requirements.

They've done a commendable job of trying to keep up with some modern advancements since the original designs were inked in the 60's. They have fiber optic internet access, some solar panels, and a few ADA-compliant ramps. My concerns would be more about integrity of the foundations. Modern surveying, concrete chemistry, and so on have raised the bar. I think there may have also been problems with routing utility lines with ventilation shafts and not having much of an alternative due to the structures being solid, load- bearing concrete.

As an organization, I don't have very much faith in the leadership doing much more than barely staying afloat. There's a strong bias for seniority over meritocracy, which over the long term frustrates and deflects talented people with good ideas and favors people who just stick around or have don't have better alternatives.

<comment><USER8> > As an organization, I don't have very much faith in the leadership doing > much more than barely staying afloat. There's a strong bias for seniority > over meritocracy, which over the long term frustrates and deflects talented > people with good ideas and favors people who just stick around or have don't > have better alternatives.

Upvoted for clearly knowing what you're talking about. :-)

I built some of those foundations, back in the early 90s. Not much to worry about there -- they're tied straight into the basalt bedrock. Concerns about the extensibility and adaptability of the construction are well-placed however.

</comment></comment></comment></comment><comment><USER13> We visited a few years ago. It really is worth seeing in person, particularly if you were already making the drive from Phoenix up to Sedona / Flagstaff / Grand Canyon and can spare an hour or two. One really can sense both Soleri's vision and how far the implementation fell short of his ideals.

By coincidence, we had visited shortly after Soleri died (had no idea until we got there). One of the people we met described Soleri's last visit to Arcosanti a few months prior. My memory's fuzzy now, but I think they said that he had looked around without saying much, then said something like "I'm done," and never went there again. (My apologies for misremembering the quote, it's been a little while and I haven't thought about it very often.)

</comment><comment><USER14> I visited Arcosanti as a child in the late 70's and then again about 10 years ago. It looked like the city of the future in the 70's. 30 years later it did not seem like it aged well. It's like those Olympic stadiums that fall into disrepair a few years after the Olympics.

I visited Biosphere 2. It's a completely different environment from Arcosanti. It failed to meet expectations despite how much money was invested.

</comment><comment><USER15> > It's just that at a certain point, the stripmalls and uniform beige housing > developments give way to creosote, cacti, and the equally beige landscape of > the Sonoran desert.

I spent half my life there. So depressing, except when finally getting out into the natural desert.

<comment><USER16> "Equally beige" seems harsh of the writer. Phoenix is one of my least-favorite cities, but the Sonoran Desert is absolutely beautiful and far from bland. As you say, the only highlight of Phoenix for me was getting out of it.

<comment><USER15> I agree, the Sonoran Desert is so refreshing, and I hadn't actually caught that they'd said it was equally beige.

</comment></comment></comment><comment><USER17> Not much of a "city", it appears: [https://www.google.com/maps/place/Arcosanti,+firstname.lastname@example.com...](https://www.google.com/maps/place/Arcosanti,+firstname.lastname@example.com,-112.1015342,283m/data=!3m1!1e3!4m5!3m4!1s0x872cef0edebffb03:0x68c31f0f2107d029!8m2!3d34.3425315!4d-112.1005547)

I'm not dismissing the idea at all; I'd just like to point out that a lot of the problems we see currently in cities are caused by the presence of a larger number of people.

</comment><comment><USER18> Where do they get their water from? Don't we currently have (or will have) a huge problem with supporting populations in areas where there is no local sustainable source of water?

<comment><USER8> The Agua Fria river flows about half a mile away from the site. Although it's rarely above ground, the subsurface flow is the third-largest in the state, and there aren't very many people upstream. Arcosanti has a well and gets all its water from there.

Interestingly, the area is dotted with the ruins of numerous large Hohokam settlements; it's obvious that the population was much greater about 600 years ago than it is today. The Hohokam built some pretty sophisticated aqueducts, one of which is located on the Arcosanti property, which brought water up from the river to the settlements on top of the mesa. At the time, it seems that the rainfall pattern was dominated by small but frequent winter storms, resulting in almost year-round surface flow. But a change in the climate about 600 years ago switched the rainfall pattern monsoon-type: dry in the winter, and flash floods in the summer. The Hohokam aqueduct system couldn't cope with this, and their civilisation collapsed. So it's definitely a point worth being concerned about in that environment.

Arcosanti, however, is fine.

<comment><USER19> >which brought water up from the river to the settlements on top of the mesa

They pumped water uphill?

<comment><USER8> No, they intercepted the water far enough upstream of their settlements. Let's say you have a pueblo on a 200 ft mesa, above a river that's running at a 4% gradient. Your aqueduct needs a 2% gradient to maintain good flow -- the Hohokam were excellent at maintaining consistent gradients over very long distances -- so what you need to do is build a small check dam 200 / (4% - 2%) = 10,000 ft upstream, with the stone aqueduct wending its way "up" the side of the mesa from there. Ruins of these kind of structures can be seen all over the area.

</comment></comment></comment></comment><comment><USER20> I visited in 2001. Concretesanti. It would far easier to buy land in Detroit and un-incorporate, or re-incorporate. I wouldn't use it as an argument for or against. It happened, and I am sure there are lots of lessons, but it definitely needed more people, more organic growth. Actually, it did need way more plants. And probably more technical folks.

</comment><comment><USER21> I visited Acrosanti this past summer. They have a few rooms available on AirBnB which I fully suggest checking out.

</comment><comment><USER22> Now I know I where the guy that beat Sim City got the name "Magnasanti".

Impressive!

</comment><comment><USER23> I hope the future is more aesthetically pleasing than this.

<comment><USER11> I don't think the Vice article did a good job capturing its beauty. It is really marvelous in person.</comment></comment>


Taiwan has millions of visitors from China and only 45 coronavirus cases. How? - <AUTHOR> https://www.vox.com/future-perfect/2020/3/10/21171722/taiwan-coronavirus-china-social-distancing-quarantine <comment><USER2> The article's title is VERY misleading. After the fifth covid-19 case was confirmed in Taiwan (around Jan 25), the Taiwanese government had already banned all mainland Chinese tourists from entering the country. In February, even non-citizen children and mainland Chinese spouses of Taiwanese were forbidden to enter. That Taiwan had implemented a travel ban at a very early stage is a crucial factor for keeping the number of infections low.</comment>


Ask HN: What are the best short books that you can read in an evening? - <AUTHOR> <comment><USER2> What kind of books do you like?

Personally, I recommend reading the novella "Story of Your Life" by Ted Chiang, on which the film _Arrival_ was based, because the novel is quite a bit different from the movie and takes the whole topic of non-temporal existence in a much more Slaughterhouse-Five direction.

</comment><comment><USER3> If you're craving some philosophy I would recommend "The Problems of Philosophy" by Bertrand Russell. It's about 160 pages and you can easily skip around to chapters that interest you. Quite thought-provoking.</comment>


3 days before elections, largest German state censors Pirate Party from the net - <AUTHOR> http://falkvinge.net/2012/05/10/three-days-before-elections-largest-german-state-censors-pirate-party-from-the-net/

<comment><USER2> this headline is misleading. The website was blocked in some schools due to an incompetent configuration of a filter software. The filter configuration has been changed.

<comment><USER3> Don't forget the corollary to Hanlon's Razor, Grey's Law: _"Any sufficiently advanced incompetence is indistinguishable from malice."_

</comment></comment><comment><USER4> This ought to be counter-productive, considering that most students either know or potentially know about the Pirate Party. All this does is making people who didn't care enough become interested. I think the Pirate Party will probably get more votes from this, as people like to feel they are sticking up to the man - voting on a censored and a non-non-sensical party seems like a good way of doing it, especially since their views are aligned with most students views.

</comment><comment><USER5> This isn't censorship any more than blocking porn in high school libraries is considered censorship. This wasn't a move by rival political parties. The school in question used some third party web filter which flagged the pirate party's website as drug-related.

</comment><comment><USER6> There is a possibility of censorship of the Dutch party since yesterday.

Dutch court bans Pirate Party links to The Pirate Bay <http://www.bbc.co.uk/news/technology-18016819>

</comment><comment><USER7> What "list from IBM" would they be using? Can anyone confirm this categorization of the site as "illegal drugs"?

Edit: any chance this was done by someone in support of the pirate party?

<comment><USER8> As a general policy, censorware companies don't want people to be able to see the lists of blocked URLs because they're so embarrassingly over-reaching.

</comment></comment><comment><USER9> Sounds like it was just censored in schools with a NetNanny type internet filter. What's the voting age in Germany again?

<comment><AUTHOR> Based on this <http://en.wikipedia.org/wiki/Voting_age#G> and its references, the voting age in Germany for state elections is 16 years old.

<comment><USER10> Its 18. In North-Rhine Westphalia. <http://www.wahlrecht.de/landtage/>

End yes, just this was most likely just one commercial filter going rogue on drug related words in one school only, which blocked a completely legal and g-rated drug politics statement on the website of the pirate party. [http://translate.google.com/translate?sl=auto&tl=en&...](http://translate.google.com/translate?sl=auto&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fnetzpolitik.org%2F2012%2Fnetz- sperren-in-schulen-nrw-zensiert-piratenpartei%2F)

</comment></comment></comment><comment><USER11> Where is the democracy ?</comment>


Whoever Is Leaking Trans-Pacific Partnership Drafts: Please Leak More - <AUTHOR> http://motherboard.vice.com/read/whoever-is-leaking-trans-pacific-partnership-drafts-please-leak-more <comment><USER2> The move towards profit at all costs to the general public is seemingly global at this point. There's not much escaping it. We all know the trouble with the U.S. Harper's government in Canada has silenced scientists who would speak out about the negative impacts of government policies, the UK is seeing university tuitions triple and then some, with student loans becoming more and more normal, despite the huge flashing warning sign the U.S. is about student debt...

All over - stories about propping up the rich on the backs of anyone not rich. The thing is, the middle and lower classes are complicit in their own demise, voting in conservative governments or lackey liberals who don't even make attempts to keep their corporate connections secret anymore - let alone their desires to make life easier on those that already have it the easiest. Just toss a few "abortion" quotes around and the public will distract themselves with infighting while their standards of living are being destroyed, and for the first time in modern history, your kids _won 't_ be better off or live longer than you.

Used to be we could say that at least there were scientists and other altruistic professions out there fighting the good fight. But even they are being actively stifled in order to boost corporate profits (US, Canada, others.)

I don't even know. I hate being pessimistic.

Apologies. End rant.

<comment><USER3> To be fair, a lot of these corporate interests, if applicable broadly and without prejudice (unlikely), would just reinforce property right.

For instance, articles such as these always sensationalize some of the issues. This article claims that the agreement would allow corporations to sue governments for instituting policies that hurt their bottom line. This is probably true but this would cover expropriation, which many people feel is unjust. I know many in US cringe at reports of Venezuela's government expropriating business through force. Many would agree that if you have a law abiding business it would be wrong for the government to come in and take all your capital as their own. What I imagine corporations believe is that this should be interpreted more broadly.

For instance, if you agree that expropriation is bad, at what point does negatively harming a brand image effectively become expropriation? If a government makes you put a warning label? Plain packaging? Patent infringement?

Unfortunately, even if you agree with very strong property rights, this will almost certainly not be applied evenly and without special carve-outs.

edit: repatriation -> expropriation

<comment><USER4> "would just reinforce property right"

In many instances, the property right is questionable. Much of the property right, such as with IP, was built on the back of a looser interpretation. Disney's earliest years of spoofing mainstream cultural vernacular with Mickey Mouse is perhaps the most well cited example. We could also question the legitimacy of the well documented fleecing of earlier African American musical artists during the 40s-70s that in turn amassed vast libraries of IP.

Art moves as language and relies on an interaction with the language of the culture. The excessive IP is nothing more than a locking away of the keys that permitted the mega corporations to come to power in the first place.

Illegitimate hegemony. Appropriated content. Preserved as capital by those with little to no involvement with its creation.

<comment><USER3> I completely agree with you on IP and I am concerned over cooperation among countries to enforce IP protections. What I'm more concerned about is what I consider valid property rights such as physical property (equipment, your home, business) and your own body (expression, substances, etc).

NPR had a great article about US tariff policy. It detailed a 3,000 page book that's used to set the appropriate tax:

> The book lists the tax that importers have to pay on approximately every > single thing in the universe — including, of course, T-shirts. They're right > there under heading 6109: T-shirts, singlets, tank tops and similar > garments, knitted or crocheted.

The average tax rate on stuff coming into the U.S. is around 2 percent. The tax on T-shirts is much higher: 16.5 percent. That's what we'll be paying on the Planet Money men's shirts, which were made in Bangladesh. But the Planet Money women's shirts were made in Colombia — and those, according to the book of everything, come in duty-free, with no tariff at all. [0]

To me it just seems very arbitrary and hence rife for corruption.

[0] [http://www.npr.org/blogs/money/2013/12/06/247361423/the- gian...](http://www.npr.org/blogs/money/2013/12/06/247361423/the-giant-book- that-creates-and-destroys-entire-industries)

<comment><USER4> "What I'm more concerned about is what I consider valid property rights such as physical property (equipment, your home, business) and your own body (expression, substances, etc)."

To an extent, even these forms of capital are accrued on the back of societal and cultural context.

If one inherit's a home from a family member, under what contexts was that permitted? Did we stop to evaluate how much capital and property right was appropriated illegitimately? Did we evaluate government endorsed privilege and bias in the transaction[1]?

Did we stop to evaluate what property was accumulated under corrupt special- interest lobbying such as the TPP itself?

Ultimately, all capital and property is birthed from the culture. In many instances, gender and sex, birthright, race, and a plethora of other chance based factors result in an accumulation or deflation of capital and property.

[1] See legislated housing policies in Chicago for example. [http://www.newrepublic.com/article/117912/reparations-how- mo...](http://www.newrepublic.com/article/117912/reparations-how-mortgage- market-hurts-african-americans)

<comment><USER3> I completely agree. The problem is that I, along with other people who lean libertarian in their ideology, read the word "we" and interpret it as "politicians" as they are the only party that can reasonably make these judgement calls. Did [Dick Cheney|Barack Obama|Hugo Chavez|Kim Jong Un] evaluate what property is legitimate? I honestly would rather not find out.

One can argue that we can vote but most decisions made are so far removed from the democratic process that its effectively meaningless. In my home town of New York City, I hear people argue that such and such should be allowed or disallowed and there should be more discretion from officials. I always then question them as to who these officials are or who the relevant party is that makes such decisions. If they cannot answer, which they almost always cannot, I ask why they have such faith that those unknown, probably unelected officials will make wise decisions. Maybe I'm just a cynic and regulatory capture isn't really as prevalent as I imagine it is.

</comment></comment></comment></comment></comment></comment><comment><USER5> When did secret global laws become a thing?

<comment><USER6> The negotiations and drafts are secret (except to Congress), but it's public when it's signed and debated/ratified by Congress.

<comment><USER7> Congress has access, but it is quite limited. Unlike industry representatives, they are only allowed to read the document in a special sealed room, but may not make copies, may not take notes and may not bring along any staffer, even those would be in a better position to interpret the opaque and complex legal terms used.

[https://www.techdirt.com/articles/20120622/23220319444/ustr-...](https://www.techdirt.com/articles/20120622/23220319444/ustr- gives-mpaa-full-online-access-to-tpp-text-still-wont-share-with-senate- staffers.shtml)

[edit for clarity}

<comment><USER8> >and may not bring along any staffer //

Where are these rules written down, surely such anti-democratic actions have to be unconstitutional?

Plus where does USA get off in trying to impose laws on the rest of the world through secret treaty negotiations the details of which are only open to a very limited and controlled politically chosen group and a second group chosen entirely on wealth.

Land of the Free my arse - plutocratic hegemony more like it.

TPP is the most blatant "we're rich we'll decide the rules" that I think I've ever come across.

From the OP:

>"is there any way to look at this situation and not judge it to be a case of massive corruption?" //

No there isn't.

</comment></comment></comment></comment><comment><USER9> This is all about ensuring China isn't the only game in East Asia: Giving the non-Chinese half of East Asia's population a chance of fending off Chinese economic domination by creating a market union. I don't want to defend it considering the lack of transparency which requires us to be cynical... BUT we need to keep this in mind. This isn't all about the US or business per se. Rather, East Asia, the US, and big business all are in political alignment here, and that's how you build policy that happens... We're not the center of this. East Asia is

<comment><USER10> Err, so you're saying this is about reducing the power of Chinese manufacturing and cost of labor by playing other east Asian countries against them, and that's somehow NOT about US power and interests?

<comment><USER11> It is primarily due to the military threat China poses to its neighbors and Chinese disrespect for international rules and is neighbors. US interests are international stability and freedom of commerce, Chinese interests are much less enlightened and do not consider anyone else but China.

<comment><USER12> > US interests are international stability and freedom of commerce

Haha! You can't really be serious!

<comment><USER13> Well, he's not absurd. The US does have those interests but they are (invariably) curbed toward the benefit of American citizens and allies. The US order and global trade has done a lot of good. It's also committed and supported atrocities for its own core or security interests and made flat out mistakes. If you cherrypick either side the US can look like a paladin or an ogre.

</comment></comment></comment></comment></comment><comment><USER3> I never understood why you need an agreement for free trade. Free trade should be the default. What is being negotiated is a perversion of free trade used to mask corporate subsidies and crony capitalism.

<comment><USER14> Lots of countries aim for protectionism. The reason is they need to boost their manufacturing base or else they'll be stuck exporting raw materials to import manufactured goods to no end.

</comment></comment><comment><USER13> I've been an advocate of transparent discussion for some time. The TPP represents a huge constellation of laws and it is absurd that the negotiations are done so secretively.

But discussion about the TPP, too, is done in an opaque way. Everyone seems to have their favorite issue with it - for example information and piracy advocates will point to how grossly IP law is expanded internationally - others questions why only 5 or so chapters of a couple dozen have to do with trade if it's merely a trade deal - others will alarm at international corporate tribunals, worried that the largest and most aggressive corporations may abuse the liberal world order's tools to concentrate wealth and control.

But to understand the TPP - why it has few trade chapters relative to international law chapters and why IP and American corporate legal capabilities are strengthened as well as all of the secrecy - one needs to understand why the US has been pushing it on the Asia-Pacific region.

Washington Thinktanks and Defense Officials have come to the conclusion that the meteoric rise of China represents an existential threat to the supremacy of US hegemonic world order. The US's grand defense strategy has always been to 'balance' regions of the world where one country may otherwise dominate so that they can not then 'grow up' to play the global power game.

Take Blackwill's recent publication: Revising US Grand Strategy Toward China.

[http://www.cfr.org/china/revising-us-grand-strategy- toward-c...](http://www.cfr.org/china/revising-us-grand-strategy-toward- china/p36371)

Blackwill suggests a series of measures: the first being to get the TPP out the door to isolate China from international trade in its region. He goes on further to suggest that the DoD should invest in cyberwarfare and other capabilities - indeed these measures are being taken, as the DoD is now partnering with VC firms inside the Valley to steer funding toward national defense.

[https://foreignpolicy.com/2015/04/23/defense-department- sili...](https://foreignpolicy.com/2015/04/23/defense-department-silicon- valley/)

Secretary of Defense Carter penned his interest in the TPP, publicly stating that he would rather have the TPP than another aircraft carrier.

Prime Minister Shinzo Abe just visited Congress, whereupon he spoke to them about the new unprecedented collective defense pact (think Asian NATO) being entered into by the two countries which required Japan to reinterpret its constitution. In the speech he discussed the importance of the TPP for defense purposes, and took questions about the rise of China.

None of this is a defense of the TPP. What it is is a call for transparent discussion. We can do one better than those discussing the TPP behind closed doors. We can speak openly about what it gets the US and its allies.

<comment><USER11> US is a benevolent guardian of international world order and its geopolitical supremacy has brought nothing but benefits to other parties (Asia, EU, Japan). Unlike China, which only considers its own interests and has a leadership that is politically backward, does not hold any civilized values and poses a military threat to world peace and stability. Your feral Anti-Americanism is cute, but you offer nothing of substance.

<comment><USER15> > poses a military threat to world peace and stability

You can't be serious. In the past 10 years, the US has been a much greater threat to world peace than China, by a very large margin.

<comment><USER11> I suppose world peace is defined as tyrants and terrorists running the world and US doing nothing about it? US has used military action to promote long term peace and stability. China actively harasses sovereign nations in the pacific region and may invade them some day.

<comment><USER16> The instability that we currently have in the world is in almost all cases caused by actions of the US. Afghanistan, Iraq, Iran, Saudi Arabia financed terrorism, the list goes on and on.

Whenever the US intervenes it's either creating a mess or involving itself in a mess that was created by the US in the first place.

<comment><USER13> The stability and victories of peace are also due to the US. It is the US world order. It has problems, but it's also very difficult to determine what alternate histories would look like.

Neither the US nor China are evil or good. They are both rationally inclined to their own interests, which compete. Each have their own issues and histories. The US for the most part tries to find solutions that meet ideals and at the same time meet US interests.

</comment></comment></comment></comment></comment></comment><comment><USER17> The leak is the European Commission:

[http://trade.ec.europa.eu/doclib/press/index.cfm?id=1230](http://trade.ec.europa.eu/doclib/press/index.cfm?id=1230)

<comment><USER13> This is TTIP, not TTP. Can you clarify what you mean?

</comment></comment><comment><USER18> Containing China (as if this will work:) does no good for me if I'm simply handed over to corporate masters who have control over my government and I have no say. Thus the secrecy I suppose.

</comment><comment><USER19> So could someone clarify this for me? Is is that the TPP negotiations are occurring in secret, or is it that the TPP will be passed without it being available for the public to view (which should be the case for most bills?)?

The former seems very reasonable to me (that negotiations happen in secret, and then the final product is presented to the public/congress for a vote), but up to this point I'm still not sure which is the case.

<comment><USER20> Here is a good review of how it works: [http://economixcomix.com/home/tpp/](http://economixcomix.com/home/tpp/)

<comment><USER21> That was amazingly good and informative. Cool site and book!

</comment></comment></comment><comment><USER9> Not to defend potentially terrible policy (the lack of transparency makes cynicism the only reasonable reaction):

But the elephant in the room with the TPP is China.

Ultimately at a high level East Asia has about as many Chinese as Non-Chinese. This means that a strong economic block uniting non-China East Asia and granting it strong market access actually has a chance of fending off China's economic domination of the region.

Will a C

<comment><USER22> If this is about controlling China, and China obviously knows it, then I don't see any reason for hiding it from the public instead of saying "this all is in order to combat China". Or maybe the means proposed are something that most of us aren't ready to accept in order to guarantee the economic supremacy of the West enterprises?

</comment></comment><comment><USER11> This is a necessary and enlightened agreement to put a check on China that does not respect international rules, and give non-Chinese Asian allies and US an economic boost. Whoever is leaking this is not doing a service to the world as it only panders to a misguided populist impulse. This agreement is leading us towards a more free and prosperous world.

<comment><USER13> 100% agreed on impulses of all sorts by citizens who don't understand what the TPP is about. But this is because there is no discussion about it on frank terms - the US can't even take a real stance on it and have to work in vaguaries and "and for national security". The closest they came was Obama's SotU. Without a real explanation there no way for citizens to understand, so they panic. And populists do have legitimate grievances.</comment></comment>


Ask HN: Anyone else getting SSL errors this morning on HN? - <AUTHOR>

Seeing a lot of these: http://i.imgur.com/5Rt4cVN.png<p>Anyone else? <comment><USER2> Clickable: [http://i.imgur.com/5Rt4cVN.png](http://i.imgur.com/5Rt4cVN.png)

I did, but it seems to have transient. The interesting thing is that the Blackberry browser has no way to override the "error", so that provided a productivity boost.

</comment><comment><USER3> I am unable to connect with Chrome and can only connect in IE if I override the security warning.

</comment><comment><USER4> I got these a few weeks ago but definitely transient.

</comment><comment><USER5> yeah I kept getting these on Chrome (Windows) ...</comment>


Scary Xiaomi Phone (2017) - <AUTHOR> https://blog.kunalmhatre.com/scary-xiaomi-phones/ <comment><AUTHOR> I have verified some of the claims in the article myself with a Redmi phone running MIUI 10, as it keeps connecting to api.ad.intl.xiaomi.com (and similar), and since it's blocked on my network, it keeps retrying every minute indefinitely.

More info: [http://blog.thijsbroenink.com/2016/09/xiaomis-analytics- app-...](http://blog.thijsbroenink.com/2016/09/xiaomis-analytics-app-reverse- engineered/)</comment>


Why China isn't as skillful at disinformation as Russia - <AUTHOR> https://qz.com/1699144/why-chinas-social-media-propaganda-isnt-as-good-as-russias/ <comment><USER2> They seem much better IMO</comment>


Jumping Back and Forth - <AUTHOR> http://craftinginterpreters.com/jumping-back-and-forth.html <comment><USER2> The bit at the end about `goto` and Dijkstra is wonderfully written -- I almost wish it were a separate post so I could point people at it directly.

An interesting note about that, by the way -- there is a notion of a "loop- nesting forest" in the literature, which is basically a way of taking a flowgraph with cycles and deriving a tree of loops, essentially recovering the "original" lexical structure of the loops. This works best when the flowgraph is so-called "reducible", for which the definition is slightly technical (and I don't have an excellent intuition for it myself). The upshot is that a CFG is reducible if you only use the usual "structured" control flow operators.

In the sense that you can recover lexical nesting from a reducible CFG, Dijkstra is right on the money: the dynamic behavior and the static behavior are in much closer correspondence. But once you add goto, you admit the _possibility_ of irreducible CFGs, and it's no longer clear how to recover any hierarchical structure. (There are several types of loop-nesting forest out there, but they focus on recovering different aspects -- there's no perfect solution.)

</comment><comment><USER3> Really like how the additions are formatted: "put this code here" is pretty nice. Plus your handwriting is really neat :)

A couple of comments:

> The right—or wrong depending on how you look at it—set of bytecode > instructions could jump into the middle of a block, or from one scope into > another.

> The VM will happily execute that, even if the result leaves the stack in an > unknown, inconsistent state.

The JVM (mentioned earlier) prevents this by not offering the tools to do this, because its semantics ensure that the stack is always in a valid state.

> Have you ever noticed that the ( after the if keyword doesn't actually do > anything useful? The language would be just as unambiguous and easy to parse > without it, like:

> if condition) print("looks weird");

> The closing ) is useful because it separates the condition expression from > the body. Some languages use a then keyword instead. But the opening ( > doesn't do anything. It's just there because unmatched parentheses look bad > to us humans.

Note that many modern languages drop the parentheses altogether.

> That is, if you can get past Dijkstra's insufferable faux-modest self- > aggrandizing writing style…Ah, yet another one of my many discoveries. I > couldn't even be bothered to write it up until the clamoring masses begged > me to.

I know that a lot of people in computer science can be self-absorbed, and I'm all for more modesty, but I think Dijkstra is prolific enough to get a bit of a pass ;)

> You have two computers with the same program running on the same exact same > inputs—so totally deterministic. You pause one of them at an arbitrary point > in its execution. What data would you need to send to the other computer to > be able to stop it exactly as far along as the first one was?

Just look at a modern scheduler and see what it saves whenever it context switches: that's your minimum set.

<comment><USER4> > You have two computers with the same program running on the same exact same > inputs—so totally deterministic. You pause one of them at an arbitrary point > in its execution. What data would you need to send to the other computer to > be able to stop it exactly as far along as the first one was?

What Dijkstra is really getting at here is that there is an "approximate computer" in the programmer's head whenever they are reasoning about the program, and that minimising the amount of information that needs to be transferred into the programmer's head (and keeping it local, rather than scattered about the program!) helps hugely.

<comment><USER5> I think he might also have been thinking about how to prove a program correct? To do that in imperative code, it might be useful to have some concept of a program location that's rigorous enough to represent mathematically.

</comment></comment></comment><comment><USER6> The illustrations remind me of Thinking Forth. The book seems to walk you through the implementation of a scripting language all the way from lexing through parsing (manual recursive descent parser, not parser generation), bytecode generation and VM. Seems like a nice read!

<comment><USER7> I assume the author is familiar with Brodie's work if so many of us are.

</comment></comment><comment><USER8> I'm a big fan of munificent's work</comment>


Lots of Ideas But Have Little Resource To Start Project - <AUTHOR>

I have a lot of ideas for projects which I believe has the potential to hit big on the market.  The only thing I lack is the resources and the drive to actually starting them off. Would anyone be willing enough to collaborate with me in turning some of these ideas into reality? <comment><USER2> Are your ideas software related? If so, what resources do you need? Your profile says you're a software developer, so presumably you have coding skills. You're logged onto HN, so I think we can safely assume you own a computer. Compilers, editors, IDEs, VCSs, databases, frameworks and libraries galore are freely available as open source... Cheap VPS servers can be had for something like, what, 10, 20 bucks per month; and Amazon AWS makes ridiculous amounts of computing power available "on demand" in affordable increments.

I think you'd get more mileage out of posting a request like this on HN if you at least started building something and then got to a point of maybe saying "Hey, I've got this prototype, but to take it to the next level I need somebody with expertise in $WHATEVER, would anybody like to jump onboard?"

Now if you're talking about an idea for a fusion reactor or a new hardware product or something, then OK... but you'll probably still get a more enthusiastic response if you post more about what you have in mind.

</comment><comment><USER3> Almost everyone here has lots of ideas that have the potential to make it big, so unless you have something special to offer it will difficult to find someone willing to work with you. If you have the skills to get started so you can show people an at least partially working product that would greatly increase your chance of attracting a collaborator.

</comment><comment><USER4> Without putting too fine a point on it -- if you don't have the drive to start it, why should someone else have more drive than you?

Here's some things you can do since it sounds like you've got more time than money (like most entrepreneurs): break your idea down into a few simple components and see if you can build any aspect of them. I know people who have started companies with sketches on napkins -- you can too.

Go find 10 people who would be ideal customers. Talk to them about what your idea is going to do for them. Do they really have a need? How much is it worth to them? Would they _actually_ pay for it?

</comment><comment><AUTHOR> Thanks to all those who replied. I think I may need to draw up something more _relevant_ so that I would be able to convey more clearly what I am trying to get across.</comment>


Repl.it – React Native mobile apps in browser - <AUTHOR> https://repl.it/site/react_native <comment><USER2> Hey, ceo/cofounder of Repl.it here. Was pleasantly surprised to see this on HN! React Native and Expo has taken the world of mobile development by storm and we're happy to play a part in spreading this amazing technology.

Many of you might know us from being one of first in-browser REPLs (for 30+ programming languages [https://repl.it/languages](https://repl.it/languages)). Our mission is to make programming more accessible and that's why, more recently, we've been also working on tools for educators wanting to teach programming. Our Classroom product ([https://repl.it/classrooms](https://repl.it/classrooms)) makes it easy for anyone to teach programming online and in physical classrooms.

Happy to answer any questions.

<comment><USER3> 1\. Im a happy repl.it user.

2\. Do you think that native gui widgets could be emulated on the browser in order to do native development on your platform?

3\. Will you offer a pipeline from repl.it to app stores? One click publish sort of thing.

<comment><USER2> I'm happy that you're happy.

> 2\. Do you think that native gui widgets could be emulated on the browser in > order to do native development on your platform?

A lot of users request support for things like Python Tkinter for example, and while it's possible (e.g. stream via VNC) we always try to balance our users' requests and where we believe programming is headed. For example, there has been a massive shift from native GUI to web-based tech (even on the desktop via Electron).

> 3\. Will you offer a pipeline from repl.it to app stores? One click publish > sort of thing.

Yes, we're considering that and not just for React Native for other platforms as well. Imagine building a web service on Repl.it and hosting it with one click!

<comment><USER4> I think regarding native interface elements, the original commenter is asking regarding React Native components that are native to IOS or Android.

<comment><USER2> That's already supported via Expo :)

</comment></comment></comment></comment></comment><comment><USER5> The title is confusing me a bit. This is writing/deploying react native apps in a browser, right? As opposed to running them in a browser.

<comment><USER2> That's correct, it'd be great if the title was changed by the mods.

</comment></comment><comment><USER6> Hi- Cofounder of Expo here. Was really fun to work with the Repl.it team on this. This came out really well. It's such a good way for novices to learn to make mobile apps.

<comment><USER7> Can you explain the difference between [https://snack.expo.io/](https://snack.expo.io/) and [https://repl.it/languages/react_native](https://repl.it/languages/react_native)?

They both seem like browser based code editing tools to make a react native app. Why the partnership with repl.it? Do they have a larger use base and thus give you visibility?

<comment><USER8> There's a discussion about this on this page here: [https://news.ycombinator.com/item?id=14296631](https://news.ycombinator.com/item?id=14296631)

</comment></comment></comment><comment><USER9> But can I render my React Native for Web app in an in-app webview, on Repl.it?

<comment><USER2> Not currently. But we'll implement it if enough people want it. We have a Canny board where people can vote on new languages/stacks for us to support:

[https://replit.canny.io/languages- requests](https://replit.canny.io/languages-requests)

<comment><USER10> Small world! I consider myself really lucky to have worked with you (Amjad) and Andrew (Canny Founder) on the React Native team in 2014/2015\. Great times!

Canny, repl.it, plus Expo of course.. you're the React Native mafia!

<comment><USER2> It was such a great time and especially awesome working with you Eric!

"React Native mafia" \-- love it! :D

</comment></comment></comment></comment><comment><USER11> There And Back Again: A React Developer's Tale

</comment><comment><USER12> FYI - I just released this:

Dynamic, Responsive Layout for Universal and Orientation-Aware React Native Apps (works in Expo, XCode et al): Flexbox-based layout library that makes building Universal layouts in React Native more fun and much easier than using Flexbox and JS directly.

Repo: [https://github.com/idibidiart/react-native-responsive- grid](https://github.com/idibidiart/react-native-responsive-grid)

aspectRatio demo: [https://m.youtube.com/watch?v=Nghqc5QFln8](https://m.youtube.com/watch?v=Nghqc5QFln8)

breakPoints demo: [https://www.youtube.com/watch?v=GZ1uxWEVAuQ](https://www.youtube.com/watch?v=GZ1uxWEVAuQ)

</comment><comment><USER13> > an SDK like XCode

"Xcode"

<comment><USER2> Thanks will fix it (but only reluctantly because Apple is at fault here)

</comment></comment><comment><USER14> Love Amjad and Repl.it!!!! :D

</comment><comment><USER15> (Please downvote if my comment is off-topic)

Is it possible to support creating and deploying Minecraft server mods using repl.it?

At one point (2-3 years ago) my son was interested in doing this but the pain of installing Java, an IDE (NetBeans), getting started in Java programming and deploying it on a vanilla Minecraft server was just too much.

Or are there better options now for Minecraft server mod programming?

<comment><USER16> If running two installers is a pain maybe programming is a wrong area to be interested in.

<comment><USER2> I disagree. When you're just starting out all this software you have to install is really discouraging. Plus some people don't own their personal computers and use the computers at school etc so it's much better for them if there was a portable development environment.

</comment></comment></comment><comment><USER17> I would prefer not to create an account to learn something... any chance this will change?

nevermind; found the anonymous option. Thanks!

<comment><USER18> Same for me. But I can't find the anonymous option... :(

<comment><USER2> You can play with React Native (without signing up or taking the course) here: [https://repl.it/H0Qp/2](https://repl.it/H0Qp/2)

</comment></comment></comment><comment><USER19> how does repl.it compare with expo's snack (snack.expo.io)?

<comment><USER20> It integrates with it using the snack-sdk: [https://github.com/expo/snack- sdk](https://github.com/expo/snack-sdk)

repl.it integrates this with their classrooms product to make it into a structured learning tool with assignments and automatic evaluation of solutions. Direct link to the course: [https://repl.it/community/classrooms/17650](https://repl.it/community/classrooms/17650)

</comment></comment><comment><USER21> It's a good tool, but how does it compare with: [https://github.com/decosoftware/deco- ide](https://github.com/decosoftware/deco-ide)

It seems that it also renders react native and has better features around styling.

<comment><USER2> Deco is great but it's an IDE and the way we approach things is a little bit different than how IDEs do. Generally speaking, when you're an IDE you're competing with all the other IDEs on feature-by-feature basis because you want to support the entire developer workflow.

For Repl.it, we approach everything from the novice point-of-view. We're ok with things being missing as long as we make it very easy for people who are just getting started with programming. We'll expand towards more power as long as it doesn't overwhelm or takeaway from the beginners experience.

For example, when we wanted to support third-party packages one way we could've done it is allow people bash access to install packages from PyPi but instead we've invested the time to pre-install all PyPi packages in existence on shared drive ([https://repl.it/site/blog/python- import](https://repl.it/site/blog/python-import)) and mount it on every container we start for our users. That way you don't have to know how to install it to get started with, say SciPy.

</comment></comment><comment><USER22> Is it possible to structure a project inside repl.it? I mean I have a small React project and wanted to replicated it in your IDE/repl

<comment><USER2> We're planning to add file and project tree support. For now it's more geared towards prototyping, intro courses, and experimentation. Stay tuned, we hope to have something for you soon!

</comment></comment><comment><USER23> Repl.it should be in every school in America! We need more innovation like this! #Amjad4president

</comment><comment><USER24> I really want to learn React Native and this looks like a fantastic tool. Does anyone have any documentation that easily explain design patterns in RN? Does all code live in 1 file?

<comment><USER25> It works very similarly to React websites. Check the official React Native documentation and guide [1], it's a great introduction.

[1] [https://facebook.github.io/react-native/docs/getting- started...](https://facebook.github.io/react-native/docs/getting-started.html)

</comment></comment><comment><USER26> This is awesome!

</comment><comment><USER23> It's always great when people leave Facebook (react native team) and create amazing products to improve the world!

</comment><comment><USER27> how do you make money?

<comment><USER2> We haven't started monetizing yet but we already announced our plans for Pro accounts. We've been lucky that our platform has been very popular in highschools, colleges, bootcamps across the world so we'll be charging for additional features hopefully soon.

<comment><USER28> I was looking everywhere for info on pricing, I suggest you mention this somewhere. With the "create a free account" I thought I'd have to go through all the trouble of signing up before being faced with what I'd have to pay (looking at this as a teacher).

<comment><USER2> Good suggestion. We have a lot of cleaning up to do on the sign up flow/landing pages.

<comment><USER29> Just visited using my phone. The site is barely responsive and therefore had a hard time understanding what the tool is about. Might be worth fixing!

Otherwise, based on the comments here, looks like a really cool service!

<comment><USER2> Thanks, the site linked here is/should be responsive. What browser/phone? Care to send me a screenshot? (firstname.lastname@example.com) thanks!

<comment><USER28> I found it surprisingly useful with my phone. But I couldn't edit the code using my regular keyboard (swiftkey), it did not add letters, only replaced the letter before the cursor, but it worked fine with the stock android keyboard. Haven't experienced that elsewhere.</comment></comment></comment></comment></comment></comment></comment>


528 Muslim Brotherhood supporters sentenced to death in Egypt - <AUTHOR> http://www.cnn.com/2014/03/24/world/africa/egypt-muslim-brotherhood-sentences/

<comment><USER2> This is not a sentence anymore. This is manslaughter.</comment>


A Branchless UTF-8 Decoder - <AUTHOR> http://nullprogram.com/blog/2017/10/06/ <comment><USER3> The core of the algorithm shows that UTF-8 is actually big-endian in its ordering of the bits, making it somewhat more difficult to implement efficiently on the usual little-endian machine --- the first byte, at the lowest address, actually contains the _most_ sigificant bits. Had it been the other way around, the final shift would not be length-dependent.

Also, none of the compilers I tried at [https://godbolt.org/](https://godbolt.org/) were able to combine the 4 s[0...3] 8-bit reads into one 32-bit read, which is somewhat disappointing. They generated 4 separate byte-read instructions, one for each s[0..3]. Yes, I know it could be unaligned, but this is x86 where it would still be faster than 4 separate reads. You would need to do this instead (and sacrifice endianness/alignment-independence):

        uint32_t v = *(uint32_t*)s;
        *c  = (uint32_t)(v & masks[len]) << 18;
        *c |= (uint32_t)((v>>8) & 0x3f) << 12;
        *c |= (uint32_t)((v>>16) & 0x3f) <<  6;
        *c |= (uint32_t)((v>>24) & 0x3f) <<  0;
        *c >>= shiftc[len];

We're still left with a bunch of shifts, ands, and ors, the purpose of which is to essentially "compact" the 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx bitstring into one 21-bit codepoint by removing the bits in the middle. All the compilers I tried weren't so clever as to do this (assuming eax = v from above after masking, and cl = slightly modified shiftc[len]) at any optimisation level:

        bswap eax
        mov ebx, eax
        and ebx, 00FF00FFh
        lea ebx, [ebx + ebx*2]
        add eax, ebx
        shr eax, 2
        shl ax,4
        shr eax, cl

I played around with optimising UTF-8 decoding a while ago, and the above resembles one of the fastest and smallest ways to "compact" the 4 bytes into a codepoint.

Of course, this bit string manipulation would be much faster and trivial in hardware (essentially rearranging wires), which makes me want a LODSUTF8 instruction that operates like LODSB but reads a whole codepoint instead, and sets CF on error...

<comment><USER4> One thing you could do to optimize further (on CPUs with the BMI2 instruction set) is to use the PEXT instruction to perform the bit extract operation (after a BSWAP of course). The whole operation could be something like (untested):

        ; Parameters: RDI - pointer to input character
        ; Return value: RAX - Unicode codepoint, or -1 for error
        lea r8, [encoding_table] ; Load pointer to table base using rip-relative addressing

        mov edx, [rdi] ; unaligned (over)read of 32-bit utf8 codepoint
        mov ebx, edx   ; Copy to EBX to construct our table index
        and ebx, 0xf8  ; Mask off the (potential) data bits
        ; Now we want to convert the top 5 bits into an index into a table of three * 32-bit entries
        ; Currently EBX = index * 8, we need index * 12, so we'll divide by two and then multiply by 3
        shr ebx, 1
        lea ebx, [ebx + ebx * 2]

        bswap edx      ; Get the codepoint into big-endian representation

        pext ecx, edx, [ebx + 4] ; extract padding bits using mask
        pext eax, edx, [ebx] ; extract data bits
        cmp ecx, [ebx + 8] ; check padding bits
        cmovnz eax, -1
        retq

        encoding_table:
        ; 00000xxx - <USER2>
        times 16 dd 0x7F, 0x80, 0x00
        ; 10000xxx - 10111xxx (invalid)
        times 8 dd 0, 0xFFFFFFFF, 0 ; The padding will never match here, forcing an error return
        ; 11000xxx - 11011xxx (two bytes) - padding value 11010
        times 4 dd 0x1F3F, 0xE0C0, 0x1A
        ; 11100xxx - 11101xxx (three bytes) - padding value 1110 1010
        times 2 dd 0x0F3F3F, 0xF0C0C0, 0xEA
        ; 11110xxx (four bytes) - padding value 111 1010 1010
        dd 0x073F3F3F, 0xF8C0C0C0, 0x7AAAA

<comment><USER5> Pretty cool, a recent development, only in Haswell and later architectures (2013 and later.)

[https://en.m.wikipedia.org/wiki/Bit_Manipulation_Instruction...](https://en.m.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets)

<comment><USER3> ...and on the Haswell PEXT runs in _one_ uop with a latency of 3! That is nothing short of amazing for an operation which, from its description, would seem to require a microcode loop or at least a few more cycles to collect an arbitrary number of bits with arbitrary gaps between them:

[http://www.felixcloutier.com/x86/PEXT.html](http://www.felixcloutier.com/x86/PEXT.html)

The only unfortunate thing is that it was introduced quite recently in terms of x86 history (instead of being present early on but just microcoded), so earlier software can't take advantage of it nor any subsequent improvements, and uses a pretty complex encoding (VEX) only usable in protected mode. But if anything, this is another datapoint in the argument in favour of CISC --- try doing this on a MIPS, RISC-V or even ARM! With less powerful ISAs, even something as simple as the "shl ax, 4" (shift the lower 16 bits _only_ ) turns into a multi-instruction sequence of masking and combining.

<comment><USER6> ARMV8 has bit field extract/insert, which are fairly powerful, and I'd say more generic than "shl ax,N", which is really only there for legacy reasons (it's an instruction with 16-bit operator prefix).

RISC generally tries to keep instructions as generic/useful as possible to keep silicon small.

</comment></comment></comment></comment></comment><comment><USER7> I ran into the same UTF-8 decoder that you did ([http://bjoern.hoehrmann.de/utf-8/decoder/dfa/](http://bjoern.hoehrmann.de/utf-8/decoder/dfa/)) and tried to better understand why it was fast. In the process, I wrote a naive UTF-8 parser that turned out to be significantly faster. I used a version of the original benchmark (the current Hindi Wikipedia dump as one big XML file).

My original benchmark read the file as a stream — no guarantee that you'll get whole characters in each read — so I modified it a bit to read the whole file into memory, parse it, and print out the number of characters decoded and an XOR "hash". Here's what happened (looking at the "user" line of `time` output):

\- Bjoern Hoehrmann's decoder: 2.159s

\- This post's decoder: 2.754s (27.6% slower)

\- Naive decoder: 1.453s (32.7% faster)

I'm curious whether this test makes sense and, if so, why there's such a big difference. Currently my best guess is the data cache pressure mentioned in twoodfin's comment.

I guess I should write a blog post, too.

Naive parser: [https://gist.github.com/s4y/7c95f1ebeb2c069cfb09db3c3251eca3](https://gist.github.com/s4y/7c95f1ebeb2c069cfb09db3c3251eca3)

Benchmarks: [https://gist.github.com/s4y/344a355f8c1f99c6a4cb2347ec4323cc](https://gist.github.com/s4y/344a355f8c1f99c6a4cb2347ec4323cc)

<comment><USER8> Dealing with situations like this where you can't guarantee you read a complete decode sequence is exactly where memory mapped files are gold.

Replacing read, test sequence end, buffer, drop buffer if it exceeds certain length without sequence end but record sequence start, seek until end sequence is found, and process that mess in a safe, passably-efficient manner with memory mapped files made my cross-platform tac a breeze to write: [https://neosmart.net/blog/2017/a-high-performance-cross- plat...](https://neosmart.net/blog/2017/a-high-performance-cross-platform-tac- rewrite/)

<comment><USER9> The simplest thing to do there is to issue a read if you have less than 4 bytes remaining to decode. This guarantees that you always have at least one well formed character, or an EOF coming up.

Mmap doesn't work with pipes, which hugely reduces the utility of this kind of program.

<comment><USER8> You aren't reading a byte at a time, it's a block. You have no guarantee that you just ended on yet another partial sequence. It usually makes more sense to just rewind to the last complete sequence (though with streams that is not always an option).

<comment><USER9> > You have no guarantee that you just ended on yet another partial sequence

Which is why you don't read to the end (until you have an EOF). You can just sidestep the partial sequence problem by getting more data before there's potential for a partial sequence to show up. The longest possible sequence is 4 bytes, so as long as you ensure you have 4 bytes available, partial sequences are impossible on well formed input.

</comment></comment></comment></comment></comment><comment><USER10> A constant reminder: Be wary when microbenchmarking functions that make relatively heavy use of lookup tables vs. those that don't. You may not see the effects of the pressure this adds to the data cache, but a real program using many functions and other data will.

The same is true for long vs. short functions and the instruction cache.

<comment><USER11> If that bothers you, there's this approach:

        #define VALIDTAB (0x7f00ffff)
        #define LENTAB (0x000000003a550000)

        inline bool isvalidutf8start(char c)
        {   return((VALIDTAB >> (c>>3)) & 1); }

        inline unsigned utf8length(char c)
        {   return(1+((LENTAB >> ((c>>3)*2)) & 2)); }

The 32-entry table of lengths can be coded up as a 64-bit value. The "is valid" table is stored as a separate constant.

<comment><USER11> Should be:

        inline unsigned utf8length(char c)
        {   return(1+((LENTAB >> ((c>>3)*2)) & 3)); }

<comment><USER11> Correction:

        #define LENTAB (0x3a55000000000000)

</comment></comment></comment></comment><comment><USER12> > My primary — and totally arbitrary — goal was to beat the performance of > Bjoern Hoehrmann's DFA-based decoder.

The thing is, that decoder could be already branchless. The core of the algorithm is:

        *codep = (*state != UTF8_ACCEPT) ?
          (byte & 0x3fu) | (*codep << 6) :
          (0xff >> type) & (byte);

Which can be compiled with a conditional move (CMOV) instead of a branch. In fact:

> With GCC 6.3.0 on an i7-6700, my decoder is about 20% faster than the DFA > decoder in the benchmark. With Clang 3.8.1 it's just 1% faster.

There's a chance that when inlined into the benchmark Clang uses a CMOV while GCC uses a branch. As he correctly points out, his benchmark is the worst case for branch prediction:

> The even distribution of lengths greatly favors a branchless decoder. The > random distribution inhibits branch prediction.

<comment><USER13> That looks way oversimplified. I once wrote a minimal HTTP server in Lua for Nmap project and part of the problem was UTF8 security. Consider get_next_char_len function here to see some of the edge cases:

[https://github.com/nmap/nmap/blob/b7a5a6/ncat/scripts/httpd....](https://github.com/nmap/nmap/blob/b7a5a6/ncat/scripts/httpd.lua)

<comment><USER14> Mimimal but useful. I just tried this httpd.lua script with djb's tcpserver and was pleasantly surprised. It is quick and handles large PDFs well enough. I like that there are no third party libraries. If directory listing and output for video could be added I might try using something like this on a local LAN as a replacement for the httpd binary I am using.

<comment><USER13> Glad to hear you like it! What do you mean by output for video? As for video listing, Lua doesn't provide a cross-platform way to do this, but I might have hacks for Unix/Windows that parse the output of dir/ls commands. Interested? Can't promise I find it though.

<comment><USER14> Briefly tested with a few filetypes and a couple of browsers, including Safari. Problem loading video/mp4, i.e., problem with "HTTP streaming". Maybe need to handle Range: header?

Of course, any examples in Lua of different approaches to UNIX directory listing via HTTP are appreciated. Still a Lua noob.

</comment></comment></comment></comment></comment><comment> Tuna-Fish UTF-8-decode and encode are basically the only things that could be done by a single instruction, are common enough for implementing this instruction to make sense, yet still don't exist in x86. I wonder why.

<comment><USER15> Every time I have worked for a company that had a tight relationship with Intel I've gotten the opportunity to meet with them and ask for chips features. I always ask for encoding / decoding Unicode. So far I've been ignored for 15 years or so.

</comment></comment><comment><USER16> You need to have padding bytes at the end of the stream. What if you don't have them and got a const pointer to a buffer provided by a user? Then you need to copy the entire buffer again with the padding bytes behind it. Are there any tricks to avoid this being costly?

</comment><comment><USER5> He can also add the restrict keyword on his pointer arguments to squeeze out some more of the compiler's optimizations.

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

</comment><comment><USER17> Presumably !len is a test and set instruction which has the same impact on the pipeline. But that said branchless code that fits in a couple of cache lines seems like it would be the best you could do.

<comment><USER18> I don't know the answer to this. Say on x86, if you do "test eax, eax", then "setz eax", then use eax in further arithmetic - obviously there is no jump involved, but does that stall the pipeline?

At any rate the caller needs to check for errors coming out of this function (the int *e parameter) and zero termination, so there will be conditional jumps somewhere in the use of this thing. (And reading the code it seems to assume s[3] is safe to dereference...)

</comment></comment><comment><USER6> Seems like a fun project! One thing I stumbled over:

> unsigned char *next = s + len + !len;

> Originally this expression was the return value, computed at the very end of > the function. However, after inspecting the compiler's assembly output, I > decided to move it up, and the result was a solid performance boost. That's > because it spreads out dependent instructions. With the address of the next > code point known so early, the instructions that decode the next code point > can get started early.

If there's no change in the actual logic, I feel like the compiler should be able to move up expressions in order to make them available earlier. I wonder whether this was tested/inspected with some optimizations turned off.

<comment><USER19> Except in case of profile-guided optimization (which few people use), the compiler has one massive weakness: it doesn't know the "shape" and distribution of your data. If it did, it would be able to do quite a bit more, but it mostly does not.

I also find that people have way too much faith in omnipotence of compilers. If you care about performance, you _have_ to go down to the assembly level and ensure that the compiler did the right thing, at least in the hotspots. Oftentimes it does not, and you have to change your higher level code to make it cooperate.

<comment><USER6> The example line is just operations of registers, without any dependencies until the function return. The compiler should know to interleave these instructions with the code, so that the CPU can issue them alongside other operations.

Compilers should view operations more like a dependency graph, laying out operations with an interleaving that maximizes multi-issue, while keeping register pressure in check. In my mind, if the human can significantly change the output of the assembly by moving one line, the compiler optimizations may be turned off.

<comment><USER20> > laying out operations with an interleaving that maximizes multi-issue, while > keeping register pressure in check

How to actually do that has been an active research topic for 30 years or so. So far, that research hasn't yielded anything that is simple, efficient, and effective enough to be included in general-purpose compilers. Last time I looked at LLVM's backend, it used to schedule for minimal register pressure because spills are more expensive in general, and because out-of-order execution will undo your careful scheduling anyway. It also has a second scheduler after register allocation, but at that point it's hard to move stuff, especially on x86.

On this particular code, manual scheduling paid off, partly because humans, unlike compilers, can simply _try_ different variants and keep the best. Think of it as survivorship bias.

Edit: BTW, if you actually compile the code from Github and compare the generated assembly to a version where the computation of next is moved to the end, you'll see that moving it to the end causes GCC to allocate a stack frame (on x86-64), which it doesn't do in the manually optimized one.

</comment></comment></comment></comment><comment><USER21> Similarily, I made a couple of year ago a UTF8 decoder using SIMD. It is almost branchless. (The branches are there only to detect errors) [https://woboq.com/blog/utf-8-processing-using- simd.html](https://woboq.com/blog/utf-8-processing-using-simd.html)

</comment><comment><USER22> So the classic lookup-tables are faster than switch/case?

*c >>= shiftc[len]; could probably be replaced by switch(len) and would result in equal code.

My guess is that the speed increase comes from the trailing 3 bytes potential overread and the somewhat odd error handling, not the lookups.

</comment><comment><USER23> Sorry dumb question, why branchless?

<comment><USER24> Why branchless? Because branches can kill performance. For an explanation, see this answer on branch prediction: [https://stackoverflow.com/a/11227902](https://stackoverflow.com/a/11227902)

</comment></comment><comment><USER25> I don't see where this is catching encoding errors, like overlong forms. That has security implications.

It's useful when there is some assurance that the UTF-8 is error-free. E.g. tdata bundled with the program or otherwise trusted.

<comment><USER26> This line catches overlong forms:

      *e  = (*c < mins[len]) << 6;

<comment><USER25> I see, thanks.

</comment></comment></comment><comment><USER27> This appears to be a descendant of Duff's device ([https://en.wikipedia.org/wiki/Duff's_device](https://en.wikipedia.org/wiki/Duff's_device))

</comment><comment><USER28> Benchmarks should've included random ASCII. I understand they hinted at that with labeling their benchmark synthetic, but it'd give a idea of the impact of branch mispredicts

</comment><comment><USER29> I'm an idiot in this area.

Why would you decode utf8?

<comment><USER30> In order to look up glyph in your font, you'll typically need a 32bit unicode code-point. A utf-8 string encodes those code-points using a variable-number- of-bytes scheme, so you need to decode each code-point before you can render it.

<comment><USER31> Yes, but this code expands it to a 32-bit array. That seems a bit silly because you'd be wasting a lot of memory bandwidth there. I suspect the loss could even be greater than what you've gained from removing those branches.

<comment><USER32> Not quite, it's expanded to a 32-bit integer, one codepoint at a time.

</comment></comment></comment></comment><comment><USER33> Weird to talk so much about branch prediction for branchless code.

<comment><USER34> 1\. Understanding how branches work is important to understanding the motivation for branchless code.

2\. It's not entirely branch less. Consistent branching is equally important.</comment></comment>


Ask HN: Does your job feel like a production line? - <AUTHOR> In my current job and previous job there has been a huge emphasis on estimates for work and estimates vs. actual.
This is on the level of all tasks, even 2hr ones.
I find it causes stress as I am always looking at the clock and sometimes taking shortcuts so I don't feel the shame of going over or asking for more time.
It also means I don't bother thinking or exploring ideas to make things better as there isn't a JIRA ticket for that and i would have to get permission first. Probably they'd say no because backlog takes priority.
I've been taken to task for how long something has taken many times. I'm sick of it.
It was a big reason I quit my last job and similarly might quit this one.
These are in otherwise prima facie great jobs: good pay, good side perks like you'd imagine from Google.
Is this the trend towards holding a stopwatch up to he developers head?, have I been unlucky, am I being unrealistic to go back to the old days where your boss broadly trusts you? <comment><USER2> Yeah. The middle management sucks. I am in the same situation and I think the better solution is: you get a tech lead position and then do the things on your own schedule. Another alternative solution is to go to great team/companies to avoid this kind of middle management.

The first line engineer always be played by the sucked middle management.</comment>


NEED Your FEADBACK - <AUTHOR> NEED YOUR FEADBACK
http://www.aperyin.com
Do you understand what is the service? Does it make sense? What do you think I need to do differently? <comment><USER2> Using the format in [https://news.ycombinator.com/show](https://news.ycombinator.com/show) (see the rules in the first sentence) has a higher chance to get feedback.

All-uppercase titles and resubmitting the same question twice don't work on hacker news.

There is a typo on your pricing page "Subsription".

In my opinion you're trying too had to sell a consultant job like a fixed product. I don't think the larger customers with lots of data looking for a custom BI solution know that there won't be single price. If you offer 20% more efficiency in their company (supply chain?) it's worth a lot more than $400.

$399/month translates to one day of work (consultancies in that space charge even more) and you offer unlimited support. I can't imagine that works, at least not to the full satisfaction of the customer(s). And if the customer needs more work from you then you've already established a low price, e.g. it's now harder to charge $400 per day.

[https://vimeo.com/72140534](https://vimeo.com/72140534) does good talks on setting a price (hint: always aim higher).

</comment><comment><USER3> Using allcaps and this kind of title is a good way to get your submission flagged here. From the guidelines: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

> _In Submissions_

> _Please don 't do things to make titles stand out, like using uppercase or > exclamation points, or adding a parenthetical remark saying how great an > article is. It's implicit in submitting something that you think it's > important._</comment>


FAA to consider increasing Light Sport Aircraft weight limit to 3,600 pounds - <AUTHOR> https://www.avweb.com/blogs/insider/LSA-Weight-Increase-Pop-the-Champagne-Cork-231643-1.html <comment><USER2> So, as long as I'm in my drone, it's fine. If I fly FPV, though, woah hold on, too dangerous!</comment>


Teenager, 18, accused of sharing video of Christchurch faces 14 years in jail - <AUTHOR> https://www.dailymail.co.uk/news/article-6820769/Teen-accused-sharing-livestream-Christchurch-massacre-faces-14-years-hes-denied-bail.html <comment><USER2> why

<comment><USER3> Likely because the charge includes more than sharing the video:

> The young man has also been charged with allegedly posting to social media a > photograph of one of the South Island mosques being attacked with the > message 'target acquired' along with other chat messages 'inciting extreme > violence'.</comment></comment>


Life as a Middle-Aged Geek - <AUTHOR> http://taoofmac.com/space/blog/2016/09/15/2240 <comment><USER2> My advice is to deeply study your personality, proclivities, and weaknesses. Decide if you will move from "specialist to generalist" (eg: management) or "specialist to deep specialist" (deep engineer). Actively plan your career.... Are you idea, information, or people focused? The world rewards each - but you have to find your niche. I like to lead, inspire, plan products, add significant revenue, and mold careers in high risk, time compressed situations. I dislike managing day-to-day. I've learned this. Plan that everything you do will become "the new normal", always pushing the edge.

I've found that as I get older my value has increased exponentially, but it's related to my personality type and actions. No matter your thoughts on Myers Briggs, it offers a "starting point". I'm an ENTP - which I used to believe "a curse" in engineering circles, until I've realized it is the best gift I could have ever had.

Focus on where your personality excels, and find an area of interest where others are not like you.

<comment><USER3> What do you do, if not manage day to day? This definitely sounds like the direction I'm leaning, so it'd be helpful to see what others have done. My email is in my profile if you'd prefer.

<comment><USER2> I help companies realize new revenue paths, and to execute on new products quickly. Specifically, I figure out the 20% of engineering effort to get to the initial results. I often skip much of the initial "Product Manager-y" tasks, and build quickly with a very small team, to be in a position to sell - often based on intuition. I realized years ago that I couldn't compete in "traditional domains" of engineering - my interests in everything meant I could not become a master, traditional engineer. That career path was out. I can't compete with INTJ or ISTJ (deeply focused personalities) which is what many software engineers classify as - but I can outcompete on innovation and new revenue.

<comment><USER4> I'd like to have a chat with you if you're up for it, I don't see any contact info for you in your profile but you can contact me through my website listed in mine if you want.

</comment></comment></comment></comment><comment><USER5> Nice work!

I'm not there yet but I'm getting closer every day. Mid-30's geek.

I definitely feel as though I've never been better. Even with a family and a job I'm knee deep in predicate calculus, model checking, computer-assisted proofs, and dependently-typed languages. I still have room for a little fun and like to write little games and procedural graphics demos.

I think my 20-year old self had a lot more time and energy but he had to fake a lot to get by... between then and now I've had the time to research and understand many concepts that I only took for granted and pretended to have an understanding about. It's pretty cool working with my younger colleagues since I love teaching so much and I can show them tricks and patterns I wish I had known when I was starting out. We work well together.

<comment><USER6> I would love to have someone like you as a mentor.

</comment></comment><comment><AUTHOR> Hi there, I'm the OP. AMA, I'll try to give cogent replies despite my advanced age :)

<comment><USER7> I don't think they believed you, you old codger.

<comment><AUTHOR> Ah, the pot calling the kettle black :)

</comment></comment></comment><comment><USER8> I like to think about this like compound interest.

What skills can you invest time in, continuously & over time, that will make it impossible for people to catch up with you?

Consequently, I'm not convinced "keeping skills current" is the way to go. Most of us are curious about new tech: it's probably what brought us into, and keeps us in, the field. But, anyone can pickup "current tech X". Sure, you might become faster at learning something, but I'm not convinced that 5 years of experience vs 10 years makes much of a difference.

<comment><USER9> Math math and more math.

<comment><USER10> Can you elaborate? Do you have any personal experience that makes you say this?

<comment><USER11> I'm not the parent, but I agree with 'math, math, and more math' as good advice.

My own situation is this: I've been working as an RF telemetry and instrumentation engineer for 8 years. Time and time again, I've been able to rise above because I put in the time to understand the fundamental math underlying what we're doing, and use that understanding to troubleshoot issues. Surprisingly, most of my colleagues have not put in this level of effort and their career trajectories have suffered as a result.

I would also add this: learn to program. Now, the vast majority of people here already do know how to program, but many people in the aerospace and mechanical engineering fields really don't, or don't use what knowledge they gained in school. I put in the time on the side to learn some data science and programming skills. I was able to use these skills to solve some rather tricky problems, gaining me additional recognition. I have now used this success to switch career tracks to a software engineering position. I start the new position next month, wish me luck!

<comment><USER12> Good luck with the new position. I'm also an RF guy, but do some SDR programming, mainly as a hobby, but had a job offer over it recently.

<comment><USER11> In a related note, I _just_ had a conversation with an Aerospace Engineer here who said that throughout his degree he never had to program. Now he's trying to find other employment (as this program is winding down) and all the jobs that he is seeing require some programming skills.

</comment></comment></comment></comment></comment></comment><comment><USER13> So heres a pretty simple question for older developers. If the field is so rough why not apply to remote working jobs with a stripped down resume that makes it look like you're in your mid thirties? Throttle your internet for any video calls so at best it looks blocky and then switch to just voice. If all that matters is your code why would anyone notice? Like women in tech I can understand, it's harder to disguise yourself, but if you're in your mid 40s or mid 50s why not just pretend?

<comment><USER14> I think plenty of people take this route. There are stories from SV about middle-aged men who undertake cosmetic surgery to look younger, so it's not a stretch that some people would do what you're saying.

However, what you're suggesting isn't a solution. It's not even a band-aid. Imagine living your days worrying about whether or not you'd be exposed for being older than what you are. That would be maddening.

I'm only 28, but I fear what the career landscape will look like when I hit mid-life as well. My inclination is that the field has grown so much we're looking at peak-agism right now. Although I've never seen it in person, it makes me wonder when so many teams don't look like they have anyone over 40.

<comment><USER13> I think I'm being misunderstood. I'm not saying this is a solution, I'm asking why this doesn't happen. Maybe it does though.

<comment><USER14> Ah, gotcha. I wasn't trying to put words in your mouth. But I think it does happen frequently (and not just in software development). Certainly if I were faced between not providing for my family and dying my hair / getting botox injections, I would choose the latter.</comment></comment></comment></comment>


Show HN: Assembly to C code Decompiler - <AUTHOR> http://www.decompiler.org/ <comment><USER2> Just this week I was exploring C decompilers and stumbled upon the open source Snowman[0], which worked well for my purposes and can run in a self contained mode with a dependency on Qt5.

[0] [https://github.com/yegord/snowman](https://github.com/yegord/snowman)

<comment><USER3> Interesting, Snowman is also integrated into x64dbg.

</comment></comment><comment><USER4> How do decompilers work in general? I'm imagining the normal compiler pipeline in reverse: convert the machine code into some intermediate representation, add some 'de-optimization' passes to make the control flow more clear, then a back end which converts that into a C AST, which is then printed out into valid C code.

<comment><USER5> I don't think this can get you to a meaningful code, but more of assembly- looking C. It would require some sort of machine learning to guess code fragments with proper variable names, properly nested loops, etc.

<comment><USER4> variable names are almost certainly a lost cause, but IDA pro is pretty good at recovering control flow, which could be turned into C constructs (didn't Dijkstra prove something about expressing any control flow using structured programming constructs?). You'd probably need a bunch of heuristics to tell the difference between a while loop and a for loop. More ambitious would be trying to un-inline functions, which would require liberal use of the de- optimizer and recognizing common sub-structures.

</comment></comment></comment><comment><USER6> Anyone know how this compares to the industry-standard Hex-Rays Decompiler? (Sold as an add-on to IDA Pro)

<comment><USER7> Can you actually buy it though? I have it in the back of my mind that they restrict sales of ida pro and the decompiler as an anti piracy measure.

<comment><USER8> They certainly don't have a process where you can just "add to cart" on their website and hand them a couple thousand dollars. I'm not sure what extra checks they do through their sales team; maybe they're just trying to make sure that large businesses aren't buying up single-dev "Named" licenses and installing it across their organization, or maybe they're trying to verify that buyers are known security researchers, or something.

<comment><USER9> Umm, I bought my license by doing exactly that — add to cart and fork over a few thousand dollars. I don't remember them doing any verification other than requiring a business email address.

</comment></comment></comment></comment><comment><USER10> Closed source, windows only, diss-assmebles 6502 only, and expires next month. No thanks.

<comment><AUTHOR> I don't like to reply to my own posts, but here goes.

It's closed source just at the moment. HexRays is closed too.

It can run on Linux or MacOSX as CLisp runs on those platforms. I just haven't started work on porting to new platforms.

It decompiles 6502 as a proof of concept. It can decompile other CPUs, but not fully.

The expiration is temporary. I intend to eliminate this.

Thanks for your comments, it's great to get feedback.

Just another thing: Check out the 'Samples' page to see what it can do with different CPUs.

<comment><USER8> I have a few technical questions, as well as a few about your intentions with the software.

How does it handle interrupt calls to the OS? It's not an issue for Windows (because it's all done through library calls, right?) But DOS int21 and Linux int80, for example?

With the x86 work, is the logic all built around protected mode? I've been using IDA to examine/document the assembly of a DOS game, so I'd be interested in the behavior if it's fed real mode code. Further (and tying in to my previous question), the game uses Borland overlays through int3f (it seeks in the binary itself and loads new sections of code into memory, while running, before jumping into the newly-retrieved code). Would that kind of thing be possible to handle automatically? IDA seems to be hard-coded to look for the offset+length tables that are used, and finds the function entry points that way.

More on the business side, you've got a way to request a quote, and the impression I get is that your aim is to run a decompilation business. Where does that leave the software itself? As a proprietary technology that lets you differentiate your business? Or is it your plan to sell the software, release binaries, release code, or some combination? My perspective is that of a hobbyist with a curiosity for reverse engineering and a (strictly non- commercial) project to apply it to, and I'm trying to figure out where this software fits into my world.

<comment><AUTHOR> About interrupt calls... If it finds such a call, all it has to do is look at the call's input registers (assuming they are in registers) and output the call with the 'logical' contents of the registers.

The x86 code is basically 32-bit Windows. I haven't got a 16-bit compiler. However, it should work for 16-bit. The key thing is that you can write specialised modules for each CPU, and the rest (loops, variables) are standardised.

On the business side... Basically, my 6502 decompiler works the best so I thought I could sell that. And as for x86, there are issues to do with structs & arrays, that I haven't had time to figure out.

As for the decompiler software, I plan to finish the x86 and ARM decompilers and sell them for a reasonable price (say, $150 for all CPUs, not just one). As noted, arrays & structs are a problem.

As for 'release code', anyone can write a CPU module, but I need to document it first.

Thanks for your comments.

</comment></comment></comment></comment><comment><USER11> I'd be curious to see what C it produced if you fed it hand-written assembly.

<comment><USER8> The game that I mentioned elsewhere in this thread seems to be a mix of C and assembly (as one would expect from an early-90s game), so I'd be curious about the same thing.

<comment><USER12> Many instructions of machine code can be written as one C statement. There are some cases of things the cpu can do that are not standardized in C, like "arithmetic shift vs. logical shift." Maybe these instructions would be inlined.

<comment><USER8> > Many instructions of machine code can be written as one C statement.

I'm quite aware =) Nested loops, some pointer calculations (dealing with real mode pointers), conditionals with more than one condition, and multi-step math statements seem particularly verbose, compared to their higher-level equivalents. If a piece of code gets kind of complicated, I usually hand- decompile it, and it's usually much shorter, even in fairly-naive C code.</comment></comment></comment></comment>


From tables to tablets: the three-part history of my passion for web development - <AUTHOR> http://www.williamghelfi.com/blog/2013/05/31/from-tables-to-tablets/?1234

<comment><USER2> Great story! I can't wait to see your Bootstrap in Action published!</comment>


SetJam CEO letter about first angel presentation - <AUTHOR> http://www.setjam.com/blog/2010/03/09/unedited-ceo-letter-about-first-angel-presentation/

<comment><USER2> Interesting, candid text about one occasion of raising money. I hope they continue with this kind of blogging in the future.</comment>


Journalists and the free press are under attack around the world - <AUTHOR> https://theprivacyissue.com/privacy-and-society/countries-attack-free-press <comment><USER2> There are some problems in France too.. With legal problems for journalist releasing information about French arms in Yemen for example, police officer specifically targeting journalist during protests (attacks against them or their material, long identity check or arrest)...</comment>