Does America need a Pirate Party? - <AUTHOR> http://www.washingtonpost.com/blogs/innovations/wp/2013/05/02/does-america-need-a-pirate-party/ <comment><USER2> As the article hints at in saying that the Icelandic Pirate Party garnered enough votes to have a single seat in the parliament, a Pirate Party, or any niche-issue political party, really only makes sense in a proportional representation system ( [http://en.wikipedia.org/wiki/Proportional_representation](http://en.wikipedia.org/wiki/Proportional_representation) ). There is simply not enough support or funding for any candidates to have a chance at a national level. However, there is a small chance at a state legislature level, since (to my knowledge) most US citizens don't care much about state legislature elections, and a sufficiently charismatic and well- funded Pirate Party candidate might be able to amass enough votes in a relatively well-educated area. Thus the current US Pirate Party's focus on having state-level organization: [http://uspirates.org/about/get- involved/](http://uspirates.org/about/get-involved/)

<comment><USER3> You're right, and I believe you pinpoint the problem with the US political system. It's pretty much impossible for anybody with out of the ordinary political views to be represented at a high level in the US democracy. It will take a revolution for a bipartisan system to break.

<comment><USER4> Actually, it's working as intended. The Founders specifically wanted to avoid the impact of niche factions on the process. While, they didn't set out to create a 2-party system, per se, the alternative is actually much worse, because you end up in situations where a niche faction can wield disproportionately large amounts of power through the use of political coalitions and kingmaking.

This still happens, sure, but it's isolated to the parties themselves, where they are incentivized to appeal to a larger base, which minimizes factional influence from the get-go.

<comment><USER5> It's worth pointing out that "working as intended" isn't necessarily "working the right/ideal way".

<comment><USER4> In this case, I completely disagree for the reasons I cited.

<comment><USER6> I hear you, but I disagree that "the alternative is actually much worse". I live in NL, which has a pretty fragmented political landscape.

And yes this means that we get idiots like Wilders (and similarly idiotic parties before him, though not as popular). But on the other hand, we have a Pirate Party, an Animal Party (that I'd be more supportive of if they knew to choose their battles better, IMHO), Green Party, Socialist Party, Party for the Elderly, a couple of Christian Parties (different ones, from very strict, to relatively sane but right wing mainstream, and even a leftist one), Labour Party, Liberal (right wing conservative) Party, and many more.

It works, also because if a smaller party gets a seat, what that means is they can _voice_ their standing points, but only really have a good chance of changing something if a larger party also picks it up. However, they are more likely to do that with a smaller party advocating it, because it's a clear signal of popular support for such a point, and it steers the discourse in a particular way.

Another plus is that the extreme crazy (often bigoted) ones, tend to blow up on themselves, because of the evaporation effect (I forget the exact term, it means that moderate people leave, and it becomes an in-fighting echo chamber), because there's always _feasible_ alternatives to vote for, so you don't end up with two parties that are really not representative of whoever would vote for them because it's the "lesser of two evils" (or worse, I've heard some people word it recently as "the equivalent of two evils").

</comment></comment></comment></comment></comment></comment><comment><USER7> As a hardcore techie, software developer and tech entrepreneur, you would think that I'd be lining up to support the Pirate Party. But, alas, other than cyber-security and digital rights issues, I don't necessarily agree with them about anything else. I also don't necessarily _disagree_ but since they don't appear to have much a published platform and planks, it's hard to say. But I've seen some Pirates describe them as a "progressive" party, and I'm pretty skeptical of "progressives" and their policy positions. Anyway, for my money, it's the Libertarian Party that represents the path forward, not the Pirate Party.

Unfortunately, the problem in the US isn't that we don't have enough parties. We have tons of political parties in the US, ranging from the Libertarian Party, to the Green Party, to the Pirate Party, to the Worker's World Party, to the Prohibition Party, to the Modern Whig Party. No, the problem is plurality / first-past-the-post voting. As Duverger's Law notes, a plurality / FPTP voting system almost always results in a two party dominated system (like we have).

Switch voting to Approval Voting, Range Voting, or a Condorcet method, and we might see some meaningful change.

<comment><USER8> > . But I've seen some Pirates describe them as a "progressive" party, and I'm > pretty skeptical of "progressives" and their policy positions.

I agree with you. They are a progressive party, they are anti-individual rights, and that's why they have "Pirate" (literally a thief) in their name.

The cause of liberty cannot be advanced by backing movements that do not base their ideas on a rational foundation.

<comment><USER9> You're speaking from an Objectivist position, aren't you?

<comment><USER8> In this case, I would say no. What I said is a very basic observation. Why do you ask?

</comment></comment></comment></comment><comment><USER10> In a first past the post system, starting yet another fringe party is pointless. If technologists want to have a real impact on American politics, the solution is to take advantage of the current disorganization within the Republican party. If the tea partiers can do it, so can the technologists (so long as there are a few deep Silicon Valley pockets willing to bankroll the escapade).

"Obama's NSA is spying on your church groups and trying to figure out how many guns you own" would be a pretty powerful political platform that could get a few people elected.

<comment><USER11> Regardless of the disorganization, there is a set of people at the top that are going to be extremely difficult to dislodge, and they will thwart your every move. I am not a Ron Paul person, but you can look at what the party did to disenfranchise him. The problem here is that political parties are basically clubs, they have their own rules. So when party leaders violate parliamentary procedure to ignore successful votes to remove leaders, when they set up shadow offices for Establishment candidate when he doesn't win in a district, when they call police to eject people who win votes, your only alternative is "to form another party." At the same time the RNC and DNC have managed to weasel their way into preferential treatment under state laws, so they get to have their cake and eat it too.

I don't have a solution.

<comment><USER10> > Regardless of the disorganization, there is a set of people at the top that > are going to be extremely difficult to dislodge, and they will thwart your > every move.

You don't need to dislodge them. You just need to convince them that you've got a political platform that will get votes, to counter demographic trends (people who remember the Soviet Union dying off, etc) that don't work in their favor. Bill surveillance as an attack on religious groups, a way for the IRS to more strictly enforce tax laws, etc, and you can present them with a platform that will get votes from their base.

I haven't been watching the news lately, but I can't believe that the republicans aren't already trying to tie the NSA thing to the IRS thing.

<comment><USER12> I think a lot of people who oppose ubiquitous, unchecked surveillance also want to fix the two-party system, and would have a hard time compromising on the second to accomplish the first.

<comment><USER10> I mean that's the basic problem, isn't it? Some people can't compromise. Many people who are proponents of privacy rights, oppose copyright, etc, consider themselves too good to participate in the political system, and would never stoop to, say, trying to find common ground with religious or social conservatives on the subject of surveillance, even though there might be politically valuable common ground to be found.

</comment></comment></comment></comment></comment><comment><USER13> The name alone would kill any chance such a party ever gaining traction in the United States and would mark it boldly as a fridge group. Purely from a marketing and PR standpoint, you would need to use a term that has a very broad positive connotations. Even so much as to be socially unacceptable to dissagree with the name. For instance, just look at the names of bills that congress uses to gain support for their causes such as the Patriot Act. You would be much better off with a name such as the Freedom Party, Hope Party, United Party, Liberty Party, Independence Party, etc...

However in this instance, my personal favorite would be: Patriot Party

<comment><USER14> The name has been succesfull all around the world. There's already Freedom Parties etc. in United States, and nobody cares about those parties. A Pirate Party, on the other hand, can utilize the global movement's brand.

Of course, the core problem is not the name of the party, it's the lack of a democratic voting system.

<comment><USER13> You vastly underestimate the voting power and wealth of people aged 50+. Try and convince a retirement home that something called the Pirate Party is a good thing. Best of luck to ya!

<comment><USER14> I've tried, actually (I was a parliamentary candidate). It's not easy, but when talking to older people the name wasn't such a big issue.

</comment></comment></comment></comment><comment><USER15> The German Pirate Party should be seen as a try to institutionalize as a political party what was there before in other forms. The protests that made people aware of data retention policies and legislation were organized by (subject focused) civil liberty unions. Matters that touch technology issues are discussed by hacker (in the good old positive meaning) groups like the CCC. Those groups do get reputation and traction.

Trying to institutionalize this protest and form a political party was what the PP was about. I'm not sure they succeeded (here in Germany). While they managed to form political positions regarding policies touching technological matters, information acts and data retention, they fall short on anything else on the political scale. They were able to gain traction in state parliaments, but the outlook for the nationwide elections coming up in fall aren't good at all. They have immense personal problems - often connected to the fact that in the areas not covered by their agenda, they are quite diverse.

Building a political party makes sense only if it can influence decisions in parliaments. I fear the PP won't get there here in Germany. Special interest parties don't work in many democratic parliament systems.

A much better fit are in most cases civil liberty unions who can gain public recognition as experts and make it hard for parties in the parliament to ignore their statements.

