skysight-inc/HackerNews huggingface dataset:
I don't think support for Putinism and Russian militarism could be called "leftwing" using any normal definition of that word.
Nice website,Like it!
But. JS was designed with this in mind, and has been tested for it for years. It's actually one of the greatest strengths of JS, but I imagine it was a lot of work (except, perhaps, maybe functional languages).
Yep. Propaganda echo.

Russia has nothing to offer to Ukraine today. Literally nothing.

> russian state television

Word "state" is redundant in context of today's Russia. Only oppositional TV station is Dozhd (aka TV Rain) - and it's Internet only.
>I would caution against following DRY too early

DRY should only be avoided if the refactored code ends up being much more complex than the duplicated code and it doesn't reduce the duplication all that much.

Pretty much every time I've seen DRY used to eliminate repetitions of three or more times it's been a good idea and 4 or more times it's been a no brainer.

>The question you should ask yourself in these situations is, how similar will these widgets be in 3 months time?

This is an awful approach. You won't be able to predict how similar they will be and you will likely create expensive to maintain architecture for projected scenarios which don't exist and neglect the architecture for scenarios that will.

I've seen many codebases littered with architectural changes that were put in place for presumptive future features and then never used. It happens way, way more often than those architectural changes actually being used.
GCM Has Been Rebranded to Firebase Cloud Messaging (FCM)
I don't believe either of that was in the article. Condemnation of one party does not imply support for the other.
You do realize that with your standard of never-say-anything you're calling pretty much 200 years of medical study on violation.
Actually, it sounds as if the art has declined sadly since Lawrence's day.
Here you go:

E = mgh

1000l tank = 1000kg

7m high roof (~2 stories)

E = 1000kg * 9.81ms^-2 * 7m

=~ 70 000j

1Wh = 3600j

So a 1000l tank on your two story high roof would be able to store ~19Wh

Not including mechanical losses

For comparison a single decent sized SLA battery will be able to store 1000 Wh
I was getting prepared to argue with you, but then I thought about it and realized you were right. I'm not prepared to give Google that much control over my house, especially when it's completely cloud-based.

However, I am totally willing to use cloud-based voice recognition software, because the machine learning clusters required don't fit in my house. Sure, you can run basic voice recognition software on a server or a laptop. But that only gets you maybe 80% accuracy if you're lucky. There is a huge difference between 80% and 98% accuracy, it's the difference between using something every day, and turning it off after a week of frustration. (I've been there myself, I tried building my own voice recognition system for home automation.)

But I think that's really the only packet that needs to leave my home network. I hate that my Philips Hue bulbs need an internet connection to work.
If it's not on LinkedIn, you might even consider this site as your own personal hobby html page. No one will find it, no one will read it. Such is life, make use of professional CV sites to find employment. Put in that one day of effort it takes to make it real good, then relax and watch the interview requests flow like spice.
If you have a specific use case, say, reading hacker news comments, then minimal feature phone browsers tend to be sufficient more often than not. The gap between "something that is important to me" and "everything that is important to me" can be huge.
What happened to "Don't be Evil"?
They also serve as a form of code documentation (defining expected behavior).

When doing TDD, often speed up development owing to the ability to get much quicker feedback on the code you just wrote.

Code without tests has a tendency to congeal owing to the massive uncertainty surrounding changing any particular part.
Then you're not receptive to any reasoning about future values, which seems sad.
What was the motivation to create a new repo with a different name rather than maintaining a fork of xhyve?
I got rate limited so here's my late reply:

Yes, I labelled that incorrectly and I was not talking about the OTR encryption tech - Google still lied though in terms that they kept a conversation record and replicated it live and time-delayed across channels.
I am glad you put automated tests as one of the first ones. To this date I find that many people - often mid level, and sometimes senior developers - are very uncomfortable with autmated tests. As a result they don't use this tool, and end up being less productive, and often write more complex than needed code - and of course code with more bugs that could have been avoided.

I'm no TDD or automation advocate - however I do see that this tool is essential to modern software development, and the only way to learn to use it, is by practice.

I would encourage every engineer who's covered the basics to go full-in on TDD with 100% test coverage for a few days or weeks. Not because it will make you more productive or less bugs (you will be less productive), but it will change your thinking of writing code (similar to how learning Lisp will have a massive impact on your thinking of structuring code). TDD + 100% coverage is an extreme, which is worth experiencing to take learnings from it.

Later down the road, when you've gotten into the habit of developing with no, or barely any automation, it will be much more difficult to learn to fit this tool into your coding routine.
There are many good points in the comments here. Thank you! I have added a link from the blog post to this discussion.
Energy Disaggregation: One power meter to rule them all
I would say more similar to the farmer and the viper. There's only one party that's getting the bad end of the deal.

