Hacker News new | past | comments | ask | show | jobs | submit | shakkhar's favorites login

Cycling, along with swimming, are the two activities I give that exemplifies how poor people are at explaining what they are doing. For cycling, most people will adamantly claim that to turn left, you first turn the handle bars to the left. When they show me on a bike, they are surprised that they never noticed that they turn the handlebars right first. The funny part is, even people who know this and know it is called "countersteering" proceed to explain it in such a way that is actually less insightful than just telling someone to turn left. Almost no one mentions that the goal of a turn is to get the correct lean to a bike.

With swimming, I did 7 years of lessons and never enjoyed swimming. My legs always got fatigued in a couple of minutes and could not go as fast as others. It did not matter how many good swimmers or instructors I told this to. It was not until a fellow engineer at university told me that your arms are what propel you forward and your legs simply keep you afloat. Such a simple statement did more than all those years of lessons.

It is amusing to think about that, even with the best intentions, sometimes being taught something is the worst thing that can happen for you to actually learn it.


I did a deep dive on this a few weeks ago. If you're interested, the following is what I what I think were the most interesting studies. Sorry for my personal citation style. My conclusion is that there are differences, some of them not as big as claimed in popular media and for the majority we don't know their origin.

Buss. 1989. Sex differences in human mate preferences: Evolutionary hypotheses tested in 37 cultures

Feingold. 1994. Gender Differences in Personality: A Meta-Analysis

Grijalva et al. 2014. Gender Differences in Narcissism: A Meta-Analytic Review

Hall, Canterberry. 2011. Sexism and Assertive Courtship Strategies

Joseph, Newman. 2010. Emotional Intelligence: An Integrative Meta-Analysis and Cascading Model

Lukaszewski, Roney. 2010. Kind toward whom? Mate preferences for personality traits are target specific

Oliver, Hyde. 1993. Gender Differences in Sexuality: A Meta-analysis

Snyder et al. 2008. The dominance dilemma: Do women really prefer dominant mates?

Su, Rounds, Armstrong. 2009. Men and Things, Women and People

Wood, Eagly. 2002. A Cross-Cultural Analysis of the Behavior of Women and Men: Implications for the Origins of Sex Differences


Going beyond anecdote to data shows the US transit ridership is down, but I don't think this is based on the reality of transmission possibilities.

When people get scared, they retreat from that which culture tells them to fear, which includes transit for the US. However, when you look at other places that use lots of transit, like Japan and Korea, we don't see much spread on transit. So the fear is not so much reality based. In plain contrast, churches are shown to have had many super-spread events, including in South Korea, yet people seemingly can't wait to get back to church, perhaps because it is a place that they view as intrinsically safe even though the evidence shows otherwise.

In short, humans are really bad at evaluating risk, especially in our current media environment which is has a very low Signal to noise ratio.


Not everyone has:

- long commutes

- crappy coworkers or offices

- a space large enough to comfortably work remotely (or the money to afford a bigger space)

- a partner, kids, or both, which makes extended social isolation more livable

- a rich network for career growth and opportunities

God forbid some people want to live in big cities and don't make their choices solely based on reducing costs and bottom line expenses (ironic since every other day people here rail against big corporation bean counters). Example: Facebook's latest internal polling - the majority of people want to be in the office sometimes.

People suddenly waking up and realizing the office is a huge scam is the current du jour opinion here. But time and time again the HN demographic only speaks to itself.

And of course people will reply with that it expands choice, but that doesn't stop those from cheering that companies going full remote like its a universal good thing for everyone.

And on top of that, my observations are anecdotal. No need to point that out.

edit: Going full remote is a huge cost savings to companies. A cost that is now hoisted onto employees. So unless employees are receiving some equivalent compensation for blowing out my utility bills and refitting my office, be careful who you're cheering with.


Basically Java, .NET and C++, with heavy focus on C++.

Being able to write allocation free algorithms, even on GC languages, lock free data structures and good knowledge of all multi-core programming paradigms and distributed computing.

Here are some talks that will give you a small overview into that world,

CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”

https://www.youtube.com/watch?v=NH1Tta7purM

