Functional Language Features in Rust – Iterators and Closures - <AUTHOR> https://rust-lang.github.io/book/second-edition/ch13-00-functional-features.html <comment><USER2> That was really well written. As I was reading through the example code in the section about closures

        let add_one = |x| x + 1;
        let five = add_one(4);

I thought to myself "hmm I wonder what happens if I were to call the code with a float rather than an int?"

Answered my question a few paragraphs down. Kudos.

Is it possible to write a generic closure? i.e something that would add 1 to any numeric type.

<comment><USER3> Thanks!

To answer your last question, not yet. There was an RFC for this, but it was recently postponed; closures rely heavily on traits and we are in the process of re-doing the internals of the trait system. If I remember the reason correctly.

<comment><USER4> Indeed, the way you would be generic over generic closures would be "type HRTB" (e.g. F: for<T: Clone> Fn(&T) -> T), which depends on the trait system overhaul, just like ATC.

</comment></comment></comment><comment><USER5> For context: there's a rewrite of the rust book in progress for a while now. This is a chapter of that book.

<comment><USER3> Yes. Co-author here, happy to answer any questions or hear feedback on the text, as usual.

Incidentally, I just finished the build system stuff today to get the new book shipped on doc.rust-lang.org; that slates it to land in Rust 1.18. It will still be a draft, but this is one more step towards it being finished.

</comment></comment><comment><USER6> Please don't take over my Cmd+Left arrow key for going back, Chrome already took away my backspace :(

