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

Something I've recently realised after having listened to Kevlin Henney talk about software engineering is how much of the existing knowledge we ignore. The early software engineers in the '60s and '70s were discovering pattern after pattern of useful design activities to make software more reliable and modular. Some of this work is really rigorous and well-reasoned.

This is knowledge most engineers I've met completely ignore in favour of the superstitions, personal opinions, and catchy slogans that came out of the '90s and '00s. It's common to dismiss the early software engineering approaches with "waterfall does not work" – as if the people in the '60s didn't already know that?! Rest assured, the published software engineers of the '60s were as strong proponents of agile as anyone is today.

Read this early stuff.

Read the reports on the NATO software engineering conferences.

Read the papers by David Parnas on software modularity and designing for extension and contraction.

Read more written by Ward Cunningham, Alan Perlis, Edsger Dijkstra, Douglas McIlroy, Brian Randell, Peter Naur.

To some extent, we already know how to write software well. There's just nobody teaching this knowledge – you have to seek it yourself.

Maybe people are just sick of being told they have to put the economy above all else. Can't have single payer healthcare because economy, can't have more days off because economy, can't have a higher minimum wage because economy, etc.

Ask me to take a risk because it is good for the economy and I'll tell you to fuck off. Ask me to take a risk to help reform violent police forces that oppress minorities and I'm more willing to do it.

In some typed/compiled languages, a substantial benefit of using enums is that it provides some way to automatically determine if you've handled every eventuality. That's super not a part of normal Python as you've mentioned.

The second part of crimsonalucard1's post was referring to somehow hacking in that type of functionality into Python.

I think you could somehow do that with nested context managers - something like:

  with EnumChecker(e) as checker:
    with checker(enum_type.A):
      # do thing
    with checker(enum_type.B):
      # do thing
Where `e` is an instance of `enum_type`, and the inner context managers acting as if/case statements, then you could on any single execution of the code block (so you only need a single test case) ensure that you covered all states.

> whose jobs regularly confront them with mortal danger and the darkest parts of human nature

Police officers in the US face 12.9 fatalities per 100,000 workers. In comparison, construction workers see 14.3, agricultural workers see 17.7, farmers and ranchers around 24 and truck drivers 26.9.

As for the rest of your argument, if the 'fine' police officers don't do anything to stand up to the bad police officers or adhere to the blue wall of silence: Then they are not fine people.

Perennial reminder of a conversation early on in Facebook's life:

> Zuck: Yeah so if you ever need info about anyone at Harvard

> Zuck: Just ask.

> Zuck: I have over 4,000 emails, pictures, addresses, SNS

