Dioxus is the only web-platform technology toolkit that I see having the ability to be cross-platform and use Javascript as little as possible - glad to see their native WGPU rendering stack progress (check out the videos by Nico Burns on Blitz, Taffy etc)
HN user
solidninja
CHOP isn't just the future, it's the present. And if you're not using it, you're starting to fall behind the ones who are.
Be that as it may, the reason I got into software development as a kid was because I wanted to understand how computers worked and tinker with them. I did not get into it because of increased efficiency, or for telling others how to do stuff that I could learn how to do myself. If that makes me unmarketable, then I guess I will move to something that is not so prone to automation. Because I don't want to be a glorified manager (of bots or of people). :)
Thank you for writing this - it is more detailed that I could come up with!
I would like to add that I feel like functional approaches are more the "future" of programming than trying to iterate over imperative ones to make them as "nice" to use. So I don't really see the big deal of trying to add-on features to existing languages when you can adopt new ones (or experiment with existing ones e.g. https://github.com/getkyo/kyo for a new take on effects in Scala).
It's a balance but IMO there should be no realistic concept of "winning the market". If it gets to that point then sure the company is probably making a lot of money but they also have the power to squeeze as much as they can. The irony of posting this on a forum originating from VC culture does not escape me.
a “if you were on an elevator with Marc Andreessen” question
Were they looking for a nice local newspaper story about a misdemeanor assault?
This resonates very strongly with me - I am happy there are other people writing about this. It may not change the course of society but we need to fight for things worth fighting for and not give in to the system.
The only winning move is not to play :)
Unless of course the only corporations allowed to exercise free speech rights were collectives of workers :)
There's a quantity argument to be made here - before, it used to be hard to generate large amounts of plausible but incorrect text. Now it easy. Similar to surveillance before/after smartphones + the internet - you had to have a person following you vs just soaking up all the data on the backbone.
They lost a lawsuit as far as I can see: https://infosec.exchange/@SteamDB/113208423939527370 so they pretty much had to change it.
Ah words hardly mean anything these days. It very clearly is terrorism but you won't ever hear any politician in the west calling it that.
In my experience, using tools that do not support the "Go To Implementation" shortcut makes it hard. In IntelliJ, Ctrl+Shift+Click will take you to the possible implementors of an interface.
Concrete example from work today - we have a trading application and there are many paths that lead to alerts of some kind. Alerts are usually raised inline with any business logic (as should be - they intrinsically coupled). Alerts however can be delivered differently - via SMS, other messaging systems and/or log messages. The different places where the alerts need to be generated do not _need_ to know how the alert is going to be physically delivered to its destination - they just need to generate it. Without an interface (or at least a type alias for a function) - it would make being able to say e.g. this alert is a direct phone message vs. a chat message in some channel because of the type it is - much harder.
The problem is manual wiring (as always). It is fairly convenient to declare the source of your dependencies (somewhere around main) and have them be automatically wired in the sub-component graph, all without having to write out the chains of code to call constructor parameters. Also simplifies refactoring, as compile-time DI is mostly done on type and not on name or parameter position.
I'm always fascinated by the amount of comments that devalue separating concerns and reducing coupling by using traits and modules. Maybe if you're exclusively writing serverless functions you don't need much code anyway, but the idea that you can go and read a piece of code that deals with the database separately from a piece of code that deals with your HTTP request encoding (and see how they meet in the middle via a few method signatures) is a pretty powerful one in my experience.
No, it exists because of all must bow to the deity of increasing shareholder value. Remember that good product is not necessarily equal or even a subset of the easy to sell product. Only once the incentives are aligned towards building quality software that lasts will we see change.
Is there a study of "smooth"/"stable" "AI" algorithms - i.e. if you feed them input that is "close" then then the output is also "close"? (smooth as in smoothly differentiable/stable as in stable sorted)
That still needs discipline though - or you end up with N half-finished Confluence pages describing the intention behind the design, all of which are now out of date (and naturally in completely different places). The best way I've seen to keep track of changing things is to have the design linked to the ticket somehow (and if it's a link, then that needs to be a permalink to something that will not go away in a year's time).
What are the significant downsides of the first approach in your experience?
Probably a lot of that is to do with the short-term profit mindset. There is tons of software that is far from optimal, breaks frequently and has a massive impact on human lives (think: medical record systems, mainframes at banks, etc.). None of it is sexy, none of it is something you can knock up a PoC for in a month, and none of it is getting the funding to fix it (instead funding is going to teams of outsourced consultants who overpromise and just increase their budgets year on year). Gen AI won't make this better I think.
It comes back to the work itself being interesting and whether you actually care about the field that you are working in. I would not like to live in a world where you have to put in 80 hours a week to get a decent salary as an expert. It's true that there are a lot of people who got into the industry just because of the comp though :(
I think the target here is low-power peripherals rather than speedy peripherals, and the price is very nice for that :)
Well maybe "taking over the market" is also a monopolistic and anti-competitive practice and if we had say, working regulation that forbade the existence of these behemoth companies then the landscape of value would look a little different.
Ah the "move fast and break things" philosophy gets a demonstration.
The parallels with abstracting over the effect type and Free(r) monads are really apparent if you've had exposure to that style of programming. As you said, the benefit is that you can separate the business logic (what you want to do) from the execution model (how you do it) and this is very much an ongoing theme in programming language development.
Full-Time or Contract
Location: UK
Remote: Yes or Hybrid (London)
Willing to relocate: No
Technologies: Spark, SQL, Postgres, Kafka, Protobuf, Arrow, Linux, Scala, Rust, C#, .NET Core, AWS, GCP
LinkedIn: https://www.linkedin.com/in/vladimir1/
Contact: briar_lepton0l@icloud.com or see https://github.com/vladimir-lu
--I am Vlad, an experienced software engineer that loves using functional/statically typed languages to solve data engineering or distributed system problems.
This reminds me of the excellent talk "Constraints Liberate, Liberties Constrain" https://www.youtube.com/watch?v=GqmsQeSzMdw that is more about doing the programming rather than planning it as in the article, but with a similar approach.
Full-Time or Contract
Location: UK
Remote: Yes or Hybrid (London)
Willing to relocate: No
Technologies: Spark, SQL, Postgres, Kafka, Protobuf, Arrow, Linux, Scala, Rust, C#, .NET Core, AWS, GCP
LinkedIn: https://www.linkedin.com/in/vladimir1/
Contact: briar_lepton0l@icloud.com or see https://github.com/vladimir-lu
--I am Vlad, an experienced software engineer that loves using functional/statically typed languages to solve data engineering or distributed system problems.
Indeed - I do not think it is a coincidence that a lot of production experiments in effect systems are happening in Scala right now - the language is very flexible to conduct them. https://github.com/getkyo/kyo in particular looks interesting as it explores a different space where the monadic nature is less exposed to the end user.
Location: United Kingdom
Remote: Yes
Willing to relocate: No
Technologies: Scala, Rust, Java; Kafka, gRPC, NATS; PostgreSQL, Snowflake, BigQuery; AWS, GCP
Email: vladimir+hn AT solidninja DOT is
LinkedIn: https://www.linkedin.com/in/vladimir1/
Blog: https://blog.solidninja.is/
Github: https://github.com/vladimir-lu
Senior software engineer with a focus on building robust and scalable systems with functional programming techniques. Looking for either contracts or permanent positions within distributed teams. Worked for 13 years in the industry with some of the biggest financial firms as well as tech, ecommerce and mobility companies.Static typing can replace input validation though - if you make illegal states unrepresentable. That way you bake validation into your types e.g. using refined types: https://blog.rockthejvm.com/refined-types/ in Scala