https://en.m.wikipedia.org/wiki/The_Farmer_and_the_Viper
What I Fought For
Well, I admit to posting needlessy aggressive language while angry.

I find few things as infuriating as people who claim they care about privacy while actively taking measures to spread personal information out of the context it was intended for. This is potentially life-threatening stuff for some of the victims of this stunt.
But he's not happy with recompilation of Signal?
https://fdroid.eutopia.cz/

> Any other distribution channel we be treated as malware
> You can do a part-time PhD

That completely depends on the subject and on your expectations. A PhD is not very well-defined in terms of energy you have to invest, nor is it a good indication of intellectual capacity needed to complete it in a reasonable amount of time. PhD programs are just too different to say anything meaningful about these things. Also your supervisor plays an important role, which is usually another unknown variable.
I'm surprised he doesn't mention NoScript, Privacy Badger, etc. "Normal people" should be more concerned about about the highly detailed profiles that companies are building based on browsing habits. "Normal people" read about data breaches and embarrassing leaks that force politicians to resign. "Normal people" know nothing about the behind the scenes tracking that goes on when you google medical symptoms[0] or visit pages which have Facebook like buttons as footers[1].

Yes, this article is targeted at people who don't understand the problem of using their .gov email address to sign up for dodgy sites, but think about whether you'd rather have your bank statement made public or a large, visualizable data set representing most of your browsing history.

I would love to see more work done on privacy through noise/obfuscation, such as that started by Adnauseum[2] and TrackMeNot[3] - not necessarily publishing your credit card details online as suggest in another comment here, but in making random search queries and clicking on random ads when your device is idle. Most of us have sufficient processing power and bandwidth for the overhead not to be a problem. It's sad that it looks like both add-ons have failed to make a splash, and seem to have fallen out of active development (end of 2015 marks the last commits for both projects, which is too soon to pronounce them dead, but they definitely don't seem to be hives of activity).

[0] http://motherboard.vice.com/read/looking-up-symptoms-online-...

[1] http://www.allaboutcookies.org/cookies/cookie-profiling.html

[2] http://adnauseam.io/

[3] http://cs.nyu.edu/trackmenot/
Well, an example I have from work, where we have a certain very old and obscure process to build fixes for our application. It's somewhat a manual process. Somebody wrote a program to check if this manual process was done correctly. It prevents problems, but better would be to replace this manual process with an automated one, however that would mean to change the process somewhat to accommodate the automation (this is sometimes necessary since humans can deal with weird exceptions much better than machines).

