After everything was finished up, I was feeling burnt out and realised that I'd held on for too long at a company with a fundamentally bad culture that wasn't going to change just because the tech did, so I moved on.
296 karma · joined October 24, 2011
After everything was finished up, I was feeling burnt out and realised that I'd held on for too long at a company with a fundamentally bad culture that wasn't going to change just because the tech did, so I moved on.
In my first real job, I worked for a company that maintained a large legacy product programmed in a combination of COBOL and Java.
In order to work on the Java side of the product, you checked out individual files from source control to work on, which 'locked' the files and prevented other developers from checking out the same files. This functionality was not part of our actual source control system, but was instead accomplished with a series of csh shell scripts you could run after ssh'ing into our development server.
Each of our customers had a 'master' jar file that represented the actual final compiled product (a jar file is really a zip file archive, which bundles together the resulting compiled java class files).
Once you had finished implementing your code changes, you ran another set of scripts which found the master jar file for each customer, unzips it, copies the compiled files from your local machine into it, and zips it back up again. Finally the source control lock is released.
This means, effectively, that the codebase was never compiled as a whole at any point in the process, instead, we just manually patched the jar file over time with individually compiled class files.
Over the years, small errors in the process allowed a huge amount of inconsistencies to creep into the codebase. Race conditions would allow two developers to lock the same file at once, or a developer would change a class that was a dependency of some other code that somebody else was changing. Sometimes code changes would make it into some of the customer jar files, but not others. Nobody knew why.
It took a small team two years to migrate the entire codebase to git with proper CI, and a huge chunk of that time was reproducing a version of the codebase that actually compiled properly as a whole. After the project was finished, I resigned.
Example: https://rfd.shared.oxide.computer/rfd/0177
Main index: https://rfd.shared.oxide.computer
Is this true? I know that the Tesla Impact report [0] refutes this, stating
> "While EVs today still emit more greenhouse gases during the manufacturing phase, including emissions from the supply chain, it takes less than two years' worth of driving before the total emissions from an EV fall below that of a comparable ICE vehicle."
but it's hardly an unbiased source.
[0] https://www.tesla.com/ns_videos/2022-tesla-impact-report-hig...
EDIT:
Since posting, found some of the sources that were linked by the guardian follow-up refuting Atkinson's claim:
- The IPCC Mitigation of Climate Change report [1]
- The ECIU "Energy price shock and the transition to electric vehicles" Report [2]
- Ricardo Energy & Environment report to the UK Dept of Transport [3]
- Carbonbrief factcheck article [4]
[1] https://www.ipcc.ch/report/ar6/wg3/
[2] https://eciu.net/analysis/reports/2022/global-momentum-the-e...
[3] https://assets.publishing.service.gov.uk/government/uploads/...
[4] https://www.carbonbrief.org/factcheck-how-electric-vehicles-...
1. https://aiascendant.substack.com/p/extropias-children-chapte...
In particular, a couple of industries that I think are likely to get disrupted in the next few years are stock art, and the art-by-commission scene. The ability to use a Stable Diffusion + Dreambooth style setup to easily generate new artwork in the style of your favourite artist that's "good enough" is incredibly powerful.
Doctors and Programmers? Not so much, for now.
Being able to drop into any repo at work and expect that `make init`, `make test` and `make start` will by convention always work no matter what the underlying language or technology is, has saved me a lot of time.
The gist was, "Without some sort of recycling and/or use of in situ resources, meeting the lunar settlement goal of 100 people would require delivery of over 1 million kilograms of life-support consumables per year."
And then assuming a PLSS life support system you get to to needing about 5500kg of consumables delivered per person per year.
[1] https://www.liebertpub.com/doi/abs/10.1089/space.2015.0029
People want to emulate their heroes and live into who they feel they are. The 'school nerd' phenomenon is one we're probably most familiar with; if you start seeing your identity as being a 'nerd' of the school, you tend to live into it even more. If you can somehow leverage that effect, it can be fairly powerful.
And then of course, just making learning fun, entertaining and a normal part of life and not just for school would certainly help. I read recreationally very early on because that was just normal in my home environment.
Overall, I'd worry less about making students feel good or bad over individual tasks, and pay more attention to fostering their desire to be the kind of person that needs to learn.
Some numbers of reasons that I felt I didn't get through the hiring process at the positions I applied for:
* Company changed their mind hiring for the position - 3 cases
* Didn't get through due to insufficient experience - 2 cases
* Didn't get through due to for poor performance on the hiring test - 3 cases
* No response received - 1 case
These numbers are a bit flaky since in the end it's a combination of factors that results in a yes/no decision. But I tried to roughly divide them into what I felt was the main "deciding factor" of the interview process.
For background, I'm a backend / "full stack" developer with 5 years experience (Most of the places that I got filtered out for experience reasons were because I didn't have enough of Brand X, etc)
1. Signal to the calling programmer that some error condition can occur. For example having to catch SomethingNotFound tells them that it's possible that Something might not be found.
2. You just put in your coding standards that you must do something sensible inside of a catch block, and get a code checker to break the build.
I don't think anybody is trying to say that checked exceptions have "solved" the problem of people ignoring error conditions. It does at least give you an easily visible thing to point at and say "that's wrong" though.
Refueling on the moon requires an (almost pointless) web of infrastructure that balloons the cost of a mission, and more importantly, increases the time to carry out the mission.
Each US administration has a habit of cancelling the more ambitious NASA/JPL projects of the previous one, so if we really want to go to mars, it has to be a mission doable in as short a time span as possible, such as proposed by Zubrin's Mars Direct plan.
* A database so large that even a minimally empty one cannot be created from scratch in less than 10-15 minutes. This creates problems for CI, integration testing, etc.
* The developers spent a good chunk of the late 90s/2000s writing Oracle PL/SQL code; hundreds of packages and thousands of stored procedures with oodles of business logic.
* We store reports, pdf attachments and other documents etc all in the DB as well.
* Since we put so much stuff on the database, small problems and schema fudges tend to creep in over the years, which makes every customer database a little bit different.
* Oracle licensing can be very unkind and the upper management mandate that we can't use the oracle XE version even in development/testing.
We ended up using a combination of Flyway for schema changes, hand-rolled scripts to apply stored procedures and packages, and we had to roll a database provisioning pool as-a-service for developers, and it's still a massively janky and fragile setup. We really need better tooling for this.
I like the idea of these guides generally. I think it'd be more valuable if they linked to example production code that followed the principles however, since there's no substitute for the real thing.
Come to think of it, I've never seen anybody write up any kind of index of (for example) Github projects that exemplify good design patterns for people to look at. Or some kind of recommended code reference list.
In my company, the management puts a higher priority on putting all available hands on rolling out new functionality than fixing bugs, in order to try and win new contracts from potential customers. Or at least that's their excuse, in my opinion there is no such thing as a low priority bug, no matter what industry you're in.