Live data from Hacker News

Ask HN: Which tech stack is the most fun?

news.ycombinator.com

131–140 of 187 posts

Re: Ask HN: Which tech stack is the most fun?

#131
post #28

I've been having a wonderful time spinning up small projects using Tcl, Wapp, and Sqlite. Tcl's quoting rules makes it really easy to embed HTML (or anything else, really) inline within a procedure. Simple example: # available at /style.css proc wapp-page-style.css {} { wapp-mimetype text/css wapp-cache-control max-age=3600 wapp-trim { body { background: aliceblue; } } } # available at /hello proc wapp-page-hello {}…

This is great! I write a lot of one-off utilities that run on my main desktop as web applications backed by sqlite so you're really speaking my language here!

I enjoyed the little bit of exposure that I had to Tcl/Tk through EXPECT, I used to write a lot of embedded test scaffolding using it back in the 00s. I've also been interested in checking out Little Language [0].

Wapp looks like a great place to start with Tcl.

[0]: https://www.little-lang.org/

Re: Ask HN: Which tech stack is the most fun?

#132
I recently had to make a tool that builds multi-language vanilla sites (https://stack55.com). Part of the job was to make a few sample sites in plain vanilla HTML/CSS/JS.

After years of working with Angular + Node as my main tech stack, I found myself having lots of fun doing just that.

Re: Ask HN: Which tech stack is the most fun?

#133
The most fun programming I ever had was Turbo Pascal in the days of MS-DOS, it was possible to do pretty much anything, and it compiled almost instantly.

When Delphi came along, it was easy to use, but the layers of code made knowing what was going on effectively impossible.

Now we're in the age of trying to force a GUI to appear on the other end of the tech stack that includes hardware not owned by the people who should be their owners, but rather companies driven by profit motives. Connected by a series of privately driven networks, snooped upon by hundreds of competing national agencies and companies from everywhere, and it all sits on top of something that doesn't have capability based security at its core.

I'm used to a GUI, so Delphi would be it, except it's now insanely expensive, and I can't afford it. Lazarus is an open source alternative that works well enough... so that's my choice for fun these days.

As for working a job, which I'll have to do, soon enough... I expect that I'll be stuck using some form of case sensitive, macro encrusted C derivative, or perhaps something "memory safe" and unintuitive like Rust, or "functional" that forbids useful things like goto and global variables like Haskell.

The tech stack that I love the most, however.. is the tech stack we all use, that starts with raw inputs pulled out of the ground, and refined in many ways, until we get laptops and smartphones. It's an amazing technology stack, capable of producing wondrous things that even Absolute Monarchs of the past couldn't have dreamed of wishing for, in quantity and quality that even working class folks can afford.

We live in amazing times, thanks to our shared tech stack.

Re: Ask HN: Which tech stack is the most fun?

#135
post #54

Go. Lower your pitchforks and hear me out: 1. Sensible defaults, can go very with just the stdlib: no choice paralysis between frameworks, mental overhead of setting up a project or ecosystem fragments to pick from. Just start with a main.go with net/http, add things along as you need them. 2. No ecosystem churn, whatever you write now will be idiomatic Go and build without issues for years to come. 3. Enough of a ty…

> 3. Enough of a type system to catch typos, but not enough to bog you down in mental gymnastics on how to solve every problem perfectly. And definitely not enough to slow down builds and your iteration/test cycle.

I think the second part (not enough to slow down builds and your iteration/test cycle) is a false dichotomy between "languages that have 'advanced' type systems" and "language that compiles fast". OCaml has a more "advanced" type system than Go, and still compiles really fast. My understanding is that both have influence from Pascal and its descendants, and Pascal made some tradeoffs to ensure fast compile times. For example, OCaml has no forward definitions. I used the word "advanced" here but I'm not sure if it's the correct one, as in I don't want to imply that one is better than the other. Maybe "fuller" could work too, but it sounds very weird to me. Complete maybe?

To continue on why I think OCaml is a good choice, replying to your points:

1. Sensible defaults are definitely missing in some parts, though with frameworks like Dream (https://aantron.github.io/dream/) this is less of a problem. There are small things missing in Go, like CSRF prevention. Where you have a point is that you don't have a big transition from "writing Go code" to "using a framework", which is a problem that can lead to analysis paralysis in other languages. With Go, you can just start with Go.

2. No ecosystem churn: This is a bit of a hard one. I feel like "churn" in OCaml is closer to the one in Go, adding things that are actually needed and after having a good understanding of the problem. For example, OCaml is adding multicore, and doing it in a backwards-compatible way. I feel like the approach is a lot like generics in Go: existing code will continue to work, code that went around this feature before will probably need to be rewritten, but that's for the better.

4. This is the big one. Concurrency in Go is a pleasure. You can write direct-style code, maybe put a channel or a waitgroup or something and everything just works. This is a point where OCaml is not as good as Go. Concurrency works with colored functions/monads (they're the same thing), like in many other languages, or just plain old threads. Multicore may allow people to build a preemptive multitasking runtime, just like in Go, but it's not there yet.

For the other stuff:

Dev tooling is not as "intergrated" as with Go, probably not as good, but the language server, package manager and build tool are all good. The debugger is a pleasure to use, and having a shell/toplevel/REPL is great.

Performance is great. Not as good as Go (though it does beat it in a few benchmarks on the multicore branch for HTTP servers), but still better than almost all of scripting languages, especially the popular ones.

As for OSes, it's mostly good on Linux. The windows support is so-so, the mac support too.

Lastly, for the learning experience, it's hard to say. I find it harder to learn something in OCaml, in that it forces me to understand what I'm doing more than with other languages. This can be frustrating at times, but also deeply rewarding.

Re: Ask HN: Which tech stack is the most fun?

#136
post #119

Earlier quoted context omitted.

> broader set of strengths than Rails imo What are those, in your experience? The BEAM platform is certainly better for concurrent work where you might be holding open something like a web socket. But other stuff...? I'm a pretty happy Erlang programmer and feel like I 'get' the functional programming aspect of things, but to me ActiveRecord just feels like such a great fit for DB work in that it makes the simple thi…

Having worked with both ActiveRecord and Ecto, Ecto is consistently easier to reason about and change than AR. It feels closer to the DB without compromising composability, and better avoids surprises. Ecto is IMO one of the killer features of the Elixir ecosystem that is undercelebrated compared to the neat things that are rarely used.

Do you have any concrete examples that you're thinking of?

In particular, I found that having to include all the fields is kind of a PITA compared to AR. I also just find the mental model of an AR object to be really easy to think about in terms of the simple cases. Before save, after save, accessors, and just having methods available on the object all seem really intuitive compared to changesets. Not that I didn't figure those out in short order, they just seemed a bit clumsier. But I am not super deep into Ecto, either, so maybe I'm missing some places where it shines.

Re: Ask HN: Which tech stack is the most fun?

#138
post #54

Go. Lower your pitchforks and hear me out: 1. Sensible defaults, can go very with just the stdlib: no choice paralysis between frameworks, mental overhead of setting up a project or ecosystem fragments to pick from. Just start with a main.go with net/http, add things along as you need them. 2. No ecosystem churn, whatever you write now will be idiomatic Go and build without issues for years to come. 3. Enough of a ty…

I agree with all of the good things said about golang in this thread, but I could not consider it "fun". It is boring in a good way.

Re: Ask HN: Which tech stack is the most fun?

#139
post #126

Earlier quoted context omitted.

Can you give some details about what you use with Clojure? I was looking at Fulcro.

Not OP, but we're currently using Pedestal to serve Lacinia (graphql). Previously I've used compojure and all that. I've only done the data/backend stuff, so I've personally never seriously used cljs, and my companies would use a regular reactjs frontend. But Clojure is definitely a joy and if I had to make a frontend I'd probably reach for something like reagent.

Thanks! What do you use for editor tooling, REPL setups, testing, etc.? Also describe your workflow if you can. I know this might mean a longer reply but I'd appreciate it ;)

Re: Ask HN: Which tech stack is the most fun?

#140
Clojure backend + ClojureScript frontend with re-frame.

Hands down the most fun. Using same language for everything. Opening a page and REPL-ing it to hearts desire without having to reload the page. Seeing your coworkers' blank, befuddled stares...

Post reply on HN