HN user

dmux

1,153 karma
Posts47
Comments408
View on HN
www.tonymarston.co.uk 1y ago

Abstraction, Encapsulation, and Information Hiding

dmux
1pts0
en.wikipedia.org 2y ago

Shit Flow Diagram

dmux
28pts1
en.wikipedia.org 2y ago

Strozzi NoSQL

dmux
1pts0
en.wikipedia.org 2y ago

Think Aloud Protocol

dmux
1pts0
en.wikipedia.org 3y ago

The Secret (Treasure Hunt)

dmux
1pts0
blog.interfacevision.com 4y ago

Message-Oriented Programming with JavaScript

dmux
2pts0
www.orbit.cloud 4y ago

Actor system for the JVM developed by Electronic Arts

dmux
228pts91
www.gerbil.org 4y ago

The TOM Programming Language (2001)

dmux
4pts0
www.youtube.com 4y ago

Building a Guitar from Scratch (with a pro luthier)

dmux
4pts0
hfpug.org 4y ago

Tcl: The Tool Command Language – Lisp for the Masses [Upcoming Event Oct 20th]

dmux
10pts0
www.gordiansoftware.com 4y ago

Two Weeks Too Slow

dmux
1pts0
opus1journal.org 5y ago

The Tyranny of Small Decisions (1966)

dmux
4pts1
computingbook.org 5y ago

Introduction to Computing: Explorations in Language, Logic, and Machines

dmux
2pts0
www.youtube.com 5y ago

World's Second Best Speaker

dmux
1pts0
www.pippo.ro 6y ago

Pippo – Micro Java Web Framework

dmux
1pts0
www.youtube.com 6y ago

Describing the World: Data Model Patterns (2016)

dmux
2pts0
www.xdobry.de 6y ago

TclSqueak – IDE for Tcl

dmux
78pts40
sqlite.org 6y ago

The Althttpd Webserver

dmux
4pts1
number-none.com 6y ago

An Introduction to the Rush Language (1994) [pdf]

dmux
1pts0
nws.sourceforge.net 6y ago

NeoWebScript (2000)

dmux
1pts0
en.wikipedia.org 6y ago

Object Oriented Role Analysis and Modeling

dmux
38pts19
wiki.c2.com 6y ago

Table Oriented Programming

dmux
4pts0
wiki3.cosc.canterbury.ac.nz 6y ago

The Mutable Compendium of Object Oriented Wisdom

dmux
1pts0
design.cs.iastate.edu 6y ago

Capsule-oriented Programming (2013) [pdf]

dmux
2pts0
en.wikipedia.org 6y ago

Object-Role Modeling

dmux
1pts0
news.ycombinator.com 6y ago

Ask HN: What change in your programming technique has been most transformative?

dmux
236pts208
thinkrelevance.com 6y ago

Abstraction or Leverage? (2013)

dmux
1pts0
github.com 6y ago

Why Gawk for AI? (1996)

dmux
2pts0
www.gnu.org 6y ago

Kawa Scheme Language 3.1 Released

dmux
4pts0
microstream.one 6y ago

Microstream – Java-Native Persistence and Serialization

dmux
1pts0

I think what the other comment is getting at is that you're essentially leaving footprints behind on various servers and that information could be used to narrow down who you are, where you work, etc. For example, if you used the same key pair for a work machine at the big social media site example.com as you did late.sh, they could probe example.com's machine and see that you'd been there.

I'm surprised there's no call out highlighting Common Lisp and Clojure's "liveness" compared to Racket (and Scheme). Racket is "batch compiled" wherein CL and Clojure you're editing a live image.

OAuth for all 27 days ago

Yeah, I was originally thinking of the latter and generally interested as to what they were providing.

I also see this mentioned often and have wondered the same. I can sort of envision this working in a single threaded application, but how would this work in a web application for example? If a problematic function needs to be debugged, can you pick what thread you're debugging? If not, do all incoming requests get blocked while you debug and step through stack frames?

I'm not a fan of dynamic typing at all (currently maintaining a decade's old e-comm monolith written in Ruby on Rails), but instead of arguing about what bugs are caught where, I've instead switched to arguing from a position of developer experience. The _tooling_ that statically typed languages have is levels above those found in dynamic languages. Runtime errors are runtime errors, but knowing at typing-time that the shape of thing A is what thing B needs is a huge benefit.

Move Detroit 4 months ago

And here I thought it was an initiative to get Detroiters to be more active!

If you mess up, redo the part you messed up correctly 5 times in a row.

