Datadog is hiring Data Engineer - Metering Platform
Scala.js + Javy で Scala を WebAss…
Kraken is hiring Senior AI/ML Engineer
I've been doing lots of little Scala projects that want to send e-mail, including HTML e-mail. The Scala mail lib I found was a bit elaborate (based on cats effects) for my purposes. JavaMail (now Jakarta mail) is annoying to use directly.
So, I wrote a little mailutil library that is pretty trivial to send mail with, and straightforward to configure.
Maybe someone else finds it fun. https://github.com/swaldman/mailutil
Something interesting has been dropped — results of 'The State of Developer Ecosystem 2023' by JetBrains https://www.jetbrains.com/lp/devecosystem-2023
A single place where #Scala is among leaders (even the top 1), surprisingly, is the category of highest-paid languages. Considering sending this to HR at $job. Thoughts? 😅
Should be interesting for all #JVM developers, as we'll test the newest JDK 21 feature: virtual threads
A few harsh words on #scala. Source: https://www.linkedin.com/feed/update/urn:li:activity:7133861309929918466/
Rackspace is hiring Data Engineer II
Прикольно, в #scala 3 есть NotGiven позволяющий проверять не наличие, а отсутствие неявного параметра, хз где это применить, но звучит занятно.
Match Group is hiring Engineering Manager Data
Includes streaming support not only for reading queries but also super fast streaming inserts for your tables via COPY.
I've been using it on a project for a few weeks now and I love how much boilerplate it removes and just generally simplifies things.
I highly recommend you to give it a try: https://oyvindberg.github.io/typo/
Since other people are discussing these things, always a good reminder that on #scala using cats-effect library and using #FunctionalProgramming these thing are properly abstracted away nowadays and on daily usage one finally barely has to care at all about it. - https://typelevel.org/cats-effect/docs/thread-model
Two kinds of threads pools, and why you need both | Lobsters - https://lobste.rs/s/k8knw4/two_kinds_threads_pools_why_you_need_both
La #Scala apre la Stagione il #7dicembre con “#DonCarlo” di Giuseppe Verdi https://www.liberoreporter.it/2023/11/bonvivre/spettacolo/la-scala-apre-la-stagione-il-7-dicembre-con-don-carlo-di-giuseppe-verdi.html?utm_source=dlvr.it&utm_medium=mastodon
Stable company, figured out remoting before the pandemic, Typelevel stack. I work with this team part time. If you'd like to work with me, or if you'd like to work in FP and can tolerate me ... check it out! DMs are open.
Look ma, more languages are adopting the same feature we have in #scala
"_.Property shorthand for (fun x -> x.Property)"
Though everything else in Fsharp seems highly weird and complex.
Announcing F# 8 - .NET Blog - https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/
How do you handle the review process (as in "sharing knowledge and insights, getting feedback" on a very big PR?
OK, the best solution is "do not do big pr" and yes, scaling down the issue is generally a good advice (either by splitting the thing in an iterative process, or in several topic commit)
I did that, but the resulting change is still big (+30k/-100k of Scala) and impactful (switch a core part of the app), the two being of course intrinsically linked.
It could have been "work in pair", but that horse is far away already.
So, I did my homework (create arch docs and schema, document the change "how to get into that pr" way, tracked all the code change that made me pause in code log, added unit test to both demonstrate non regression on old behavior and new one, document code, etc) .
Still, such a change is frightening, just by the involvement and time needed to get at the "I can review" level.
But I really need to help them at that level, since the pr embed technical and functional knowledge important to be shared, even if not for getting feedback on the code now.
So: how do I help my team getting involved in that pr? It really looks like the next step must be interactive ("let me walk the changes with you, ask anything you want" like). Do you have any recommendations or guidelines about how to do that efficiently?
[tech notebook entry] (Library + Script) vs (Application + Config File) https://tech.interfluidity.com/2023/11/14/library--script-vs-application--config-file/index.html
Getting slightly annoyed that all the recruiters that want to connect in last weeks on LinkedIn all give me the same JD for the same client 😮💨.
Is the market without any companies recruiting for #scala besides the same 2 or 3 companies?
On #Mastodon I'm getting plenty of pleasant interactions, and it's a nice place, but it's very one-sided.
I wish to see more #Scala, #Kotlin, #Java or general programming content. Being on my self-hosted instance certainly doesn't help with discoverability, although I am using https://relay.fedi.buzz/ to follow these tags.
The Vale Programming language
We also discovered that they (Generational References) enable Vale to have complete memory safety, something no native language has been able to achieve.
- No borrow checker
- No GC
- Writes like Go with a hint of Scala
- FFI interop
Here's a simple function. The Kotlin code cannot describe a tail-recursive function, as it's forced to be “inline”, due to “reification”. Scala's “inline” functions can be tail-recursive, and inlining isn't even needed for reification.
You may like while-loops, the point being in Scala it's easier to avoid mutability.
"Useless syntax sugar": Numbered block parameters - https://zverok.space/blog/2023-10-11-syntax-sugar1-numeric-block-args.html
And the experience feels good, at least for toys. Seriously, download this sample and fire it up: https://github.com/sjrd/scalajs-sbt-vite-laminar-chartjs-example
Out of the Alt-JS languages I've played with, #Scala.js seems to be the best.
Given it's probably not widely adopted, its maturity is surprising. E.g., ScalablyTyped can convert TypeScript definitions, and actually works. Interop is good. And the compiler is, dare I say it, pretty fast compared to 2–3 years ago. Scala 3 also helps. E.g., it has untagged unions, just like TypeScript.
I'm surprised that it's in better shape than #KotlinJS, for all its multi-platform marketing.
What I really like about #Kotlin is that the popular libraries tend to be based on common-sense. You look at a sample, and you understand it.
Here's a sample that I discovered and understood in seconds, showing me how to define reusable CLI sub-commands in multiple subprojects: https://ajalt.github.io/clikt/commands/
#Scala's libs in this space (case-app, decline, mainargs, scopt,...) are based on compiler magic or weird data structures, have poor docs, and I can't tell if they get the job done 🤷♂️
In Scala 3, these utilities are guilt-free. But I can't find them in the stdlib optimized yet: https://www.scala-lang.org/api/3.3.1/scala/util/ChainingOps.html
I'm doing simple dev with #scala, #zio, #doobie, #quicklens, #specs2, #postegresql, and others things and it's very pleasant. I really like the programing level : not forced to care about low level stuff, data driven, types forbidding whole classes of problems and allowing fearless refactoring while I'm discovering the domain, with systematic and composable error management so that it's a pleasure to manage them accurately.
#Scala.js 1.14.0 is released! It features more linker performance improvements, as well as other small enhancements. https://www.scala-js.org/news/2023/09/25/announcing-scalajs-1.14.0/
"OOP classes vs Higher-order Functions (HOFs)"
What's the difference?
Programming in Java, anything non-trivial is still, “death by a thousand cuts”.
This is why alternative languages running on top of the JVM will always be relevant (e.g., #Scala, #Kotlin, #Clojure, #JRuby), especially if they strive to be more than just Java++. Because Java++ is the same boring old Java.
The redeeming quality that Java has is the extreme backwards compatibility. But this doesn't really speak for the libraries that people use, upgrades are still hard & classpath hell is real.
[Announcing] fossilphant — a static-site generator to self-host your posts from Mastodon archives https://github.com/swaldman/fossilphant#readme
Check out examples, themes with paging https://www.mchange.com/projects/fossilphant/example/shatter/ or as one tall page https://www.mchange.com/projects/fossilphant/example/tower/
My current instance is sunsetting, and I want to make sure the banalities I posted here remain forever public.
If you are in similar straits, I'd love it if you gave this a try!
Anyone else getting tired of #Rust getting the credit for (G)ADTs?
No? Just me?
#ocaml, #haskell, #StandardML, and #scala among others had this long before Rust and without the complexity of the borrow checker or lifetimes. Rust moves this concept of type system as bug prevention system forward for systems programming, but there is a long history of good compilers (targeting application development, not systems) that did this already (and in a few cases - better!). I am tiring of the narrative that Rust is the ”*only* memory safe language"...
#Gradle supports different options to write plugins. This is good, because it gives you the choice to use what fits your context. Any you should always write plugins - if only to organize your project's build configuration.
But it is confusing 😖. That's why I created this overview:
Learn by exploring the difference between writing the same Gradle plugins in:
Why bother with tagless final if you're only ever gonna stick to one effect system, right? It's like those Java folks arguing over javax interfaces when they know they'll never swap tomcat/jetty in their production system. But here's the deal: you don't use them for switching implementations in one project, but to make life easier when shifting people between different projects. You know, get them up to speed fast! And that's possible if they know both implementations play nice with a shared spec.
Skeletor will return with more disturbing comparisons between the world of pure FP and enterprise Java development #programming #scala #java
#sustainability #QCon @DevSusOps Video of the talk on the Tesla Virtual Power Plant from the track I curated at QConSF last fall. I’m very happy to be getting my own powerwalls installed next week so I can be part of this. Interesting architecture using #Scala #Akka to track and manage all the batteries at homes. https://www.infoq.com/presentations/tesla-energy-platform/
New Mastodon account, new #introduction.
Hi Fediverse, I'm Anthony, a Software Engineer and a recently naturalized British citizen (originally from Brazil) currently living in London. 🇧🇷🇬🇧
Aside from #tech related subjects close to my heart (JVM languages like #java, #kotlin, #scala, as well as more general topics like #agile, #foss and #extremeProgramming), my interests include #astronomy, #immigration, #retrogames, #scifi and #travel.
I'm proudly 'owned' by a tuxedo cat named Sean Bean.
I'm thinking about doing #freelance / consulting-type work once I finish university. Currently I'm working on my master's thesis and have a job, but still:
If you, your company or someone you know could use a passionate person with expertise especially in #Nix, #NixOS, #functional programming (e.g. in #Haskell or #scala), type systems, #foss, #python, #linux administration / infrastructure, research, training and education such as workshops or seminars, and a lot of other areas as well, contact me at email@example.com!
I've also started collecting some relevant information at:
https://www.eisfunke.com/work.html (still work-in-progress though)
#Python has batteries included in its stdlib, but when those batteries aren't enough people have to resort to installing pip + virtualenv + pyenv, alongside the OS's native packager, which they still need for native dependencies.
In #Scala, for writing all kinds of scripts, with all sorts of dependencies, all you need now is Scala CLI; which can also help with distributing your script as a JAR, or as a native executable: