HNHacker News
TopNewBestAskShowJobs

skyzyx

93 karma · joined February 25, 2011

[ my public key: https://keybase.io/skyzyx; my proof: https://keybase.io/skyzyx/sigs/PRD3BCqkvHryUgieQgNqg1rMuaw4eaVkUQ9pZcn81OI ]

Engineering manager with 20+ years in Software/DevOps/Security. Created SimplePie and AWS SDK for PHP. Patented MFA-as-a-service. The godfather of Serverless. Ambivert. Curious. Not a coffee drinker.

submissionscomments
skyzyx··on Ask HN: How are you dealing with the M1/ARM migration?
Software is constantly evolving, so any worldview based on “if it ain’t broke, don’t fix it” is absent of reality when it comes to software.

My philosophy on most things is: if nobody else has done it, I’ll go first. I started compiling and bundling my Go applications as multi-platform universal binaries for macOS.

Last week, I spent a few hours learning how to build multi-architecture Docker images, and push them into Artifactory. That knowledge came in handy yesterday when one of the developers on another team got a new M1 Mac and could no longer build his Docker images.

Over winter break, I started putting together a build matrix for compiling RPMs, DEBs, and Alpine APKs for some software that some developers were building as part of their CI pipeline. We’ve been curious about the ARM-based EC2 Graviton instances for a while, and I only had to update a handful of lines of code to begin building arm64 versions of those same packages.

In short, necessity is the mother of invention. I enjoy inventing things. If nobody else has started adding support for arm64 to your internal pipelines, then you should go first.

skyzyx··on Court upholds $573k penalty against CA homeowner who fixed cars in backyard
Never, ever, ever, ever, ever act as your own attorney.
skyzyx··on Apple Music is the most buggy and annoying software I use
100%.

I have filed so many radars against Music.app and they’ve never been fixed over the years. IMO, It’s gotten significantly worse since iTunes got broken apart in Catalina.

skyzyx··on Coinbase is rescinding already-accepted job offers
When I interviewed at Coinbase 6 years ago, the interviewers felt egotistical and borderline incompetent. After I’d interviewed, they decided to change the open req to a different role.

By “egotistical”, I mean that the interviewer clearly believed he knew more than he actually did. It was that “I’m hot shit” vibe. I have worked across several roles in this industry over the last 20 years, and there was clearly inexperience on the other end of the phone.

That told me everything I needed to know about the company, and I was happy to move on from that experience.

skyzyx··on How Rainy Is Seattle? It's Not Even in the Top of Major U.S. Cities (2019)
Seattle gets a beautiful 5 non-contiguous weeks of summer. The rest of the time is rainy or overcast.

Source: I lived there for 8.5 years in the 2010s.

skyzyx··on How to make Docker images even smaller
Good advice, except for the hipster `&& \` stuff. Use the `—squash` flag instead.
skyzyx··on Terraform-AWS-modules/Terraform-AWS-eks transitions to non-free license
Similarly: https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-pack...
skyzyx··on Terraform-AWS-modules/Terraform-AWS-eks transitions to non-free license
It’s literally a pre-defined legal document. It’s definitely set in stone enough to warrant filing lawsuits and taking people to court over.
skyzyx··on Terraform-AWS-modules/Terraform-AWS-eks transitions to non-free license
It is astonishing to me how poor our literacy of software licenses is as a community. Also, reading the comments here, there are two wholly independent things happening that most people are conflating as the same thing.

Software licenses are LEGAL DOCUMENTS. If you are not a lawyer, who has a specialty in this specific area of law, don’t go fucking with them.

1. Fuck Russia. This is the only right answer to the question.

Entirely separately is #2.

2. If you change the terms of a license, it’s a different license. The changed license was not the Apache 2.0 license, and was additionally a breaking change in every sense of the phrase.

I appreciate that @antonbabenko recognized this and fixed it, but these two issues are entirely separate. What Russia is doing is terrible. That is an absolute fact. But the new Terraform variables that were added in that commit have absolutely nothing to do with making the software work in the way that it was intended to, therefore, they do not belong.

This has nothing to do with being anti-politics. I’m very heavily political, and I fully support Ukraine in this case. I also have strong opinions on both “free software“ and also “open source software“, and I apply them at the license level by selecting a pre-existing license without making custom modifications to it.

But things like `var.putin_khuylo` simply don’t belong in the software itself. Nor does it belong in an OSI-approved software license.

skyzyx··on Goddamn AWS seems to be down again 4th time this month alone
Pro-Tip: Get the hell out of US-East-1.
skyzyx··on Ask HN: Been writing code for 40 years and can't get hired
I was at AWS for 4 years and spent A LOT of time interviewing. We couldn’t find and interview qualified candidates fast enough. Lots of engineers doing the interviewing; few charlatans.

At AWS, however, it’s important to look at the well-roundedness of the candidate. It doesn’t matter how much code you’ve delivered if you’re an asshole in meetings.

Being a self-starter, earning the trust of your peers, and being highly-focused on customer experience are all soft skills, but are critical to ensuring success in the role. Hiring the wrong person is costly, and even then, many people at AWS wash-out in the first 2 years.

Soft skills and collaborative working habits are MORE important than writing code. Code can be taught. Being collaborative and thinking-like-an-owner is much harder to teach.

skyzyx··on Tools to Download Netflix / Disney / Apple TV Content
I co-founded a company in 2006 which intended to do something very similar to this. We ran out of money when the economy collapsed in 2008. I’m still passionate about the idea, but it’s high-risk for a private corporation in the US to pull off.
skyzyx··on Ask HN: How does my Instagram keep getting compromised?
This happened to me several years ago. My account got locked out and I had no way to contact a human to get it back.
skyzyx··on Don’t submit to conformity
In any group of people, some problems are social problems.

If the leader of the group makes a decision, it is your responsibility to conform whether you agreed with it or not.

And if YOU are a leader, social cohesion is important. “A leader without followers is merely taking a walk.”

Yes, facts are important. But they’re not enough on their own.

skyzyx··on Asking developers to do QA is broken – why anyone should own QA
I agree with the premises, but not necessarily the conclusion. Any team with an attitude of “that’s not my job” is fundamentally broken.

The team is responsible for product, development, quality, ops, CI, etc. But you have to adjust your definition of “team”.

I very much agree with Google’s SRE model, and implementing it has worked well for us. The dev team is not an island unto itself, but rather a piece of a larger whole. SREs, Quality, Ops, and others are also true software engineers, and we tear down the silos between teams by working across our imaginary lines. Because we all rise and fall together.

QA isn’t responsible for writing all of the tests, but they work to build a platform that makes it easier for anyone to write and run tests. Ops isn’t responsible for managing all of the infrastructure, but they work to build a platform that makes it easier for anyone to deploy services quickly and with great success. Security doesn’t stand in the corner telling what to do, but they work together to build tools and systems that can help an app team discover and remediate security issues.

The solution is not no-code anything. The solution is software engineering and building platforms to reduce the “toil”, build repeatable automated processes, and work together and listen to each other to make sure we ship high-quality services for our customers.

Full-cycle development. Similar to the concept of “cross-training” in your first job in fast food. It’s like “full-stack development”, but encompasses everything a service needs to succeed and not be a pile of shit.

skyzyx··on Tell HN: Don't root for WFH, it might destroy well-paying jobs
Then what value are you bring to the table? What will keep a company from replacing you? Companies will spend the money to keep top-tier employees. What’s going to set you apart?

In California, people complain that “immigrants are stealing all the jobs”. If your job can be stolen by an immigrant, you’re not doing a very good job.

If your company can replace you by hiring off-shore, you’re not doing a very good job.

And I say this as someone who once lost their job to an off-shore worker. It was a real wake-up call.

skyzyx··on California exodus is a myth, UC research project finds
There are definitely some cities like that — San Francisco, Oakland, and Los Angeles metro all come to mind. And we did waste however many billions of dollars on a high-speed rail system that still doesn’t exist. And we keep catching on fire every summer.

But in the central valley where the majority of conservatives in California live, there are MUCH smaller cities, and therefore have fewer “people” problems by comparison. Sure, Fresno and Sacramento have some homeless problems, but those are usually crack and meth users in a particular part of town that everyone else knows should be avoided. The reality is, everywhere has some sort of problems that you’ll find if you look hard enough.

Having said that, I was one of the people who chose to leave California. I love California, and it will always be my home, but being a single father with two children making $140,000 a year in the Bay Area in 2016, I was barely making ends meet.

The rat race of the bay area, combined with high gas prices, combined with terrible traffic that extends 100 miles in any direction from San Francisco, it just stopped being worth it. So I left.

I know that I don’t represent everyone, but I’m one of the statistics that got “rounded off“.

skyzyx··on The Amazon 'Personal Games' Policy
When I went to work for Amazon in 2010, I also encountered many internal policies that were very similar to this. I don’t doubt the veracity of this claim one bit.
skyzyx··on Do patents kill innovation? The US patent office is asking
When I worked at Amazon, I learned that search field auto-complete on the web was patented by Amazon. When I wanted to provide a better user experience in some Amazon-owned open source software, I couldn’t because they didn’t want the Apache 2.0 license to grant patent rights to users. (If the age limit is still 20 years, I _think_ the patent expired in 2019 or 2020).

Conversely, there was that time that Creative patented Apple’s iPod interface (or scroll wheel or something), then they promptly sued Apple over it. I would assert that deeper discovery be done on prior art before granting a patent.

Lastly, the patent trolls who don’t create anything, but own the patent for it (e.g., Eolas suing Microsoft over then-standard NPAPI browser plug-ins). I would assert that granting any patent requires an actual implementation.

I think patents have a place, but (a) see necessary changes above, and (b) I think that software (specifically) should have a shorter patent lifespan because it moves so damn fast.

skyzyx··on ‘Orwellian’: Facebook faces backlash for ‘harmful extremist content’ alerts
Piping this through NewsGuard has a score of 12.5/100. It’s more _Animal Farm_ than Orwell.
skyzyx··on RMS Support Letter
“Bullying”

FSF is free to choose to bring RMS back. Likewise, people and organizations are free to choose to neither fund nor support the FSF as a result.

It cuts both ways.

skyzyx··on AWS announces forks of Elasticsearch and Kibana
Amazon has a history of forking open source software and using it to crush the upstream project.

I know — they did it to me.

skyzyx··on The YouTube ban is un-American, wrong, and will backfire
You’re missing a key point — journalistic integrity. It’s something that can be measured and validated.

Second is experience in discerning fact from fiction — not everybody has it. And example is that guy who believed that the earth was flat, so he jury rigged a rocket and shot himself straight up in the air. He then died from his injuries. Elementary school mathematics taught us that he wasn’t going to be successful, yet he chose to reject even the most foundational verified truths.

Third are the mathematical concepts of probability versus possibility. People who choose to believe things that are untrue tend to lean on the idea of “possibility“ without considering it’s likelihood (“probability“).

And there are people who question things simply for the purpose of questioning them. This is where fear, uncertainty, and doubt comes from. These are things that hold us back rather than pushing this forward. This is also known as “conspiracy“.

But there is a dramatically smaller group which aims to _seek truth_. These are the people who not just have an opinion, but are willing to put in the effort to evaluate evidence and allow their opinions to be changed by what can be proven. They recognize that it’s easy to want to look for patterns which support their existing biases, and they do their best to guard against that. They also recognize that psychology has taught us the humans like to look for patterns in data which suggest cause-and-effect, even if none exists. An example of this is when someone correlates the will of God to finding a $20 bill on the ground, when in reality it’s simply coincidence.

When you see hoof prints, you should think horses, not zebras. The simplest conclusion is usually (has the highest probability of being) right. One simply has to look at Trump’s track record with the truth to realize that he’s probably just lying.

And finally, the word “censorship”. This is an accusatory word used by people who think it relates to their non-existent “freedom of speech”. The first amendment applies to the agreement between the US government and its citizens. It does not apply to your relationship with YouTube. YouTube is a corporation that has an entirely separate agreement with its users, which does not include freedom of speech. Therefore, it’s not censorship — by definition. You’re not being censored, if you’ve broken the rules of that agreement. And in the end, it’s YouTube’s decision since it’s their platform you’re using.

skyzyx··on Google Poly is shutting down
Every language in widespread use today is either corporate driven or corporate sponsored.

PHP, Python, JavaScript, Ruby, Go, Java, Swift, Obj-C, Rust…

Welcome to capitalism, friend.

skyzyx··on No-kill, lab-grown meat to go on sale for first time
I can’t help but think about that episode from “Better Off Ted“ where they do this exact same thing.
skyzyx··on South Dakota nurse says many dying patients still insist Covid-19 'not real'
Yes, the pandemic fatigue is real. Yes, it would be wonderful to hang out with my friends in person, or to drive 100 miles crossing the border to go visit my children.

But the reason this is lasting so long, and things are shutting back down is because people are ignoring the truth. You can talk about the economy all day long, but the fact of the matter is that if we all would’ve taken this seriously and shut everything down, we would be through the worst of it already.

Comparatively, New Zealand and Canada have done a dramatically better job than America. People there appear to be willing to set aside their selfishness in favor of the common good.

And the people who don’t believe that it’s real? All I can say is that it’s extremely clear that we are living in a second Cold War. But instead of fighting with nukes, we’re fighting with misinformation, and Russia is winning.

skyzyx··on Ask HN: Go programming language is over ten years old. What do you think of it?
I learned JavaScript in 1999, PHP in 2003, Ruby in 2009, Python in 2015, and Golang in 2018. Modern PHP (despite its historical reputation) and Python are pretty much a toss-up to me (both have warts, both are a blend of functions and objects, and both can be written very well or very poorly). Ruby and JavaScript are more elegant (I like how everything is an object), but Ruby has historically been very slow and JS developers have forgotten how to program (see left-pad, or the dumpster fire of npm modules).

In July 2018, I decided to go all-in on Golang. I like how fast it is, I like that it forces me to pay attention to my types. I wish that error handling felt less like yak shaving, but I understand the rationale. I write task-oriented servers/daemons, and CLI tools mostly, and it's great because it compiles down into a single binary with zero dependencies (which none of my other languages can claim), and it's extremely fast. It compiles easily for a variety of OS/Arch combinations, and as someone who can follow instructions to compile C/C++ code, dependency management is FAR easier than having to track down which "dev" versions of packages I need to install from whatever flavor of Linux or on macOS (via Homebrew). Overall, it's the best of many worlds for producing something that's easy for other people to consume.

These days, I do a lot with AWS, Docker, Security, Terraform, etc. I'm also going back to my web roots a bit on the weekends and looking at building a GraphQL API on top of DGraph, and the tooling for Go is really good. Lots of static analysis and linting tools are available to help me write the best code I can, and teach me when I've done something poorly.

My only big complaint is when I'm parsing JSON of which I don't know the shape. I end up with this nested mess of `map[string]interface{}` types that I have to sift and cast over. Even when I know the shape ahead of time, I still need to do the work to model it as a struct before I can work with it sanely. This is something that JS, PHP, Python, and Ruby all do with far more ease.

I still write in multiple languages frequently, but Go has become my go-to for a lot of things over the past couple of years.

skyzyx··on Terraform at Scale
Oh, and `aws-vault` from Segment.io.
skyzyx··on Terraform at Scale
We have dozens of completely independent applications made up of hundreds of micro-services comprised from mergers and acquisitions, different market segments, etc.

Going from wildly disparate stacks to a unified core, while improving reliability and _real_ DevOps/GitOps/SRE principals (which are very different from old-school System Operations practices), we've independently adopted a model with elements of this.

> This article describes a systematic way of applying terraform at scale. At scale refers to: > > 1. high technical complexity: deploy infrastructure to any number of accounts and cloud providers > 2. high organizational complexity: enable multiple teams of developers to work collaboratively

It's making sense of the complexity that requires strong adherence to _reusable patterns_. We also use Terraform for "Monitoring-as-Code", so we use it in non-cloud provider use-cases as well.

Avoiding monolithic Terraform does come with an additional layer of complexity -- absolutely -- but we also don't have cookie-cutter services. We modularize the reusable bits, adopt _dependency injection_ (as opposed to tightly-coupled modules), and have adopted a more _composable_ approach rather than building large monolithic modules that do all the things. There are similar concepts in more mature software engineering organizations (e.g., SOLID principles). Updating a Lambda should not require executing the same monolithic Terraform as what manages your RDS instance. So we break apart the execution of Terraform into chunks which solve a single orthogonal problem.

Every module is well-tested using Terratest (Golang), and we leverage Terragrunt to solve issues with state management, reducing interdependency, and being able to use the output of one unit of Terraform as input to another unit of Terraform _in an entirely separate run_. This helps de-risk our infrastructure changes, and allows infrastructure to deployed _entirely separately_ from the application containers, while still leveraging things like ECS Capacity Providers in AWS (which uses container traffic to dynamically scale the underlying EC2 instances).

But for this to be successful, we've had to democratize the tools. We will never have enough headcount to manage all of the day-to-day ops work for all services. So we've adopted what Netflix calls "full cycle development" where dev teams have taken over day-to-day operational needs (deployments, AMI updates), which has freed-up our SRE team to focus on tackling the harder R&D reliability projects and providing solutions as software. It also moves us from a "man-to-man" model to a "zone-defense" model (to use a sports metaphor). It allows us to scale our team resources better.

Development happens in the open (internally) with public (internal) repos, and we encourage discussion, issues, and healthy disagreements to flourish (as long as those disagreements can come to a resolution -- we don't leave things hanging for too long). It becomes an interactive experience between dev teams and SREs to _work together_ to make sure that what we're building is solving real problems that engineers face.

We're not perfect, and there is always more to do, but this has been an absolute godsend to helping us improve how we do things at our scale and with our resources. By building best practices into the base AMIs, shared Terraform modules, Monitoring-as-Code, and other tools, it helps the overall engineering culture move in a healthier direction. We've been able to _dramatically_ cut our AWS costs as a result, leading to more jobs — even during the pandemic!

For anyone reading this blog post and kinda freaking out, I would recommend setting aside your biases and thinking through how a different kind of model may actually be able to _help_ you. Because it worked for us.

skyzyx··on AWS forked my project and launched it as its own service
Getting AWS to release code on GitHub? That was me. Allowing AWS developers to communicate with people on Stack Overflow? Me. The creation of the `awslabs` GitHub org? Me. The core concepts behind AWS Lambda? Me. SDK features like _waiters_? Me. Publicly sharing the internal service models so that people could built new tools for AWS? Me.

Me, fighting against the internal Amazon culture tooth-and-nail to try to get them to do things that were in the best interests of AWS customers. Some of the most brilliant and customer-centric people I've ever worked with got ran out of there by management (well, one particular engineering director) after 18-24 months.

All the fighting led to them trying to "manage me out" (making my life a living hell, hoping to make me quit), so I decided to stay for a full 4 years in order to vest every ounce of my stock grants, before walking away in 2014 (six months before AWS released "Lambda").

If things are better there now, that's really great for the people who work there. But it was a hell-scape for me to try to bring AWS into the modern age for open-source software in such a backwards-ass internal culture.

← PreviousPage 3 of 4Next →