Core C++ 2019 :: Nimrod Sapir :: High Frequency Trading and Ultra Low Latency development techniques

https://www.youtube.com/watch?v=_0aU8S-hFQI

Open source Java HFT code from Chronicle Software, https://github.com/OpenHFT

"Writing and Testing High-Frequency Trading Engines", from Cliff Click

https://www.youtube.com/watch?v=iINk7x44MmM

However in these domains every ms counts, even how long cables are, so also expect Verilog, VHDL, and plenty of custom made algorithms running directly on hardware.

"A Low-Latency Library in FPGA Hardware for High-Frequency Trading"

https://www.youtube.com/watch?v=nXFcM1pGOIE

You can get an overview of the typical expectations here, https://www.efinancialcareers.com/


Check out the SBIR program. It provides an easy way to get into the system and innovate.

I’ve spent most of my career specifically dealing with HPC I/O from a systems and applications perspective. I worked in academia for a while, then in the DOE (almost indistinguishable from academia except worse bureaucracy; shocking, I know), and finally in private industry.

I don’t think I’ve ever read a more spot-on description of the problem. Once I left the DOE, I realized that the problem was far more acute than I had thought. At least on the real big systems, most of our work was with a small number of research groups basically doing the same workflow: start your job, read in some data, crunch, every 15 minutes or something slam the entire contents of system memory (100s of TB) out to spinning disk, crunch, slam, your job gets killed when your time slice expires, get scheduled again, load up the last checkpoint, rinse, repeat. Because of the sheer amount of data, it’s an interesting problem, but you could generally work with the researchers to impose good I/O behavior that gets around the POSIX constraints peculiarities of the particular filesystems. You want 100,000,000 cpu hours on a $200M computer? You can do the work to make the filesystem writes easier on the system.

Coming into private industry was a real eye-opener. You’re in-house staff and you don’t get to say who can use the computer. People use the filesystems for IPC, store 100M files of 200B each, read() and write() terabytes of data 1B at a time, you name it. If I had $100 for every job in which I saw 10,000 cores running a stat() in a while loop waiting for some data to get written to it by one process that had long since died, I’d be retired on a beach somewhere.

The problem with POSIX I/O is that it’s so, so easy and it almost always works when you expect it to. GPFS (what I’m most familiar with) is amazing at enforcing the consistency. I’ve seen parallel filesystems and disk break in every imaginable way and in a lot of ways that aren’t, but I’ve never seen GPFS present data inconsistently across time where some write call was finished and it’s data didn’t show up to a read() started after the write got its lock or a situation where some process opened a file after the unlink was acknowledged. For a developer who hasn’t ever worked with parallel computing and whose boss just wants them to make it work, the filesystems is an amazing tool. I honestly can’t blame a developer who makes it work for 1000 cores and then gets upset with me when it blows up at 1500. I get grouchy with them, but I don’t blame them. (There’s a difference!)

But as the filesystems get bigger, the amount of work the filesystems have to do to maintain that consistency isn’t scaling. The amount of lock traffic flying back and forth between all the nodes is a lot of complexity to keep up with, and if you have the tiniest issue with your network even on some edge somewhere, you’re going to have a really unpleasant day.

One of the things that GCE and AWS have done so well is to just abandon the concept of the shared POSIX filesystem, and produce good tooling to help people deal with the IPC and workflow data processing without it. It’s a hell of a lot of work to go from an on-site HPC environment to GCE though. There’s a ton of money to be made for someone who can make that transition easier and cheaper (if you’ve got it figured out, you know, call me. I want to on it!), but people have sunk so much money into their parallel filesystems and disk that it’s a tough ask for the C-suite. Hypothetically speaking, someone I know really well who’s a lot like me was recently leading a project to do exactly this that got shut down basically because they couldn’t prove it would be cheaper in 3 years.


(1) Start a freelance practice.

(2) Raise your rates.

(3) As you work for clients, keep a sharp eye for opportunities to build "specialty practices". If you get to work on a project involving Mongodb, spend some extra time and effort to get Mongodb under your belt. If you get a project for a law firm, spend some extra time thinking about how to develop applications that deal with contracts or boilerplates or PDF generation or document management.

