hopia
hopia on Hacker News
You have to remember that we're talking about a country whose police considered Wikipedia to be fundraising money illegally with their global donations based system, due to Finnish laws:
https://yle.fi/uutiset/3-7144745I don't think it's a worthwhile risk to take for Finnish open source developers to accept donations and think it won't be considered illegal by the authorities.
Unfortunately, this is the reality on the ground. Finland is the least densely populated country in Europe, and one of the most arctic countries in the world. A lot of the people simply need a car to commute to work.
Cars in Finland have not only a value-added tax (VAT) of 24% but also a separate car tax slapped on them. At the extreme cases this can result in over 100% additional tax to be paid on top of the retail price of a car.
This looks about right to me. To add for reference, something like 5200 € / month gross puts you to top 10% earners in Finland already. So it is an excellent salary to get locally.
I also know of a few developers making 10k€ / month but I have to say they're very rare to come across in this country.
This is a good exercise to make a rough comparison like ths.
However, actually a junior would make something like ~3k€ before taxes in Helsinki, not after taxes. The taxes are (very) progressive, at that income level it's something like 27% in Finland.
When I book a dentist or an oral hygienist, the first available times are usually at miminum 8 months ahead. The cost is 60 €. This is at the public healthcare.
Granted, this is another Finnish city, not Helsinki.
Nothing is better than seeing the broken pieces of the foundation fixed in Haskell.
Records were my number one gripe in the language that otherwise does so many advanced things so uniquely well.
Do you have more info about this? It does sound promising.
Scala's type system is more expressive than Haskell's? I didn't know that. What makes it more expressive?
Actually, I think Japan also technically taxes worldwide income of non-resident nationals. And even permanent residents, regardless of where they reside.
Moreover, some countries like Finland require you to pay taxes on worldwide income for a number of years after you're no longer a resident of the country and only then granting you tax freedom from income sourced outside of the country. And there's no amount of income you can exclude like the USA's $108k or whatever the figure is currently.
Dart feels slightly less versatile than Typescript but has type soundness.
Both feel highly verbose to me, but maybe that's just cos I'm used to something with quite minimal syntactic overhead.
Ultimately, they're very similar as languages so it wouldn't take long for a Typescript developer to picn up Dart or vice versa.
Pretty amazing how you were able to use the appropriate tooling to a great effect right off the bat!
-XStrict is almost never optimal in Haskell as a lot of the optimizations ultimately rely on lazy evaluation. I think more appropriate would be to try out -XStrictData instead.
Personally, I found precisely the type system the most challenging part. It still is. The whole type level programming is something you just don't have in almost any other language so that's completely novel to me.
I'd say it took roughly 3 months on my own to learn enough Haskell to write a web server that does what I want. So I'd expect with professional coaching a smart person would end up on a decent level in 3 months, ready to put code to production.
The SQL composition seems really intuitive. I'm pondering whether it's worth the effort to port my Servant application to this or not.
Can you expand on why you would not bet on Haskell for commercial work? What are those things that make Rust suitable for it but not Haskell in your opinion?
This looks cool! The BEAM absolutely needs languages on it with a solid functional type system.
Curious to see what interacting with the OTP with its callbacks actually looks like.
I suppose in FP/Haskell you would structure your code differently, so that it wouldn't have side effects when mapping arrays. That way you could even parallelize it trivially.
High level languages produce a lot less code than than less optimized implementations. Difficulties with reasoning about execution/performance is the penalty you potentially have to pay.
In my experience it indeed may be hard to understand performance with Haskell. That said, it comes with excellent tooling to overcome it in most of the cases.
Gonna write anything publicly about whatever you're working on? If I'm correct, you've already made Opaleye which is really great, I'd be interested to hear if you got a new Haskell project coming up.
Is that flag really ever smart to switch on? I've heard StrictData makes a lot more sense but turning Strict on prevents the compiler from making some quite crucial optimizations, resulting in degraded performance.
Thanks for the tip!
I've been using ghcide on Vscode, and it keeps crashing and sometimes just simply freezing. What's more, I can't get multi-component support to work, meaning I have no IDE support for any test files, need to write them blind. No REPL that I know of either.
I tried hie before, it crashed even far more often and the type inference sometimes took a very long time to come up with hints.
Yep, it's the dependencies that take long to compile. Once you've done that already compiling your own source code is a lot faster, probably somewhat comparable to other compiled languages.
Surprisingly, this hasn't hurt me as much as I expected it would. Yes, the compilation times are slow but for the most part you have the type checker guide you while developing.
Slow compilations are very annoying for tests though.
My experience is that the
most basic tasks have a very mature library base in my context (web domain). Such as typed web endpoints, web servers and clients, JSON parsing and working with databases. I expect some domains are even far more mature with Haskell.
However, when you explore more specific things like shipping emails via a 3rd party service, various authentication protocols, monitoring via external services, spinning up persistent job queues etc. you start running into odd problems that you need to debug and even possibly fix at library level. That may considerably slow down development.
While there are lots of benefits for choosing Haskell it is certainly not without its flaws as a development platform.
IDE has been my largest point of pain so far. I'm just used to a more interactive development experience, and sadly the tooling is just not there yet with Haskell. That said, there's great effort right now in that area so hopefully it'll improve.
On top of the broken record system, another annoying part is that the runtime monitoring and introspection story isn't so great compared to the likes of Erlang.
I always found the IO barrier a good distinction at code level. In fact, I started to work on something to that end for Elixir because of it.
Monads come with their own share of problems that's true. Composability isn't really one of them in my opinion though, we got transformers for that purpose.
I haven't either. Granted, I've only asked for help on Slack and Reddit, but I've always had many people explain the solution in good detail to me.
From your complaints, which are all valid, at least the IDE problem is progressing very rapidly right now. Ghcide used to be a better solution over hie until now but now these two projects have been merged and we're finally getting something that works well out of the box.