Another example could be used linter or valgrind to prevent C-style bugs with pointers and allocation, instead of using a high-level enough language, such as Java, to avoid those in the first place.
MotoGP: Iannone signs 2-year contract with Suzuki
But my project managers and CEO have told me that by adapting this Agile methodology, we will get bigger things out of the door in less time. Heck, it even allows us to throw 20 people at a project and do it 10 times faster than the current 2 people working on it (who just keep complaining about not knowing what it's meant to do, and that it keeps changing - pffft).

(I liked the article - it just reminds me why I need to change - jobs)
The creation of stainless steel
You have this in qTox and uTox
Why is it sad? I live in the moment and I'm very happy. I'm not saying everyone should be like me though.
I like the idea of digital chaff: publishing huge amounts of completely erroneous information about yourself and everyone else means that no one knows what to believe anymore.

Shouldn't a service like this exist?
Definitely, worth checking out! Much stable and fast.
Even so, all successful large cities are left-leaning, no?
How accurate is the voice recognition? Even when restricted to a few command phrases, I struggle to see how this can be overly accurate when running on a Raspberry Pi. I've played with voice recognition in the past, and anything less than 98% accuracy is super frustrating after a week of usage. Siri is the most accurate voice recognition software I've used so far, and even Siri regularly fails to understand some words.
If you haven't already done so, listen to this talk by Rich Hickey (the creator of Clojure). This should clear it up for you.
https://www.infoq.com/presentations/Simple-Made-Easy
"Learn at least 3 very different programming languages. I’d suggest C, Lisp and Python. The chances are that you will not find a Lisp job but it surely will make you a better programmer."

(I understand these are suggestions and we are in the realm of personal opinions).

Even as a Systems/Embedded programmer it's hard for me not to consider HTML/Javascript a must-have, this day and age (not a nice-to-have).

Even in embedded/industrial systems nowadays it's perfectly normal to have a maintenance interface based on a lightweight web server.
Overtime pay threshold doubled
"I/O Live will resume soon"

It's been like that for a few hours now.
I am working on a software project where I am the only developer. I was an employee for 3 years, working with team 3 to 5. Then, everybody left and so did I. I continued to do some contract work for the company. I have stepped my toes in another company as a junior contractor (started writing Java, my professional employment revolved around PHP webshops), and left because I didn't fit in that well.

I couldn't get them to guide me when I needed it, instead, my PR's were rejected saying: "Don't see any value", or "This feature is incomplete and undocumented".
Also, when I did specify in my comments "Feedback appreciated", I felt that my work was nitpicked way more than of their own, which I saw as double standards. In the end, my self-esteem went down a lot, I couldn't keep working with them and left. I got back to my previous contract work where I experiment and continue working on the same project (PHP), working on an old legacy system that needs improvements. How do I keep learning and continue work as a sole developer?
One way is to learn from books, but I realize learning from smarter people has tremendous value.

At the same time I feel that maintaining a live legacy system can contribute to my experience improving the existing projects and provide value for the company (bugfixes, refactoring and improving stability).

I'd appreciate an opinion on that.
I'm not sure I got it right.

Is Google going to be scanning all my conversations to give me suggestions on what to say next? Really?

I understand the price of things like Gmail, where I get a robust email system in exchange of scanning my emails and mining my data. I got something very good from Google, they got my data. Not the best of the deals I ever made, but it has (had?) a strong appeal.

On the other hand I don't understand this Allo thing: There's no appeal in the smart assistant, it doesn't bring anything I want to have.
On the plus side, perhaps I can now expect LinkedIn contact requests from a better class of tech savvy scammer...
It looks like you can publish GPL apps in the App Store if you are the author. If you want to use someone's GPL lib in your app, then you might have a problem...
It's usually managers who buy the hype. They're the ones who need to be told to be sceptical.

Nice post, by the way.
This is so crazy, I like it. :) But if I had a cat, I would stroke it in old-fashion way.
Assertion is check for a certain condition. It can be static (type checking is the simplest example), or dynamic, to be executed at runtime (the simplest version is a null pointer check).

Assertions are more general than tests, they test an expected state of application, not if specific case of input gives specific output. On the other hand, you can probably test more things that you can assert. So both have their place.
OSS kiosks with WebConverger and incredible story on SaaS back end
That's fair. Here on HN, tptacek writes negatively about Nadim surprisingly often. I do think it's bullying, though you're right that it's more subtle than his behavior on Twitter.

dang is great. I just wish we had a bit less negativity.

--

Finally, a brief history for readers who dont know yet:

* Cryptocat v1 was a cat themed anonymous chat webapp with very broken homebrew encryption. It was basically Nadim's crypto learning project as far as I can tell when he was ~20 years old.

* Snowden allegedly used it at some point. Oops.

* Crypto experts reviewed it and found significant flaws. Tptacek wrote about how terrible it was, how JS crypto is Considered Harmful, how amateurs shouldn't write crypto because they could get someone killed, etc

* Cryptocat v2 a desktop chat app using Axolotl / Signal Protocol for e2e encryption. Nadim is a phd student now. It's a new and totally separate codebase.

tldr; there's no reason to assume that Cryptocat v2 sucks in the ways the original did. It may be totally sound.

(I have no involvement w the project and have not reviewed the code.)
TDD can be tedious at times, but if you do it, you quickly reap the benefits. It makes testing easier, it reassures you that you didn't break everything completely with a random change, and it keeps your API in check. And it makes more of the process reproducable.
What would this look like? Maybe a bot that went to dodgy sites, and signed up for accounts in your name, with random-but-valid data?

Maybe it would go into comment threads, Google the title, and post a blurb paragraph from a top result? Use karma and elastic search to machine learn which sites and topics to post?

It might even respond to questions with the specific random data for that site from when it signed up, to keep it consistent.
iirc all humans are animals.
Is there a term for non-human animals?
He isn't fine with anyone distributing unsigned or resigned Signal. What he says is more or less "my app, my signature".

The fdroid people could recompile, check that the binary matches the one Moxie signed, and distribute the one with Moxie's signature.
Chances are that you will need this but it's hard for me to recommend JavaScript as a starting point so it's actually a "must-have but a bit later" in my opinion.
Very important also: avoid webmasters that put lots of trackers on their websites - for a few bucks they are selling your identity and make you trackable, these guys have no morality and are thiefs. Some of them even go so far to fabricate postings about how to use the web "anon" and still put lots of trackers on their website to make you identifiable!