<comment><USER3> This is an upstream issue with [https://github.com/azerupi/mdBook](https://github.com/azerupi/mdBook), you should file a bug!

<comment><USER7> Couldn't find an open issue, but agreed that navigation should not be triggered when a modifier key is pressed, so I opened one: [https://github.com/azerupi/mdBook/issues/224](https://github.com/azerupi/mdBook/issues/224)

</comment></comment></comment><comment><USER8> Under the "Improving our I/O Project" section, there's this little paragraph:

      It would be nice if we could use ? on the Option
      returned from next, but ? only works with Result
      values currently. Even if we could use ? on Option
      like we can on Result, the value we would get would
      be borrowed, and we want to move the String from
      the iterator into Config.

It seems remiss to not mention that Option/Result have combinators/adapters too, no?

      let search = match args.next() {
          Some(arg) => arg,
          None => return Err("Didn't get a search string"),
      };

becomes:

      let search = args.next().ok_or("Didn't get a search string")?;

I'm not the most fluent in Rust, so please tell me whether the above two snippets are not equivalent in some way.

It might actually be a nice segue into a page on the combinators of Option and Result, since functional-style Rust seems to benefit from liberal use of them.

<comment><USER9> Please don't quote with code blocks.

<comment><USER8> Umm...If I don't quote the entire code snippet, I'll end up with just the indented lines being quoted...the joys of HN formatting.

<comment><USER9> I was speaking with reference to "It would be nice..." which you quoted using a pre/code block (prepending four spaces). Please only use that for actual code, and use `>` at the start of the line to signify a quote, like so:

> Umm...If I don't quote the entire code snippet, I'll end up with just the > indented lines being quoted...the joys of HN formatting.

This allows for responsive formatting on different screen sizes, and is especially beneficial for mobile users.

</comment></comment></comment></comment><comment><USER10> This is beautiful. Higher order functions and closures are a big reason why I enjoy functional programming languages. To see these applied with method chaining is very exciting in a systems programming language.

</comment><comment><USER11> How would one explicitly allocate space for a closure? (That is, in such a way that one could handle allocation failure.) I can't find any examples nor any hints about what the syntax might look like.

<comment><USER3> Closures are stack allocated unless you wrap them in something like a Box, so it's up to you. They're no different than any other value.

</comment></comment><comment><USER12> very well written

</comment><comment><USER13> Iterators of this form are not functional construct, they are a pattern from object-oriented programming.

<comment><USER3> This is why we say

> We're going to sidestep the issue of what, exactly, functional programming > is or is not, and instead show off some features of Rust that are similar to > features in many languages referred to as functional.

Many people think of "programming with higher order functions" to be a feature of functional languages, and that may be wrong, but it's also okay. The goal is to teach the stuff, not worry about what _exacty_ "functional" means.

<comment><USER13> OK, but if you avoided calling non-functional patterns part of functional programming, you would avoid invoking the topic of "what constitutes functional programming" altogether.

<comment><USER3> What specifically does "functional programming" mean to you and why do these features not qualify?

<comment><USER14> > In computer science, functional programming is a programming paradigm—a > style of building the structure and elements of computer programs—that > treats computation as the evaluation of mathematical functions and avoids > changing-state and mutable data.

from [https://en.wikipedia.org/wiki/Functional_programming](https://en.wikipedia.org/wiki/Functional_programming)

I totally agree that neither iterators nor 2/3s of closures are "functional programming". That's fine, though, because I really enjoy the sane way that it all was done.

If you check out

[https://doc.rust-lang.org/std/iter/trait.Iterator.html](https://doc.rust- lang.org/std/iter/trait.Iterator.html)

and search for `FnMut`, you see that most of the iterator methods are side- effectful. That is cool and fun and very useful, but it isn't functional programming.

Edit. The term you are probably looking for (guessing) is "higher-order programming":

[https://en.wikipedia.org/wiki/Higher- order_programming](https://en.wikipedia.org/wiki/Higher-order_programming)

<comment><USER3> Yeah that is one way of doing it, but I'm not sure how practically useful it actually is; many functional languages do allow for mutation and/or side effects too. Often in a controlled way, of course, but then again, so does Rust. That said, I wouldn't argue that Rust is a functional language exactly, mostly that I find essentialist FP definitions to be lacking, like most essentialist definitions.

That said, you're right that "higher order" is a better description of these features, but my counter would be that most people perceive higher order programming as an aspect of functional programming, bringing it full circle again :)

<comment><USER14> Most people perceive structs and fields as an aspect of object-oriented programming, but you probably wouldn't write about them under the heading of "Object-oriented programming".

Maybe change the title to "Functional Language Idioms"?

<comment><USER3> The "oh no OOP" chapter is later :)

That's a good suggestion, I'll think about it, thanks :)</comment></comment></comment></comment></comment></comment></comment></comment>


Yellow Vest Facebook group with 350k members frozen on European election day - <AUTHOR> https://www.wsws.org/en/articles/2019/05/28/vest-m28.html <comment><AUTHOR> It is worth noting that FB made an agreement with the French government last year to directly cooperate with them on filtering and controlling spread of shared content:

> Zuckerberg's meeting with Macron on May 10 reviewed the first half of a > year-long collaboration—the first of its kind with any government in the > world—in which French officials have been invited directly into Facebook's > content "moderation" offices to analyze the material censored from users' > news feeds. Because what shows up in a given user's news feed is determined > by Facebook's own algorithms, the company and the state can control the > spread of material.

</comment><comment><USER2> This is actually normal, and is done in a lot of countries. [https://en.wikipedia.org/wiki/Election_silence](https://en.wikipedia.org/wiki/Election_silence). According to this, France acts "on the Saturday before the Sunday election; polling silence included"

<comment><USER3> > This is actually normal, and is done in a lot of countries. > [https://en.wikipedia.org/wiki/Election_silence](https://en.wikipedia.org/wiki/Election_silence). > According to this, France acts "on the Saturday before the Sunday election; > polling silence included"

The yellow vest aren't a political party, they may have individuals running but that page wasn't one of a political party, they aren't even an organisation. This is purely Facebook enforcing political censorship to please the French government, there is nothing normal about it.

People are not forced to stop talking about politics on a public forum the day of the elections, that's complete bullshit.

It would be like saying, that people gathering into a bar on election day are barred from talking about politics. There is absolutely no such law that mandates that in France.

So please explain us what is normal about it again?

<comment><USER4> > People are not forced to stop talking about politics on a public forum the > day of the elections, that's complete bullshit.

They actually are in some European countries. France included.

EDIT: Link to the law in question in the official site for FRance with English translation:

"From the day before the election at midnight, it is forbidden to distribute or have distributed newsletters, circulars and other documents.

From the eve of the poll at midnight, it is also forbidden to broadcast or cause any message that has the character of electoral propaganda to be disseminated by any means of communication to the public by electronic means."

[https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticl...](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000023882997&cidTexte=LEGITEXT000006070239&dateTexte=20110420)

<comment><USER3> > They actually are in some European countries. France included.

No there is none in France. Discussing politics isn't the same as campaigning.

And again, your "edit" changes nothing to what I'm saying, the law you quoted does not bar people from discussing politics, it bars candidates and their supporters from promoting their candidates or their parties, the yellow vests are not a political party.

<comment><USER5> A Facebook group exists in a meaningful grey area between "discussion" and "publication". To argue otherwise is wilfully obtuse.

</comment></comment></comment></comment></comment><comment><USER6> There's a Yellow Vest Canada group on Facebook that is in full-on tinfoil hat conspiracy mode (wildfires in Alberta are being set by Muslims, stuff like that; see [https://twitter.com/theBurlyChef/status/1133592129639313409](https://twitter.com/theBurlyChef/status/1133592129639313409) ). I wouldn't be surprised if the use of a European group to spread disinformation or even promote violence caused this to happen.

<comment><USER7> These rapid growing movements seldom have any requirements to join and allow the spread of all kinds of misinformation really well.

Another group will pop up in x weeks and the facebook groups will have people doubting vaccines, blaming immigrants, blaming the current government, and as an average user you can't sort who's just an angry middle aged person or a russian bot.

<comment><USER8> Actually in France, the government has been way more often caught lying about the yellow vests than the opposit.

<comment><USER9> I haven't heard much about this - care to elaborate?

<comment><USER8> One case: [https://www.euronews.com/2019/05/02/french-government- claims...](https://www.euronews.com/2019/05/02/french-government-claims- protesters-attacked-paris-hospital-but-yellow-vests-challenge-nar) There were others, but I'm too lazy to search. I remember seeing one other at least. Never seen any fake news problem with yellow vest. Usually Lemonde is prompt to denounce them.

<comment><USER10> _Never seen any fake news problem with yellow vest._

That's just outright laughable.

Here's a 20 page report detailing how the yellow vest groups have been flooded by fake news, presumably by foreign agents.

[https://avaazimages.avaaz.org/Report%20Yellow%20Vests%20FINA...](https://avaazimages.avaaz.org/Report%20Yellow%20Vests%20FINAL.pdf)

You can be sure where ever there's angry people in the world Russia will be there to help fan the flames.

</comment></comment></comment></comment></comment></comment><comment><USER11> There's a lesson to be learned here and noboby lerns it every time this happens. They should have been using Discourse or something else rather than being at the mercy of facebook. France also has some draconian telecom laws. Like the requirement for obtaining a license to operate a public WiFi AP.

</comment><comment><USER12> I'm sure there just be more to this story. World socialist web site doesn't seem like a particularly trustworthy source.

<comment><USER13> It's not a trustworthy site, but I can't find any mainstream news sites covering this.

There's a [https://www.nytimes.com/2018/12/14/technology/facebook- franc...](https://www.nytimes.com/2018/12/14/technology/facebook-france- yellow-vests.html) which has some background on the French Facebook group though.</comment></comment>


The Story Behind the New WordPress.com - <AUTHOR> https://developer.wordpress.com/2015/11/23/the-story-behind-the-new-wordpress-com/ <comment><USER2> So Automattic, maker of the largest open source PHP CMS in the world has thrown out PHP in favor of node.js for their own site. And the announcement has nothing about where this leaves wordpress.org, the open source PHP CMS that powers 25% of the web.

If they're leading by example, we should ditch WordPress.org and PHP in favor of node.js web apps and frameworks too, since it's the way of the future?

I happen to wholeheartedly agree. It's just that the developers of the 40,000 plugins who have bet their farms on PHP WordPress might at least want a clearer indication of what exactly is happening here.

The only thing I could find about where this leaves wordpress.org is buried in this wired article:

[http://www.wired.com/2015/11/wordpress-com-gets-a-new- face-a...](http://www.wired.com/2015/11/wordpress-com-gets-a-new-face-and- joins-the-javascript-age/)

"For the backend code, the team used the popular server-side JavaScript platform Node.js. For users who host their own version of WordPress, Automattic will host the Node.js portion of the code on their own server, with which the Jetpack plugin will communicate, freeing up web hosts from having to support Node.js."

<comment><USER3> The node.js aspect of Calypso is actually pretty minimal, basically to build the shell of the web page. WordPress and PHP still power the API behind Calypso as well as the entire front-end of the site (i.e., what your readers see when they visit your blog). I don't think either of them are going away anytime soon.

The .org community (self-hosted WordPress) is also getting serious about API- based interactions, so this isn't an entirely new direction. I think we'll be seeing front-end JavaScript becoming more and more important there as well. There's still a lot to figure out, but I think the open-sourcing of Calypso that happened today will make it easier to share ideas with the greater WordPress community.

<comment><USER4> > The .org community (self-hosted WordPress) is also getting serious about > API-based interactions, so this isn't an entirely new direction.

Indeed, we're shipping the first half of the core REST API with 4.4 (just about to hit RC), and the rest in the next release.

<comment><USER5> I just learned about jetpack - does anyone know why the functionality there requires a wordpress.com account (or rather, are there any efforts towards being able to self-host that part?)?

In the same vein, the wordpress.com api does indeed appear to be rather well documented -- shouldn't it be rather easy to implement enough of that to allow using this new web-app for interfacing with it? (Even if most of the calls just return 403 or 500 - presumably the app handles that somewhat gracefully)?

<comment><USER6> > does anyone know why the functionality there requires a wordpress.com > account (or rather, are there any efforts towards being able to self-host > that part?)?

The list is long: [http://jetpack.me/features/](http://jetpack.me/features/) (probably half of those require the connection)

Examples include stats (a pain to scale on shared hosting), related posts (also known to kill database servers), site uptime monitoring, image CDN (including on the fly thumbnailing), and so on.

It basically provides the things that you probably don't want to self-host. You get some of the scaling of WordPress.com while being able to do your own thing (plugins, custom theme, etc.).

<comment><USER5> Oh, but I could care less about stats, related posts, site uptime -- if I could get a shiny new ui to do the basics (write posts). That's what I mean - if all the crap I don't care about could just return 403/500 - how much work would it be to get the stuff _I_ need to work with the new SPA?

</comment></comment></comment></comment></comment></comment><comment><USER7> Never mind the product, look at that list of React components ([https://github.com/Automattic/wp- calypso/tree/master/client/...](https://github.com/Automattic/wp- calypso/tree/master/client/components))! Any chance this will become a separate framework?

<comment><USER3> I don't know if I would call it a framework per se, but absolutely we want to break off individual pieces that can be separately re-used and make them available for everyone. In the meantime if you see something in particular that you're itching for, open a new issue and let us know. You may also want to check out the library of modules here. [https://github.com/Automattic/wp- calypso/tree/master/client/...](https://github.com/Automattic/wp- calypso/tree/master/client/lib)

</comment></comment><comment><USER8> Matt's post about the same topic: [http://ma.tt/2015/11/dance-to- calypso/](http://ma.tt/2015/11/dance-to-calypso/)

</comment><comment><USER9> As a developer at Automattic, the most interesting thing about this to me is that our whole workflow is now public. There are lots of companies that release their code, but it's rare that they also make their development process transparent.

</comment><comment><USER10> OK. So basically this is an Adobe Air-esque app that is a user interface to WordPress which at the moment only works on Mac.

I'm sorry but I don't really understand what the value proposition here is, maybe I missed it in the article? WordPress already has a pretty good user interface, which was build in HTML/CSS/Javascript.

When people complain about WordPress being an outdated architecture it's not the UI they're referring to..

<comment><USER11> The desktop app is currently only for Mac, but we're working on other platforms. WordPress.com, which is a very similar experience, is obviously web based and can be used in any browser on any platform. This entire upgrade utilizes the new WordPress rest API and the new WordPress.com is open source.

<comment><USER10> Sorry, maybe my previous comment wasn't very clear, let me try again;

I don't understand what problem this project solves and whom it solves it for. We can already manage multi-site WordPress installations and usually that's done by site admins, not the average content Joe, so does it really need a super fancy new UI?

And what exactly does it mean when you say "WordPress.com is open source"? Maybe I'm out of the loop but the way I understand it is that wordpress.com is a hosted (commercial) service of wordpress.org.

My experience with WordPress is not that the UI is a problem at all, neither multi site management, which I think is in the scheme of things quite niche. The problem with WordPress I hear other developers complain about is the out dated PHP system architecture.

<comment><USER12> It exactly means as you hear actually, WordPress.com, as we all know, was written in React, is now open-source.

In WordPress.com, "average content Joe", can manage multiple sites, including self-hosted WordPress.org sites (through JetPack plugin).

Disclosure: I'm one of the authors.

<comment><USER13> That's a disclosure, not a disclaimer. Unless you intend to disavow the work.

Sorry, it's my pet peeve. Downvote away!

</comment></comment></comment></comment></comment><comment><USER14> This must be one of the largest open-sourced React codebases yet, very cool.

</comment><comment><USER15> > Code reviews were new for many developers — traditionally at Automattic, we > have had no systematic peer code review system outside of the VIP team's > daily code review of client sites.

Wait... seriously? You had _no_ systemic code review until now?

It's not exactly clear what you did by way of code review before, but that sounds suspiciously close to "almost nothing"

<comment><USER16> Agreed. Quite shocked by that statement and their development process.

</comment></comment><comment><USER17> This is just "Wordpress.Com" in javascript, not wordpress the blogging software. You have to interface with Wordpress.Com to build your own site. The code references Node.JS for the server side, but only as a proxy.

<comment><USER18> From [https://developer.wordpress.com/calypso/](https://developer.wordpress.com/calypso/)

"If you run your own self-hosted WordPress site, you can install the Jetpack plugin to use the Calypso-based editing and management tools."

</comment></comment><comment><USER19> Question unrelated to the actual story - is anyone running a WordPress.com blog as just an API?

I've had a few friends ask me to work on their WordPress blogs but I turn them down unless they're willing to migrate to something like Squarespace or Ghost. Most of the time they won't switch because they're used to the WordPress admin. Being able to just fetch a JSON API would actually make me think about working with WordPress.

<comment><USER20> You have both [https://developer.wordpress.com/docs/api/](https://developer.wordpress.com/docs/api/) and [https://github.com/WP-API/WP-API](https://github.com/WP-API/WP-API) that can be used for something like that.

<comment><USER6> That second link soon won't be needed. WordPress 4.4 will include the foundations for the REST API directly in core and 4.5 should include the actual endpoints.

[https://make.wordpress.org/core/2015/09/21/wp-rest-api- merge...](https://make.wordpress.org/core/2015/09/21/wp-rest-api-merge- proposal/)

<comment><USER21> I wonder how long until someone writes something not-PHP based that implements this...

</comment></comment></comment></comment><comment><USER22> It's a web app too. Wordpress.com has been steadily introducing features (through Jetpack) that allow you to manage your installed Wordpress instances - this brings the two together.

So you can login to wordpress.com either via the web, apps, Air etc to manage/publish to any types of Wordpress installs.

It means that you don't have to use the old wp-admin CMS and can use what they've now built and released.

</comment><comment><USER23> Wodpress.org and PHP won't go away anytime soon, because of the whole community and plugins.

Wordpress' popularity comes from the plugins, and the WP devs. won't expect plugin authors to rewrite everything into node.js, that just won't happen anytime soon.

Although it would be interesting to see how this will affect the client side code of WordPress. React can be interfaced with any back-end.

<comment><USER24> > won't expect plugin authors to rewrite everything into node.js, that just > won't happen anytime soon.

This plugin author says "bring it on" :)

</comment></comment><comment><USER25> Wasn't Wordpress.com essentially a multi-user edition of Wordpress the open source project? I am curious if Calypso means fewer releases of the Wordpress project?

I noticed that some of the docs require a login, for ex: [https://wpcalypso.wordpress.com/devdocs/design](https://wpcalypso.wordpress.com/devdocs/design) Anyone know if this is a bug, or part of the new approach?

<comment><USER6> WordPress.com still is a single WordPress install and all of the millions of websites are still generated and powered by PHP and MySQL.

The difference is that rather than using the admin interface that ships with WordPress, we're encouraging usage of this new interface. It still talks to WordPress via a PHP-powered REST API.

In short, it's a new _interface_ for WordPress, not a replacement for WordPress itself.

> > [https://wpcalypso.wordpress.com/devdocs/design](https://wpcalypso.wordpress.com/devdocs/design) > Anyone know if this is a bug, or part of the new approach?

Bug. That's one of our internal staging sites and the devdocs are stripped when pushed out to the production URL.

I've opened an issue for you: [https://github.com/Automattic/wp- calypso/issues/577](https://github.com/Automattic/wp-calypso/issues/577)

EDIT: Not private! Just requires a login from any WordPress.com account. There's discussion going on on that ticket to move it somewhere that doesn't require a login but it might not be possible.

<comment><USER25> If it is a new interface for WordPress, then why does it need Node?

Thanks for filing the issue. I will reply there.

<comment><USER6> As it's REST API powered, it doesn't. It could have been anything we wanted it to be. We just went with React & co. because we determined it'd be the best solution.

<comment><USER6> (seems we've hit max depth)

> So what does the Node powered REST API provide that PHP powered traditional > Wordpress API does not?

Our REST API is PHP-powered and built on top of WordPress: [https://developer.wordpress.com/docs/api/](https://developer.wordpress.com/docs/api/)

Calypso is a React-based administration client for that API.

<comment><USER26> What's confusing is that, if the React-based admin client uses an API to talk to the PHP wordpress site, why involve node.js at all?

As far as I can tell, the node.js portion is just returning an empty admin.html, and that's where client-side React.js kicks in? It seems PHP would be able to do that pretty well, with the advantage of single technology and a more obvious approach for the self-hosted wp.org sites.

<comment><USER6> My understanding is that the client and server side code is all of the same thing and Node.js is just used to generate the initial page load with the client continuing on from there. I wasn't involved with it's development so I could very well be incorrect.

[https://github.com/Automattic/wp- calypso/blob/master/docs/gu...](https://github.com/Automattic/wp- calypso/blob/master/docs/guide/tech-behind-calypso.md)

<comment><USER26> So there are lots of folders and files in their server dir [https://github.com/Automattic/wp- calypso/tree/master/server](https://github.com/Automattic/wp- calypso/tree/master/server) \- but from what I can tell they're not doing universal javascript with react running on both client and server.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> This is a huge deal. WordPress is probably the largest project in a plurality of projects continually dragging PHP on the ubiquity parade. If they manage to re-write the front-end as well it could be big.

That said, the plugin ecosystem is pretty massive. I wonder how they plan on handling that. Hosting, too. This is going to be pretty interesting for Automattic, PHP, and Node.

</comment><comment><USER28> It is totally misleading.

At one moment you even dream people understand what was wrong with PHP, then you see node.js.

</comment><comment><USER29>
      Today we're announcing something brand new, a new approach to WordPress, and open sourcing the code behind it.
      Written purely in JavaScript, leveraging libraries like Node and React.

That's their lesson from WordPress?

</comment><comment><USER30> Isn't one of the best aspects of WordPress the powerful plugin ecosystem that adds functionality, much of which is in the admin UI? Or am I missing something?

</comment><comment><USER3> I'm not sure why the title is referring to Calypso as "experimental." It's the production codebase.

<comment><AUTHOR> Sorry, my mistake. WordPress co-founder Matt Mullenweg on his own site describes it more as the project and the "experiment" behind it.

My understanding is this can be used as an interface to all WordPress blogs. My take is that although this is acting through WordPress.com as an API intermediary, it is only steps away from peeling out the whole PHP layer for these interfaces.

WordPress co-founder Matt Mullenweg described it as:

> At the beginning of last year, we decided to start experimenting and see.

> Today we're announcing something brand new, a new approach to WordPress, and > open sourcing the code behind it. The project, codenamed Calypso, is the > culmination of more than 20 months of work by dozens of the most talented > engineers and designers I've had the pleasure of working with (127 > contributors with over 26,000 commits!).

[https://github.com/Automattic/wp-calypso](https://github.com/Automattic/wp- calypso)

<comment><USER3> No worries. I just wanted to make it clear this is not a toe in the water. :-)

> My understanding is this can be used as an interface to all WordPress blogs.

Yes, that's correct. It works for WordPress.com blogs of course. But self- hosted blogs can also make use of Calypso by installing our Jetpack plugin ([https://wordpress.org/plugins/jetpack/](https://wordpress.org/plugins/jetpack/)) which adds some API endpoints that allow Calypso to communicate with the self- hosted site.

> it is only steps away from peeling out the whole PHP layer for these > interfaces

I don't think I would go that far exactly. The php codebase is still there, and users can still use "wp-admin" if they prefer. And the API is also powered by PHP. But now that Calypso only communicates with a site through the API it allows us to separate the view logic and focus on making those endpoints as efficient as possible. I think it's possible the API could be written in a language other than PHP. But that hasn't happened yet and would be a significant task.

I should probably mention I am one of the authors, if that wasn't obvious. :-)

<comment><AUTHOR> > We still have a ton to figure out around plugins, extensibility, > contributions, Windows and Linux releases, API speed, localization, and > harmonizing the WordPress.com API and WP-API so it can work with core > WordPress. Thousands more PHP developers will need to become fluent with > JavaScript to recreate their admin interfaces in this fashion. I'm also > really excited to revisit and redesign many more screens now that we have > this first version out the door.

[http://ma.tt/2015/11/dance-to-calypso/](http://ma.tt/2015/11/dance-to- calypso/)

</comment></comment></comment></comment><comment><USER31> Reading the article once I had no idea if it was a total replacement for the php codebase, or intended to work along side it.

</comment><comment><USER32> Meh.

</comment><comment><USER33> As far as I'm concerned rails would provide a better ecosystem for Wordpress.org. Not only is it still used commercially much more so than php in new ventures, but it forces adherence to good architecture which is key for something designed to be extendable like Wordpress. Additionally performance optimization in rails is much easier than php.

<comment><USER34> > performance optimization in rails is much easier than php.

[citation needed]</comment></comment>


Anyone having issues with .io tld? - <AUTHOR> <comment><USER2> Yes see thread here: [https://news.ycombinator.com/item?id=15293578](https://news.ycombinator.com/item?id=15293578)

</comment><comment><USER3> Yes, I had trouble getting to crates.io earlier. It looks like my local dnsmasq cached a NAK somehow. I restarted dnsmasq and it started working again. I thought it might just be crates.io, but I guess not.</comment>


Ghost Stories - <AUTHOR> http://harpers.org/blog/2016/12/ghost-stories/ <comment><USER2> Interesting, but I was disappointed that there were no details of _how_ people were tortured. I know it's ugly, but I believe that the details should be explicitly described as a warning for future generations.

The proximity of the prison to the city reminds me of my home country Tunisia prior to the 2011 revolution (the so-called Arab Spring). Some of the worst torture of political dissidents took place under the building of the ministry of interior on the busiest street in the capital. Thankfully, the death toll never was as bad as Uganda.

One popular form of torture used in Tunisia involved hanging the prisoner upside down and naked. The torturer would then proceed to use electrical shocks, beating, cigarette butts, and sexual abuse. Torture was usually done without reason - i.e., they were not looking for a confession. When they were looking for a false confession, they usually threatened the prisoner with imprisonment of family members and even rape of siblings and mothers. Once a prisoner was released into society, they remained close and asked about every movement the prisoner made and continually harassed them. On top of that, there was the social stigma of being a prisoner, which was especially difficult for women after release.

I'm proud that my country has recently been following South Africa's model by setting up a truth commission [1]. During each session, victims of abuse and torture and their relatives are given a platform to air their grievances on live TV. There have been four sessions already, and it has been a huge success, so there will be more to come.

[1]: [https://www.theguardian.com/world/2016/nov/17/tunisia-to- bro...](https://www.theguardian.com/world/2016/nov/17/tunisia-to-broadcast- victims-testimony-at-truth-commission-into-authoritarian-rule)

<comment><USER3> "Torture was usually done without reason"

That's an odd way to look at it. Torture is usually done with the purpose of the torturer getting sadistic enjoyment from torturing.

It has happened consistently throughout history and continues to happen, and probably always will. It seems clear to me that there's a predisposition in certain proportion of humans to want to torture, and a predisposition in the population at large to construct social structures to enable it (private armies, state armies, colonial occupying forces, CIA etc).

<comment><USER4> >Torture is usually done with the purpose of the torturer getting sadistic enjoyment from torturing.

Much like rape, I'm pretty sure torture is done for power and control and subjugation. It's a little worse to imagine an impartial or dispassionate torturer, "just doing my job", but I am convinced they exist.

<comment><USER5> _Much like rape, I 'm pretty sure torture is done for power and control and subjugation._

If you're talking about organized systematic (rape|torture) tied to military or political goals, sure. But if you're talking about the standard narrative of... whatever you call the "ordinary" kind of rape that's supposed to be reported to local police instead of the UN or war crimes tribunals, I thought that was largely debunked?

<comment><USER6> A lot of people find the other explanation too upsetting to consider. So this line of reasoning continues to get harped on.

</comment></comment></comment></comment></comment><comment><USER3> It's good that these stories are brought to light. It's also important that, every story about "look at how this third-world country went off the rails" is accompanied, where relevant, with the story of how the first-world encouraged and enabled it.

> The actions in Uganda "disgusted the entire civilized world," said President > Jimmy Carter during Amin' s reign, without mentioning that the CIA had > reportedly been showering Amin in aid and weapons throughout the 1970s, as > Cold War blocs scrambled to control the Third World.

<comment><USER7> In the past I had to make lengthy explanations involving three-later agencies and which always came across tinfoil-hatly (although I tended to understate, not ex-aggregate).

However, I discovered this Wiki page: [https://en.wikipedia.org/wiki/Unethical_human_experimentatio...](https://en.wikipedia.org/wiki/Unethical_human_experimentation) and this one in particular [https://en.wikipedia.org/wiki/Unethical_human_experimentatio...](https://en.wikipedia.org/wiki/Unethical_human_experimentation_in_the_United_States) which pretty much do the job for me, and since it's Wikipedia it's not perceived as tinfoil (even though anyone could have looked up the stuff I talked about as well, but as far as I know few people did).

</comment></comment><comment><USER8> tl;dr version please...</comment>


Why Agile Doesn't Really Work - <AUTHOR> http://elegantcode.com/2008/05/27/why-agile-doesnt-really-work/ <comment><USER2> Implicit here is what I feel is the fundamental problem of "agile"-- that it (completely and totally) depends upon a customer who is willing to commit completely to the agile methodology, and all that it entails. I'm sure that if the customer is on board and supportive, most agile methodologies would work fine-- but I'm sure of this in the same sense that I am sure that if my aunt had balls, she'd be my uncle.</comment>


Unladen Swallow to be merged into Python 3 - <AUTHOR> http://lwn.net/Articles/373801/

<comment><USER2> The current perfomance of Unladen Swallow is only marginally better while the memory consumption is a lot worse. And I think a lot more work will be required to improve perfomance and memory usage of Unladen Swallow...

PyPy is another interesting project that seems to be under active development ( nightly benchmarks against CPython <http://buildbot.pypy.org/plotsummary.html> ). I don't know how this decision on supporting Unladen Swallow will affect PyPy, but it would be a shame if it died as it has a lot of interesting ideas - - and I think it has a lot more potential than Unladen Swallow.

<comment><USER3> Performance is heavily dependent on use cases. PyPy is not compatible with libraries written in C while this is a core design decision for Unladen Swallow.

To use a car analogy, PyPy is a race car that is not street legal, while Unladen Swallow is an European sports coupé that is slightly faster than the mild-mannered CPython sedan we all know and love while using somewhat more fuel.

As far as car analogies go, this one looks pretty good.

<comment><USER4> How can you tell it's not an African sports coupé?

<comment><USER5> I don't know ... what's the difference?

<comment><USER3> The African sports coupé is not migratory.

</comment></comment></comment></comment></comment><comment><AUTHOR> GVR's tweet: <http://twitter.com/gvanrossum/status/9297047851>

The PEP that was accepted: <http://www.python.org/dev/peps/pep-3146/>

Previous Discussion: <http://news.ycombinator.com/item?id=1066283>

<comment><USER6> We seek the following from the BDFL:

(...)

\- A pony.

<comment><USER7> \- A shrubbery.

</comment></comment></comment><comment><USER8> unfortunately the numbers in the pep - [http://www.python.org/dev/peps/pep-3146/#performance- retrosp...](http://www.python.org/dev/peps/pep-3146/#performance- retrospective) \- aren't as exciting as you might hope: _Our initial goal for Unladen Swallow was a 5x performance improvement over CPython 2.6. We did not hit that, nor to put it bluntly, even come close._

<comment><USER9> yeah, i thought the same. But i think the work that was done so far built the base for further improvements. They were "distracted" by building other features into llvm, profiling tools and such.

I think, even if the speed stays the same now, there will be good opportunities to real speed ups in the future.

<comment><USER8> i hope so (although i find the whole thing a bit odd - why is it being merged now, if the work was mainly in fixing llvm; why not spend another year and hit the numbers? pypy has been steadily improving, and while people have said there's room for both, this smells a bit political...)

<comment><USER10> "This PEP proposes to integrate Unladen Swallow into CPython's development tree in a separate py3k-jit branch, targeted for eventual merger with the main py3k branch. While Unladen Swallow is by no means finished or perfect, we feel that Unladen Swallow has reached sufficient maturity to warrant incorporation into CPython's roadmap. We have sought to create a stable platform that the wider CPython development team can build upon, a platform that will yield increasing performance for years to come."

It's not going right in.

</comment></comment></comment></comment><comment><USER11> So have they removed the Python global interpreter lock? This is a mayor show- stopper server applications which require multiple threads.

<comment><USER12> No. "we are no longer as optimistic about our chances of removing the GIL completely." [http://code.google.com/p/unladen- swallow/wiki/ProjectPlan#Gl...](http://code.google.com/p/unladen- swallow/wiki/ProjectPlan#Global_Interpreter_Lock)

</comment></comment><comment><USER13> I'm pretty confident that this is the nail in Python 3's coffin. It just shows how out-of-touch GvR and Google are with Python users. For a while, Python 3 was on a track to becoming a more mature language, but this is a huge step backwards. Politics at Google have ruined the future of Python 3. In contrast, Python 2.x just keeps on getting better and better.

<comment><USER14> How is this a huge step backwards?

<comment><USER13> The arguments have been laid out elsewhere, so let me summarize:

1\. The memory requirements are massive 2\. The chosen approach is substantially more complex than CPython 3\. The claimed performance improvements have not been demonstrated

But much worse than all of these, it shows that the future of Python 3 is in the hands of Google managers, not an independent project leader.

</comment></comment></comment><comment><USER15> At first I thought this was going to be a huge reason for people to migrate over to Python 3... Now I'm worried that it'll actually be another reason not to (due to size increase and only moderate speed increase), but I sure hope I'm wrong!

<comment><USER16> I think unladen swallow is going to be a boon to Python and dynamic languages in general. The additional work the unladen swallow team has had to do to get LLVM into a position where it could support a dynamic language has slowed them down, but I'm confident that the effort will end up producing substantial speed boosts while also leaving behind an awesome general purpose VM in LLVM for other people to build on. It's not there yet, but it will be.</comment></comment>


Show HN: HackerCards – Hacker News on chrome new tab. Made for skimmers - <AUTHOR> https://hackercards.launchaco.com/ <comment><USER2> We need a FireFox version please and thank you.

<comment><AUTHOR> Hi, thanks for the feedback, Firefox version coming soon stay tuned.

</comment></comment><comment><USER3> Congrats on the launch. Looks really slick. Just installed.

<comment><AUTHOR> Hi, thanks for the feedback</comment></comment>


Plan, Organize and Remember your daily agenda - <AUTHOR> http://www.nyabag.com

<comment><AUTHOR> Never miss any tasks or personal events. Get personalized alerts through Email and SMS while you are on the go!</comment>


Show HN: Crowdsourced list of startups made by solo developers - <AUTHOR> http://makehub.io/products <comment><AUTHOR> I built a small site where people can post bootstrapped startups made by solo devs. My robot will go and fetch some dynamic data like Twitter followers, Product Hunt upvotes and revenue on Indie Hackers.</comment>


Ask HN: Thriving side-project, thousands of users. Now what? - <AUTHOR>

This 'Proposition HN' thing got me thinking...
I have a side-project with tens of thousands of users and I have no idea what to do with it.
It's an interesting situation. I launched the project almost 2 years ago, and I kind of just expected it to die.  But amazingly enough, it's growing - organically, all by itself, with no advertisement, promotion, or effort of any kind of my part.
The project is www.boxify.me - a simple file-sharing utility for groups.  Apparently people find it useful, because nearly 100,000 files have been uploaded, with hundreds more added daily.  I've had people outright offer me money for a premium version (that doesn't exist). It has been featured on Lifehacker, GigaOM, AddictiveTips, etc - none of which I reached out to.  That says something.
All of that and I basically haven't touched the codebase since launch (aside from slight styling and recently upgrading to Rails 3), nor have I attempted to monetize.
My dilemma is that this is not a project I'm particularly interested in at the moment. And with a full time startup job, I don't have much time to invest in it. The hosting bills are costing me a pretty penny, but I can't just kill the project with so many people using it.  I've pondered selling, but there's huge potential and I'm not sure I want to pass it up.  Maybe a co-founder or partnership is a good solution.
Any ideas? <comment><USER2> Charge people money for it or sell it. You areputting yourself in legal risk by hosting their files and not getting any benefit. At least by charging, you can have the income deposited on a savings account for when shit hits the fan (which always happens with file sharing). Protect yourself by also incorporating it. There are legal issues at hand thta you must consider. And charging for the service will allow you to cover the expenses of dealing with it. I would not run such a service without doing those two things.

</comment><comment><USER3> Start charging people. Or hire someone to monetize it and give them a percentage of all revenue.

</comment><comment><USER4> Curious as to what the original reason for doing this if you have no interest in it?

<comment><AUTHOR> At the time it was solving my own problem (college, short term group projects, dropbox wasn't as great then).</comment></comment>


Where Did All the Girl Geeks Go? - <AUTHOR> http://www.eweek.com/c/a/Careers/Where-Did-All-the-Girl-Geeks-Go/

<comment><USER3> We're still here. Based on my personal experience, there are plenty of reasons why geek girls are avoiding CS. For starters, I've had to deal with a few of my classmates make lame jokes,like boobs and brains being an inverse ratio and following that up with "Oh hey, you're not flat chested. Haha." It's a no win situation for me. If I complain, I'm too sensitive. If I say something back, I'm a bitch. I've also had problems with one of my professors, who seemed think women only took CS classes because they were gold diggers in search of a MRS degree. Most of the guys in my classes are decent, if occasionally awkward when we do group projects together. But the ones who aren't tend to be the ones who go out of their way to be an ass.

I think the article nailed it with this quote: "These roles would probably be ideal for women who prefer to be in communication-focused roles, if they know computer science and can communicate to all parties involved." My husband and several of our friends work at the same company. They are write code. All the women on their floor are relegated to "communication-focused" roles, like project/product managers. I've also run into this when people at my husband's office ask what I'm majoring in. When I say computer science, everyone's reaction is "Great! We could always use another project manager! You should talk to so and so about an internship." They look sort of baffled when I explain that no, I want to write code, not manage coders.

<comment><USER4> _"They look sort of baffled when I explain that no, I want to write code, not manage coders."_

Not to condescend, but that will change in ten years.

I base this not on your gender, but on the observation that there are very few old programmers. Everyone debates the reason for this (i.e. is it age discrimination, or is it programmer preference?) but the fact remains that _most_ programmers end up doing other things as they age.

<comment><AUTHOR> "there are very few old programmers"

"most programmers end up doing other things as they age"

You base these statements upon what data? Your own observations? Then maybe you need another set of glasses.

There are several million hackers that would disagree with you. Too bad you haven't had a chance to meet too many of them. Probably would have been interesting for both of you.

<comment><USER4> How about the fact that, a decade out of university, all of my programmer friends have moved into management or other fields?

Where's _your_ data?

<comment><USER5> What's wrong with managing programmers? If you really want to, I'm sure you can contribute some code as well.

<comment><USER3> There's nothing wrong with managing programmers. It was just the assumption that I didn't want to "get my hands dirty" because I was female that bothered me.

I don't know if it's common for project managers to contribute code in other companies. At husband's company, it is pretty much unheard of for for a project manager to write code. Project manager tends to be more of a technical writing/managerial position in his company. There's nothing wrong with that. But I have no wish to be a full time technical writer/manager.

<comment><USER5> At a company such as Microsoft, you can become a software architect. This means you can focus on the major design issues and have developers implement your design. You can write code, but you don't have to write that much.

As you grow older, you will want to write less code and focus more on software architecture and management of programmers.

<comment><USER3> Ah, ok. That makes more sense, although it is quite different from what my husband's company considers "managing coders" to be. That does sound more in line with what I want to do long term. Thanks for giving me a different view.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> "There's a perception that being a computer science major leads to a job as a programmer and you sit in a cubicle where you type 12 hours a day and have no interactions with other people"

Sounds pretty accurate to me...

<comment><USER7> Actually, entering my first job at a large software company, I was pleasantly surprised by how many people maintained lives outside their jobs. Fixing up houses, teaching Sunday school, racing bikes, volunteering. I believe a hobby is not really a hobby if its what you do for a living. And when Halloween rolls around, I'm reminded how many people have real responsibility (e.g. Children)

</comment></comment><comment><USER8> "Some studies have shown that as soon as girls turn 12—and maybe now it is even younger—they're so into their social image and being liked by boys that they dumb themselves down so not to be seen as a geek," Yusupova said."

I wonder if this has more to do with western high schools than our culture at large. I dropped out _on my twelfth birthday_. While I did encounter social pressure to move into more sanctioned roles, this was opposed by teachers encouraging me to find what I liked and do it well. I was very lucky -- this isn't something afforded to most high schoolers. It has helped me grow into these interests.

<comment><USER9> gender stereotyping by parents begins at birth.

<comment><USER8> That's true. But stereotyping happens by degrees.

</comment></comment></comment><comment><USER10> Call me crazy and out of touch with reality, and this is only partly off topic: but I'm one of those guys who still doesn't understand why people go bonkers to see a girl who knows her way around a computer, much less plays a video game.

Then again, my current love interest is a Network Security student so...maybe I'm just naive anyway.

<comment><USER6> It's nice to be able to share things. Presumably it could also get too much (computer stuff all the time), but couples of the same profession seem to be quite common. Besides, computers are among the most interesting things, especially because most other things can be analyzed in terms of computers.

<comment><USER11> People aren't analyzable by computers, at least on an individual basis. Women tend to be more interested in individual relationships than men, and you can't have a relationship with a computer.

In my opinion, it is pretty obvious from the clearly differing motivations of the genders why there is such a gender divide in academics. Maybe it has to do with intelligence, but "intelligence" seems to largely be determined by what a person loves and focuses their time on, i.e. genius is 1% inspiration and 99% perspiration.

Today, we measure intelligence in quantitative/technical terms, and men are much more interested in technical subjects than women. Who memorizes thousands of intricate statistics about hundreds of people they'll never meet? Who gets bored stiff by that stuff and wants to share personal experiences instead? The difference here is quantitative vs qualitative.

So, again, I think it's pretty obvious why there are barely any women geeks. People only think it is a big issue because they think it is important for women to be self determined, and you have to be technically smart to succeed in what we consider success (career, wealth, material goods, etc). I think our modern worldview is way too narrow.

<comment><USER12> "Women tend to be more interested in individual relationships than men, and you can't have a relationship with a computer."

OK, firstly, my Mac started crying when he read that. Poor mac!

Secondly, the broad generalisations that you make about men and women is exactly the problem. Here's a hint: Women working in IT, and particularly programming, are there precisely because we too are interested in technical subjects and having very analytical minds. The problem is, as roadtripgeek has already alluded to, men see us in the workplace, and make the assumption that we are just like the hairdresser, or the secretary that they talk to on coffee breaks: into communications more than cold hard code.

I look at my situation. My entire floor at the ofice is taken up by programmers and their direct managers. I am the only woman on the floor. It's not the technical conversations that get me, it's all the other crap. Guys that want to talk about poker, or brewing beer, or the football results, or how they got lucky with a hot babe in the carpark of the Sheraton last weekend. Or it's when they decide to use a clip from a porno film as the test flow for a new product that we are working on. Or the fact that a few of the guys have decided that, seeing as I'm the only woman on the floor, that I shouldn't have a bathroom all to myself, and who won't even put the damned seat back down after they have finished pissing!

It's all that crap that makes IT unattractive for women, not the actual work itself.

Personally, like many of us here on HN, I'm working on my exit strategy - <USER2> for myself, where I can still code my little heart out, without having to put up with all the male bonding crap that I'm automatically excluded from in the workplace.

Owning a startup FTW...

<comment><USER6> Voted up for the crying Mac, but other than that I have to say you dish out just as many stereotypes as you complain about receiving. I am male but I don't care about beer or football, and I would never spread porn in the workplace. If I got lucky with hot babes frequently, maybe I would brag about it - but I wonder, what exactly would you be interested in talking about with men? Seems to me that relationship issues are one of the common themes of human conversation.

<comment><USER12> _blink_

Stereotypes? Where? I wasn't making generalisations, I was describing my daily work environment! The fact that you identify that environment as being stereotypically male rather proves my point, don't you think?

<comment><USER6> It just sounds as if you should switch jobs. Certainly not all men/IT departments are like that.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Liz Lawley is a good advocate for geek women and runs this Women in Tech group blog: <http://www.misbehaving.net/>

</comment><comment><USER14> This thread is useless w/out pics</comment>


PublicVotes – Ethereum-Based Voting Application - <AUTHOR> http://publicvotes.org/ <comment><USER2> Very exciting. As things like this become more well-defined, and start to solve the security/ease-of-use problem, I think (hope?) that we'll see some truly groundbreaking applications of distributed decision making tools.

<comment><USER3> I'm doubting it. The reason is that they're both really hard to come up with and _really hard for end-users to understand_. That last part is important for widespread trust and verification. It's why I've always been in favor of centralized models with distributed verification. Especially simple computations that can just be re-run on available data with tamper-detection and comparisons of hashes, etc.

<comment><USER4> You mean something as trustworthy and tamper proof on a large scale as paper ballots and manual tallying? I still haven't seen any electronics that can be practically verified by the public comparable with the centuries old manual solutions that anyone can follow. Using electronics means getting a massive TCB with many orders of magnitude less the number of eyes that can actually inspect the computations being run (both because of organizational reasons and lack of knowledge).

According to Halderman* it might take us 10 years, if ever, to get machines the public can trust and verify on the scale that is needed for nation-wide elections.

Given the sorry state of current phone and laptop security, the problem of having a massive TCB is not solved, not with building on Ethereum either.

* [https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s](https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s)

<comment><USER3> It's all in the protocol and implementations: you don't need to trust huge TCB's and manufacturing of specific device. Low TCB, diverse, clients doing the checking is all you need. The paper comparison is unfair given online and electronic is assumed in the requirements of the OP. Something closer to paper in usability, cost, or security would be:

[http://www.scantegrity.org/](http://www.scantegrity.org/)

<comment><USER4> Scantegrity, like other secure electronic systems, scores low on usability[1].

Recently the CEO of Fox-IT reported a delay to our minister in the Netherlands[2] with researching the specs for a usable and secure vote printer and vote counter[3]. It's not as easy as people think, especially the elder seem to have trouble with it.

[1] [https://www.usenix.org/conference/evtwote14/workshop- program...](https://www.usenix.org/conference/evtwote14/workshop- program/presentation/acemyan)

[2] [https://zoek.officielebekendmakingen.nl/blg-604665](https://zoek.officielebekendmakingen.nl/blg-604665) (Dutch)

[3] Unofficial translated summary of the report on large scale voting; proposes using a vote printer and vote counter with human readable ballots in between: [https://www.kiesraad.nl/sites/default/files/every-vote- count...](https://www.kiesraad.nl/sites/default/files/every-vote-counts- conclusions-and-recommendations.pdf) (English)

<comment><USER3> Thanks for the data. I'll factor that into future comments. The direction that leads, though, is improve the usability rather than toss out the whole system or its principles.

My main recommendation if anyone asks with intent to deploy is paper and optical readers. Cheap, easy to use, easy to check at booth, and easy to audit later. I prefer computers stay out of voting as much as possible. However, if they're there, Scantegrity line and Civitas seem like top contenders to build on.

Also note in any analysis that secure voting has so many seemingly- contradictory requirements and attack points that any solution will likely pose difficulties. I expect some responsibility and effort from the system's users just like they must put effort into learning to drive. That said, the usability can certainly improve and we should put every effort into that.

</comment></comment></comment></comment></comment></comment><comment><USER3> Secure voting is hard. Better to improve on something that already had good work put into it like Civitas:

[http://www.cs.cornell.edu/projects/civitas/](http://www.cs.cornell.edu/projects/civitas/)

Plus, you don't really need decentralized voting so much as decentralized checking. That's where the effort should be. Blockchains are a total waste of time and money for this kind of thing. Especially with so many prototypes in existence that use less energy/money with good security properties.

<comment><AUTHOR> Ou I absolutely agree on that. This is nothing more than a simple Proof of Concept for voting on Ethereum/a Blockchain. Definitely also agree that the ideology of "decentralize and blockchain everything" is wrong.

In the current implementation of PublicVotes, it costs around $1 to record some 200 votes into the Blockchain. This is quite expensive compared to systems such as Civitas, but it is arguably, cheaper than the current system where governments often count vote ballots by hand. (at least that's how it's done around here in Italy).

Nonetheless, I do think though that Smart Contracts can play an important role in future voting systems, and obviously they can empower entire governments. I will work on a Liquid Democracy model next for which Smart Contracts make a lot of sense.

<comment><USER4> > This is quite expensive compared to systems such as Civitas, but it is > arguably, cheaper than the current system where governments often count vote > ballots by hand.

Maybe cheaper, but I'm not sure if having to trust my computer with an important vote like that is better than having to trust a voting booth, ballot box and my eyes when the votes are being tallied. I think the slowness of manual tallying is a security property since anyone can inspect the computation while it's being run. All other technologies like Civitas, Scantegrity etc. are not cheaper but more expensive than this manual process and open up great possibilities for state level adversaries.

I think your system (using peoples computers) might be trusted when the stakes are lower though. Interesting project :)

</comment></comment></comment><comment><USER5> "The code is available on Github and here is a blog post explaining how OpenVotes works." There's no link to the blogpost.

<comment><USER6> This is what is linked: [https://medium.com/@DomSchiener/publicvotes-ethereum- based-v...](https://medium.com/@DomSchiener/publicvotes-ethereum-based-voting- application-3b691488b926#.s82vez1r6)

</comment></comment><comment><USER7> I don't get it. What does Ethereum add to this?

<comment><AUTHOR> Through Ethereum this creates a transparent voting system where anyone can audit a poll, since everything is recorded in the Blockchain. Additionally, votes cannot be altered once they are cast, ensuring the integrity of the system.

Right now this is a Proof of Concept though, more voting applications will follow.

<comment><USER7> But what's to stop vote tampering between the webpage and the blockchain? Couldn't you easily make up false votes or record votes wrongly?

<comment><AUTHOR> The website is currently a single Point of Failure, since it is the gatekeeper for recording votes into the Blockchain. With this proof of concept I did not want to build a fully decentralized voting application that ensures that 1 person == 1 vote, I rather just wanted to display how Ethereum and the Blockchain can be utilized for voting. Once a vote is recorded into the Blockchain it cannot be altered anymore. The question of feasibility of this application is obviously very much up in the air.

But overall, there are some interesting concepts to protect such systems against sybil-attacks, so that we can ensure that 1 person == 1 vote any nothing more.

</comment></comment></comment></comment><comment><USER8> Tried to click on Early US Presidential and Bernie Sanders, but got a websocket 400 error. I'm on the latest Chrome on Ubuntu.

<comment><AUTHOR> You should still be able to vote. AFAIK, this is caused due to not having an SSL certificate.

<comment><AUTHOR> Just checked, seems that that account went out of Ether as there were too many votes (more than 100). Didn't expect this much traffic haha.

But to basically explain what happened, each poll has a minimum 0.2 Ether which are used for paying the network for executing the smart contract. Since more than 100 people have voted on the system, it means that the account (which holds the Ether) went out of tokens and now nobody can vote anymore.

I'm right now working on fixing this by creating a balancing system that basically creates a faucet. But feel free to create a new poll. You can send me the link here and I'll send some Ether to get you going.

</comment></comment></comment><comment><USER9> I noticed the dropdown on the create page doesn't display the list correctly (chrome, Win7):

[http://i.imgur.com/QfuWYS5.png](http://i.imgur.com/QfuWYS5.png)

<comment><AUTHOR> Hey pippy thanks for notifying me. This is a weird error which happened to one of my friends on Windows and Chrome as well. Will look into it.

</comment></comment><comment><AUTHOR> Hey everyone. Anyone that wants to create a new poll and doesn't have any Ether, please just post here with your poll link and I will send some Ether to your poll so you can get started :)

<comment><USER10> oh cool! I tried one here: 0xa93eb477fe671f5911ddb56b2c0aa6bb4b74b8de

<comment><AUTHOR> Sent. Once the transaction has been received, you should be able to click on "Start Poll" at the page :)

<comment><USER9> I have one i tested too: 0x06183b08067874c411e1fe0dd7d1b14bd357506e

<comment><AUTHOR> Sent, your poll should be ready soon. :)

</comment></comment></comment></comment></comment><comment><USER11> Anyone can comment on its ability to scale? Not sure exactly what to ask about (I guess performance?), but do you think this could scale to say 200 million people?

</comment><comment> what-no-tests BUG: After voting there's no response. I can vote over and over again and I just keep getting '200' responses.

<comment><AUTHOR> Hey, that should have been fixed last night. There was a small bug when I pushed some updates last night.</comment></comment>


Avoiding systemd isn't hard - <AUTHOR> http://www.vitavonni.de/blog/201410/2014102101-avoiding-systemd.html <comment><USER2> Now? No, not really, just avoid GNOME.

In the future? Yeah, probably.

This wouldn't be an issue if the systemd people weren't notoriously hard to get along with. Really, I think all of the reasons why systemd attracts hate can be boiled down to this. Nobody wants a standard init system that's _overtly hostile_ to bug reports and reasonable changes.

Say what you want about upstart and sysvinit, but I don't recall a point where the maintainers of it were told off for hijacking kernel flags...

<comment><USER3> Core package bsdutils predepends on libsystemd0. Now it is impossible for any Debian jessie systems to be without systemd code.

[https://packages.debian.org/sid/bsdutils](https://packages.debian.org/sid/bsdutils)

<comment><USER4> That's moving the goalposts in a significant way. Debian has always been of the philosophy that binaries that have runtime-optional support for something link libsomething and have a dependency on it, but there cannot generally be a dependency from libsomething to the actual something package.

For instance, openssh-client depends on libgssapi-krb5-2 and libselinux1, but neither of those packages have a dependency on the Kerberos 5 userspace clients or on SELinux being configured or enabled, respectively. If you happen to install Kerberos or enable SELinux, then openssh-client will work fine without a recompile (because Debian doesn't have USE flags). If you don't, the libraries will just do nothing. I think SELinux is a terrible and misguided idea that subverts the UNIX philosophy, adds needless complexity, and also doesn't work, but I have no objection to libselinux1 being installed.

Same thing with bsdutils and libsystemd0. The discussion has never been about being "without systemd code" as if it were a noxious poison. (It's free software, I would _hope_ people incorporate good code from it into other packages.) It's about being without systemd, the init system, and if bsdutils did depend on a particular init system, it would be flagrantly in violation of the Technical Committee resolution.

<comment><USER3> This libsystemd points to a dangerous habit of the certain group of developers who prefer strong interdependency and monolithic architecture. In similar way, you have libdbus which is technically not the actual dbus, but tries anything to launch dbus processes if loaded and initialized as a library. And gconf libraries which ship daemon executables and also launch daemons from library. Libsystemd is apparently not doing such right now, but given its windows.dll like nature, it's a reasonable concern to have.

<comment><USER4> > In similar way, you have libdbus which is technically not the actual dbus, > but tries anything to launch dbus processes if loaded and initialized as a > library.

That can only happen if the dbus executables are installed; libdbus-1-3 Recommends but does not Depend on dbus. This is the standard way of things for everything in Debian, and the dbus packaging is no different from the Kerberos packaging here.

As I mentioned, it would be in violation of the tech-ctte ruling if depending on libsystemd0 also brought in systemd itself as a hard dependency.

> it's a reasonable concern to have.

The entire worldview of systemd is that you shouldn't be spawning things from your current environment (cf. daemonizing in /etc/init.d/foo), you should ask some parent keeper process to spawn the executable. It sounds like it would involve systemd doing the exact opposite of what it currently does if libsystemd were to fork-and-exec much of anything.

For instance, systemd is obsoleting the setuid dbus-daemon-launch-helper, which I am super excited about, having gotten on dbus-daemon-launch-helper's bad side far too many times.

</comment></comment></comment></comment></comment><comment><USER5> On gentoo, we have virtual/service-manager[0], that allows you to use openrc/systemd/runit/daemontools.

[0] [http://sources.gentoo.org/cgi- bin/viewvc.cgi/gentoo-x86/virt...](http://sources.gentoo.org/cgi- bin/viewvc.cgi/gentoo-x86/virtual/service-manager/service- manager-0.ebuild?revision=1.6&view=markup)

</comment><comment><USER6> I think the author should refrain from using the word _trolls_ so much it hampers his overall message.

So what happens with the pinning example with GNOME (I didn't know this useful command)? Because of the dependance on systemd it is not upgraded then?

<comment><USER7> There have been some real hate-filled messages on the mailing lists. If they had been directed at a women then they would have made HN all on their own. The article links to one of them, if you want to check it out.

<comment><USER8> Here is the message:

 _There has been no General Resolution amongst debian package maintainers. Red Hat has instituted a regulatory capture of the "bug squashing" committee within debian (the "Technical Committee") by having current or former (but stock holding) employees moonlight in debian and gradually gain membership in that comittie.

Once their numbers were sufficient they proceeded to file a bug report on the fact that systemd was not standard in debian.

This is illicit abuse of process and they need to be prosecuted.

Debian is an unincorporated association. It has bylaws, trade practices, and dealings by which it was governed. The RedHat associated members of the Technical Committee have illegally and in bad faith abused their positions in- order to realize financial and strategic gain for their employer._

Do you really believe this is hate speech? Hate speech attacks a person or group on the basis of attributes such as gender, ethnic origin, religion, race, disability, or sexual orientation.

<comment><USER9> It may not be hate speech, but it is not very constructive and have a smell of conspiracy theory.

<comment><USER8> Mr. Snowden's revelations prove that "a smell of conspiracy theory" is not a strong enough argument. Obviously Red Hat is interested in widespread systemd adoption, and that message might offer an explanation as to why debian only considered 3 alternatives and unprecedentedly rushed the adoption process. So this angle is definitively constructive.

</comment></comment></comment></comment></comment><comment><USER10> Oh great, now people whose opinions differ are "trolls". I think we all know who the troll is...

<comment><USER11> He's not casting all opponents of systemd as trolls; he's saying that trolls have spread a lot of misinformation about systemd, which is true.

Opponents of systemd _have_ spread a LOT of FUD and misinformation about systemd. I know, because I was initially very skeptical of (or even opposed to) systemd based on what they had said. Fortunately, I discovered that much of it was misleading or inaccurate after my main distro switched to systemd.

Even if we give them the benefit of the doubt and say that it wasn't an intentional attempt to spread misinformation, and that they were simply speaking very vocally about a topic that they themselves had not taken the time to read up on, it is not much of a stretch to call that behavior "trolling".

<comment><USER8> > Opponents of systemd have spread a LOT of FUD and misinformation about > systemd

Well, obviously there's another, more charitable interpretation.

> I discovered that much of it was misleading or inaccurate after my main > distro switched to systemd.

Systemd is a continuously-varying project, and just because your distro smoothly switched, doesn't mean there were no problems for early adopters. Or that just because your configuration works, no difficulty with the multiple systemd components have, do or will arise.

<comment><USER11> > systemd is a continuously-varying project, and just because your distro > smoothly switched, doesn't mean there were no problems for early adopters, > or that just because your configuration works, no difficulty with the > multiple systemd components have, do or will arise.

Actually, I never claimed that my distro switched smoothly. Ironically, I literally commented just yesterday complaining that my distro (Arch) did _not_ switch smoothly (and IMHO switched too early)[0]. I had a lot of issues when I first switched - I couldn't even boot my system, as a lot of stuff did not migrate cleanly.

Switching is always going to cause upheaval and breakage to at least some extent, and that's not what OP and I are referring to when talking about FUD.

What I'm talking about are people making factually incorrect (and worse, _trivially verifiably incorrect_ ) statements about systemd and what it does. Some of them are just blatantly wrong ("systemd forces you to use binary log files"[1], "systemd means you can't use init scripts"[2]), "systemd means you can't use crontab"[3], or my favorite "systemd gives QR code output"[4]). Others are technically true, but highly misleading ("I don't want everything to run in PID 1"[5], "systemd is the only way to run cgroups"[6])

There's a difference between disliking systemd on technical merit and disliking it based on false information that one hasn't even bothered to verify, and then vocally spreading that misinformation.

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

[1] systemd by default does not use _any_ log files (IIRC), and provides text logs as an alternative to the recommended binary default. You can keep using syslog just as always.

[2] systemd allows for init script compatibility. I won't claim that all init scripts will work without any modification, but it's not like you can't keep using init scripts instead of systemd configs if you don't want to

[3] systemd.timer is something you can use instead of crontab, but it will also run regular CRON jobs as well.

[4] systemd _does_ have an option to display kernel dumps as QR codes. This feature is generally not compiled or available by default

[5] systemd includes some functionality that runs in PID 1, but most of what people actually are talking about does _not_ run in PID 1

[6] systemd is the only way to run cgroups, because the _Linux kernel_ requires that a single arbiter handle all cgroups, and systemd is (was?) the only program that has actually implemented the entire necessary ABI to do so. Anyone is free to write another program to handle cgroups instead of systemd.

<comment><USER8> Okay, I was saying, just because some people doesn't know, it doesn't have to be FUD, that'd be just an ad hominen attack. I've been a user of Arch back before systemd and I know your points are mostly right, but as you admit, in some cases you're true only technically, so don't attribute all errors to malice.

I think most people don't care how much of systemd is pid 1, there are components like udev that systemd is assimilating, we just want choice, I happen to like modern daemontools-like init systems a lot, but I use various init systems depending on what I want, and that's great IMO. However, read this:

 _Unless the systemd-haters prepare another kdbus userspace until then this will effectively also mean that we will not support non-systemd systems with udev anymore starting at that point. Gentoo folks, this is your wakeup call._

The factually incorrect statements stem from such messages from lead developers, they've stated that in the future systemd will be sort of "merged" with linux, and that's no good. We know because we've been using great OSs and this is clearly a regression.

</comment></comment></comment></comment></comment><comment><USER12> I thought the big concern is that it isn't hard _yet_.

<comment><USER13> it will only get "hard" if software projects bake in hard-dependencies to systemd, like the gnome project has (because they thought/think it provides a lot of benefits, and imho it does). Even so, there are plenty of shims being built that provide the small amount of api compatibility necessary to make things like gnome work on non-systemd systems (FreeBSD for example).

<comment><USER12> So, it is going to get hard, is what you are saying?

I mean, it could be that the shims are nice and easy, but it seems to be the expectation that this will not be the case, right? Especially since systemd seems to be on a very aggressive expansion of responsibilities campaign.

<comment><USER13> systemd is 69 individual components (and binaries) last time I checked. You can opt to build some, or all when you compile it. Yes they work together, but they have an open and now-more-or-less standardized api. So nothing prevents another developer from writing against the api, be it a shim to reduce/remove systemd but provide compatible calls into another system (init, logging, etc), or a complete replacement for a specific component of systemd.

I see it only getting easier actually. Folks in the BSD projects for example have their own init system but still want software like gnome, so shims are used to provide the api abstraction. This can be applied elsewhere in the Linux world as well. Again, this is only for software where the developers have explicitly decided to hard-code in dependencies to systemd, which is not likely going to be everyone.

<comment><USER14> > Again, this is only for software where the developers have explicitly > decided to hard-code in dependencies to systemd, which is not likely going > to be everyone.

I'd put good money on this getting harder and harder going forward though. At some point it will be everyone, or at least practically everyone, because every Linux distribution with any mindshare will have been using systemd for years, and hard-coding systemd will be not a lot different than hard-coding calls to the C standard library.

Also, shims? How god-awfully inelegant can we be? "You don't like systemd? Cool. You can run something else (as long as it looks, feels, and behaves exactly like systemd)."

Look, I'm not a religious zealot. Systemd is what they want me to run; systemd is what I'm running. I can live with ugly software. It's not the end of the world. But oh dear god is it ugly.

<comment><USER13> In what way is it "ugly"?

<comment><USER14> I'd give the same answers as you've probably heard a dozen times before. Binary logs, D-bus fundamentally baked in, the whole "shims are a perfectly good solution" viewpoint, basically the usual things people like me don't like.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Thanks for the guide. Serious question, say I were to do a clean install of Jessie. I would use Xfce with either LightDM or no DM, or I might choose to set up a VPS that obviously won't even need Xorg. Is there a way during installation that I can skip installing systemd at all in that case, perhaps through a minimal install and then following up with adding the software I want? I don't like the idea of trying to purge systemd and its dependencies after a fresh install.

<comment><USER16> I am not sure about Jessie, but whenever Debian switches to Systemd as the default, I would guess even the minimal install would have it. Systemd is the init process, so you can't really just do without it (or some other init system at least). I think it will probably require somebody remixing the installer image to use a different init system.

Not sure though, I'm not super informed about what Debian is planning for the switch.

I _think_ (no experience, but it makes sense) that Gentoo lets you pick the init system easily at install, you might want to look at that.

You might want to try it though. In my experience, the minimal config for systemd is quite lightweight and clean. I don't use KDE or Gnome, but I quite like systemd on my Arch workstation. Arch (and Fedora) have had it for quite a while now, even back when it was probably a bad idea to switch...

<comment><USER17> The netinstall (not sure about the others) lets you choose exactly what packages you want during the installation, including init system, as far as I know.

</comment></comment></comment><comment><USER18> apt-pinning (something that I have always thought is a bad practice) and using a shim. Honest question: isn't this just a giant hairy hack? Am I missing something?

<comment><USER19> Pinning? That's only a hack if you don't care to learn how apt works. And not actually necessary to avoid systemd unless you're running with `--assume-yes` or hammering 'y'.

systemd-shim? Well, yeah, but that's the entire point of it's existence.

</comment></comment><comment><USER20> They have fear of systemd becoming the mainstream init system. It's more easy for a project to become obsolete if we start to forget about it. Although sysvinit still has an chance to evolve.

<comment><USER13> not to mention all of the _good_ things systemd actually provides.

I'm particularly excited about socket activation for my servers, as well as auto-remounting of network shares if connectivity is lost (my laptop on/off wifi or traveling, etc).

I really don't get the systemd "hate" that is still floating around. It seems a lot of arguments against end up boiling down to "it's different and therefore I don't want it". systemd is a collection of smaller tools, which _is_ the UNIX philosophy (debunking that argument). It can be replaced as per this article and if software projects don't explicitly bake in hard- dependencies (but even then there are ways around it like shims and what-not that several people have built).

Distros are looking around at all the available init systems, and a large amount are deciding systemd offers something more than the rest, and then going with it. (you can review the debian debate for gritty and technical details). There really is no reason to be so angry at systemd.

<comment><USER14> As another article I read just today pointed out (in a completely different context), the point of Unix isn't the number or size of the tools. It's the composability of the tools.

systemd might be a collection of many small tools, but they don't compose well. Dbus isn't a substitute for piping little blobs of text between stdin and stdout of a bunch of different programs that are utterly agnostic of each other's existence.

And systemd might well be great. Aesthetically, I don't care much for it, but I'm using it with no problems, so I guess it's fine. But it's not "the Unix philosophy".

<comment><USER21> Serious question: in what ways would you want systemd commands to be composable? I'm struggling to think of a use case for being able to pipe a service name into systemctl (or "service" for that matter) and its output is reasonably grepable for running|failed etc (and more consistant the old SysV scripts)

I'm guessing you want more then that though right?

<comment><USER22> Conceptually composable. The logging in systemd sucks, sorry but true. Binary logs? LOL. Someday if rsyslog could speak raw systemd language as an input, that wouldn't be quite as awful. Then you could have systemd talking to a real logging platform. Just like "ls" can talk to "grep". Doesn't mean the talking can only be in the format of a pipe or whatever.

<comment><USER23> /etc/systemd/journald.conf

ForwardToSyslog=True

or

systemd.journald.forward_to_syslog=True on the kernel command line.

Is it just cool to not read documentation anymore?

<comment><USER8> To say that this is not fair would be an understatement. systemd-journald is only one component, there are more than 50!

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> On a purely technical perspective (I don't care about people not getting along), what is reproached to systemd ?

</comment><comment><USER25> another pro-systemd post. there's been two of them today, the other being the uselessd blog post. What's with this community rushing to defend themselves? doesn't this smell like astroturfing to anyone else?</comment>


iPhone iOS 13 Lockscreen Bypass Flaw Exposes Contacts - <AUTHOR> https://threatpost.com/iphone-ios-13-lockscreen-bypass/148332/ <comment><USER2> This sucks, but it is fixed in the 13.1 release 10 days after 13.0.

I'm not sure there's much they can do beyond that since they have to have 13.0 on the new hardware arriving this week.

Maybe they could skip 13.0.0 for upgrading existing devices, and have them go straight to a 13.0.1 with just this fix in it. That way they'd limit exposure only to brand new devices that are never updated. Probably logistically challenging too.</comment>


NOOO Honda Fit hybrid not coming to US after all... - <AUTHOR> http://www.treehugger.com/files/2008/08/honda-fit-hybrid-usa-north-america.php

<comment><USER2> not really appropriate for here... but I do own a normal honda fit and it's my favorite car. ever. compact but can carry a decent amount of stuff. simply an amazing car.</comment>


Now that's what I call a Hacker - <AUTHOR> https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/ <comment><USER2> Some of those are fun, but auto-rolling back a customers db based on an email with the word "help", that's insane.

<comment><USER3> Well, i wonder if this script ever ran. If it ran multiple times it actually isn't that insane. His coworkers never knew this was even automated or in play so there weren't any issues apparently.

Also, this guy seems like the type of person who could fix any of the issues that arose.

Kumar-still-fucked.sh

All inbound replies from Kumar with "re", "still broken" or [falsy] working. Send fix.sh

Should be sorted now mate, check again. Works on my end.

</comment></comment><comment><USER4> Github repo with the scripts [https://github.com/narkoz/hacker- scripts](https://github.com/narkoz/hacker-scripts)

</comment><comment><USER5> This is hilarious!</comment>


Ciao – iPhone app for controlling your arduino - <AUTHOR> http://bildr.org/2011/05/ciao/

<comment><USER2> I discovered Ciao after a similar project I worked on for Android was featured on the Make Blog: [http://blog.makezine.com/archive/2011/05/use-android-open- ac...](http://blog.makezine.com/archive/2011/05/use-android-open-accessory- without-android-programming.html)

Hangbag for Android enables people to create Arduino-based accessories for Android devices that support the Open Accessory protocol (recently announced at Google I/O) without writing Android code: <http://www.labradoc.com/i/follower/p/android-arduino-handbag>

I released an update the other day that packages the Arduino-side as a library and improves the API. Now you can write code like this:

        void toggleFirstLed() {
          // ...
        }

        Handbag.addLabel("This is a label");
        Handbag.addButton("Toggle Digital Pin 4", toggleFirstLed);

[A side observation: Easiest way to find about similar work that's been done before is to get publicity and then someone will point out: "Oh, yes, such and such did that here". :) ]

</comment><comment><USER3> Cute idea. Its a great idea for remote control of quick hacks. Except for the specific instance of working with one sketch, is there perhaps a more general solution which could have been used? Standard communication protocols?</comment>


Ask HN: Scriptable IMAP/SMTP servers? - <AUTHOR>

I'm looking to build a mail system that can be accessed via normal IMAP/SMTP clients (mobile devices, Apple Mail/Thunderbird/Outlook, etc.) but with a decent scripting ability. The goal is to have inbound and outbound emails to be reviewed by a third party before they're delivered. Googling has revealed a number of dead tries at making a Node IMAP server, a long-dead Lua-scriptable IMAP server, but nothing particularly usable. <comment><USER2> Sieve ([http://sieve.info/](http://sieve.info/)) could get you pretty far for anything IMAP related scripting. I believe Pigeonhole ([http://pigeonhole.dovecot.org/](http://pigeonhole.dovecot.org/)), the implementation for Dovecot, also allows external applications to be run for advanced scenarios.

</comment><comment><USER3> I remember [http://lamsonproject.org/](http://lamsonproject.org/) being a python SMTP server library thing. It may be possible to piece together something based on it. That covers the SMTP part.

Mind you, the git repo looks dead, with the last commit being over two years old.

</comment><comment><USER4> Why reinvent the wheel. Setup mail delivery routing so mail goes to a different mail handling system first, if it's approved send it on to the final recipient.

</comment><comment><USER5> Take a look at this [https://haraka.github.io/](https://haraka.github.io/)

<comment><AUTHOR> Yeah, I'm evaluating that for the SMTP side. The IMAP side seems to be more complex.</comment></comment>


Prison for visa fraud in case involving Bay Area workers - <AUTHOR> https://www.mercurynews.com/2019/03/26/h-1b-prison-for-visa-fraud-in-case-involving-bay-area-workers/ <comment><USER2> The government should be able to seek denaturalization of people who misuse the immigration system to oppress other immigrants (for example by ordering them to break laws, making them pay visa fees, etc).

This guy Katam was an immigrant himself, and became a US Citizen in 2009. If I was emperor, I would want him denaturalized. A year or so in prison is not enough punishment.

<comment><USER3> There's a reason why denaturalization usually only happens if you perjured your way into citizenship: it's an extremely severe action that is not meant to be a punishment, but rather to correct a mistake (according citizenship to somebody who in reality failed to meet certain criteria).

Denaturalization as punishment is something you see in totalitarian ethno- states, not democracies.

<comment><USER4> No in France you can loose your acquired nationality if you participated to terrorism against France. Was voted in the aftermath of the Paris attacks, though wasn't of much use since all the terrorists of those attacks were natives of either France or Belgium.

<comment><USER5> I wonder what happens if someone like Le Pen ever gets in charge. Being able to de-naturalize "terrorists" sounds like a pretty serious power that could be abused.

</comment></comment></comment></comment><comment><USER6> There are thousand others operating with impunity. [https://techjobs.sulekha.com/h1b-jobs- usa](https://techjobs.sulekha.com/h1b-jobs-usa) \- One of the popular marketplace for these "consulting" companies.

<comment><USER7> Hi, am looking for the H1B visa consultant for filing process currently. When you talk about the impunity stuff here can you please tell me 1 consulting company on this issue.?

<comment><USER8> i have used some of the services, let me know the business name so i will be aware of it

</comment></comment></comment><comment><USER9> His clients must be angry as hell. $3000 USD is a year's salary for many people in India, and was paid to a fellow Indian who took it to pad his pockets. This asshole was also an immigrant and knew what he was asking for from clients could be a life savings with help from friends and family.

All while bullshitting the government to only benefit himself. The sentence is quite deserving considering what a terrible person he was to many people.

<comment><USER10> Isn't that peanuts in the Bay Area?

</comment></comment><comment><USER11> If you are interested in analyzing h1b data, please check out my project, [https://github.com/serv/h1bhub](https://github.com/serv/h1bhub)

It's a tool to ingest raw h1b data into postgres, so you can study the data easier with SQL. It contains all rejected and approved cases from 2014 to 2018.

I am also working on an app that allows you to look at h1b data on web.

</comment><comment><USER12> > The head of an IT staffing company has been sentenced to a year and a day in > prison

This is a strange sentencing length; was there multiple charges of which one had a penalty of a day in prison?

<comment><USER13> That extra day makes a huge difference.

<comment><USER12> In what way?

<comment><USER13> [https://en.wikipedia.org/wiki/Year_and_a_day_rule#As_a_sente...](https://en.wikipedia.org/wiki/Year_and_a_day_rule#As_a_sentence_for_felons)

</comment></comment></comment></comment><comment><USER14> > On his own, the man received a job offer from Samsung in San Jose, according > to the complaint.

How is this possible? Wouldn't the invalid arrangement have been flagged by e-Verify?

<comment><USER5> Does e-verify occur BEFORE the first day of employment?

<comment><USER15> I think it happens on the first day when you fill out the I-9 form and provide proof for identification and employment.</comment></comment></comment>


Masks Went from Don't-Wear to Must-Have During the Coronavirus Pandemic - <AUTHOR> https://www.wired.com/story/how-masks-went-from-dont-wear-to-must-have/ <comment><USER2> >Don't put masks on, because we're going to be taking them away from health care workers," says Anthony Fauci, director of the National Institute of Allergy and Infectious Diseases. "That understandably got interpreted as, we didn't think masks were of any benefit."

That is not what he said and that is not what he said. Why can't he understand that lying and then lying again and then trying to deny and rewrite history does not build trust.</comment>