I often dream about doing what the author is currently doing: Tooling around, writing software in a language I want to learn full-time. If I could get a patreon going...
ANYWHO, I didn't come here to malign the author. I came here to ask a question.
( For clarity, I'm an experience dev, computer science degree, been a developer full time for 6 years out of college and two years while in college )
I see a lot of discussion in here about developing GUIs in Rust. Writing native GUIs with Rust sounds awesome to me, and I'm drawn to it for the obvious benefits.
One of the things I want to do in 2018 is learn a new programming language. Last year I learned groovy, which is terrible, and Elixir, which is great and I highly recommend it.
I'm currently tore between three languages: Rust, Reasonml, and Scala
They have the following requirements:
- EXCELLENT type system
- Functional
- Productive
- Portable
My goal is to write GUI applications that help me design my board games.
* Scala
Scala has a nice type system, runs on the JVM so we get all of that sweet sweet Java interop, is functional with a mutable escape hatch, and is a "boring" language that is used extensively.
Additionally, the story for writing GUI applications for Java isn't as slick as web technologies.
Listen, I'm a millennial. We don't believe in anything. I don't mind opening up a web browser to interact with a graphical user interface, so languages with a better web technologies story is more attractive to me.
Scala is not much of a departure from my previous languages, so I fear I wouldn't learn much.
I already have Elixir for writing restful APIs and GoLang/Hugo for static sites, so Scala over-laps with these use cases making it less productive.
* Reasonml
Reasonml is a newer language from Facebook that compiles to the OCaml syntax tree, and then uses the OCaml compiler to produce the machine code.
Currently, Reason's only target is Javascript, but the community has already written a bunch of back-ends to have reason output to other formats.
There is a Facebook-developed React library called ReactReason, so targeting web technologies is Reasons JAM. A lot of Messenger.com has already been re-written using reason.
Reason has a language server implementation that hooks up to my Emacs config quite nicely, so I'm efficient in my development environment.
Reason uses OCaml's type system, which has 25 years of development and is extremely effective.
Reason has a compiler. After working with dynamic languages for so long, I have learned to love my compiler.
Reason is designed for productive Javascript interop, so I have access to the gigantic nodejs ecosystem.
The humans who are d
Reason ticks a LOT of my boxes, but it has some warts:
- Not a perfect story for async programming.
- Does not have a swagger-codegen back-end for stubbing out types based on my API docs.
- Special little snowflake language with a small community
- Really only good for front-end development
- Is the type system and other language primitives THAT MUCH BETTER than Typescript + ImmutableJS?
* Rust
Rust is the language I WANT to learn and use, but I am hesitant for a number of reasons.
I want to learn rust because:
- Aside from a teeny bit of C / C++ usage in college, I've not written in a low level language that requires me to think about garbage collection and I think it would be a useful exercise.
- It's extremely fast.
- It has some excellent concepts, like the borrow checker, that will expose me to new ways of programming.
- Will be nice to have a low-level language in my tool belt.
- Quickly growing community, a good opportunity to contribute FOSS.
I'm hesitant because:
- I'm concerned it doesn't fit my use case of writing GUIs.
- I want it to be a PRODUCTIVE langauge, and MAKE STUFF, not writing glue to get the stuff I want to work.
> grew up in a town with 30,000 people (much smaller than Cedar Rapids) in the PNW. It's rabidly republican. Also 30% Hispanic.
You grew up in a completely different part of the country than what I am referring to: The Midwest, specifically the Cedar Rapids area, so I don't really see how your arguments about how somewhere completely across the country is a better place to live is applicable.
In fact: Your statement that the nature around you is great is EXACTLY MY POINT! The Midwest is flat and we've butchered all of our forests in order to plant corn fields. Don't move there. The cheap land isn't worth it.
Yeah, the PNW is amazing. I think living there would be great, which is why I'm moving there in the next few months.
edit: A apologize if I came off smarmy in my reply, it's obviously my fault that I wasn't clear enough that my feelings are very specific to the midwest, and even more specifically for the cedar rapids area.
I agree with you, Chicago is brutal. I'm actually moving out west in a few months for the exact reasons you listed! But, as I said, I grew up in the rural midwest. I would caution people against considering it a cheap-land utopia.
Also, I would not equate moving to a small city in the midwest to moving to a small city in the Bay Area. You have at least a proximity to larger cities, and there is beautiful nature and weather to enjoy, along with better culture in general.
I'm from the Midwest, from the Cedar Rapids area, moved to Chicago, and I have to say I would NEVER EVER move back there.
People from these areas are extremely conservative and xenophobic.
The restaurants and any business you might frequent are of lower quality.
These cities are not world class cities. Claiming that they are is just ignorant. You end up trapped in a little bubble with nowhere to escape to, surrounded by boring white people.
There is NOTHING TO DO.
What if you want to go out on Friday night and see a rock show? Or get a decent dinner? I hope you like commuting to Chicago...
You will be surrounded by insurance salesmen with none of the diversity and vibrancy a larger city offer.
That is to say: These places have no culture. No diversity. They have nothing going on, nobody creating anything, no one performing anything. Just going about their little lives selling insurance.
Additionally: Their nature sucks. I hope you're fine with never hiking through any interesting terrain, going skiing, or rock climbing, or really doing any interesting outdoor activities. ( I guess hunting is popular? )
Also.. where are you going to work? I'm a software developer: Where am I going to work in Cedar Rapids, IA? Some insurance firm doing meaningless banking bullshit?
"But I moved there for my kids!"
What if your kid wants to start a rock band, or be a painter, or do anything creative or interesting? Or, what if they are extremely intelligent and want to progress through a decent, competitive school system?
I can answer this one from personal experience: They will be completely alone surrounded by mediocre, extremely homogeneous racially and otherwise, people with no community of peers driving each other forward.
There will be no friday-night rock shows, no musical culture in general, no museums or after-school clubs or protests to attend. Nowhere to go. Nothing to do. Nowhere to explore.
So, after all I've said: What's left to inspire you, or your kids, in these mediocre little cities?
So I guess if you're willing to do nothing and be nowhere and be nothing, wasting your days watching television, moving to a smaller city is a great bet. Personally, I'd rather live in a decent city than slouch though a mediocre one.
I highly recommend the book: the little elixir & otp guidebook. understanding OTP and the actor model will crank your elixir code up to 11.