</comment><comment><USER16> America does have a Pirate Party: [http://uspirates.org/](http://uspirates.org/)

<comment><USER17> It was founded in 2006. Has it managed to field a single candidate for office anywhere in the United States? As far as I can tell, it has not.

Has it raised a single dime to support candidates who follow its principles? As far as I can tell, it has not.

Has it done a single day of door-to-door organizing, either for its own growth or for a candidate it supports? As far as I can tell, it has not.

By all appearances it's just a group of people who chat together on IRC. That's fine, but it's not a political party.

</comment></comment><comment><USER18> No mention in the article of the most interesting aspect of the Pirate Party, the Liquid Feedback software platform that they use to make decisions:

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

Read about it, there are some fascinating ideas about how participatory politics can work in the world of software.

<comment><USER19> I love the idea, but I wonder how robust such a system would be to large scale use. At the scale of a country, could it withstand the attacks of all the people seeking to game the system?

<comment><USER20> Or, even more likely, people who decide to troll the legislature.

</comment></comment></comment><comment><USER21> Sure, exactly what we need. Another fringe party, with a weird name, marching under the "we come from the interwebs" banner.

At least on a national level 3rd parties are poised for failure unless there is some massive financial backing and a strong leadership.

In my opinion the smarter way would be to focus on lobbying efforts and bundling money and manpower for pro-internet candidates. Considering that there are politicians in both parties that have excellent positions on tech related issues but not that much in common in regards to other policies, making this about one issue and not about ideology seems a much more promising approach.

</comment><comment><USER22> The United States needs any viable third party. Unfortunately, the Republicrats have a lock on our political system, and the only way to get a viable third party is to change the rules about how we vote.

Specifically, first past the post voting provides a disincentive for third parties to compete because they are most likely to harm the candidate who is closest to their own position. Something like score voting, approval voting, or instant runoff voting is needed to break the deadlock.

Approval voting is probably the best bet because people who want to support a third party candidate could also vote for the first or second party who is closest to their position. It's simple, and much easier to support and understand than the other options. This would allow third parties to get a real sense of how well they are really performing before pushing their supporters to actually stop voting for the first and second party candidates.

</comment><comment><USER23> I think that a major reason for the entire problem spectra of US is them being a "two party" democracy - It hardly counts as a functional democracy at all. The entire republicans vs democrats chatter seems ridiculous to an outside observer... More like a gang turf war than anything else.

</comment><comment><USER7> In addition to everything else that's been said in this thread, let me point this out:

In at least some states (my own North Carolina, for example) it's VERY difficult to get a new political party recognized by the State, and certified as eligible to put candidates on the ballot. Now, to be fair, NC has some of the worst ballot access laws in the country, but the point is that it's not necessarily easy to organize a party, get candidates on the ballot, etc.

Here in NC, you have to gather enough petition signatures to equal, IIRC, 10% of the total votes cast in the last Presidential election, in order to certify a new party. That winds up being > 100,000 signatures, and you just can't collect that many signatures using only volunteers, which means you need to hire paid petitioners. Last I heard, it cost about a dollar per signature. Oh, and you actually need about 25% more signatures than the nominal requirement, because a bunch will get thrown out by the Board of Elections for one reason or another (not from NC, no birthdate listed, etc.)

You're basically talking about a 4 year long effort and over $100,000.00 to get on the ballot here. And here's the rub: If your party's candidate for President or Governor doesn't garner at least 2% of the vote, you get bumped back off the ballot and have to repeat the whole process again. And so on and so on and so on... Now, 2% isn't that bad, but they only _just_ lowered it to 2% from, IIRC, 10%, a few years ago.

For context: Since the modern (current) election laws went into place, only one party in NC has _ever_ gotten ballot access outside of the Democrats and Republicans, and that was the Libertarian Party. And until they lowered the retention threshold to 2%, we had to go through that "petion, petition, petition every 4 years" cycle essentially constantly, which meant that we had very little money (or energy) to dedicate to supporting candidates, advertising, etc. It was a nonstop war just to retain ballot access.

Also, for context, no 3rd party candidate in NC history has gained 10% or more in race for President or Governor. We _have_ managed to hit the 2% threshold the last two election cycles though, which is nice, since it frees up time and energy and money to do other things besides petitioning.

Anyway, the point of all that is just to show that it takes a _lot_ of effort, time, energy and money to organize a political party and get on the ballot (at least here. Each state is different). And that's just getting on the ballot. Actually winning elections is even harder.

<comment><USER24> I have never quite understood the weird limbo the "party system" seems to be in. On one hand, how they run themselves is not law, they just do it according to a bunch of internal rules each agreed on. There certainly isn't anything in the constitution about them either. On the other hand you have state laws like North Carolina's that legally recognizes _and enforces_ the concept of a "party".

All very bizarre.

<comment><USER7> No doubt. It gets worse though... Say you _don 't_ want to affiliate with a party, and you just want to run as an "independent" or "unaffiliated" candidate: You _still_ have to go through an onerous process of paperwork, fees, petitions, etc. to get on the ballot. Even worse, you have to _petition to be recognized as a write in candidate_!!

Think about that for a minute... You have to be _recognized_ by the State, to be a _write-in_ candidate. Is there a bigger oxymoron in existence than "certified write-in candidate"? But if you don't do it, no votes cast for you will be counted. Even if you seemingly earned what would be a landslide victory, it wouldn't count, because they totally disregard any write-in votes that aren't certified ahead of time.

And people think our system of government isn't rigged and corrupt... sheesh.

</comment></comment></comment><comment><USER25> Before talking about "advanced topics" like a Pirate Party, the US citizens should start to vote a third party into their parliament. Any third party would be a huge improvement over the current situation, be it a Pirate Party or a completely different party.

Unfortunately, the electoral system of the US appears to be prevent that kind of development, as it makes it exceptionally hard for non-established parties to enter the parliament. So fixing the electoral system would be a prerequisite, but how to fix that without having a parliament majority in the first place?

</comment><comment><USER9> It seems like if Zuckerberg and co. want to effect real change with FWD.us, they should lobby for institutional reforms such as proportional representation to give minority parties a greater chance of getting members elected. Of course, such reforms are not sexy, nor politically expedient, and stand against centuries of entrenched systems, and so this will never happen.

</comment><comment><USER26> No. Pure democracies enable power elitists to run the show to the detriment of the minority; even when the minority view would otherwise have likely been that of the majority.

[http://en.wikipedia.org/wiki/Direct_democracy#United_States](http://en.wikipedia.org/wiki/Direct_democracy#United_States)

</comment><comment><USER27> To be honest I don't think the United States needs a Pirate Party. I know I would not vote for them. I agree we need a free as possible internet, but the Libertarian party already supports that (and has a larger political platform) so that would be what I would vote.

I believe most Americans would vote similarly.

</comment><comment><USER28> The American Pirate Party needs to take a clue from the Tea Party and the way the American elections are structured, and act primarily as a force inside the Democratic party, electing "pirate-friendly" Democrats and taking over the party from the inside.

<comment><USER29> Why just from withing the one party? Why not have two wings and field primary candidates in both parties? That way, if ever a sufficient density of such candidates make it into office in some part of the nation, they can switch over to the new party in a coordinated manner.

</comment></comment><comment><USER30> There's a small reddit community called the American Pirate Party that's existed for 3 years now: [http://www.reddit.com/r/americanpirateparty](http://www.reddit.com/r/americanpirateparty)

</comment><comment><USER31> What's wrong with Jill Stein?

</comment><comment><USER32> Yes! But don't call the party "Pirate party". Call them "Republicans" because that is likely to be backlash against the Democrats after Obama's miserable performance.

</comment><comment><USER33> I don't know if anyone else here remembers, but there used to be an American pirate party. However, it never gained any traction, so it decided to split up into multiple local pirate parties.

</comment><comment><USER34> Yes.

</comment><comment><USER35> Whether you agree or disagree, this is a non-starter in the US due to the entrenched two-party system. Best option is to build a "digital activism" caucus in one of the two parties.

</comment><comment><USER36> How can you build a legitimate party based on the concept of theft?

</comment><comment><USER37> One would just need one seat in the US Senate to really make waves. Every contentious issues that came down to one vote would look at the Pirate Party Senator.

<comment><USER11> The shitty part is that committees, who have the power to decide what Congress even addresses, are basically organized along party lines which severely limits the impact a non-Democrat, non-Republican congressperson can have.

</comment></comment><comment><USER38> Is there a district in Silicon Valley small enough to support a Pirate/Silicon Party representative in the house?

</comment><comment><USER39> When US becomes a more democratic country (in the literal sense of the word), sure.

</comment><comment><USER40> good luck with that, if they gained any traction they would be tapped, discredited, marked as terrorists, a danger to all that's good and decent and the American Way(tm) and eventually destroyed.

</comment><comment><USER41> Why not a Hacker Party?

<comment><USER42> To the lay person that would have an equally negative connotation, as most people would associate it with illegally accessing private information such as what Anonymous often does. It also conjures up imagery that's unattractive or otherwise unappealing, and carries with it a measure of exclusivity in regards to computing skills or literacy.

In the case of pirates there is at least a level of romanticism around the idea. And since nobody is _really_ a pirate, anybody can be one.

</comment></comment><comment><USER43> I read it as "Does America need a Private Party?"

</comment><comment><USER44> I think the name is easily misunderstood.

</comment><comment><USER45> no, no but we do need a privacy party.

</comment><comment><USER46> We need a constitutional party.</comment>


Writing Better NodeJS - <AUTHOR> http://arunoda.me/blog/nodejs-design-patterns-101.html?betternode=true

<comment><USER2> This doesn't really feel like a guide for writing "better" nodejs, just a guide for writing it in general.

<comment><AUTHOR> Yes this is something general but no one actually tells you you thiswhrb starting node.</comment></comment>


Eclipse Mita – A New Programming Language for the Embedded IoT - <AUTHOR> http://www.eclipse.org/mita/ <comment><USER2> IIRC, Microsoft developed a programming language called P that is also centered around events; I seem to recall they wrote the USB stack in Windows 8/8.1 in it.

The approach to memory management in Mita looks interesting, at least for realtime system.

</comment><comment><USER3> Looks a lot like Arduino's "language" that was a thinwrapped C++.

Then there is Processing which is a DSL of sorts and this Mita look like them trying to simplify the wrong part of task.

It is not complex to split your program into particular blocks - how you connect blocks and if these blocks are the "right size", what blocks you actually need etc. THAT needs simpler means to develop faster.

And this id about IoT - hopefully measurements and units are handled well and that last "thing".. security, yeees that one needs simpler solutions!

</comment><comment><USER4> This was released in May ... "Eclipse Mita was initially developed by Bosch Connected Devices and Solutions with the help of itemis. It was first implemented for the XDK Workbench, the IDE for Bosch's XDK device, where the language is currently called XDK Live."

"The framework comes with two sets of C code generators: application code generators and platform specific code generators. Application code generators know how to transform Mita language constructs like event handlers, for-each loops, or exceptions into valid C code. On the other hand, the platform specific code generators know how to access your hardware's sensor data or which register values to write to make your LED blink."

[https://blogs.itemis.com/en/eclipse-mita-bringing- software-d...](https://blogs.itemis.com/en/eclipse-mita-bringing-software- development-for-the-iot-to-a-higher-level)

</comment><comment><USER5> What is the end result with this? If you have no embedded experience and want to build a product how does this help? How are you suppose to spin custom hardware if you 1. have no embedded experience and 2. are wrapped up in this abstraction which only lets you access some undocumented iot IC(s) + a handful of sensors.

Just a gimmick, really.

</comment><comment><USER6> Such an uninspiring idea that would be underdeveloped and underused.. People should focus on more important aspects in IoT (security, scalability, privacy etc) and use existing solutions with better design to achieve the goals of this project without this project.</comment>


Privilege and Double Standards at the Kavanaugh Hearings - <AUTHOR> https://quillette.com/2018/10/08/privilege-and-double-standards-at-the-kavanaugh-hearings/ <comment><USER2> Why is this on Hacker News?

<comment><USER3> Fair question, though it's an excellent essay. I suppose one reason could be that it was written by a software engineer.</comment></comment>


Ask HN: What should a seed stage startup do to attract engineers? - <AUTHOR> How do we get good talent when everyone's fighting for them? <comment><USER2> Every startup competes for the same people: young, single men. They don't necessarily set out to specifically hire young single men, it's just that all the other criteria they have get them there.

Specifically, most startups want employees to work very long hours.

So if you want good talent, look for people other startups won't hire: people who want work/life balance.

Of course, the perception is that startups want you to work very long hours. So you'll need to _really_ explain why you're different.

If the answer is "But we need to work 80 hour workweeks to succeed!" then good luck, you're back to competing for all the same people (and, moreover, that is simply not true: [https://codewithoutrules.com/2018/10/24/deadlines/](https://codewithoutrules.com/2018/10/24/deadlines/)).

</comment><comment><USER3> I will assume you mean software/data type engineers as those are the hard ones to attract right now and are in context to HN.

It really depends on what type of seed round you raised. If it is a small friends and family round you are best looking at people who can contract as freelancers and are ok with the fact money may run out quickly. Attracting them is different then looking for FTE's which is why I mention it.

If you raised a proper seed round then hiring FTE's becomes more realistic but as you stated not an easy task. You can't fully compete on salary, options are not what they once were and competition for quality engineers is pretty solid.

My 2 cents if you want to recruit and find solid engineers. And how I do it personally:

1\. Pay a fair wage, you may not be able to compete with FAANG, but offering a 10 year experienced engineer $60k and some tiny option % is a non-starter and shows you aren't serious which will get around quickly. Realize most experienced people know the stock will be worthless, or diluted to oblivion in reality so salary is the better carrot. Newer engineers haven't always learned this yet so YMMV with them.

2\. Young engineers are awesome and bring lots of drive and ambition, find them, but hire them in a ratio to experienced engineers so your projects have a level of maturity early. This also lets you build a more mature team earlier and they will attract more like talent. Plus your architecture will carry forward less technical debt from day one (but it will still have tech debt no matter what).

3\. Don't interview like all the other startup companies. Interview people, and treat them like people, don't ask useless algorithm questions, don't send them away with some task to do and tell them to get back to you. No, take your time, interview people, ask them meaningful questions, probe their ability to do the job and get them an answer within a week from the last in person ( or video) interview. From your first phone screen to the last person interviewing should not take more then 5 days for a small team, do it that fast and get an offer out, having your offer in hand versus waiting weeks to months for others is super powerful.

If you do those 3, you will beat most all the startups to hiring. Another key, don't be afraid to hire remote, but favor timezones near you if you do. I'd always favor hiring people local at first if possible, unless I was in CA, then I'd go remote first within the US just to control costs. Your dollars go a lot further outside of CA.

</comment><comment><USER4> Increase your risk level by using the latest technology (alpha products) but ones with some backing from big companies. This way you might have a chance to offer interesting work.

</comment><comment><USER5> Engineers to do what?</comment>


The 10 Most Important Technologies You Never Think About - <AUTHOR> http://www.entrepreneur.com/technology/pcworld/article193918.html

<comment><USER2> Whatever...</comment>


Ask HN: What Do CTOs and Product Managers Read? - <AUTHOR> I'm wondering which blogs, online publications, digital magazines, etc do CTOs & Product Managers read daily/weekly to stay up-to-date and learn new things.
What are your favorite blogs, online publications, digital magazines?
Thanks <comment><USER2> Just curious, what is the link between a CTO and a product manager? A CTO would be looking at the latest technology while a PM would look at the latest competitor in the field.

</comment><comment> jamey-aha Roadmap.com is a community for product managers that offers up a lot of conversation around new products and in depth Q&A around innovating product.</comment>


Programmers Need to Learn Statistics or I Will Kill Them All - <AUTHOR> http://zedshaw.com/archive/programmers-need-to-learn-statistics-or-i-will-kill-them-all/

<comment><USER2> More importantly, excellent software engineers know the difference between real hard-to-duplicate innovation vs. easy-to-duplicate so-called "innovation".

</comment><comment><USER3> I have talked to a number of people in the University of Washington's graduate program for statistics (typically rated #1/#2 in the world) and the consensus is that people almost always overestimate how well they understand statistics.

</comment><comment><USER4> It is probably just rhetoric, but I don't like he claims that he still doesn't know anything about statistics. Should we be educated by someone who has confidence that he can demonstrate his knowledge? I expect just more confusion with that start.

</comment><comment><USER5> Good article but that enormous sidebar is obnoxious...

</comment><comment><USER6> A classic.</comment>


We've Played HoloLens Minecraft - <AUTHOR> http://www.rockpapershotgun.com/2015/01/22/minecraft-hololens-minecraft-reality/ <comment><USER2> I am excited for Oculus Rift and HoloLens. Although the fundamental idea is the same, each one has a completely different application. The Oculus Rift is all about virtual reality and the HoloLens is for augmented reality. The future is sure exciting!</comment>


Changelog for Elixir v1.11 - <AUTHOR> https://github.com/elixir-lang/elixir/blob/master/CHANGELOG.md <comment><USER2> For most people, the standout change here will be the addition of `config/runtime.exs`, which is SUPER exciting!

Before, runtime configuration was only available in "releases", which is Elixir's packaged tarball for deployments. All other configuration was compile time only. However, running your app locally in a development environment through `mix` would technically compile the app, so even though you didn't have runtime config, it "felt" like runtime.

Because of this special feature of releases which had their own (and the only) runtime config, you often had to duplicate your config in the runtime config file and the regular compile time config file (for outside releases).

Now, with this new addition, there's one unified place where ALL runtime config is defined, and which supports runtime config in ALL the different ways you run your app.

To me, this is a huge UX improvement for Elixir devs!

<comment><USER3> > To me, this is a huge UX improvement for Elixir devs!

That's awesome, I have a module that is a helper to inject data in a socket to use with liveview but the data that I need isn't present in the dev environment and mocking it is annoying because if I use Mix.env the code in the release breaks, being able to pass an ENV var and just check it to decide to mock it or not will simplify a good amount of code.

</comment></comment><comment><USER4> Is Elixir really the general purpose productivity tool that comments here (and on other HN posts) make it out to be?

I've loved playing with Erlang and Elixir. The concurrency model and approach to failure are fascinating and clearly powerful for certain problems. Elixir's Pheonix feels as productive as Rails. I've read most of Joe Armstrong's books and watched most of his talks.

However, I feel like I can throw my daily driver programming languages including Go, Ruby, Rust... even Haskell at any problem and give or take performance, come out the other end with high quality software at scale.

When I last wrote Elixir, it felt great when I was doing basic Rails shaped work or lower level concurrency heavy networking (I was playing with TUN/TAP interfaces), but I really can't imagine it as a general purpose programming language.

For example I can't imagine scripting in Elixir, but I can and do in the other languages mentioned above. Also I remember trying to write a parser library and it felt way more verbose and unmaintainable than the equivalent Haskell or Rust.

This is hand wavy, but does anyone feel what I'm getting at? Any thoughts?

<comment><USER5> I don't think Elixir aims to be a general purpose scripting language. I only use it for hobby stuff, but lately I've been writing my scripts in a few languages to compare their characteristics: performance, lines of code, and delta code change when making a single threaded script into multi threaded.

I find that Elixir code for these tasks tends to be a bit longer than standard scripting languages, a bit shorter than Go/Java, with performance around Go and slightly better than Java. One of the interesting things I find though is that with the Flow library, bringing it from single to multiple threads tends to require fewer changes - generally I just have to change some uses of Stream to Flow and I'm up and running with a solution that's using all my cores.

<comment><USER6> For others not familiar with "Flow" I'm guessing it is this (which looks awesome): [https://hexdocs.pm/flow/Flow.html](https://hexdocs.pm/flow/Flow.html)

<comment><USER7> Also of note is Broadway ([https://github.com/dashbitco/broadway](https://github.com/dashbitco/broadway))

"Comparison to Flow You may also be interested in Flow by Dashbit. Both Broadway and Flow are built on top of GenStage. Flow is a more general abstraction than Broadway that focuses on data as a whole, providing features like aggregation, joins, windows, etc. Broadway focuses on events and on operational features, such as metrics, automatic acknowledgements, failure handling, and so on." \- ([https://github.com/dashbitco/broadway#comparison- to-flow](https://github.com/dashbitco/broadway#comparison-to-flow))

</comment></comment></comment></comment><comment><USER8> When I compared Elixir/Phoenix vs Ruby/Rails to build a web application a few years back, I ultimately stopped using Elixir because the third party libraries superficially seemed to be more immature and not as well maintained.

Most semi-popular RubyGems are in v1.0+, have contributions and bug fixes within the past few months, and have a feeling of community around them. There's even huge companies like GitHub, Shopify, and Basecamp behind some libs.

Elixir mix packages felt abandoned. Most were in the low digits 0.0.x, no commits for over 6 months, and the docs seemed to have a lot of notes in them that it's early, not maintained, don't use in production, etc.

Has this changed recently? Can anybody speak to why the Elixir ecosystem feels more empty?

<comment><USER9> Elixir/Phoenix feels like Rails back in 2008 when we built one of the largest Rails app. It will take time for the community to develop.

That being said, my company has been using Elixir/Phoenix for three years and while many times there isn't a library for Elixir, often times there is already a stable Erlang library we can use.

[https://github.com/h4cc/awesome-elixir](https://github.com/h4cc/awesome- elixir) is a great source.

We have also changed our habit from looking for third-party libraries to either building our own module which we discovered they are fairly easier to build than we thought, or coming up with alternate solutions that built on top of the powerful Elixir/Erlang technology (e.g. OTP).

</comment></comment><comment><USER10> Incredible. Been using this stack for an year and I'm super excited for the future. Lately I also do see multiple new companies picking it up for different workflows and applications.

Though it may not reach Ruby levels of popularity, it's still just fine. Learning curve is favorable, performance is stellar, and the toolkit that comes with the language is quite featureful. I see other languages borrowing elements from Elixir - especially LiveView and Pattern Matching.

The only hiccups I faced where when I had to roll out my own solutions for a few things (a background job processor, error manager, a mocking module for unit tests, etc.) Even with all this, I'd still say Elixir is worth it, given the performance gain and the patterns it enforces. It all just makes the code easy and understandable.

<comment><USER11> Rolling your own tools is an irreplaceable way to learn things thoroughly.

That said, HN readers from outside the Elixir should know there are great libraries for all of those use cases. Point in case is background job processors—we have plenty of options, though I'm especially fond of Oban[0] (full disclosure, I'm the author).

[0] [https://github.com/sorentwo/oban](https://github.com/sorentwo/oban)

<comment><USER10> I got into it before Oban was ever released. However, it seems like a solid solution. I've looked at Faktory as another great option as well:

[https://github.com/contribsys/faktory/](https://github.com/contribsys/faktory/)

<comment><USER12> haha, yeah the annoying thing about elixir is that sometimes, you give up, roll your own solution (because it's not terribly hard to do), and then right after you're done, some team has built a slightly better solution (because it's not terribly hard to do).

</comment></comment></comment></comment><comment><USER13> I've been writing Elixir professionally for a couple months now and I find it fascinating how many tools Elixir gives you to play with.

However, I started a toy project in it and immediately ran into trouble due to its dynamic nature. Printing function arguments to see what they are, runtime errors... Is there a way to get around this besides adding spec tags on everything?

<comment><USER2> It depends on what you are struggling with. If you want formal type documentation and some decent type checking, Dialyzer is pretty good. That's really the only solution for Elixir.

If you want full static type checking, there is [https://gleam.run/](https://gleam.run/) which is a new language, and there's also something that seems like a full static type checker for Erlang which is going to be released by Facebook soon (they use it internally). See this: [https://elixirforum.com/t/facebook-is-writing-a-new- statical...](https://elixirforum.com/t/facebook-is-writing-a-new-statically- typed-language-to-run-on-the-beam/29829).

I, for one, am hoping that the Facebook solution allows us to implement something in Elixir to interface with it so that we can take advantage of it in Elixir, but that is yet to be seen.

<comment><USER13> I've been using Dialyzer and it works well enough most of the time. Maybe the Elm compiler spoiled me, but when Dialyzer tells me "this pattern will never match" and not offer me tools to fix it, it's very frustrating. I'm not sure if it's possible, but it would be nice to have an action to autocomplete missing patterns like in Elm / Rust.

That said, I'll take a look at Gleam. Thank you

<comment><USER14> Dialyzer messages can be pretty obtuse. Usually I take it as a cue to just re- read the function and it's often somewhat clear where the problem lies due to immutability (not always though).

Another trick I'll do, is to use (abuse) pattern matching:

        def foo(%SomeStruct{} = arg, value) when is_integer(value) ...

That also helps Dialyzer narrow down possibilities too and will blow up on runtime.

If you use VSCode, the ElixirLS module will auto-suggest @spec's for your functions.

</comment></comment></comment></comment><comment><USER15> Thanks for the great work, I am a big Elixir and Phoenix fan. Although I don't think it will ever hit the heights of ruby or node in terms of popularity, I believe elixir and phoneix are very good long term bets.

The improved Compiler checks are a great step in the right direction. I know elixir language isn't going to change much (if at all?) now, so putting more time into things like safety and developer productivity will be warmly welcomed.

<comment><USER16> I have used Rails and Django extensively in the past, and I tell you there is no way I'm coming back after using Phoenix and Elixir.

For me, is not just the concurrency primitives that I now take for granted, but also the fact that you can write beautiful maintainable code.

<comment><USER17> What do you think it is about Elixir that leads to beautiful/maintainable code? I keep thinking about giving it a try.

<comment><USER18> My mind instantly darts to the combination of piping + pattern matching.

Edge cases can live as two line adjustments in ways I don't know how to do in any other language.

<comment><USER19> Worth noting that the concepts of piping and pattern matching don't just exist in the language itself, but also in an architectural level. Plugs, for example, allow you to "pipe" entire web requests in a very elegant and logical fashion.

</comment></comment></comment></comment></comment><comment><USER20> With this and change for JIT, Elixir/Erlang is looking super exciting lately.

<comment><USER21> jump in! I've been working with it for my startup for the last year and its been a breath of fresh air.

1: phoenix is fast and almost as expressive as ruby (15 ms response times)

2: weird timing bugs don't show up in my code.

3: the tooling is fantastic, a close second second only to rails

4: Ecto beats active record and is easily the best data mapping layer I've worked with. All the nodejs orms I've used in the past felt like clunky toys by comparison.

5: websockets via channels is second to none. seriously, django channels and rails action cable directly copied it but they are not as performant. you can scale a single machine to handle a few thousand connections out of the box and it supports multicluster and long polling to boot.

6: absinthe is great for graphql.

7: live view, think turbolinks on steroids. you can send down updates to the client dom over websockets.

<comment><USER22> Agreed! On frontend, Phoenix is missing support for component-driven development. LiveView is going that direction, borrowing some react concepts, so I wouldn't be surprised if we saw something like this soon.

<comment><USER23> You might be interested in Surface then [https://elixirforum.com/t/surface-a- component-based-library-...](https://elixirforum.com/t/surface-a-component- based-library-for-phoenix-liveview/27671)

</comment></comment></comment></comment><comment><USER24> The JIT looks exciting, though to be honest I've never encountered any significant performance issues with Elixir in four years of use.

Probably the even bigger quality of life improvement for me will be the improvements in recompliation. Greatly reducing the files to be recompiled when a file is touched should be a nice dev experience improvement when working on projects with large numbers of files.

</comment><comment><USER25> The calendar improvement is small, but nice. Calendar.strftime/3 will make Timex less necessary in some apps.

<comment><USER26> There are a lot of cool improvements in 1.11, but I admit this is probably my favorite!

Timex is great but I'm looking forward to having one less dependency on basically every project. ^_^

</comment></comment><comment><USER27> It's not out yet, for anyone who got excited (like me)

<comment><USER28> If you (like me) can't wait for the official release, use asdf to install the master branch. I've been using Elixir 1.11 for a while now and haven't run into any issues!

</comment></comment><comment><USER29> Is anybody working on (VR/AR) telepresence/fpv stuff with Elixir? (Think of the new Nintendo toys where you control an RC car through an UI on another device). Elixir and a combination of Nerves and Phoenix seems like a good fit for applications like this..

<comment><USER25> I don't personally, but Teladoc[1] uses Elixir for telepresence in healthcare.

[1] [https://www.teladoc.com/](https://www.teladoc.com/)

<comment><USER29> Thanks!

</comment></comment></comment><comment><USER30> I'd be curious to know if WhatsApp engineers evaluated using Elixir, if they are using Elixir only partially or not at all, and which are the reasoning behind that

<comment><USER31> WhatsApp predates Elixir by several years. And they are using Erlang (Elixir runs on top of Erlang VM).

</comment></comment><comment><USER32> Oh, a lot of good stuff in this release! I'm especially excited to be able to pass a map to Logger and have it print `key1=value1 key2=value2`.

I thought Jose had said earlier that Elixir was basically "done" a version or two ago, which I was impressed by; how often is software ever finished? But it looks like we're still getting some juicy functionality nuggets.

</comment><comment><USER33> This is awesome. I've been using Elixir for a long time and the abstractions with BEAM/OTP make it quite a powerful platform. Great additions to the ecosystem.

As an aside, I've been playing with Factor recently and it's been quite the learning experience with concatenative paradigms. I mention it because I was surprised it had erlang-like concurrency models in it (actor, and more).

Fun!

</comment><comment><USER34> How does a typical Elixir deployment on AWS look like? Anyone got a CloudFormation or Terraform config to share?

<comment><USER35> If you want to host a Phoenix app on AWS I would use a Docker release and then point the DB at RDS. You can run Docker under ECS/Fargate or Elastic Beanstalk.

Here is a nice intro to Phoenix Docker releases:

[https://hexdocs.pm/phoenix/releases.html#containers](https://hexdocs.pm/phoenix/releases.html#containers)

<comment><USER36> There's also Gigalixir which runs on top of AWS and gives you a Heroku like experience.

<comment><USER6> Gigalixir is a great experience. Like Heroku you'll pay for it as you scale however. But if you don't want to hire a devops person, it's still probably cheaper than the alternatives.

</comment></comment></comment></comment><comment><USER37> Elixir looks pretty interesting however lack of static types has held me off from picking it up. Curious what the experience of people with typespecs and Dialyzer has been: 1\. How close do you think it comes to static types? 2\. Does it have good IDE plugins providing type errors as you code?

<comment><USER35> If you squint sideways pattern matching on structs plus guards is sort of like type checking (but not really). The map checking mentioned in the changelog will be a nice addition.

I've been doing both a lot of TypeScript (for work) and Elixir (for personal projects) for the last few years and I do get a stronger sense of safety from TypeScript (especially during refactoring) but Elixir feels much more concise and fun to work in and the Phoenix event ticketing app I've been running for the last 3 years has been rock solid.

btw I've been programming for 30+ years with all sorts of untyped, dynamically typed and statically typed languages. I still haven't found "the one true language". Something like strongly typed CoffeeScript that runs on BEAM would be close (I've been watching Gleam for a while and I plan to play with it after it matures a bit more).

<comment><USER38> We've used Elixir at our company for several years. Overall I've loved it, but I hope some experiments are done with a type system.

(I don't find dialyser that strong in terms of performance and code editor help.)

I think Typescript would serve as good inspiration because (1) it's a type system for a dynamic language underneath (javascript) and (2) it uses structural typing which fits well with pattern matching.

</comment></comment></comment><comment><USER31> I keep being drawn back to Elixir because of the error messages alone. Just look at that beauty.</comment>


Backers of Open-Source Chips Launch Startup - <AUTHOR> http://www.wsj.com/articles/backers-of-open-source-chips-launch-startup-1468242001?mod=rss_Technology <comment><USER2> I recently looked into buying a new laptop, and found minifree.org, who supply libreboot BIOS chips.

What astounded me was that Intel post 2008 and AMD post 2011 have seperate management chips that mean essentially any motherboard is rooted at the start.

I still need to dive into the complexities (I knew about Intel ME but assumed we could get round it somehow) but we need these open chips more than ever.

<comment><USER3> AFAIK AMD PSP don't have access to the network unlike Intel ME. Intel AMT is actually a useful feature for some large organizations.

<comment><USER4> The NSA is a pretty large organisation, yes.

</comment></comment></comment><comment><USER5> [https://www.sifive.com/](https://www.sifive.com/)

[https://www.sifive.com/about/press/](https://www.sifive.com/about/press/)

</comment><comment><USER5> or [http://www.anandtech.com/show/10488/sifive-unveils- freedom-p...](http://www.anandtech.com/show/10488/sifive-unveils-freedom- platforms-for-riscvbased-semicustom-chips)

</comment><comment><USER6> relevant: [http://efabless.com](http://efabless.com)

</comment><comment><USER7> I wonder if open-sourcing can help keep Moore's Law going.

<comment><USER8> Other way around. The end of Moore's law means that open source chips actually have a chance to compete:

[http://spectrum.ieee.org/semiconductors/design/the-death- of-...](http://spectrum.ieee.org/semiconductors/design/the-death-of-moores- law-will-spur-innovation)

<comment><USER9> Here's my theory on why open-source products (given enough time to develop) are often _higher_ quality than their closed-source non-free counterparts:

Industry has a vested interest in maximizing returns. This means that it tends to pump out very practical, usable products, but often gets stuck at local maxima. It makes more sense for Intel to keep hammering away at x64 than to switch to a possibly better architecture, even if switching might be better in the very long run. OSS is driven not only by industry, but also by academics (who have a vested interest in doing highly experimental research) and hobbyists (who have a vested interest in quality and simplicity). This additional set of interests means that OSS is being pulled in more directions and is more likely to escape local maxima. If software was entirely driven by industry, we'd probably still be using FORTRAN or something.

Now, the problem is that open source projects tend to have fewer resources and less time pressure, so development is slower. This is fine for computer science, where an academic who develops a novel language or algorithm can reasonably expect it to be cutting-edge for quite a while and still in use decades in the future.

On the other hand, processor design moves so fast that the only way to keep up is to dump tons of money and man-hours into pursuing the latest and greatest as aggressively as possible.

As the pace of processor development slows down (if it does), it will give a chance for the slower, but higher-quality, work of academics and hobbyists to catch up.

I am looking forward to all sorts of esoteric architectures implemented on all sorts of esoteric theories to come out of the woodwork. We're very likely to find some good stuff that we haven't thought of yet.

<comment><USER10> I think it really depends on which type of software and which part of quality you look at. The good open source software is mostly written at companies (like linux for example), but I guess having a few hobbyists and academics in there kind of helps. One field open source is usability, as you usually need to pay usability experts and conduct expensive experiments.

You're right that the hardware field is totally different from the software field, however you have to see that instruction sets, which is what RISC-V is about hardly ever change. Today's x86 processors are still compatible with 8086 from 1976 (and assembly compatible with 8008 from 1972). Similarly ARM is from 1985.

The thing that's keeping hobbyists out is that producing ASICs is prohibitly expensive.</comment></comment></comment></comment>


Steve Jobs by Walter Isaacson - <AUTHOR> http://itunes.apple.com/us/book/steve-jobs/id431617578 <comment><USER2> I assume that Jobs' biography is out… in the USA?

Over here in Europe, I get (paraphrasing) "your request could not be completed. The article you requested is, at the moment not available in this store."

<comment><USER3> "Expected Release: Nov 21, 2011"</comment></comment>


The Six Most Common Species Of Code - <AUTHOR> http://www.willa.me/2013/11/the-six-most-common-species-of-code.html#hn

<comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=6711192](https://news.ycombinator.com/item?id=6711192)

</comment><comment><USER3> False. Math phd would probably write O(log n) based on either multiplying [[1,0], [1,1]] matrix or compute it directly for smaller numbers and return the rounded power of golden ratio for higher numbers.

Notice that for big enough numbers psi becomes insignificant enough, so that we can only use phi.

</comment><comment><USER4> Everybody (except the Math PhD) writes the naive O(2^n) solution? Fat chance...

</comment><comment><USER5> That is preposterous! At a hackathon they would probably just return 10 or something.

        int fib(int val) { return 10; } // todo: implement me

<comment><USER6> Certainly the version they gave is too much typing! Maybe something more like

       fn f(i: int)->int{[1,1,2,3,5,8,13,21][i]};

Need more values? copypaste from the online encyclopedia of integer sequences.

</comment></comment><comment><USER7> my code is the cat code</comment>


SAT solving – An alternative to brute force Bitcoin mining (2013) - <AUTHOR> https://jheusser.github.io/2013/02/03/satcoin.html <comment><USER2> SAT solving SHA256 is a dead end - I was researching this for the purpose of Bitcoin mining (before this article came out), along with many others, for profit.

SAT solving typically relies on reducing a function down to boolean expressions where clauses are minimally connected with AND operations (a.k.a. Conjunctive Normal Form).

The math basis for this is that in GF2 (Galois Field 2 - a number system with only 2 values):

      AND is equivalent to Multiply (1 * 1 = 1; 1 * 0 = 0, etc.)

      XOR is equivalent to Addition (1 + 1 = 0; 0 + 1 = 1, etc.)

This is useful because we can re-express a boolean function as multiplication and addition for complexity analysis.

The difficulty comes when you mix AND and XORs; take the Ch function within SHA256 -

      Ch(E, F, G) == (E & F) | (~E & G)

Which can be rewritten as:

      Ch(E, F, G) == (((F ^ G) & E) ^ F)

Rewritten in GF2 it is equivalent to:

      Ch(E, F, G) == ((F + G) * E) + F

Because of distributive laws, we know there is zero way to simplify this further.

Its trivial to see that to work backwards, you have to "consider" way more input combinations for every known output. Even if the output is 0 (which you want when Bitcoin mining), you have this problem where there are 4 possible input combinations.

Now unroll the entire SHA256d function Bitcoin uses and you realize the effort to work backwards is far more than the effort to brute-force the input keyspace. This explosion in complexity comes from the fact that the whole function feeds forward, so there is little that can be done to "resolve out" intermediate values as there are no cyclic value dependencies.

SHA256d is effectively a giant rat's nest of multiplies and adds, all stacked on top of each other, that cannot be reduced, due to distributive laws.

<comment> a-dub I recently (naively) dug into it to try and understand where it's magic comes from. I was under the impression that it also gets strength by flipping back and forth between F2 and Z+. Where AND and XOR are linear in F2, they're nonsense in Z+, where addition in Z+ is nonsense in F2 (not to forget the whole mod 2^32 part).

Is that actually true or did I just bs myself?

<comment><USER2> Yes, we don't have good ways to unify the flipping between GF32 and GF2 beyond down-converting to GF2 (which yields a massive increase in clause-complexity).

GF32 addition in GF2 basically looks like a giant ripple-carry-adder.

<comment><USER3> > GF32 addition in GF2 basically looks like a giant ripple-carry-adder.

I tried to implement addition in GF32 through Kogge-Stone adder because the dependency chain has length 5 instead of 32. No success. The intermediate variables got so complex that the BDD library I used at the time couldn't even synthesize the expression for a 32-bit adder.

</comment></comment></comment></comment><comment><USER4> This is an old article. This one is also very interesting by the same author: [https://jheusser.github.io/2013/12/30/satcoin- code.html](https://jheusser.github.io/2013/12/30/satcoin-code.html)

Proof of concept of the SAT solving idea.

<comment><AUTHOR> Yes it's from 2013 it seems but I just bumped into it and it seemed cool and interesting. I think this community will appreciate the idea.

I was curios if anyone here is mining bitcoins and if it's worth their time.

<comment><USER5> I bought a couple of the cheaper USB miners earlier this year just to play around with...have spent quite a bit of time since then mining alts. Bitcoin mining is absolutely a fool's game at this point. The hardware vendors have a terrible track record (cf. the recent FTC raid on BFL), and there is a slim margin wherein a few people somehow manage to earn more than they spent on the devices -- the rest of the time a purchase results in a substantial loss due to hardware obsolescence and exponentially increasing difficulty. At some point I figure the technology will stabilize and the prices will make mining a reasonable option again, but for the moment you are far better off just buying some coins.

<comment><USER6> Things were much nicer when GPU mining was the market leader. Bitcoin mining was usually profitable for a few weeks during/after a major price jump, and your main cost was power. Once the profitability window ended, just turn off your mining hardware.

Now that we have ASICs and scammy companies with months of lead time making them, things are way more volatile. Power is cheap, but the hardware is thousands of dollars, and the preorder/crowdfunding scheme is pretty reprehensible.

Would scrypt with harder parameters make a better ASIC-resistant hash?

</comment></comment></comment></comment><comment><USER7> >Initial tests showed that block 218430 with considerably higher difficulty is solved more efficiently than the genesis block 0 for a given nonce range.

This is very misleading. 99.99999999% of the work of finding a valid block is finding the right block header to mine on. You have 2^32 possible nonces, and your odds of finding a block are 1 in 2^67.

By giving his program the block in advance, he's taking a shortcut.

An algorithm that could quickly decide whether a block header contained a valid solution would be very valuable indeed.

</comment><comment><USER8> The part I find most interesting is that (if I understand it correctly), bruteforce gets harder as SAT solving gets easier. That is - the more zeros are required, the fewer variables are in the SAT problem. The less zeros are required, the higher chance of bruteforcing a correct result.

(edit: actually not fewer variables, but... I'm not sure what the correct term is, but the tree of operations gets smaller, because more results have to be fixed)

<comment><AUTHOR> Actually I'm not sure that claim is accurate (they state it as an intuition). The fact that there are more constraints (that was the word you're looking for) does not necessarily mean that SAT will be easier. It could be that the constraints make finding a solution _more_ difficult.

<comment><USER9> It is true in an absolute, mathematical sense that the search space gets smaller when you fix a variable to a particular value.

However, by fixing a variable (and effectively removing it), you are also removing potential solutions from that search space.

In a sense, you could view the difficulty of a SAT problem as the fraction of valid solutions in the whole search space. By fixing a variable, you are decreasing both the number of valid solutions and the size of the total search space. But the fraction could end up being either greater or smaller, depending on the variable and the value you set it to.

</comment></comment></comment><comment><USER10> While SAT, and their cousin SMT, solvers are useful in the analysis of symmetric cryptographic primitives, they quickly become useless once the complexity of the problem hits a certain threshold. They are best employed to analyze contained parts of the primitive.

It can be wise to use a SAT solver to find a preimage of, e.g., SHA-256 reduced to 10 rounds. But it will be hopeless on the full function, unless it is severely broken.

<comment><AUTHOR> I think you misread the article. They are not claiming to break SHA, they are claiming they can get better than bruteforce performance on mining bitcoins.

<comment><USER10> I understand that. The author himself does not claim this approach is faster than bruteforce. Indeed, consider the converse: for mining using a SAT solver to be faster than bruteforce implies that the SAT solver is able to exploit some structure in the hash function which plain bruteforce has no access to. The point of a good hash function is to have no such structure.

If you additionally consider how SAT solving algorithms work, they are less amenable to modern CPUs than plain bruteforce, which can take full advantage of SIMD and instruction parallelism. If you look at password hash breakers, you will see them using extra tricks, like early abort, to speed things up even further.

<comment><USER11> >The point of a good hash function is to have no such structure.

Our hash functions are not perfect with respect to this.

</comment></comment></comment></comment><comment><USER12> In general, if one could find preimages using SAT it wIn general, if one could find preimages using SAT it would be done for cryptanalytic purposes would be done for cryptanalytic purposes. SAT is also not likely to admit a hardware (ASIC, etc) solution, so it would be much more difficult to massively parallelize and to keep cost per hash low.</comment>


AWS now supports all U2F tokens - <AUTHOR> https://github.com/kryptco/kr-u2f/issues/11#issuecomment-436822617 <comment><AUTHOR> The update was (stealthily?) added to the original article so I couldn't repost it. I found the information via this discussion on Github.

</comment><comment><AUTHOR> I've confirmed this works with a Trezor device.</comment>


Ninth Circuit poised to resolve major free speech issue in secret proceeding - <AUTHOR> http://pubcit.typepad.com/clpblog/2017/07/ninth-circuit-poised-to-resolve-major-free-speech-issue-in-secret-proceeding.html <comment><AUTHOR> The title is the article's

I thought this excerpt was indicative of why the case is interesting beyond the secretive seal:

> The case arises from a subpoena served by the United States on the employer- > rating site Glassdoor,

originally demanding identifying information about the owners of more than one hundred pseudonymous accounts

that had, it appears, been used to post reviews of a particular employer whose contracting practices were subject to a federal criminal investigation.

In an effort to compromise, the government limited its production demand to eight specified reviewers.

Glassdoor responded to that offer by proposing that it notify the users of the subpoena and provide identifying information for such of its users who were willing to be identified to the prosecutors.

After the government rejected this offer, Glassdoor moved to quash the subpoena, invoking its users' First Amendment right to speak anonymously</comment>


Overgrown Amazon.com - <AUTHOR> http://tpgblog.com/2008/10/06/overgrown-amazon/

<comment><USER2> Amazon is insanely paranoid about running A/B tests on its front page and optimizing it for the bottom line.

And what do they find? This "cluttered" design makes people buy more stuff. It's hard to argue with $$ numbers.

<comment><USER3> Yeah. Amazon is one of those rare sites where it actually benefits from cramming as much as possible onto one page.</comment></comment>


FCC received 444,938 comments from Russian email addresses - <AUTHOR> https://www.bloomberg.com/news/articles/2017-11-29/fake-views-444-938-russian-emails-among-suspect-comments-to-fcc <comment><USER2> What exactly is a "Russian email address?" Yes, I read the article. It did not answer this question (although it was humble enough to acknowledge that "the report presented no evidence that the comments were linked to the Russian government.")

This finger pointing at Russia is becoming a national embarrassment. It's almost racist how willfully people talk about "Russian" activity as if everyone from Russia is a representative of Vladimir Putin. It's especially ironic that the same journalists perpetuating this narrative would feel quite outraged if "the Russians" applied the same logic to them, by assuming every American is a representative of Donald Trump.

<comment><USER3> Not sure if these folks have an angle as i have not checked them out, but they claim they've found obvious fraud:

[http://www.emprata.com/reports/fcc-restoring-internet- freedo...](http://www.emprata.com/reports/fcc-restoring-internet-freedom- docket/)

Their findings are pretty interesting.

<comment><USER4> I don't think fraud should be surprising when you have a 0 verification online open comment section where people seem to think that getting more 'votes' than the other guy would mean the FCC has to go that direction. It'd be like an election where you vote online with no verification whatsoever. I imagine by the end of the election the US's apparent population would be in the tens of billions, at least. Quite the voter turnout!

While I agree that that breakdown was quite interesting, I also think in the end trying to divine the 'true' result from a mess like this is probably going to be about as effective as diving your future from the tea leaves at the bottom of a cup.

</comment></comment></comment><comment><USER5> >even though it's unclear if they were from actual Russian citizens or computer bots originating in the U.S. or elsewhere.

As a Russian, very few people here even know that FCC exists. Among those that do, very few care. Already got too much on our own plates.</comment>


On the dark art of software estimation - <AUTHOR> http://techcrunch.com/2016/04/30/estimate-thrice-develop-once/ <comment><USER2> I just joined a company which is starting out on having a small in house software development team to boost their business and this has been a real pain point for me.

It's really frustrating when you're expected to break a task down into each step you'll take and estimate it. No matter what I say, we just can't seem to agree that, I don't know what exactly I'm going to do.

I have rough idea how to tackle this, but I just can't tell exactly how each idea will pan out. And I also don't know when I'll have to go back and rewrite or refactor something I wrote already.</comment>


New solar panels that you print out and stick them on your roof - <AUTHOR> https://theconversation.com/new-solar-cells-offer-you-the-chance-to-print-out-solar-panels-and-stick-them-on-your-roof-102335 <comment><USER2> I'm more excited about the creation of incredibly cheap non-rigid circuitry over someone using it to tile their roof in inefficent solar panels. You could use this to do everything from creating solar-powered yard signs that illuminate at night to embedding RFIC security tags directly into the labels of a product.</comment>


Vinyl record sales outpace CDs for the first time since the '80s - <AUTHOR> https://www.usatoday.com/story/tech/2020/09/12/vinyl-records-outsold-cds-first-time-since-80-s/5781302002/ <comment><USER2> [https://news.ycombinator.com/item?id=24438027](https://news.ycombinator.com/item?id=24438027)</comment>


The breakthrough material that can turn any surface into a solar cell - <AUTHOR> https://www.smh.com.au/national/queensland/the-breakthrough-material-that-can-turn-any-surface-into-a-solar-cell-20200218-p541w1.html <comment><USER2> > "Because the quantum dot colar [sic] cell can make better use of the high- > energy solar energy, it can in reality generate double the efficiency of a > traditional silicon solar cell,"</comment>


Ask HN: I/O Ventures? - <AUTHOR>

Out of curiosity, does anybody know what happened with I/O Ventures? Their program was supposed to kick off at the beginning of this month, but my last correspondence with them indicated that they had postponed it due to a high influx of applications. I haven't heard from them since. <comment><USER2> Hey... this is Paul from the i/o team. We're still getting through all the applications. :) We shooting for mid april to have people in the door. So please hang in there.

<comment><USER3> Hi Paul, I heard about i/o after the deadline. Are you still accepting applications?

<comment><USER2> yea we're still squeezing people in. apply away.

</comment></comment></comment><comment><USER4> I was lucky enough to meet with one of I/Os mentors this last week ... I have to say there is a really cool bunch of guys on their mentor list.

Although I was a little disappointed I/O didn't get back to me after he emailed on my behalf. :(

<comment><USER2> 3 out of us 4 partners have been traveling the past 2 weeks. If you tell me who intro'd you and to which partner I can make sure one of us follows up. If its me... I'm still plowing through hundreds of emails and just haven't caught up yet. :)

<comment><USER4> Heh thanks for getting back to me. It's actually really bad timing since I just got home _from_ San Francisco, but Jameson likes what I'm building at <http://www.swfstats.com>. He emailed you on the 10th. :)</comment></comment></comment>


Every Language Fixes Something - Visualizing PG's essay - <AUTHOR> http://www.solipsys.co.uk/new/EveryLanguageFixesSomething.html?HN1

<comment><USER2> On of your graphs is labeled with the "JavaScript" snip from the current page version, the other one from the older revision of the page: [https://web.archive.org/web/20020210063149/http://paulgraham...](https://web.archive.org/web/20020210063149/http://paulgraham.com/fix.html)

And how is "Nemerle" relevant? Never heard about this one, it's sad as languages like PHP are not listed, even as there a discussion on HN: [https://news.ycombinator.com/item?id=2817369](https://news.ycombinator.com/item?id=2817369)

<comment><AUTHOR>
      > One of your graphs is labelled with the "JavaScript"
      > snip from the current page version, the other one
      > from the older revision of the page ...

Noted - thanks. The second is substantially revised, taking into account many comments made by others, and including many more languages. Not sure I'm going to change it/them now, as it would take a while to find the DOT source, edit it, _etc.,_ and it was only ever intended as a bit of fun. People ended up taking it _so_ seriously, it caught me by surprise.

</comment></comment><comment><USER3> Very nice!

Correction: Smalltalk to Objective-C is _not_ "needs C syntax". Objetive-C's OO syntax is actually Smalltalk's. The two reasons are "needs C interoperability" and "needs performance".

</comment><comment><AUTHOR> Submitted in response to this: [https://news.ycombinator.com/item?id=6968775](https://news.ycombinator.com/item?id=6968775)</comment>


Free Responsive Bootstrap Admin Theme With Animations - <AUTHOR> http://metaware.github.io/responsive_bootstrap_admin_theme/

<comment><USER2> Nice work</comment>


3 Reasons Why ICOs Are Cooling Down, but Crypto and Blockchain Are Here to Stay - <AUTHOR> https://www.forbes.com/sites/outofasia/2017/11/27/three-reasons-why-the-ico-market-is-cooling-down-but-crypto-and-blockchain-are-here-to-stay/ <comment><AUTHOR> What do you think? are ICOs just hype?</comment>


Hetzner mail to customers: 1 megawatt more power due to leap second - <AUTHOR> (Was Google translate, now from the comment of imaginator below, thanks)
Better translation of their message to English speaking customers:
During the night of 30.06.2012 to 01.07.2012 our internal monitoring systems registered an increase in the level of IT power usage by approximately one megawatt.
The reason for this huge surge is the additional switched leap second which can lead to permanent CPU load on Linux servers.
According to heise.de, various Linux distributions are affected by this. Further information can be found at: http://www.h-online.com/open/news/item/Leap-second-Linux-can...
In order to reduce CPU load to a normal level again, a restart of the whole system is necessary in many cases. First, a soft reboot via the command line should be attempted. Failing that, you have the option of performing a hardware reset via the Robot administration interface. For this, select menu item "Server" and the "Reset" tab for the respective server in the administration interface. Please do not hesitate to contact us, should you have any queries.
Kind regards,
Hetzner Online AG Stuttgarter Str. 1 91710 Gunzenhausen / Germany firstname.lastname@example.com http://www.hetzner.com <comment><USER2> Better translation of their message to English speaking customers:

During the night of 30.06.2012 to 01.07.2012 our internal monitoring systems registered an increase in the level of IT power usage by approximately one megawatt.

The reason for this huge surge is the additional switched leap second which can lead to permanent CPU load on Linux servers.

According to heise.de, various Linux distributions are affected by this. Further information can be found at: [http://www.h-online.com/open/news/item/Leap-second-Linux- can...](http://www.h-online.com/open/news/item/Leap-second-Linux-can- freeze-1629805.html)

In order to reduce CPU load to a normal level again, a restart of the whole system is necessary in many cases. First, a soft reboot via the command line should be attempted. Failing that, you have the option of performing a hardware reset via the Robot administration interface. For this, select menu item "Server" and the "Reset" tab for the respective server in the administration interface.

Please do not hesitate to contact us, should you have any queries.

Kind regards,

Hetzner Online AG Stuttgarter Str. 1 91710 Gunzenhausen / Germany email@example.com <http://www.hetzner.com>

<comment><USER2> just remember:

date -s "`date`" solves it.

No reboot, no stopping and starting NTPd.

<comment><USER3> date -s "$(LC_ALL=C date)"

is the better option which also works on system with a locale != C

</comment></comment></comment><comment><USER4> No need for Google translate:

During the night of 30.06.2012 to 01.07.2012 our internal monitoring systems registered an increase in the level of IT power usage by approximately one megawatt.

The reason for this huge surge is the additional switched leap second which can lead to permanent CPU load on Linux servers.

According to heise.de, various Linux distributions are affected by this. Further information can be found at: [http://www.h-online.com/open/news/item/Leap-second-Linux- can...](http://www.h-online.com/open/news/item/Leap-second-Linux-can- freeze-1629805.html)

Please do not hesitate to contact us, should you have any queries.

</comment><comment><USER5> Here's the requisite graph <http://i.imgur.com/hsUDE.png>

<comment><USER6> /standard rant about the Y-axis not being anchored at zero, which will cause most people to be mislead.

UPDATE: here's an illustration. compare this: <http://i.imgur.com/f3m25.png> to this: <http://i.imgur.com/6z2cS.png> (those two graphs represent the same data)

<comment><USER7> Really? Who is both going to understand leap seconds, and also look at that graph and think power consumption went up tenfold.

I'd much rather see the detail that zoom gives.

</comment></comment></comment><comment><USER8> If the leap-second does all this, just imagine the 32-bit rollover issue in 2038

<comment><USER9> I'm imagining a whole bunch of bricked "classic" cars

<comment><USER10> I really can't imagine why that would ever happen. What car would ever use a clock for anything essential, instead of a timer? Maybe I'm overestimating the intelligence of car developers, but it seems like the obvious, simple solution.

<comment><USER9> Engine won't start, service due 300 years ago. I'd be willing to bet $10 there's at least a few floating around with real time clocks, no idea what they'd be used for though. If nothing else there's always in-car navigation and entertainment which are definitely candidates, although I suppose less likely to result in a brick.

<comment><USER11> Sorry, what?

<comment><USER9> I'm engaging in what is commonly known as _using one's imagination_ to make educated guesses at the possible electronic devices within an average motor vehicle (you know, that thing with wheels on it) where a real time clock susceptible to wraparound or overflow might be found, thus resulting in potential malfunction, or in plainer words, _"the car won't start, the tuner won't play music, the GPS won't get a signal, this thing is about as useful as a brick"_.

<comment><USER11> I see. I have to apologize, it totally went over my head you were talking about cars considered classic in 2038, not the current day. Whoosh.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> OVH <https://twitter.com/olesovhcom/status/220142781895671810>

</comment><comment><USER13> Perhaps nitpicking, but this is because of a bug in the leap second implementation, not in the leap second per se.

<comment><AUTHOR> I'd guess it happens by the concurrence of a lep second and a leap second implementation bug. The bug without leap seconds would also not lead to problems.

</comment></comment><comment><USER2> Nice graph from Hetzner showing the spike:

<http://imgur.com/a/ykoup>

</comment><comment><USER14> Huh? I received my mail in English :)</comment>


More on Arduino LLC vs. Arduino SRL - <AUTHOR> http://hackaday.com/2015/03/12/arduino-v-arduino-part-ii/

<comment><USER2> I've been waiting for the Arduino Zero[0], seems like a really good collaboration between Arduino LLC and Atmel to get 32-bit ARM platform to the same price-point and form-factor as the Arduino Uno etc. But it seems to have stalled after a very limited beta program, with no news. I suspect this kerfuffle may be the reason.

Meanwhile, Arduino SRL (I can't help but think of them as "the fake Arduino") have announced their Arduino Zero Pro[1] which appears to be the same thing, and is apparently available now.

However, the Zero Pro doesn't seem to be available through any reputable outlets (yet?). Perhaps the SRL lacks the distribution network / credibility of the LLC?

[0]: [http://arduino.cc/en/Main/ArduinoBoardZero](http://arduino.cc/en/Main/ArduinoBoardZero) [1]: [http://arduino.org/products/arduino-zero- pro](http://arduino.org/products/arduino-zero-pro)</comment>


Stack (by TJ Holowaychuk) – An Idempotent Task Runner (ala Dockerfile) - <AUTHOR> https://github.com/tj/stack <comment><USER2> I hope one day to be as productive as TJ.

<comment><AUTHOR> Many share the same dream! :)

</comment></comment><comment><USER3> Using this now and I really wish he would update it.</comment>


Excel formulas in JavaScript  - <AUTHOR> https://github.com/sutoiku/formula.js

<comment><USER2> Any support for i18n?

(For English-only speakers: Excel's translation to other languages goes as far as translating function names, thus rendering non-English Excel users' knowledge useless when confronted with an English Excel. E.g., IF(ROUND(A1)=1,B1,C1) in English Excel is JEŻELI(ZAOKR.DO.CAŁK(A1)=1,B1,C1) in Polish Excel -- yes, with all those funky non-ASCII letters.)

<comment><USER3> Every time I read some comment about how people shouldn't use excel for complex calculations and should use relational databases or Python or whatever else, I'll know why it will never happen.

It's really easy to implement the easy parts of spreadsheets, getting the hard parts right is why Excel continues to dominate the space.

<comment><USER4> Most spreadsheets I've dealt with don't hold relational data. Are there people who use them as such? Sure. But I don't think that's the typical use case.

<comment><USER5> I would say relational data is the dominant use case for spreadsheets. It's a natural fit given the rows and columns. What other kind of data do you see in spreadsheets? Hierarchical data is not a great fit for spreadsheets.

</comment></comment></comment></comment><comment><USER6> Very cool!

Slightly related... I reckon a command line / ncurses version of Excel would be really useful. Am I crazy?

e.g. something like [http://upload.wikimedia.org/wikipedia/en/e/ec/Lotus-123-3.0-...](http://upload.wikimedia.org/wikipedia/en/e/ec/Lotus-123-3.0-dos.png)

Spreadsheets are a pretty useful and powerful tool when it comes to doing ad- hoc data analysis, but it's kind of annoying to get data in and out of them from command line tools.

<comment><USER7> Fat-finger errors are already terrifying in spreadsheets. How would you help prevent them in command line tools?

<comment><USER6> Isn't that true for a lot of tools? Including programming languages?

</comment></comment></comment><comment><USER3> I honestly admire the thought and effort that went into it.

I fear that JavaScript's use of floating point as its single numeric type is likely to create surprising results for the unwary. I have come to the suspicion that the longevity of Excel's dominance is in part due to a sophisticated system for inferring numeric types.

<comment><AUTHOR> Excel only supports numbers that fit in an IEEE754 double, just like JavaScript.

There is some fancy logic to format numbers, however (including some mess for date codes). [http://oss.sheetjs.com/ssf/](http://oss.sheetjs.com/ssf/) is a pretty decent implementation in JavaScript.

<comment><USER3> All versions of Excel have native support for integers.

[http://msdn.microsoft.com/en- us/library/office/bb687869%28v=...](http://msdn.microsoft.com/en- us/library/office/bb687869%28v=office.15%29.aspx)

<comment><AUTHOR> Excel supports 32 bit integers, which fit comfortably in IEEE754 doubles (there are 64 bit integers which cannot be exactly represented)

</comment></comment></comment></comment><comment><USER8> I've been trying to find which js file has the actual meat of the implementation, but didn't manage to find it. function.js seems the biggest candidate, but didn't contain that much. The rest are all minified other JS libraries or bootstrapping. Any hint on where the actual mapping of names to formulas, and implementation of the formulas, is? Thanks.

As for the unimplemented.js formulas, for Gamma you could use the lanczos approximation, it's easy to convert the C code of it which you can find on the internet, to JS.

<comment><USER9> [https://raw.githubusercontent.com/sutoiku/formula.js/master/...](https://raw.githubusercontent.com/sutoiku/formula.js/master/lib/formula.js)

</comment></comment><comment><USER10> This reminds me of my college days. At Statistical Computing Facility at UC Berkeley, a grad student and I (I just finished 1st year at the time) built a web-based spreadsheet for tracking students' homework and exam scores. We called it StatGrades. One feature that it had was that you could write javascript for each column for calculation/validation. I looked at the excel help docs and implemented most of the relevant/useful functions, so people could do something like:

AVERAGE(homework1, homework2) * 0.2 + AVERAGE(exam1, exam2) * 0.8

for the final grade. We used rhino for javascript and the service was built on jsp/servlet. It also had access controls so different readers/GSIs had access to different students and columns, and students could see their own grades. Everyone hated Blackboard and loved what we built, but unfortunately they couldn't find anyone to maintain it after I graduated (I was the only person working on it shortly after I joined). The service was shutdown a couple years after I left.

</comment><comment><USER11> Well done, but I fail at seeing how that could be useful?

<comment><AUTHOR> Stringing this together with other libraries like [http://github.com/warpech/jquery- handsontable](http://github.com/warpech/jquery-handsontable) and [http://github.com/SheetJS/js-xlsx](http://github.com/SheetJS/js-xlsx) and [http://github.com/SheetJS/js-xls](http://github.com/SheetJS/js-xls) could lead to a better web spreadsheet.

EDIT: someone already thought about combining those libraries: [http://SheetJS.github.io](http://SheetJS.github.io)

<comment><USER12> There's a really nice XLSX reader and writer by Stephen Hardy, a Microsoft developer: [https://github.com/stephen- hardy/xlsx.js/](https://github.com/stephen-hardy/xlsx.js/) blog post: [http://blog.innovatejs.com/?p=24](http://blog.innovatejs.com/?p=24)

<comment><AUTHOR> I looked at that project but it uses a really strange non-free license that should be avoided. [https://github.com/stephen- hardy/xlsx.js/issues/8](https://github.com/stephen-hardy/xlsx.js/issues/8)

</comment></comment></comment></comment><comment><USER13> Cool! Pretty similar to what www.phpexcel.net does for PHP.

</comment><comment><USER14> They even included IRR, which is pretty impressive.

<comment><USER15> IRR is one of those things that is remarkably simple to calculate and grok, but is made difficult in the number of _horrendous_ instructions across the web, many of them simply wrong. Until I corrected it the NPV entry on Wikipedia (NPV being a dependency of IRR) sat with incorrect input / result data.

It all makes me think that some in the financial industry think this is some sort of trade secret.

</comment></comment><comment><USER16> This plus something like crossfilter and you'll really be able to build.some exciting in browser data exploration apps. Cool stuff.

</comment><comment><USER17> What licence is this under please? (MIT preferred!)

<comment><USER18> It is included in the js file [1] and seems to be under MIT and Apache.

[1] [https://raw.githubusercontent.com/sutoiku/formula.js/master/...](https://raw.githubusercontent.com/sutoiku/formula.js/master/lib/formula.js)

</comment></comment><comment><USER19> Is there a demo?

<comment><USER20> Examples are available at: [http://www.stoic.com/formula](http://www.stoic.com/formula)

</comment></comment><comment><USER21> very nice thanks</comment>


Binom Bijection - Storing k-Subsets Efficiently - <AUTHOR> http://www.profv.de/Binom_Bijection/

<comment><USER2> It's odd that in listing the ways to store a choice of 40 numbers from the set {1..100} the paper doesn't mentioning the traditional approach of using a string of 100 bits. Bit _n_ is set to 1 if _n_ is in the subset, and 0 otherwise. This is damn close to the theoretical optimum of 94 bits, and way simpler.

<comment><AUTHOR> Thanks for the hint! I really forgot that one. I just added it to the presentation. In addition, I adjusted the example to "30 of 100" as this better reflects the average case. ("40 of 100" was too close to the pathological corner case "50 of 100").

</comment></comment><comment><USER3> The author has a rather narrow definition of "efficient". Yes, he uses close to the minimum number of bits of storage... but his encoding scheme is _horribly_ slow -- encoding takes O(k^2 log n) time, and decoding using the presented algorithm takes O(k^2 n log n) time.

<comment><AUTHOR> Yes, I meant just space efficiency. It might be handy if you have many subsets (e.g. a solution space) you need to store in memory or on disk.

I'm still looking for a faster algorithm that reaches the optimal space efficiency.

</comment></comment><comment><USER4> I know this isn't a discussion of his subject matter but I love his presentation format.

<comment><USER5> I was thinking the exact same thing. This is a rare example of an appropriate use of the PowerPoint medium.

<comment><AUTHOR> More exactly, it's the "beamer" package of LaTeX, not PowerPoint.</comment></comment></comment>


Scott Brown on Why Some Memes Never Die - <AUTHOR> http://www.wired.com/magazine/2009/12/pl_scott_brown/

<comment><USER2> Beautiful remembrance tinged only slightly by the dubious use of the word "meme".

<comment><USER3> Also, nothing too substantive on "why," except the advice to eschew trendiness and "do your own thing." If you're going to the article for the "why," that's all it is.

(Like Homestar Runner, though)</comment></comment>


Is _blank (HTML) basically an un-necessary popup? - <AUTHOR>

I've been writing a lot of blog articles lately and I usually add _blank for referenced links in my articles as to not lose my readers to another site, but then I thought, thats kind of unnecessary and here's why:
Whenever I am browsing an article and I open a new link, I always CMD click as to open the new link in a new browser tab anyway, so it's kind of redundant to put in _blank. Am I really retaining readers by adding _blank? Would appreciate your thoughts. <comment><USER2> Whenever a web site has chosen a link target on my behalf, it has been wrong; and what's more, "wrong" for me varies by device (e.g. on a desktop computer I don't use tabs and often want full control over spawning windows; whereas on an iPad with a tabbed browser I _usually_ want tabs created automatically, but not always!).

I think the rule of "least surprise" applies; the least surprising thing for a link to do is to not specify a target at all, leaving the behavior up to the browser (where the browser in turn bows to user preferences and user overrides such as contextual menus). For example, on my iPad I _already_ configure my browser so that different-domain links open in new tabs but same-domain links _do not_ , and I set preferences for a reason: because it's my preferred behavior. These are things the web site couldn't possibly know about me, so the web site basically risks annoying me if they try to override my expectations.

If a web site _must_ feel the need to fiddle with "target" (which I personally think they should not), I think the _bare minimum_ they should do is include an icon or some hint next to non-standard links to indicate what will happen when the links are used. This is another thing that browsers could theoretically do by themselves, since they have all the information about link targets at rendering time.

</comment><comment><USER3> I think it would somewhat depend on your audience. The tech crowd may find it annoying but I know people who get immensely annoyed at having been taken away from the site they are reading after clicking a link. That's possibly all wrong but that's the way it is sometimes.

Personally I've been conditioned over the years to _expect_ _blank on blogs so I don't think leaving it in will cause any great tremors in the force. TBH, taking it out probably won't make any real difference anyway. So, er, my point is

</comment><comment><USER4> Depending on who your target demographic is, you could make certain assumptions. Without reading your blog (but judging by the CMD in your post), I assume you use a Mac and write about tech. You could then assume that your readers know how to open links in a new tab, thus you might decide to remove the _blank. If your blog is geared toward readers with less experience, you might want to leave it in.

<comment><AUTHOR> Indeed, I am a Mac user and the blog is about tech. Thanks for the feedback, dropping the _blank.

</comment></comment><comment><USER5> For most cases (like yours), using _blank would just annoy users. If they want a new tab, they'll open one, and if they don't but want to come back, they'll just hit the back button.

The only place where using it makes sense to me is on a web app or sign up / payment page which you don't want the user to accidentally leave and lose the state of.</comment>


Hugo: Fast and Flexible Static Site Generator 0.9 released - <AUTHOR> https://github.com/spf13/hugo

<comment><USER2> I like the focus on speed, as larger Jekyll sites can get very slow.

If I had a suggestion it would be to improve the documentation.

For example, it would be really useful to have a "Get Started" tutorial on creating a standard blog setup, with things like pagination, categories / tags, RSS feed, sitemap.xml etc.</comment>