> [Redacted Friend's Name]: What? How'd you manage that one?

> Zuck: People just submitted it.

> Zuck: I don't know why.

> Zuck: They "trust me"

> Zuck: Dumb fucks.

"If you give the police unaccountable power to fight the criminals, the people who'd otherwise become criminals will join the police."

Trust is probably the greatest optimization humanity has ever had. Which is why I'm wary of the ongoing trend of removing the dependency on trust in all matters of life.

When taxis were first introduced, there were no regulations on them. There was no training for taxi drivers, there was no guarantee your driver wouldn't scam you, or that they were even experienced drivers. There was no need for them to have insurance, so if your dubious-trustworthiness driver got in a crash in their unmaintained car, with you in it, who cares if you got hurt?

After people had enough of the unregulated/bootleg taxi industry, government introduced regulations - insurance, training requirements, maintenance, which all drove up the cost of taxi service, of course. In a reputation-free unregulated market, corner-cutting is a great profit-optimization solution, but people generally don't want to bear the cost of systems that cheat them, or expose them to sky's-the-limit risk, so that plenty of drivers gambled with their customers' lives by not wasting time on silly things like repairs, insurance, a license. Unregulated taxi service harmed a lot of people. So there is a lot to consider about Uber being an unregulated equivalent, particularly as related to its profitability.

Uber doesn't profit because the preexisting taxi system was bloated with waste or laziness. Uber's business model works by providing consumers with amateur service, and driving down workers' compensation with particularly precarious contracts. They offload the cost of fleet maintenance and even fuel to their contractors. On top of it all, their funding goes not towards enhancing their quality standard of service, but towards sabotaging self-sustaining, "skin-in-the-game" established taxi services to lower their quality by having to cutting their prices, compared to Uber's predatory pricing. It's not about having a trillion dollar, Millenium Prize-worthy, NP-hard route optimization algorithm that cabbies could never comprehend. It's not about how a ~sharing economy~ shatters the paradigm by revealing new low-hanging fruit improvements to maximizing the flow of queued operations.

At a basic level, people give the same parameters to Uber they would for a cab: start location, end location, pickup time, and payment. Nowadays Uber drivers and taxi drivers alike both use the same GPS apps to plan routes on the fly. The automated aspect of Uber's taxi service is mostly the means through which the customer is interacted with -- app textbox UI elements versus phone message, billing to credit card via the internet vs a point-of-sale terminal, drivers turning down potential customers at their discretion via app or in-person.. -- and not so much "how the sausage is made" behind the scenes.

The secret to Uber's money? It's about spending as little as possible as it takes to make contractors pay out of pocket for the costliest parts of the business -- sustaining contractors and the resources required for driving others around -- while at the same time getting the contractors to provide the business's lifeblood and value themselves at a fraction of what it's worth. Presented as a "side-hustle", Uber pitches you the idea that you should accept low wages (and no benefits) for an exclusive chance to buy into a gamified battle royale, for scraps, in Uber's proprietary arena. Drivers are at the mercy of a stringently unforgiving rating system, where one single four star review takes twenty five star reviews to repair the damage done to their reputation. And if they do slip under four stars, they get suspended. Oh, and did I mention that all the while they bear the cost of upkeep, fuel, etc.?

Uber doesn't prioritize allocation of profits, ad infinitum, into more programmers; it would never make money that way! The programmers at Uber are no more responsible for the profit-creating decisions in the unregulated grey area it relies upon than the engineers who built the first factories were responsible for the decisions made by factory owners. "Child labor costs less" and "if you won't work 12 hour shifts someone else will" were both common justifications for ways corporations benefited from abject conditions to the detriment of society. Today still it is common for capitalists to publicly laud democracy as their most cherished ideal of managing the nation, while simultaneously enforcing policies that deny contributing workers from contributing to decisions about their contributions at all.

Offloading unavoidable costs as externalities paid for by someone else (specifically, Uber contractors) is the number one capitalist strategy for increasing profit, and really has nothing to do with Uber's technology or programmers at all - it's not like the programmers can create new technology that reduces further how much they pay their drivers without going below the operational costs for retaining their an employee-supplied fleet, or technology that can take more money from customers' hands than they pay for. At best, the centralized system they have interferes little with individual transactions, encourages carpooling, and updates driver availability in realtime (while collecting a lot of valuable consumer patterns, of course). At worst, it penalizes drivers for simple gestures such as giving a customer a couple of minutes to use the restroom, instructing the driver to move on to the next customer. Uber also used to do fake ride DoS attacks against Lyft, by requesting rides from remote locations before canceling them half-way there.

Uber is efficient in a way that BF Skinner and Eddie Bernays might approve of, but would to many others just look like not remembering the lessons of history. Uber is but an old scam with a new face. I can't see their existence continuing for more than, say, two years without serious revamping - afaik they aren't even profitable yet in the first place, they just live off borrowed money atm.

And ditto re: worker abuse for Wal-Mart and Amazon, and ditto re: anti-competitive salted earth policy tendencies towards smaller players. The engineering programmers don't even participate in the decisions to move around cost burdens in business strategies - the closest they get to calling the shots on spending, is when they're coding the revised implementation of whatever sleek new approach upper management wants ready to present at next year's shareholder's meeting. Better make 'em look good!

  [ninja-edit: eeeek! apologies for the W-o-T]

Here's a little mystery for HN. Have you seen the fictional BBC segment someone produced about an escalating conflict between Russia and NATO?


It made the rounds on HN a couple months ago: https://news.ycombinator.com/item?id=14101405

It's the only piece of fiction that has made me feel deathly ill in quite the same way Threads did.

The video is incredible. It's one of the best pieces of realistic fiction I've ever seen.

But how was it made? Who made it? And why? I counted at least 10 professional-quality actors with convincing, in-character costumes. See this timestamp: https://youtu.be/2VZ3LGfSMhA?t=1053

The uploader of the video is "Ben Marking", only 8k subscribers, and no online presence. They left a comment: http://i.imgur.com/MJVh31d.png Other than that, no one's taking credit.

So why make it? It's wonderful art, but is there anything more to it?

Whoever's behind this has also uploaded nine revisions since last year: https://www.youtube.com/channel/UCA9r2NNlWMitk1hhR7yj8SA/vid... including a Canadian and Australian version.

Thank you for saying this. Honestly, probably could have cut a total of four years of waste out of my life by just knowing the company was not a good fit for me.

I used to stay at a place and say "Ok, maybe its me, what can I do to put the most effort in, and maybe that will change how upper level toxic management trickles down and fundamentally changes how politics over rule technology and data based decisions, or hard workers over letting the old boys club stay comfortable"

I actually used to believe something I could do would change that or, if I worked hard enough or tip toed around management to make them feel comfortable about their culture and still find time to do the work I felt was important in my own time without offending people who felt comfortable consistently underperforming and had positions of superiority over me, that I would be recognized for my work, work ethic etc.

no, that's not the case. Leave and leave fast because while I was the one who eventually chose to leave those companies, those companies are never going to acknowledge how much you are worth, or that they don't deserve you. They care about self preservation and staying there no matter how well you perform is not going to help you get a better job elsewhere.

if it's short enough of a time then you don't even have to put it on your resume you worked there. A lesson I wish I knew fresh out of college.

of course, all of these things about me are true. There is something you can always do to improve yourself, or change your mindset to help yourself change how you approach frustrating situations to change how a team might respond to a solution or a challenge, and foster a more positive environment.

The biggest red flag? When you are constantly challenging yourself to grow and change to meet the needs of the company and find novel ways to contribute in your spare time, and basically having the "how can I rise to the challenge. How can I challenge myself? How can I grow?" mindset when management does not have a "how can we stay open minded and rise to meet the challenge" mindset. It's not just not a good fit for you, but it will be damaging to your career to be at odds with superiors who will feel threatened by this mentality and approach you have. It will be obvious to your peers this is the case, and it will make them look bad. When your authority is based on optics and politics, people like you are a threat to the company.

the other and only red flag you need is when the company doesnt see people as its most valuable asset, it sees large amounts of funding, and pretty buildings and initial investment as it's most valuable asset. Stay away.

and as a last note on this big red flag, again, all the things the companies I worked for did, was cool, fit my skills and interests, experience in school and previous jobs. If I tell you "hey I worked here developing cutting edge technology and heres some metrics of our stats in the market" people would say wow thats cool.

And it was cool, and it could have been cool, but people ruined it. It's really about the people, no matter what you are working on. If you don't have high quality people, then you can't have high quality products or services. Period.

This struck a chord with me.

Unlike the author, I think I still like computers, but only in their essence. I like programming, the detective game of debugging, learning new paradigms, getting lost in abstraction, the thrill of watching powerful automation doing it's thing.

But I don't like what computers and the internet have become. Without constant mindful adjustment, all my devices inevitably become attention grabbing pushers of just-so packaged bits of media. I don't let that happen, but that's clearly their essential inclination. Keeping this at bay feels like swatting away the tentacles of some persistent deep sea creature.

I feel everyone's attention span eroding. I feel people packaging themselves for social media, opening their self-image and self-worth to the masses. I see a flood of undifferentiated information, the spread of hysteria and belligerence, the retreat of quietude, humility, and grace.

This is all downside, but lately I'm losing the upside. While I still love the technology underneath it all, more and more I feel like I'm working in the service of something that's driving humanity collectively insane.

It would behoove everyone to learn the basics of the terms you are getting stock. I have been through it and know. It will take you a couple afternoons of casual reading to nail it down. But to save you some time let me give you a template for the type of stock option deal you want and you don't want.

Don’t want 1) 409A valuation price is already in the multiple dollar range. a. Why : You can’t afford to exercise do to tax burden 2) No acceleration – e.g. in the event of sale or IPO your unvested shares DON’T fully vest. a. Why: You should be rewarded for taking the risk position. Negotiate acceleration or what is known as ratcheting if you are a very early employee. 3) Stock buyback rights – The company has the right to buy back all your shares if you leave the company before a liquidity event a. Why: This is a prison sentence and a total gamble as you really own nothing until an event. 4) The company is past its 3nd round of funding. In all but rare cases your percentage ownership will be so low at this point it is not worth it.

WANT 1) 409A valuation price is in cents and the stock option plan has an early exercise option. a. Why: You can file an 83b election with the IRS and pre exercise all your stock for a few hundred dollars. Because the strike price is the same as the value you will owe 0 tax. In addition you start the clock on long term capital gains as soon as the stock does vest according to the vesting schedule. This is how all the big boys make their money. As they vest you actually own them and are free to leave the company at any time with what has vested. 2) Acceleration or ratcheting – In situations like the company gets bought, IPO or management wants you gone and you have unvested shares they must accelerate your vesting schedule. You own them and can go anywhere you want. 3) The company is in seed or series A and you own at least 0.5%+ of the company. a. The company’s founders do not want to take series C unless they absolutely have to. Ask them!

In short, you will only be rewarded by taking the risk of wasting your TIME in an early stage that has potential with a good founding team. And never forget the freaking 83b election!

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