(4) Raise your rates.

(5) Start refusing hourly-rate projects. Your new minimum billable increment is a day.

(6) Take end-to-end responsibility for the business objectives of whatever you build. This sounds fuzzy, like, "be able to talk in a board room", but it isn't! It's mechanically simple and you can do it immediately: Stop counting hours and days. Stop pushing back when your client changes scope. Your remedy for clients who abuse your flexibility with regards to scope is "stop working with that client". Some of your best clients will be abusive and you won't have that remedy. Oh well! Note: you are now a consultant.

(7) Hire one person at a reasonable salary. You are now responsible for their payroll and benefits. If you don't book enough work to pay both your take-home and their salary, you don't eat. In return: they don't get an automatic percentage of all the revenue of the company, nor does their salary automatically scale with your bill rate.

(8) You are now "senior" or "principal". Raise your rates.

(9) Generalize out from your specialties: Mongodb -> NoSQL -> highly scalable backends. Document management -> secure contract management.

(10) Raise your rates.

(11) You are now a top-tier consulting group compared to most of the market. Market yourself as such. Also: your rates are too low by probably about 40-60%.

Try to get it through your head: people who can simultaneously (a) crank out code (or arrange to have code cranked out) and (b) take responsibility for the business outcome of the problems that code is supposed to solve --- people who can speak both tech and biz --- are exceptionally rare. They shouldn't be; the language of business is mostly just elementary customer service, of the kind taught to entry level clerks at Nordstrom's. But they are, so if you can do that, raise your rates.


This is very strange, as I highly doubt they're crawling the entire DHT space, and even if they did they would be getting only infohashes. These are hashes of (a subset of) the torent metadata (including the chunk hashes), so it won't actually tell you what the content is, unless you also download the torrent metadata from peers using BEP-0009.

I'd bet they're pulling popular torrent files from big sites and then pulling peer lists from the DHT. This will work OK for 'hot' content, but they could probably get much better lists if they actually connected to swarms and did peer exchange (PEX) which clients effectively have no control over - it's up to their peers if they are going to reveal addresses through PEX.

Also note that of course none of this will work for private torrents (which almost all clients respect) as they disable all methods of peer/metadata acquisition other than from the trackers directly.


Distribute.com | Senior Software Engineer | San Francisco | ONSITE | SALARY $140k-$300k

We connect manufacturers and retailers through our B2B e-commerce + logistics + analytics platform, where they can make discover new products and make very large transactions with convenience inspired by consumer e-commerce sites.

If you're looking for a company that will invest time in your development, support your professional growth, and listen to your ideas, you may have found your dream job.

On the back end, we're looking for highly capable Python engineers. We use Flask with Flask-Restful and SqlAlchemy, but if you used Django or some other framework and are great, we'd still like to hear from you.

On the front end, we use Angular 1.x with TypeScript. If you're experienced with Angular 1.x, that's ideal. If you're great but your experience is in React, we'd still like to hear from you.

If you have the level of talent we need, we have the salary to match.

Contact d@distribute.com.


For EU mainly, US had some alternatives like these, but they seemed to be shut down due to legal issues.

A place where I, or anyone trying to contact me, can send snail mail to. These then get scanned and forwarded to mail mailbox and/or dropbox and/or stored online with an OCR PDF.

This would allow me to a) send my bills, invoices there b) able to move house more easily without having to keep track of address changes.


I don't know the situation in Mexico at all so please take my humble opinion with a pinch of salt. About 3 years ago I was asked a similar question so I wrote a blog post about it:

https://bjoernkw.com/2013/04/28/starting-a-software-consulti...

I think most of that still applies - no matter if you're in Mexico or the EU (as in my case).

From my additional 3 years of experience since then I can't emphasise enough that networking is absolutely key! Talk to a lot of potential customers and peers (fellow developers, particularly those who already run their own consulting business). Go to meetups and industry events. Follow up with potential clients on a regular basis.

You might want to work with recruiters as well if you have to but having direct client connections in my opinion is the only long term way to run a sustainable consulting business.

