However every Elixir job I've seen requires Elixir experience, so I don't really see much opportunity for working with it professionally.
3,496 karma · joined January 23, 2019
https://github.com/danjac
However every Elixir job I've seen requires Elixir experience, so I don't really see much opportunity for working with it professionally.
Yet it wasn't able turn a profit?
As opposed to saying, "Steve from Sales was on the call to a customer and they have this specific problem".
And he executed hundreds of capable officers in the 1930s, replacing them with incompetent yes-men, which greatly degraded Soviet defences.
In Western corporate terms, Stalin would be a boss who carried out mass layoffs of his most competent employees, ignored the threat of a competitor, and only survived due to the hard work and sacrifice of his remaining underlings, while taking credit for their work. All in all, he'd probably be quite a good modern American CEO.
Once something is built, and in production in the hands of end users, it is something that needs to be maintained and built on and fixed over time. It's never thrown away.
Now if you are lucky, it has been well-written and designed so that parts can be refactored over time as new features are needed and old ones deprecated. If it's shoddily built and rushed because you couldn't afford or couldn't be bothered to do it right the first time, then that's going to be tech debt you are going to have to deal with for years to come.
Honestly reads like an essay written by a 15 year old who has just got introduced to Robert Heinlein and Ayn Rand.
You can lose people who might be key contributors. You can destroy morale in the rest of the company. Everyone else knows they might be next, so they will leave first chance they get. Finally, it signals to the market you are in trouble (hence why a lot of companies are doing it now: better to be just one more company doing layoffs when everyone else is doing it).
Now maybe their business model was flawed (I heard it was profitable, but perhaps not profitable enough). But otherwise 118 people for a global brand-recognized business is pretty lean already: I have worked for medium sized businesses around the same headcount you have never heard of, which don't even operate outside their home country.
If you hate globalisation, then maybe that can be tackled with better legislation, improvements in working conditions and standards of living, and other systematic changes. It's not going to be changed by lecturing poor people on the ethics of buying cheap stuff.
I do get the feeling they went YOLO and built their solution on an over-engineered approach with a stack they were unfamiliar with, and when they hit problems, they YOLO'd into another solution without properly evaluating why, which feels like a team of junior developers run amok.
They also seemed to not really understand relational databases, and why foreign keys are kind of important when you are choosing a relation database implementation (yes you can do without them, but it's best to understand them first).
They can't be that different from one another that they would require bespoke software, other than an off-the-shelf solution for criminal defence lawyers? Or is there sufficient difference e.g. state to state that this would never work?
The forestry industry is still a big player, especially with the recent disconnection of Russia from the world economy. Biofuels may play a part in that. But not sure it's a big enough differentiator these days.
The country is well-educated, however it suffers from the same problem as much of Europe: not enough young people to support a growing retired population. That retired population is also more conservative leaning and doesn't want more immigration, yet Finland needs more skilled immigrants. Again, a common European story of an older voting base who want to live off the fruits of other peoples' labour (whether as recipients of government largesse, or as landlords on their property investments) but do their darnedest to make it harder for that labour to make those fruits.
And having to sneak out the guiltily because you know everyone else in the apartment block hates the owner for turning their apartment into an Airbnb without their consent.
What's not to like?
There's no JSON in this site: the only pure non-HTML interaction is a "ping" where the audio player posts the latest play time of an episode every few seconds while running, so that if the user switches to another device, or closes the tab, they get the latest runtime of the last episode they were listening to.
In terms of performance, I found there wasn't much difference between this approach and an SPA. For example, if I navigate from page A to page B in a React app, I still need to fetch JSON or GraphQL data for that new page, perhaps including multiple round trips to the server depending on the API design. With HTMX, I can just fetch a small HTML snippet: for example, if I click a "Subscribe" button, it just returns some new HTML showing "Unsubscribe" and updated URL or whatever. Sure you can do that with plain Alpine, but HTMX makes it easier to reason about state, which I'd need to otherwise manage client side (e.g. keeping a tally of all my subscribed podcasts).
HTMX also provides solutions for things like updating state in multiple places: for example you if you have a shopping cart, and you want to update not only the cart itself but a counter widget in the navbar, you can do "out of band" responses that can insert snippets of content outside the main target. Again, totally doable with Alpine, but more work for me.
And not every interaction has to be a server round-trip, you can certainly push work to the client side if needed, and use Alpine or vanilla JS or even React if you want: in a work project for example, we had most of the site in HTMX, but used React for a dashboard page with lots of complex interactive graphs and whatnot.
As I said, it was a pretty simple app, certainly not as complex as Spotify. But given that the often repeated example of when to use an SPA is "running an audio player while navigating around the site", it makes me wonder why the need to reach for React or other SPA framework for even simpler needs.
It's pretty simple - it's just for my own needs - but it works quite well. You can go far these days before needing an SPA.
You can run it on top of a single cheap VM, for example Digital Ocean or Hetzner, for a few dollars/euros a month. It is compatible with a lot of Heroku buildpacks e.g. PostgreSQL and Redis, has a similar CLI, and includes plugins for things like LetsEncrypt that can be installed with a couple commands. As with Heroku and other PAAS you can deploy with a simple git push.
It's absolutely fine for the MVP stage of a more serious project, but it's not really meant for scaling out beyond a single server. I mean sure, it's possible, but there are better tools for the job, and at that point you should have a bigger budget/team.
Companies don't just ship their org chart, they ship all their dysfunction and historical baggage. A beautiful, well-architected platform from 5 years ago, with an efficient, thought-out data model and API and well-written and tested code, might be a total mess after 5 years of constant pivots from the CEO, last minute customer requests the sales team have pushed through, product managers doing their hydrant-meets-dog act of adding features nobody needed or asked for, and never enough people and time to do as good a job as the developers would like.
One day you wake up with a big pile of tech debt and fixing bugs and adding features takes way longer than it should, and microservices are that siren call that promises a solution that doesn't involve burning the whole thing to the ground and starting over.
But that depends on what counts as "success". If you are looking at just money or Github stars (or whatever the equivalent is in art or music) then that's one measure, but success could mean learning, personal satisfaction, something that helped or inspired someone else, the praise of a few people you look up to, or a job opportunity.