skysight-inc/HackerNews huggingface dataset:
Something that is helping me a lot recently is trying to know all there is to be known about the tools/concept that I am using and the problem that I am solving. Too often have I used tools I half understood to solve problem that I didn't define clearly enough.
That 6x is for when you have a JIT. Without one (I'm looking at you, CPython) it is 20-30x, with perhaps the exception of Lua.
You must explicitly ignore errors in Go.

result, _ := someFunc()
Per your typo point, this has already been solved by linting. If I made a typo like that, any decent editor (Sublime in my case) would draw a big red box and complain at me for using an undeclared variable. In the case of a typo on assignment as in your example, the linter would report a variable declaration without usages.

Per your testing point, so what? Doesn't everyone strive for 100% code coverage anyway? One of the big advantages of dynamic languages is that more functionality can be implemented in less code which in turn makes it easier to hit that 100% coverage.
Oracle may be "evil" in many people's eyes but at the end of the day they just want to sell some products and services. Same with Microsoft, same with Apple. Compare and contrast that with Google and Facebook who make their money off your private data.
But would they be able to handle Indian traffic?
Delusion at the Gastropub
ARA: The Modular Phone to Revolutionized Smartphone
New Boson Claim Faces Scrutiny
A couple random thoughts:
You've freelanced before, you're not happy with your current job, so consider getting back into that, at least on the side.

3 seniors quitting in a year does sound a bit like a red flag. Hopefully you're keeping in contact with them? Maybe you can find out why they left and where they went (and whether you can come along).

It's often unnecessarily large and undocumented. Sorry.

Consider running your ideas by some higher-ups before you spend your weekends on them. If they're not interested, maybe they could help you figure out things to work on that would get traction. This might be one of those trite old things where you make the person belivee it's their own good idea, but even then they'll at least know you were the one to implement it.

Things like code quality guidelines and interview processes involve some subjectivity- they're commendable things to want to improve but it may not be as simple as "boom, now it's better."

Not everyone loves talking about software for the sake of software. Maybe connect over biking or frisbee or movies or something. Also, "software" is a vast, vast space of topics. If someone doesn't happen to be in the right frame of mind when you bring up some otherwise-interesting topic, you probably will get blank stares. If you do want to chat about software, find a way to ask people about something you know they're working on.

I do hate the getting-things-done-in-meetings approach. You could try short-circuiting them with emails like "Here's problem X, here's my solution Y, please email me thoughts otherwise I'll go ahead and implemnt it." (YMMV)

In the end, though, it does sound like you're looking to leave. So, keep a list of your accomplishments (even if nobody there appreciates them), the responsibilites you have, positive feedback you've gotten, and things you've learned. Brush up your resume and look around. If you're financially stable, maybe just bail and go back to freelancing. Or, if you're feeling gutsy, maybe apply for a Sr role at your current place- that might be a way to gain some recognition.
You should hesitate to introduce fringe technologies into production systems while they remain fringe. But you should absolutely evaluate them, figure out which ones you want to keep an eye on, and learn ideas from them that you could apply elsewhere.
WebDriver Grid Tutorial – Setting Up Script Using RemoteWebDriver
Kudos to you doc, for mastering two disparate domains!
For me it has been incredibly useful for quickly testing some REST APIs.
This article should be called 'Mastering large-scale team programming'. In reality there is no single correct approach to programming. All programmers/engineers/developers have different specializations.

Some developers are really good at getting an MVP out the door quickly but their code may not quite work at scale. Others are good at working in large teams on large projects, others work better alone or in small teams. These different types will produce different types of code - the utility value of various programming habbits changes based on team size, project size and urgency requirements.

There could be some 'Master MVP programmers' and 'Master team-player programmers', 'Master large-project programmers'... You can rarely put them all under a single label - As developers we tend to get stuck with particular styles depending on which kinds of companies we have worked for.

It is not quite correct to assume that because a company is financially successful and handles many millions of users, that its methodologies are the only correct way to do things.

Programming is an adaptive skill and should change based on economic/scale requirements.
Just two things to add:

1) Often the "performance critical parts" are actually 60-80% of your code. This is the problem with the "don't optimize prematurely" philosophy. Think of it in advance instead. Do you need the highest possible performance? Are you sure? How fast should it be then? Per request? At setup? Per data point calculated? Choose your tools accordingly.

2) For numerical code I'd actually choose Modern Fortran over C. Much less to do until it's fast.
To add more of an explanation to your comment.

Yes, in those simple terms, it would be 1) simpler to coordinate multiple threads in the same process compared to multiple processes, and 2) more efficient too.

1 is true because any system you might use to communicate between processes would involve an IPC layer and with a single process, you could use an identical system with the IPC removed.

2 is true because multiple threads in the same process can communicate directly without requiring IPC (which requires data serialization, shared memory for performance, and more system calls). i.e, sharing data has much higher cost using IPC. You can skip some serialization if you use shared memory, but you still need to set that up and manage shared buffers. (Different applications might share data in different ways so that the IPC overhead becomes negligible, but non-IPC could always be implemented faster.)

But the benefit gained from using multiple processes for a web browser (that is essentially a VM for running untrusted JS/web code) is security in the face of bugs. It comes from how operating systems provide tried-and-tested process isolation. If sites from separate origins are rendered or parsed in their own process, some types of browser bugs are harder to exploit to gain access to data from other origins. And for bugs that just cause crashes without security implications, you can crash a single tab and let other tabs continue, let the main UI continue.

On its own, that is good, but not great.

The big benefit is that the big 3 operating systems that browser developers are concerned with provide some level of per-process sandboxing. For example, one can launch a process with a limited set of privileges such that the only thing that process is allowed to do is communicate via IPC and compute stuff. The operating system enforces this for you. Provided you have a strong IPC layer, a process with such limited privileges can do very little damage if it is compromised.

Developing a strong IPC layer is not extremely difficult as it essentially boils down to reading a stream of messages from an untrusted source and detecting invalid messages without compromising yourself.
So, how did that work out for them?
Great programmers often take a step back and ask themselves whether the problem they are encountering is only a symptom of a far larger problem, e.g. "maybe this entire component needs to be refactored instead of just tweaking these tests." or "maybe when customer asks for X what he actually wants is Y"
How to Upload to Instagram from PC
>The problem is if you are going to have a higher number of cops per capita, they need to catch someone to justify their existence. The only reason we have "War against drugs" because there aren't any other wars that politicians are fighting with. Almost all problems are solved (compared to say India).

Insightful comment.

I hope for a future where we focus on using government to govern ourselves in a way in which we reward people for doing bad things, and punish people for doing good things. Right now it seems to be a tool that is mostly focused to benefit those in power, at the expense of others. One cost of this is that the definition of what is unacceptably unjust is becoming increasingly inane. Our liberties are eroding.
How Microinteractions Are Shaping Up the Future of UX
The lazy initialization example is a classic algorithm. Usually concurrency hackers rediscover it from first principles. It's easy to maintain because the concurrency protocol it uses is easy to understand. Here's how I'd write it:

template<typename T, typename... Args>
void constructSingleton(Atomic<T*>& singletonRef, Args&&... args)
{
for (;;) {
T* oldValue = singletonRef.load();
if (oldValue)
return oldValue;
T* newValue = new T(std::forward<Args>(args)...);
if (singletonRef.compareExchangeWeak(nullptr, newValue))
return newValue;
delete newValue;
}
}

This works so long as the singletons are happy to be deleted. I'm assuming that's true here.
I couldn't upvote this enough. It's even a way of life that is larger than programming. Most of my math issues were about how I didn't really see the extent of a concept or the problem. When done suddenly things become extremely less resistant. Patience, depth, focus, lucidity.
My process in these languages (Haskell I know pretty well, now in the process of learning Rust) is to sprinkle in `undefined`s and `unimplemented!()`s and whatnot so I can continuously use the compiler to check my work without actually running the code.

It's a good way to test assumptions and refine a mental model, and it's also just plain useful for catching boneheaded mistakes as you go. I'm not sure if I'd say I use it as a crutch, but I certainly miss it when I have to use languages like ruby and Python.
It seems to me like you try to make your job better, and outshine on all areas, but you are not trying to do it in a corporate way.

Your bosses only care for 2 things, and those things are the only things that you can use to get their attention and implement change.

1) Does the change make more money
You have to show them, prove them that the change you try to implement will make more money down the hill. Will it attract more customers, will it make customers spend even more, how can you quantify this idea into money.

2) Does the change save money spent
If you can prove them that the change will save them money that they are currently losing, then you have to show them how. Show statistics, show numbers.

This is the only thing that works with almost any corporate company and almost every work occupation that I have seen, talked to with other people, and learned all the way.

You either make more money, or you save money, everything else noone cares about.

Especially as a developer, you might know that changing a codebase MIGHT be easier down the road, but unless it is quantifiable by numbers and money, noone cares.
Wittgenstein only really published two works: The Tractatus and Philosophical Investigations, in which he completely revises his approach. Read the latter.
>Hopefully something like a version of the technology described here, (or something else like this) will replace the voting technology we currently have

I doubt the layperson can understand how that technology works, and that is required for the voting to be democratic: Every voter has to be able to verify that there was no fraud. Not only mathematicians.

There are other countries without electronic voting, but also without the problems of US elections. But since these problems are not seen as bugs, but as features by those in power, I doubt things will change in the future. With or without technology.
Phishing Trends by Brands and Sectors
How Your Personal Reputation Is at Risk on Social Media Networks?
As someone said, it's time to move on but take it easy. Try to reduce your "extra working hours", at least try to get enough free time and make sure weekends "are weekends". You need time for you.