I'd advise against using freelancing sites for the reasons you mentioned. It's usually a race to the bottom in terms of pricing because you're literally competing with the whole world.


I have intimate personal experience with the FCRA. Sadly I don't have an hour to talk about it at the moment, but ping me any time. Short version: it's one of the most absurdly customer-friendly pieces of legislation in the US, assuming you know how to work it. There exist Internet communities where they basically do nothing but assist each other with using the FCRA to get legitimate debts removed from their credit report, which, when combined with the Fair Debt Collection Practices Act, means you can essentially unilaterally absolve yourself of many debts if the party currently owning it is not on the ball for compliance.

The brief version, with the exact search queries you'll want bracketed: you send a [debt validation letter] under the FCRA to the CRAs. This starts a 30 day clock, during which time they have to get to the reporter and receive evidence from the reporter that you actually own the debt. If that clock expires, the CRAs must remove that tradeline from your report and never reinstate it. Roughly simultaneously with that letter, you send the collection agency a [FDCPA dispute letter], and allege specifically that you have "No recollection of the particulars of the debt" (this stops short of saying "It isn't mine"), request documentation of it, and -- this is the magic part -- remind them that the FDCPA means they have to stop collection activities until they've produced docs for you. Collection activities include responding to inquiries from the CRAs. If the CRA comes back to you with a "We validated the debt with the reporter." prior to you hearing from the reporter directly, you've got documentary evidence of a per-se violation of the FDCPA, which you can use to get the debt discharged and statutory damages (if you sue) or just threaten to do that in return for the reporter agreeing to tell the CRA to delete the tradeline.

No response from the CRA? You watch your mail box like a hawk for the next 30 days. Odds are, you'll get nothing back from the reporter in that timeframe, because most debt collection agencies are poorly organized and can't find the original documentation for the debt in their files quickly enough. Many simply won't have original documentation -- they just have a CSV file from the original lender listing people and amounts.

If you get nothing back from the reporter in 30 days, game over, you win. The CRA is now legally required to delete the tradeline and never put it back. Sometimes you have to send a few pieces of mail to get this to stick. You will probably follow-up on this with a second letter to the reporter, asserting the FDCPA right to not receive any communication from them which is inconvenient, and you'll tell them that all communication is inconvenient. (This letter is sometimes referred to as a [FOAD letter], for eff-off-and-die.) The reporter's only possible choices at that point are to abandon collection attempts entirely or sue you. If they sue you prior to sending validation, that was a very bad move, because that is a per-se FDCPA violation and means your debt will be voided. (That assumes you owe it in the first place. Lots of the people doing these mechanics actually did owe the debt at one point, but are betting that it can't be conveniently demonstrated that they owe the debt.)

If the reporter sends a letter: "Uh, we have you in a CSV file." you wait patiently until day 31 then say "You've failed to produce documentary evidence of this debt under the FDCPA. Accordingly, you're barred from attempting to collect on it. If you dispute that this is how the FDCPA works, meet me in any court of competent jurisdiction because I have the certified mail return receipt from the letter I sent you and every judge in the United States can count to 30." and then you file that with the CRA alleging "This debt on my credit report is invalid." The CRA will get in touch with the debt collection company, have their attempt timeout, and nuke the trade line. You now still technically speaking owe money but you owe it to someone who can't collect on the debt, (licitly [+]) sell it, or report it against your credit.

I just outlined the semi-abusive use of those two laws, but the perfectly legitimate use (for resolving situations like mine, where my credit report was alleging that I owed $X00,000 in debts dating to before I was born) is structurally similar. My dropbox still has 30 PDFs for letters I sent to the 3 CRAs, several banks, and a few debt collection companies disputing the information on my report and taking polite professional notice that there was an easy way out of this predicament for them but that if they weren't willing to play ball on that I was well aware of the mechanics of the hard way.

[+] Owing more to disorganization and incompetence than malice, many debt collection companies will in fact sell debts which they're not longer legally entitled to. This happened to me twice. I sent out two "intent to sue" letters and they fixed the problem within a week.

[Edit: I last did this in 2006 and my recollection on some of the steps I took was faulty, so I've corrected them above and made it a little more flow-charty.]


So I'll give my general experience. I'm a RoR developer making 450k a year. It took about 3 years of non stop pushing myself (80/hr a week or more) to get here. I'm fairly unknown as a developer, so I'm not one of the bigger names. I work for a consulting company like Accenture or IBM global services. How I got here:

Basically I was a Java dev and pretty much knew RoR would be big, and knew there were guys making 100k+ at it (this was 2008). At the time I was making 75k as a Java guy and I just wanted to see if I could become one of the best. So i worked at it night and weekends, virtually non-stop till I got a Ruby position for 85k. That let me spent all my time on Ruby which was helpful. I tried for find every little scrap of info that would help, and overtime I got better.

I got a job for 130k 6 months later and my mind was blown. It was so much money to me it was just unreal. I didn't take it for granted though, I went in and worked my butt off to try and tackle every big problem there was and tried to pre-emt and issues that I saw, so I had a solution as soon as the problem came up. That went on for about a year.

All this time the main thing is that I kept working on all my skills, everything big and complex I could get my hands on that is. So I knew how to troubleshoot any performance issue that came up, etc. I also relentless kept it touch with recruiters. I know a lot of people on HN and Reddit aren't too fond of them but I love them.

I did whatever I could to help them out when they were looking for people, and made good connections because of that. When they emailed me I would just quote a ridiculous rate like $200/hr and be polite about it.

Eventually I formed a contact with a large consulting company and they said they could offer me something good but not what I wanted. I did the interview and go the highest tech score in the country (a lot of that due to the fact that there were slim pickings). They made the offer but I turned them down. They said okay.

A few months later they got desperate and gave me the rate I wanted. I was more than blown away, it didn't seem real at all.

I went to the client location and yeah, it wasn't glorious work but the pay was insane, so I've kept at it. I live pretty frugally, more or less just stocking the money away so when the gravy train ends I won't have to work as much.

What do I attribute it to?

1) Work insanely hard. 40 hour work weeks are good and healthy, but I think it's harder to become super successful without working a lot. As an employee when I was getting paid that 130k I worked 65/hr a week even though I was only getting paid for about 45 of those hours, just because I wanted them to know I was insanely aggressive.

2) Find people's problems and solve them. I always tried to befriend high level people and solve their problems to the point that they see me as invaluable. When I got the 450k job I made friends with all the project directors, found out their problems (like performance) and would fix it and surprise them with it. This helped me to cement my place at the company to the point that I was able to have a lot of control and influence within it.

3) Be nice to people even when they are mean. I get insulted by the client company often. Their developers tell me I'm an idiot. That's sort of the nature of being a consultant. The big thing is that I'm always polite even if I don't think it's warranted. So I'll say "Hmm, interesting, why do you say that". And then politely explain why they are wrong and then make them not feel too bad about it by saying "Actually it's easy to be confused over those things because of..."

That is probably more of a book report than is needed but that's about it. The one thing I will say is that the money, while very good and nice to have, wasn't the end all be all that I thought it would be. I figured I'd easily meet the right woman with all the money I have, but I haven't, in fact the women I have mentioned it to on dates didn't even care (or believe me, or both). I don't really get treated any differently either, other than by the developers who know that I know what I'm doing. I also realized that I don't care about material things all that much. The most fun I get is out of achieving new things, rather than things the money can buy.

In the end I'd say the success was a result of hard work, a lot of luck and aggressively marketing myself.


Personally I think this idea of a terrible codebase that still presents a wonderful user experience is an urban legend. In 20 years I have never seen it. I've seen plenty of terrible codebases that limp along, with the staff constantly fielding bug reports from unhappy users. But never one with happy users that just happens to be ugly under the covers.

I interviewed at Amazon and got an offer recently, but I have to admit, it did kind of sound like this kind of job. I really liked the offer stage, where I asked for 4 weeks vacation (what I have now) instead of their standard 2 weeks. "That's not negotiable! It wouldn't be fair if you got better benefits just because you're better at negotiating than others on your team!"

True. Offer rejected.


This is when most people realize that the U.S. is a third-world country.

If not that, it's when they go to the doctor in France and ask about billing and get a funny stare.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: