HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mpw
Objective-Smalltalk
Objective-C2014–2025
mpw / Objective-Smalltalk

Objective-Smalltalk

Discover this repository through its Hacker News conversations.

4Distinct people
8Mentions
0Explicit recommenders
238GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year8 dated mentions

Observed mentions: 2014-02-01 13:00:46 UTC to 2025-09-06 01:29:38 UTC.

01232014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC110
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

8 sources
> Note: very pleased that the box serving the site is pretty consistently at less than 1% CPU during the HN hug of death. The connection has timed out Tempt not the fates, for they are cruel -- or, alternatively, the "hug" is not one thing --- https://github.com/mpw/Objective-Smalltalk#readme is the repo linked from the Download page in Wayback, for those into such things (but based on a recent commit, it's not Open Source: https://github.com/mpw/Objective-Smalltalk/blob/master/Stsh/... )
In Objective-S: architecture-oriented language based on Smalltalk and Objective-C
Thanks! The paper actually talks a little about results: reports were of code size and productivity improvements in the 50% / 2x region. I actually met one of the guys who had provided that written feedback a little later, and he told me that although he had written 2x, the actual results were more like 10x. The reason he wrote 2x was that he thought 10x would not be believable/believed. I have a feeling he is right about that ;-) The libraries are open source, at https://github.com/mpw/MPWFoundation (The lively project also has a version https://lively-web.org) The Stores/Storage Combinator base implementation is in the Stores subproject, so https://github.com/mpw/MPWFoundation/tree/master/Stores.subp... There are quite a few more stores in Objective-Smalltalk (http://objective.st, https://github.com/mpw/Objective-Smalltalk), which pr
Read the rest
ovides linguistic support for stores/storage combinators with Polymorphic Identifiers. The Objective-Smalltalk project also has a number of example compositions, but I do need more sample code.
In “What Alan Kay Got Wrong About Objects”
Thanks! Scheme handlers (or stores[1]) were initially implemented that way. There is a protocol of methods taking references, and you implement these methods, for example -objectForReference:, with, as you write, runtime parsing of the reference (often, but not necessarily strings). Having implemented a good number of stores[2] and scheme handlers[3] that way, I can tell you it gets old quick. :-) Given the emphasis I put on Polymorphic Identifiers in Objective-Smalltalk, it was obvious that I needed better language support for scheme-handlers, generalising the "properties" concept found in many languages now (Objective-C, C#, Swift, Python) with path- and pattern-matching as found in various REST toolkits was one of those in-the-shower epiphanies. The patterns ( /:table/count ) mean that you don't actually have to have a separate endpo
Read the rest
int for each path, you can group semantically related paths as you wish. There is also a wildcard pattern (the asterisk) if you want to just match everything beyond that. So for example: /property/* { |= { 3.} } Returns the number "3" for all paths prefixed by "/property". /property/*:path { |= { path. } }} Returns the remainder of the path (or you can use it for your own custom matching). [1] https://github.com/mpw/MPWFoundation/blob/master/Documentati... [2] https://github.com/mpw/MPWFoundation/tree/master/Stores.subp... [3] https://github.com/mpw/Objective-Smalltalk/tree/master/Schem...
In A small (and objective) taste of Objective-Smalltalk
> nitpicks Yeah, the examples page isn't very good right now. Also out of date. I actually didn't expect this to go to the front page quite yet. Ooops. > [blocks] There is http://fuckingblocksyntax.com ¯\_(ツ)_/¯ But yes, the block examples certainly aren't very revealing. One reason is that I wanted to take examples from actual Objective-Smalltalk "production" code, not just make up good-looking examples, and so the choices were more limited (not that much production code yet...). One reason is that all these blocks are parameterless blocks, which is also why you don't see parameter lists. > makeObjectsPerformSelector: Yes, that was an inspiration for enum-filters, which then turned into HOM. See http://www.metaobject.com/papers/HOM-Presentation.pdf (via https://en.wikipedia.org/wiki/Higher_order_message) However, this also obs
Read the rest
cures the central point of the code, forcing you to put it in an argument of the -makeObjectsPerformSelector: message (the MacHack presentation talks about this a bit). Note also that it says "HOM is fully supported". HOM is actually implemented in/for Objective-C, so you can also use it there: [[self.view.subviews do] setNeedsDisplay] [self.view.subviews makeObjectsPerformSelector:@selector(setNeedsDisplay)] You can see more HOM examples in the README for the Docker container script: https://github.com/mpw/objective-smalltalk-container It is part of MPWFoundation: https://github.com/mpw/MPWFoundation (which also has the ifResponds examples) 1 to: 100 | reduce + 0 > (Also, I'm assuming '|' is a separator to make up for the lack of brackets?) No, you can always parenthesise expressions: (1 to:100 ) reduce + 0 The | is actually a bit deeper, Objective-Smalltalk integrates support for pipes and filters, via Object Streams/Object Filters (https://github.com/mpw/MPWFoundation/blob/master/Documentati...). This also means that "nested" expressions are treated as chained "expression filters", with the result of the previous expression being "piped" into the next expression as the receiver. This isn't fully integrated yet, but here's an example of a filter as a script: #!/usr/local/bin/stsh (stdin -> { $0 stringValue uppercaseString. } -> rawstdout ) run (Yeah, it uses '->' instead of '|', as I wrote, it isn't fully integrated yet). The | also solves an oddity/asymmetry in the Smalltalk syntax, which is that the cascade "operator" (;) doesn't have an equivalent for message chains. receiver firstmsg; secondmsg:arg1; thirdmsg:arg2; All these messages go to the receiver. Let's try the same thing with chaining, meaning each subsequent message goes to the result of the previous message: receiver firstmsg secondmsg:arg1 thirdmsg:arg2. The first message works as expected. However, due to the keyword message syntax, the rest gets interpreted as the single message -secondmsg:arg1 thirgmsg:arg2. Not what we wanted. So you have to use parentheses to disambiguate: (receiver firstmsg secondmsg:arg1) thirdmsg:arg2. You didn't need them for the unary message -firstmsg and also not for the final one because it's not chained. But let's add another: (receiver firstmsg secondmsg:arg1) thirdmsg:arg2. fourthmessage. That also doesn't work quite right because unary messages bind stronger, so this is actually ... thirdmsg:(arg2 fourthmessage). Yikes. receiver firstmsg | secondmsg:arg1 | thirdmsg: arg2 | fourhtmsg. The fact that you don't have to go back and add parentheses at the front if you add messages at the end is particular helpful in REPLs like stsh. > can I publish an app with Objective-Smalltalk in it to the App Store? Yes. BookLightning is in Mac AppStore and written in part in Objective-Smalltalk. Objective-Smalltalk doesn't violate any AppStore rules. And the syntax page doesn't talk about property paths at all, which generalise properties and allow you to easily create scheme-handlers for Polymorphic Identifiers. See https://github.com/mpw/Objective-Smalltalk/blob/master/scrip.... /:table { |= { self dictionariesForQuery: "select * from {table}". } }
In Objective-Smalltalk: now serving its own web site
Thanks for checking it out! Yes, I am still working on it, in fact I just added the first cut of an sqlite scheme-handler 3 days ago (https://github.com/mpw/Objective-Smalltalk ). Still read-only for now and doesn't do any complex queries. On the other hand, table-name completion is kind of nice. You are right though that I should update the site more often. The seeming pleonasm is intentional...and not really a pleonasm. When you look more closely at the "Objective" side of Objective-C, it really is more about architectural interconnection than just adding Smalltalk to C, Smalltalk-style messaging is just one mechanism chosen. Adding the kind of architectural promiscuity that's in Objective-C to Smalltalk is a big boon. On the other hand there is the (fro me) big idea of the Smalltalk class libraries, the fact that the machine primit
Read the rest
ives are not the conceptual primitives (Object -> Number -> SmallInteger, Collection -> Array). Taking that and applying to the "objective" part is also a big deal. I believe.
In Intel Core i7-7700K Kaby Lake review: Is the desktop CPU dead?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.