Also some of these webmasters allow discussion only via a centralized service that again wants to identify you - also that centralized service is great to track your activity. Even more: these centralized discussion services will censor your comment when you are using any kind of vpn or tor or a mailinator address - you can identify collaborateurs of the privacy-destroying industry very easy by this alone.

All these webmasters and centralized services are the real scum of the web and must be avoided.
> > The question you should ask yourself in these situations is,
> > how similar will these widgets be in 3 months time?
>
> This is an awful approach. You won't be able to predict how
> similar they will be and you will likely create expensive to
> maintain architecture for projected scenarios which don't
> exist and neglect the architecture for scenarios that will.

I'm not talking about writing code for features that don't exist. I'm talking about not doing extra work to generalise your code too early. DRY is generalisation. It is in a sense 'writing code for a projected scenario in which a feature is the same for all of its callees'.

Keeping things specialised towards a single purpose even if it is redundant in the short-term makes code easier to grok, test, and update.

Making a change across 5 redundant functions is not time consuming work and is not easy to mess up. However making a change to a singular function which needs differentiated behaviour for one of its callees is error-prone as (1) it might force an interface change and (2) there is a non-zero probability of a regression error on the other four callees.

I'm not attempting to predict the future. I'm attempting to talk from first principles about real cognitive and communicative costs.
Great article.

The only real omission I noticed is the lack of mention of advanced browser fingerprinting techniques that can be used against browsers, even if caches are emptied, 'porn modes' activated, VPNs opnened. As demonstrated here by the EFF's Panopticlick initiative. https://panopticlick.eff.org/

One of the most important points about the anonymity provied by the Tor project to remember is that the Tor Browser is painstakingly hand crafted to avoid many of these problems. In other discussions about TOR it is worryingly common to see other ways to route browser traffic through TOR, without mentions of the implications.

For those interested, here's a recent look into the Tor Browser system by one of the developers.

https://www.youtube.com/watch?v=Rq5Qbj2Aouo
> Suppose you personally don't think an article is very well written but don't want to deprive other people of the opportunity to read it;

jqm's post is not constructive. Even a less snarky "I found this article badly written" probably doesn't help other people decide whether or not to read it. You can flag it or not as you see fit, but there's no value in posting a comment like that.

> Posters on this site seem pretty mature and level headed so it's not like one person is going to start a riot.

Only constant enforcement keeps the site that way. http://lesswrong.com/lw/c1/wellkept_gardens_die_by_pacifism/
Just because you understand a machine doesn't mean it can't be dangerous. I could completely understand every aspect of a nuclear bomb, and I could still make a mistake and cause quite a bit of damage with a real one. Complex systems are notorious for having all sorts of unexpected problems, and mistakes happen all the time. How much complex software is entirely bug free?

The danger of AI is more than just a random bug though. It's that an intelligent AI is inherently not good. If you give it a goal, like to make as many paperclips as possible, it will do everything in it's power to convert the world to paperclips. If you give it the goal of self preservation, it try to destroy anything that has a 0.0001% chance of hurting it, and make as many redundant copies as possible. Etc.

Very, very few goals actually result in an AI that wants to do exactly what you want it to do. And if the AI is incredibly powerful, that will be a very bad outcome for humanity.
> C lost this battle a long time ago... The number of domains where one must use C is shrinking

I doubt that. Kernels, drivers, embedded devices (not IoT), GNU world, are all highly C oriented. Want to develop for a customer with unknown unix variant? Want to develop a tool everyone are going to use, either on Linux/BSD/Solaris? C is the only option.

> but it's much easier to write correct code in C++ and it will be just as fast

Writing correct and fast C++ code at the same time was never an option; even today, with "safe" pointers, people are still confused how to correctly use shared_ptr<>.

> now that we also have Go and Rust this will accelerate

Some places where C is still a strong contender:

* good tooling - debuggers, memory leak detectors, years of experience with compilers on various platforms

* well understood language - C has dark corners and they are documented well

* interfacing with everything else - from devices to libraries and languages
> "In restricted grammar mode"

> That's a key limitation, though.

Why would it be?
Sophisticated exchange of theorems and not essential for this scenario, is it?
I like how not even the text loads on that blog if you have JS disabled.
any idea which foundry google have used for the fabrication?
Same misuse happens with copyright. Both were invented to foster publishing and not creating life-long monopolies. The life times of copyright and patents must be way shorter as well. Everyone builds on something that came before. It's impossible to build a better bike if you have to test drive on a street with patent mines.

Re EDIT: Downvotes must be comment-mandatory or not allowed otherwise.
em... the only thing that is valid to support end-to-end encryption is the end client. Otherwise it's not end-to-end.