I was an independent contractor for a large bank. My contract kept getting rolled so I ended up there for a few years even if the original piece of work was an 8 month job. A new CIO was appointed during my stint and a huge new IT initiative was launched to replace the decades old core banking system with a "modern" off-the-shelf "bank in a box" product that Oracle had recently purchased. This product was new and had been "successfully" launched by a tiny 8 branch bank in Ghana. The bank I was working for had hundreds of branches in multiple western countries. The product did not fit in any way/shape or form the existing processes in the bank, it's technical infrastructure, the regulatory regime, its retail products nor employment law (employee time is expensive in western countries - so solutions involving throwing bodies at menial repetitive tasks are not viable).
I had been at the coal-face for nearly a month of day long meetings with the vendor to try to get a single niche savings product supported on their system and it was torture. I could see it was never going to work. I had no notions that my lowly opinions would have any sort of impact but I made my opinions clear to my immediate manager - especially over lunch and when we would occasionally go to a nearby bar to watch sports after work. I eventually convinced him of the folly of the entire enterprise.
At some stage, he then spoke up to his manager expressing reservations who then called me in for an aggressive grilling on why I thought the new strategy was bound to fail. I explained - but he seemed unhappy with me and I was sure my contract would not be rolled - not that cared at that stage, I was hating the work at this stage.
I later found out that I must have had some impact because this manager brought up some of the reservations and issues at the next C-level meeting. He was promptly told by the new CIO that either he was either going to be a team player and get fully behind the initiative or else he was out as there was no room for saboteurs and passive blockers.
He got in line. I left of my own volition anyway. Two years later, the project was cancelled, the CIO fired and an $80m lawsuit with Oracle was the result. No real "moral of the story" - just that at some point up the hierarchy "push back" will meet the "owner" of the initiative and the pushback will quickly die.
The only reason I learned to touch type was out of boredom and the fact that the only “game” for the TI99/4a system (it had an “extender” with floppy drive and ran some spreadsheet) that my dad brought home from work at weekends was a touch typing tutor. When I started CS, I was in the tiny minority in my class that could touch type. During an introductory lecture for the course, one of the tips was “learn to touch type”.
VAT is the simplest of all taxes for businesses to deal with. VAT taxes business profits in a simple and completely unavoidable way before companies have a chance to throw their best accountants, lawyers and consultants at the task of minimizing corporation tax.
VAT is based on flows of cash so is trivial to calculate and to collect. Wealth taxes require valuation and are just too easy to minimize and are expensive to calculate, and difficult to extract. (E.g. I own shares in a family member’s small business via a loan I provided. What’s that shareholding worth for the purposes of a wealth tax?)
VAT acts also as a sales tax as well as a tax on “added value” - business profits - so replacing two separate tax regimes with a single trivial-to-calculate, difficult-to-avoid (requiring two parties to conspire together), easy-to-collect (cash-flow based) tax.
Without getting into the politics of taxation, it’s the best designed tax there outs.
Hmm, I'd never thought about the fact that a VAT tax requires two sides of a party in order to defraud. That is kind of neat and a beneficial property of VAT taxes I had never considered.
VAT is trivial for businesses to deal with. You add x% onto every invoice you issue. The VAT due to be paid to the government is a simple sum of the amounts distinctly shown on each invoice you issue minus the sum of the VAT amounts on invoices you’ve paid. Income/employment taxes, corporate tax, import taxes, etc are orders of magnitudes more complex, dynamic and subject to legal interpretation. I was a small business owner for a while years ago and did the VAT myself. But there was no way I would even attempt employment or corporation taxes - covered by endless legislation and changing every year - that was a job for the accountant.
Our bazel system is full of custom skylark code so understanding the build means effectively reading a bunch of ad-hoc code written with varying degrees of competence and with confusing dependencies. I’m kinda ashamed I don’t have a deep understanding of a tool I use daily - but every time I try reading the documentation I quickly give up.
The first thing is hermeticity and and what it implies: caching. That if targets are a strict function of inputs, and inputs can be hashed, then you can reliably cache them - including test results!
The second thing is distributed caching. Done right, not only are your test results cached, but CI's test results can be cached too.
The third thing is distributed builds. This only starts to matter in big projects, but compilation is inherently a spiky load and if you can share a big pool of compute between a big pool of engineers, you get higher hardware utilization and lower latency to build artifacts.
The fourth thing, something that isn't really feasible outside big tech, is you could be bazel all the way down in a big monorepo. One of the niftiest things at Google is to be able to put a printf inside a database server and run your client test, and blaze knows that it needs to rebuild the database server and it will do it automatically, so that you can get extra insight at almost any level in the stack.
Probably not in the way that you might mean it, but for me (Xoogler, 2010 - 2023) internalizing bazel means:
"Hey, where's your tool's code in $MONOREPO?"
"<path/to/stuff>"
Cool:
g4d my-citc-client # moral equivalent to `cd ~/repos/stuff`
blaze run path/to/stuff:target
... and you get a running version of whatever $stuff is, immediately built from head, quickly - no matter the set of dependencies, or which language they were built in. I can just try your thing out immediately with a common interface for all the builds, and I don't need to understand the build at all, unless or until I do, and then OK, absolutely every single build is always expressed in exactly the same way, same idioms, same patterns...
Probably it's just down to a different understanding of the word "internalize".
I know how to _use_ bazel effectively to do my work. I'm comfortable with its well-designed surface but whenever I've tried to understand the inner machinery I've given up - especially when presented with a bunch of custom skylark rules code.
It's like an anti-git in some regards - the surface of git (the CLI) is an abomination in many ways but the the mechanics of the tool are so ingrained and the model is so clear and simple - I never feel uncomfortable.
I've a need to have some comprehension of the inner machinery or the underlying model of my tools.
I've personally driven adoption of Bazel across two teams in our company over the last two years (we have an extremely fragmented set of repos that touches everything from hardware, to end-to-end simulation, to cloud software, to CDK stacks that deploy the software). There are still some aspects (ha) that confuse me like transitions, exec groups and constraints, but most of the time it's all about building a graph of actions (command executions) by executing code, and hooking up external dependencies into the graph inputs. Mind telling what confuses you in particular? Maybe I can be of help somehow.
When people extol the virtues of manufacturing, I’m always reminded of the poll where 80% of Americans say that the country would benefit from a bigger manufacturing base but only 25% are interested in actually working in manufacturing. This isn’t an American thing btw - I’ve had arguments with brits and others who argue passionately that the country has been destroyed by the relative decline in manufacturing but when I ask “so you’d prefer to work in a factory?” it provokes fairly confused responses like “no but other people would”….
Whether I intend to work a factory job or not I can still decide that unemployment in the U.S., especially unemployment of blue-collar workers, would be better served by local industry than allowing for homelessness or a dependency on welfare. Never mind that there might also be national security issues addressed by local manufacture.
The opposite, expecting everyone in the country to aspire to white-collar professions, is to me much more clearly an elitist (or at least irrational) position to have.
>The opposite, expecting everyone in the country to aspire to white-collar professions, is to me much more clearly an elitist (or at least irrational) position to have.
This, when you have everyone go to college and then they'll be shocked to be unemployed or work for peanuts since there's an oversupply of college grads and not much demand.
Here in Austria people working in construction cam earn way better than SW engineers because the former have an oversupply and the latter a shortage.
If you need a mobile app or a Java app, the're dime a dozen developers but if you need a plumber, lock smith, facade, roof specialist, well good luck.
The days when a college degree were an instant ticket to a well paid job for life are over.
I have worked enough blue-collar jobs to know that there exist people for whom technical work is a non-starter. Not that they are somehow dim and incapable of learning engineering, but "work" that is not done through labor, that does not show in a tangible way a day's effort… is anathema to them.
Still it's supply and demand issue. The west has had 20-30 years of grooming the youth that going to college is the right path to middle class lifestyle and blue collar jobs are for losers who are too stupid to study. You can't be shocked when the supply demand reverses. South Park even had an episode mocking this, with plumbers being the new tech bros, and tech bros being unemployed.
> but "work" that is not done through labor, that does not show in a tangible way a day's effort… is anathema to them
Same applies within white collar jobs too. Some engineers want to work in hardware, firmware, mechanical jobs, because the output is tangible, instead of pushing JSONs to the cloud, even if that's not more complicated than the other.
Dalton has been the worldwide leader in carpet manufacturing since before I was born. Multiple generations of people have worked in those factories. They earn good money and can afford big houses and savings.
You should talk to the people of Dalton. They're really proud of it. The first thing they tell you is they're from the "carpet capital of the world". Without fail they will mention that to you. It's so ingrained that it's part of their identity.
I don't think they'd be happy to lose their jobs for knowledge work or anything else.
I see no issue with that statement. Without blue collar work what are the job prospect for those who can't become an AI engineer or a quant in London other than live on the dole or become homeless crack addict?
> I’m always reminded of the poll where 80% of Americans say that the country would benefit from a bigger manufacturing base but only 25% are interested in actually working in manufacturing.
This is a silly statistic that manipulative people drag out to imply the answer that they want. If you asked people who work in factories right at this second, 75% of them would say that they didn't want to work in a factory. If you ask people who work any job, and ask if they would rather not be working, 75% would say yes.
It kind of goes with the weird idea that illegal immigrants actually love to clean toilets and work in fields for slave wages.
> when I ask “so you’d prefer to work in a factory?”
...to your upper-middle class friends who make six figures.
Have you ever worked in a factory? I find the people most enthusiastic about manufacturing are the ones least likely to have stood at a station in a factory performing manufacturing "work" - the vast majority of which is mind-numbingly boring and repetitive yet with minimal opportunities for passing the time with idle social interaction or chit-chat. Of all the non-professional work I've done, it was easily the least enjoyable. Even if it paid a bit less and demanded more physically, unskilled construction work was enjoyable in comparison. Even kitchen portering provided more stimulation - at least there was plenty of social interaction. This romanticization of factory work is weird.
I find it funny how you are describing it and acting like it is bad. In most of the topics dealing with WFH and return to office, a large number of the comment were along this vain:
"I really hate going into the office because I don't want to have to socialize with my coworkers, I just want to be able to do my work and be done with my day."
What acting have I been doing? Feels like a weasely way of accusing me of lying when I said I hated my experience of factory work. If you have had a different experience of factory work, let’s hear it. And preferably without the presumption - particularly the weird idea that being antisocial or asocial is the norm for human existence.
If you have more factory jobs the workforce has to come from either immigrants or the cushy white collar or service jobs that Americans mostly work today right? Because our unemployment rate isn’t low enough that we can just take people who aren’t working and get them working in factories.
Japan has had to heavily import workers to keep its factories and service jobs staffed, and the Japanese hate immigration more than MAGA does. The other solution is automation, which is how China plans to deal with its demographic cliff, I guess we could import factory robots from China.
The Civil war never banned slavery. It only banned private citizens from owning people. The government (state and federal) kept sole right to still own people.
The only gate is found guilty of a crime. Technically, that can even be for a speeding ticket. And when they can keep prosecuting for a laundry list, they effectively guarantee a win against whomever they want.
Term limits encourage the development of robust laws, systems and institutions which provide a far more stable basis for running a society than having power structures that rely on the brilliance of an individual or individuals. Without terms limits or the like (and there are countless examples not just in history but currently around the world), individuals in power are motivated mostly to preserve that power and have less incentive to work on improvements that will outlast them.
"institutions" is doing a lot of heavy lifting here. This often means bloated bureaucracy. I'm not against big government in any way or form, but inefficient, bloated bureaucracy with a bunch of mandarins doing the real governing since all the office holders get rotated out after their term limits hit, doesn't seem like a good solution.
There are just too many examples of political leaders who achieved beneficial results initially but as their reign extended into decades, things went sour. Putin, Mugabe, Erdogan, Ferdinand Marcos, Mubarak, Hugo Chavez, Castro and even the likes of Gaddafi are commonly viewed as having improved conditions for the citizens initially but eventually left a legacy of degraded legal systems, weak civil services, rotten institutions in general, weakened or non-existent independent media and busted economies. It just doesn't work in practice which why nearly all countries have switched to term-limits.
I had a look at the reference and the Wikipedia creates a misleading picture. The source states
> Ireland has very limited horticultural and grain production on account of its topography and climate, and it imports around 80 percent of its animal feed, food, and beverage needs.
Cattle are predominantly grass-fed in Ireland which is largely self-sufficient in grass/silage. Not to minimize the fragility of its economy wrt to food production - but the 80% I imagine is due to the reliance on other EU for fruits, vegetables and grain but these imports are almost exclusively for human consumption.
I was wondering about that. Cattle in Britain are also predominately grass fed and Ireland has a similar climate and environment and a much lower population density and a lot more land for cattle.
Ireland also exports a lot of that grass fed beef, so could presumably export less, and consume more of it to replace whatever it could not import.
A lot of other countries are also be both importers and exporters of food. The problem might be that in some places the quality and range of diet might decline.
In Ireland (and I believe it's similar in GB), beef cattle are usually finished on some mix of silage and concentrated feed with a significant maize component to promote better fat distribution.
There's a continuum between 'extensive' and 'intensive' finishing methods - the former takes longer and uses more forage & grass, and is best suited to native breeds. The latter uses more silage & concentrate, and is used for 'continental' breeds.
Dairy cows will also have pelleted additives over the winter, making up to about a quarter of their intake (largely depending on silage quality). But those tend to be mixes of yeast, fats, and digestible fibre so shouldn't necessarily require imports.
It seems like both of these are true: "Cattle are predominantly grass-fed" - yes, but this is seasonal; when they're eating something other than grass, it's an import.
> Actually in modern Java you can simulate type classes approach with a mix of interfaces and default methods implementations.
Can you? The beauty of traits/type classes is that you can attach them to any type - in a world where 90% of the functionality of any piece of software is supplied by dependencies - external types which you cannot change - this is a vital feature.
Failing that, there are always Clojure, Kotlin and Scala on the JVM, which expose language features to achieve the same, which you naturally can mix and match with plain old Java.
Why the reference to “modern Java” then? Writing adaptor classes is not “modern Java” nor does it involve using “a mix of interfaces and default methods implementations”.
I was responding to your original claim and I’m well aware of such facilities in both Kotlin and Scala - having used both extensively. I was genuinely curious if the latest Java was in the process of adding support for trait/typeclasses - so I don’t understand why you’d bother to reply with something that completely changes your original claim.
reply