I think it may be important to note _when_ to redo this. I started off this way, but after working with a guitar teacher (a Berklee graduate), he recommended that I continue on with the song and return to the problematic parts afterwards. If you constantly stop at the problematic parts to replay them and get it right, you'll have no idea what other parts you'll have trouble with further into the song until much later. In addition to that, being able to move on and continue playing the song after making a mistake is an important skill itself. If you build that skill, it's usually only other musicians that will notice -- a regular audience won't.

What's your take on it?

easy for agents to write and beautiful for humans to review

What's left unspoken here, and something I've brought up in other threads that have mentioned Ruby + LLMs, is that they continue to struggle _comprehending_ Ruby (and Rails) style code. In a fresh project, agents writing code for humans to review is a solid approach, but when the codebase grows and the project starts suffering from the downsides of dynamic typing, you're not going to be able to lean on that LLM to aide you in refactoring.

LispWorks and Allegro are both interesting, but I've found their IDE offerings to be very limited. I haven't used either since I was playing around with CL during Covid, but from what I recall, even the basic IDE experience of writing code was severely lacking: poor autocomplete, poor syntax highlighting, clunky interfaces. In most discussions I see about them, they're only recommended for their compilers, not for their IDE offerings.

This is the perfect way to create a code-base that's incomprehensible. Claude may be good at generating Rails code, but every LLM I've tried to date has struggled immensely with parsing and understanding an existing Ruby on Rails code-base.

I’ve found LLMs to be severely underwhelming. A week or two ago I tried having both Gemini3 and GPT Codex refactor a simple Ruby class hierarchy and neither could even identify the classes that inherited from the class I wanted removed. Severely underwhelming. Describing what was wanted here boils down to minima language and they both failed.

I feel like I'm living in a totally different world or I'm being gaslit by LLMs when I read stuff like this and other similar comments in this thread. Do you mind mentioning _what_ language / tech stack you're in? At my current job, we have a large Ruby on Rails codebase and just this week Gemini 2.5 and 3 struggled to even identify what classes inherited from another class.

Code and Let Live 6 months ago

I think the future of software is going to be unimaginably dynamic.

...I’m not entirely sure what that looks like yet, but things like this are a step in that direction.

This made me stop and think for a moment as to what this would look like as well. I'm having trouble finding it, but I think there was a post by Joe Armstrong (of Erlang) that talked about globally (as in across system boundaries, not global as in global variable) addressable functions?

Ruby 4.0.0 7 months ago

I believe that the benefits of static typing somewhat decrease in the web arena

I’ve seen this sentiment expressed numerous times and have never found it to be true in my own work (e-comm), do you mind mentioning _what_ type of domain your web apps are in?

Edit: or if not domain, what do you mean by “web arena”

Django 6 8 months ago

In my experience it's boiled down to the type of data you're working with. Building nested, tree-like structures and then submitting that structure to the back-end as one request is more easily done via the front-end than a bunch of back-and-forth requests followed up by a "commit" request.

edit: I suppose this is different concern than a true SPA, but as another sibling comment points out, its just a matter of time before routing makes its way into the front-end as well.

These runtime typing efforts look nicer than Sorbet but, as far as I can see, you still have to have complete test coverage to trigger runtime checks if you want to spot correctness issues before you deploy into production.

I think you're right, and if that's the case, aren't these libraries (Lowtype, Literal) more akin to Design by Contract mechanisms?

Fifty Shades of OOP 8 months ago

Yes, you could also build and deploy a Smalltalk system, but my point is that the “build & deploy” approach (to me) seems antithetical to the message passing and late-binding paradigms. To use another example, it seems like you lose a lot of the benefits of Common Lisp via Slime (hot code reloading) if you deploy your Common Lisp app to a short-lived, ephemeral environment.

Fifty Shades of OOP 8 months ago

Regarding Message Passing and Late-binding, I think it's important to take into account that Alan Kay was working on Smalltalk -- a system that was image based; a system where you could change things as it was running. I think that message passing and late-binding are often championed but then sort of fall flat given standard deployment techniques: build & deploy (often to a ephemeral runtime / container).

Ruby 4.0.0 Preview2 8 months ago

I inherited a project where this was taken to the extreme. We have a class that's used to calculate final pricing taking into account discounts, coupons, shipping fees (or free shipping). Each one of those values was implemented as methods but then we have a call like: method_a - method_b + method_c, but it turns out, method_a may be adding shipping_cost for it to then be subtracted out in method_b. We ended up refactoring this and removing all the needless methods and just have a simple inline calculation. Definitely not "clean".