Whether using text with LLMs in Snap! is actually a good idea is up for debate, but it is doable.
159 karma · joined April 6, 2013
https://mball.co/
Whether using text with LLMs in Snap! is actually a good idea is up for debate, but it is doable.
That said, I think you can learn good fundamentals of SWE with tools like Snap!. You can still learn testing, design patterns, working with APIs, modularity etc.
No it’s not a distributed system, and perhaps the biggest pain point is collaboration is tricky. But still you can learn a ton of cool things without going that far into CS. :)
Costs a crap ton for what it is, but it is nice.
I mean complexity comes from many places, but compared to the 'Unix philosophy' most of these tools are quite large. Obviously, there's quite a bit to learn about the way a *nix OS works, but if you treat tools as small and composable for simpler interfaces it helps a lot.
The web dev example of pub/sub is funny, because chances are if you're using Rails your primary DB (probably Postgres) already has a pub/sub system in or. Or you can just use any RDBMS for your job management system.
Absolutely true that not every app needs to be a SPA from day one, but I do with there were a few more common solutions for "hybrid" apps, which use some pages as a SPA. That said, it's not that bad once you've got it setup. I like that Rails offers a solution like import maps, but I do also wish there were better core functionality for using some kind of package manager.
Like the redis analogy: Whether or not you need Redis, there are good defaults and very good 'third party' solutions for background jobs (or caching). You don't even need Redis is many cases, but it's easy to grow into.
Leafo's itch.io is built with it and I maintain snap.berkeley.edu. A great tool, but I'm also many times more productive in Rails. (It's an unfair comparison, to be sure!) and Openresty + Lapis is quite performant and low overhead which is great.
There are parts about the language I really enjoy. I like dynamic languages; I don't run into type issues so often it bothers me, but the tooling around Lua still leaves me wishing for me.
Part of this is really my own ability, or lack thereof, but I feel slow and constrained in lua. I have a hard time debugging, but I don't feel these things in other languages.
It's not just crazy kids who "know nothing but phones". Even engineers.
That said, phones operate too much like appliances. I will not give up my Mac.
A yet if P(someone unknown is a robot) gets too large, it's going to be a weird adjustment period.
(Ending boolean-returning methods with a ? is also a great convention in ruby.)
* `a ||= b` is not just `a = a || b`, but `a || a = b`
* The distinction between defaults arguments and hash arguments in functional signatures has many edge cases -- but it's much much better in Ruby 3.
* There are still 2 pieces of syntax for hashes (`{a: 1}` and `{:a => 1}`) They are the same.
* Curly bases show up a fair bit for a language that's not a braces language. :) They're in hashes, blocks, and % strings. e.g. `%w{a b c}` is the same as `%w|a b c|`. They're also used in string interpolation, e.g. `"Hello, #{name}"`.
* There are sometimes many ways to do the same thing. There's Procs, blocks, and lambdas. % strings work with many characters.
* `unless` for `if not...` and get wonky.
* Overusing "surprise if" e.g. `do_thing if other_thing` can be hard to read.
* It's so easy to monkey-patch and extend primitive classes, you might not realize when libraries do it.
All of these are features that I actually find nice to use in the right contexts. But they can pop up when you don't expect, and they can definitely make Ruby a challenge to learn. That said with a little discipline (or just a linter ;)), I find a lot of Ruby code a joy to read and write.
I'll mention: implicit returns, return if, and safe navigation, the &. operator. Ruby's newer pattern matching features are really cool[1], especially for things like JSON structures, but I've only use started using them. Classes are also super easy to extend.
Many of these things are also incredibly easy to abuse - but they have their places.
[1]: https://docs.ruby-lang.org/en/3.0/syntax/pattern_matching_rd...
But damn, I can't wait for the time for me to upgrade my Intel Macs.
But especially with "modern" Python features like f-strings and the walrus operator there's not tons of differences that really stand out as "productivity".
One thing to just remember: Ruby is not just the Ruby on Rails community. Rails is a dominate space, but it's not the only thing out there. At the same time, when it comes to scientific computing, ML, etc. the Python ecosystem is incredibly robust. There's plenty of awesome Ruby tools for these things too, but it is not the same.
Ruby and Python are the two languages I primarily teach courses in, and used professionally. Ruby is my cup of tea personally, but they're both modern dynamic interpreted languages.
In reality, there's spots where it very well could be a career path but it's incredibly difficult to make it work in CS. (And in many many other fields too!)
https://aprecruit.berkeley.edu/JPF03311 -- this is the CS job posting https://aprecruit.berkeley.edu/apply -- this has all the lecturer postings, including related fields.
It's really hard to find folks who are going to enjoy the tradeoffs. (Also feel free to contact me directly. Append gmail.com to my username.)
I think I don't mind spending the money, but it is a significant change compared to working from home, or working in an office with food, or just making so much more money that you don't care. (Which is how it was when I was a SWE that worked in an office without free food.)
Pamela already addressed the inflexibility part. And I'll just echo that I find it worse than how she described. But I've probably over-committed myself, too. Engaging in research-like stuff is very fun, but it is often unpaid for someone who is a lecturer.
As for job security: Non-Tenured folks (like the OP) get relatively short term contracts. And it's easy for the University to not renew them, especially when there are budget constraints. Sure, I never had a contract like this as SWE and I could have been fired before my 1-2 years were up, but my job there felt much more secure. I knew my manager and how the company was doing. In contrast, while I'm friends with everyone - I don't yet have security that I'll be returning in the Fall, even though my name is on the schedule.
Now, at least some of this is academia having too strong of a filter, but the year I joined Berkeley - I was 1 of 4 to accept the offer.