Now it's time to start thinking "what would you like to do next" and invest some time in a daily basis looking for companies and positions that you will feel motivated to apply. That research and process may take some time.

Ah, don't get into the "Engineer -> Senior Engineer -> Manager" thinking, titles are not important, what really matters is what you do and how much you enjoy it. If you enjoy what you do, you will succeed.
Where was the wasted time? Something about converting the data back and forth through the CFFI? Just convoluted data flow?
Create a 'plan B', another job that you have lined up or a launching customer for your freelance career. Then, ask your current employer to be promoted, pronto to the function of senior engineer with associated pay-raise, citing the first couple of paragraphs of what you wrote above.

If they bite, give them a chance. If not, execute 'plan B'.
This comment is patronizing and implies that liking Go makes someone a "junior varsity" programmer, or ignorant of alternative programming models. It doesn't. I'm well-versed in half a dozen other languages, many of which include generics. I like Go just fine. Yes, there are cases where it is not the best choice. That's fine, too.

How much Go have you written, out of curiosity?
> Often the "performance critical parts" are actually 60-80% of your code.

That has not been my experience at all. But I suppose it depends on what kind of programs you're writing.
Raytracing or raymarching. Not sure if there are any games that use it, but raymarching is often used in the demo scene, for example here: http://www.pouet.net/prod.php?which=67433
Yahoo Lines Up Bids for About 3,000 Patents
"all it would be" is a gigantic wealth of new functionality that requests/urllib3 does not have (compare libcurl and urllib3 features), along with greater support, developer base, test coverage, user base, and lower tco. httpie gains a wealth of advantages and cURL gets syntax highlighting. It's hard to overstate how advantageous to httpie it would be.
It sounds like the perfect place for you is to work for a funded/profitable startup that has less than 20 people working in it. Preferably smaller.

It's really the only way you get to wear all the hats and solve lots of different problems in lots of technology domains and IMHO the best way to become a true full stack developer.

I can't tell you exactly how to find those types jobs, but I can tell you I've managed to over spend half of my 25 year career working in those types of companies.

Well maybe I do have some hints. I guess in the early days I did a lot of networking and going to events and meetups and such.

Then within the past 10 years I have started blogging and podcasting which exponentially increased my luck surface area and as a result a lot more opportunities come my way.

Anyway, best of luck with it!
Kasparov's tribute https://www.chess.com/article/view/garry-kasparov-on-viktor-...
Unless you really care about the product (technically challenging or high impact on society), find a smaller company or even a startup to work with.

If you're in PDT or MDT timezone, interested in working remote for a startup (higher risk, below-market-value pay, great mission, small team, challenging work), feel free to contact me and we can see what happens.
I knew about the continuous flow, but hadn't considered that you wouldn't hear your own pulse as a result. My father in law has an LVAD, which has given him back a lot of freedom following a severe heart infection early last year which damaged his natural heart badly. He's now on the transplant list, so I'll point it out to him as a "hey, this could be weird" thing.

Do they mean that blood pressure is stable too, since you presumably wouldn't have a diastolic reading - no pressure reduction between beats, since there are no beats?
Except these things could be preventing such a transition:

* Moving expenses to $EXPENSIVE_TECH_CITY

* Student loan debt

* Credit card debt

* Car loan + auto insurance

* Severe pay cut

* No experience building CRUD apps

Or MSCCSN for short.
Cue the patent troll feeding frenzy and subsequent lawsuits.
He might be suggesting that you can consciously consider the problem different at levels of detail. You can step back and look at the problem in its wider context ("the big picture") and you can also zoom in and focus on aspects of the problem in more detail.
You name two reasons that always should result in you finding another job: A) You do the job one level up and don't get recognized. B) You can't connect to your colleagues.

Look for a company that is quite different from your current one (e.g. a major software company, another size, another location) and then try again. If you recognize that these two points are still the same you definitely need to change something about your style. But for now changing the company seems the most reasonable choice.
Yeah, that seems to be the sound of it.

> By Ellen Nakashima

Did she make a mistake when reporting? Seems like an editor should have caught the error in the headline.

Meanwhile, maybe it's an effort by this media outlet to downplay, and run interference in favor of government entities, so that people roll their eyes at the misinformation and simply presume the government as incompetant.
>>6 The gulf (UAE, Saudi, Qatar, etc) is the regional tech hub.

I would imagine Israel is the regional tech hub, even if there are few to no interactions with tech people in Gaza. Would it be more accurate to say the gulf is the regional tech hub for these programmers' day to day lives?
Oh god, I'm getting flashbacks.

Because you can't just test it on one document and see if it works; you have no guarantee that all the documents will be identical. And if the migration script crashes halfway through... oh man.
What don't you like about it?

Is there a better list somewhere?

Have some of the tips mentioned there brought you undone at some point and that's why you don't like it?
> Docker on FreeBSD utilizes the Linux compatibility layer. It was introduced in 2015. It is officially experimental.

Huh!? I remember running unmodified Linux binaries on FreeBSD (and other BSDs) in the late 90s. Maybe it was not suitable for most docker images and that started last year...
Thank you. I was thinking of scale as a measure of order of magnitude and then it didn't make sense.
Physical and Digital Security Guides for Journalists and Activists
You're not wrong. Uber operates where I live in Kaohsiung, Taiwan, and rides are dirt cheap. They cost $2-$3 when a taxi is $3-$5.

Both Uber and AirBNB have been ruled illegal in Taiwan. Uber continues to operate and pays the fines of drivers and passengers when they are caught. If a driver is caught 5 times, their license is permanently revoked [1]

I like the idea of ride sharing apps, and I can respect Uber's attempts to try some civil disobedience. I don't think this investment will pan out for them. Taiwan just elected a new government that is even more focused on Taiwan-centric businesses than the last government. Uber would need to generate a lot of public support to become an exception. I don't see that happening. I see VC money flowing in and staying here. And like Austin, a legal competitor will pop up eventually with services that satisfy the public enough that they forget about Uber.

I could be wrong. It seems to me Uber doesn't have much left up its sleeves. They seem primed to accept that there are many viable competitors.

[1] http://international.thenewslens.com/article/36548
RethinkDb does all of this better, and with good engineering and API design behind it.
I can confirm that notams apply much more broadly:the faa black and white would routinely visit my rc airfield during notams in Low Angeles.
Do you plan to blog about the experience? If so, where? :)
+1 for Paw!
Linked list has extremely fast prepend/insert/delete operations compared to an array!
>I doubt the layperson can understand how that technology works, and that is required for the voting to be democratic: Every voter has to be able to verify that there was no fraud. Not only mathematicians.

This is probably a good point, however this math is at most slightly more unusual than the math behind, e.g. https (which I guess 50 years ago public key cryptography wasn't even invented) and average people are starting to learn to trust that.
I think better idea would be four tall legs (like a table legs) so it can move around the field. It doesn't need to move fast. You also need something to detect its position (laser beacons? radio beacons?) and some place to hide from rain. And a hand with a camera for harvesting crops into a basket.
Why doesn't Uber take the initiative then and ask for a consensus on regulation? It seems clear that cities don't want to be bullied as much as Uber doesn't want to be bullied. The way to resolve disagreement isn't to retreat into respective corners, it's to talk it out.

By not talking to each other, the expectations of cities and businesses are going to become more fractured over time. Each city and company will independently come up with its own game plan.

This issue doesn't have a perfect solution. It has better ones, and worse ones. The lack of a standardized policy around ridesharing-apps is something I think we can all agree is worse. If Uber and the top 10 cities in the US can agree on some policies, then they'll all probably be in better shape. Uber gets to operate with some comfort, and city leaders can focus on other things.

Also, I read your blog post. I see you declined an invitation to attend a dinner with the mayor on the grounds that it was too secret. Why not just bring a reporter or tape recorder with you?

People need to build good relationships before coming up with contracts or legislation. Without that bond, one party can't be too sure of the other. The written word is not always a good substitute for someone's true intent. It's better to meet someone in person on neutral ground first. Should we put microphones on our politicians 24/7 and transcribe every conversation? I think that's a bit much to ask, and would probably result in us losing such freedom ourselves.

Alternatively, you can run or support a political campaign for a candidate in whom you believe. Eventually you may find he or she makes some decision with which you do not agree, and then you're back to finding someone else to support. That's a decades long alternative to simply coming to the table to work with imperfect people, particularly when you note that the result is still imperfect people. As Bill Clinton points out, we are over 99% the same [1].

[1] https://www.youtube.com/watch?v=qiNjU8DwJMo
Many of these points are simply wrong, or confused.
To translate the false-positive rate into concrete numbers:

According to the American Cancer Society (http://www.cancer.org/cancer/pancreaticcancer/detailedguide/...), about 53,070 people will be diagnosed with pancreatic cancer this year. The abstract says this method detects 5% to 15% of cases: that's about 2,700 to 8,000 correct detections. Assuming there are 100 million people using Bing (https://www.quantcast.com/bing.com), between 1,000 and 10,000 cases will be wrongly detected (0.00001 to 0.0001 false positive rate).
So, pancreatic cancer incidence rates are about 10 in 10 000, and they detect ~10% of that.

Meanwhile, their false positive rate is as high as 1 in 10 000. Can anyone weigh in on whether that's per user in total?

If so, half their warnings are right, half are wrong. Which is not bad at all, but it is quite important for the wording of your warning.