Twitter Archive: 2022
Twitter dot com was a microblogging and social networking service, where users could share short posts (commonly known as “tweets”) with text, images, and video.
This is an archive of all my tweets from 2008–2025.
These days, you can find me on Bluesky or Mastodon.
By year
- 2025 33 posts
- 2024 203
- 2023 97
- 2022 91
- 2021 89
- 2020 26
- 2019 0
- 2018 6
- 2017 56
- 2016 108
- 2015 71
- 2014 197
- 2013 180
- 2012 160
- 2011 162
- 2010 171
- 2009 238
- 2008 101
…or see popular posts.
2022
Hoo boy. Didn't think it would come to this.
Thanks for burying the lede, Wikipedia.
This would have been great to know before I spent hours discovering all the edge cases myself…
This would have been great to know before I spent hours discovering all the edge cases myself…
I feel like this is true for a lot “textbook” algorithms. Ten lines of pseudocode, 200 lines of actual code to cover all the edge cases and practical aspects (overflow, etc.)
An interesting side effect of using a code formatter: learning new syntax.
TIL about Swift's key-path expressions thanks to swiftformat (cc @nicklockwood)
TIL about Swift's key-path expressions thanks to swiftformat (cc @nicklockwood)
The Python 3 PEG grammar has an interesting approach to error handling that I haven't seen in the literature before. Maybe something to consider for @_ohmjs…
It’s fascinating how every field/area has these little bits of implicit knowledge that many practitioners know, but rarely talk about or explicit pass on. twitter.com/steveruizok/st…
I can't predict the future but if I ever stop using this site I'll probably just try to blog more:
dubroy.com/blog/rss.xml
buttondown.email/pdubroy
dubroy.com/blog/rss.xml
buttondown.email/pdubroy
It's such a mindset shift to work on software that has exactly one user.
Sometimes I catch myself thinking things like, "What if the user passes a string containing a hyphen here?" Then I remember that the only user is _me_.
Sometimes I catch myself thinking things like, "What if the user passes a string containing a hyphen here?" Then I remember that the only user is _me_.
This particularly thing (static site generation script for my blog) is also >10 years old and I touch it once or twice a year.
That also entails a whole different set of tradeoffs than “normal” software.
That also entails a whole different set of tradeoffs than “normal” software.
It's a good feeling when a test you wrote six years ago reveals a bug in your new feature.
What programming language really got import statements right? (In terms of syntax or functionality)
"When constraints conflict there is no solution to the design problem. It is not unusual then for designers to 'relax' one or more of the constraints in order to identify some acceptable solution."
I keep thinking about this.
If "a small set of orthogonal primitives" is good, why does *no* popular language have this?
Possible explanations:
1️⃣ It's not good
2️⃣ It's good, but doesn't drive adoption
3️⃣ Number of primitives should be "just right" (not too big, not too small) twitter.com/dubroy/status/…
If "a small set of orthogonal primitives" is good, why does *no* popular language have this?
Possible explanations:
1️⃣ It's not good
2️⃣ It's good, but doesn't drive adoption
3️⃣ Number of primitives should be "just right" (not too big, not too small) twitter.com/dubroy/status/…
It's often said that programming languages should have "a small set of orthogonal primitives" but I wonder if there's any empirical basis for this?
Another possible explanation:
4️⃣ The process of adoption drives minimal languages to become less minimal.
4️⃣ The process of adoption drives minimal languages to become less minimal.
An objective comparison is tricky, but looking at # of production rules in ANTLR grammars —
Lua: 62
Smalltalk: 81
VB6: 158 + 226 lexical
C: 232
Rust: 240 + 151 lexical
Swift5: 317 + 236 lexical
All from github.com/antlr/grammars…
Lua: 62
Smalltalk: 81
VB6: 158 + 226 lexical
C: 232
Rust: 240 + 151 lexical
Swift5: 317 + 236 lexical
All from github.com/antlr/grammars…
An engineering lesson I seem to learn over, and over, and over —
Don't try to make it "clean", make it *simple*.
Don't try to make it "clean", make it *simple*.
This is especially true of anything to do with build, test, and release tools. When I try to make it "clean", I usually end up with more dependencies and more configuration.
Months or years later, I'm trying to figure out what I could possibly have been thinking.
Months or years later, I'm trying to figure out what I could possibly have been thinking.
It's kinda shocking to think that no browser JavaScript engine even had a JIT until 2008.
fwiw, Google Maps was released in 2005
fwiw, Google Maps was released in 2005
✍️ The influence of Self: dubroy.com/blog/self/
All about the Self programming language, the most influential language that most programmers have never heard of.
All about the Self programming language, the most influential language that most programmers have never heard of.
If I imagine something that would replace my use of Twitter, it'd probably look a lot more like wiki.c2.com than Mastodon.
Hard to imagine a stronger first sentence in a PL paper than this.
"We have developed and implemented techniques that double the performance of dynamically-typed object oriented languages."
From "An Efficient Implementation of SELF" — dl.acm.org/doi/pdf/10.114…
"We have developed and implemented techniques that double the performance of dynamically-typed object oriented languages."
From "An Efficient Implementation of SELF" — dl.acm.org/doi/pdf/10.114…
Pull-down graphical menus. Seems obvious but why have I never seen this before?
Source: i3s.unice.fr/~rueher/Publis…
Source: i3s.unice.fr/~rueher/Publis…
Ah, apparently it comes from Hypercard! TIL
twitter.com/modernserf/sta…
twitter.com/modernserf/sta…
I'll show myself out
I don't know what I'd do without my Buttons!
From "User-Tailorable Systems: Pressing the Issues with Buttons" dl.acm.org/doi/pdf/10.114…
From "User-Tailorable Systems: Pressing the Issues with Buttons" dl.acm.org/doi/pdf/10.114…
Just discovered sok-stories, a wonderful little app in the spirit of Etoys & KidSim for making simple hand-drawn games: sokpop.itch.io/sok-stories
(via this: brokenpencil.com/sharpener-2/ho… interview with @v21)
(via this: brokenpencil.com/sharpener-2/ho… interview with @v21)
Excited to be kicking off work on a new project with @inkandswitch!
Together with @szymon_k, @wolkenmachine, and @jameslindenbaum, I'll be working on the lab's latest experiment in *programmable ink*.
Together with @szymon_k, @wolkenmachine, and @jameslindenbaum, I'll be working on the lab's latest experiment in *programmable ink*.
The general idea of programmable ink is something that I first started exploring back CDG/HARC: dubroy.com/blog/sketches-…. But the Ink & Switch crew has gone much further and deeper than we did back then.
For a good overview of the work they've done so far, check out the talk @szymon_k did at Strange Loop a couple weeks ago.
twitter.com/strangeloop_st…
twitter.com/strangeloop_st…
There are few papers that I come back to as often as this one. Sometimes just to read the abstract.
hci.stanford.edu/dschool/resour…
hci.stanford.edu/dschool/resour…
Does anyone actually find this behavior useful?
Both the shape and the text are selected — I want both of them to shrink. Pretty much every app does it this way but it always drives me crazy.
Both the shape and the text are selected — I want both of them to shrink. Pretty much every app does it this way but it always drives me crazy.
Interestingly I think I *don't* want the stroke width to change, because in a given drawing I want everything to have the same stroke width. Guess that's also the argument for not changing the font size? twitter.com/nikitonsky/sta…
TIL about the scale tool in Figma twitter.com/imslavko/statu…
And @CuttleXYZ does what I'd like by default. twitter.com/mandy3284/stat…
I'm honestly blown away by what Ivan is doing with the FoC podcast.
Is it just my bubble, or is anyone else playing with podcasting as a *medium* like this? Worth listening to the first five minutes even if you don't care about programming. twitter.com/spiralganglion…
Is it just my bubble, or is anyone else playing with podcasting as a *medium* like this? Worth listening to the first five minutes even if you don't care about programming. twitter.com/spiralganglion…
I should also add that — beyond the way that @spiralganglion is playing with the medium — I've really been enjoy the conversations between him and @jimmyhmiller about some classic software papers.
Love to see people push the boundaries of how expressive a GUI can be. twitter.com/goodboyninja/s…
It's neat to see how early GUI systems introduced users to the mouse — "just move it around while watching the screen".
Sources —
1️⃣ Smalltalk 72 Instruction manual: bitsavers.org/pdf/xerox/smal…
2️⃣ Macintosh user manual: archive.org/details/1984ma…
1️⃣ Smalltalk 72 Instruction manual: bitsavers.org/pdf/xerox/smal…
2️⃣ Macintosh user manual: archive.org/details/1984ma…
"You control the pointer on Lisa's screen by moving the 'mouse' on your desktop."
Wait, which desktop??
(I'm assuming they didn't yet use the term "desktop" for the software thing.)
twitter.com/kosmik_app/sta…
Wait, which desktop??
(I'm assuming they didn't yet use the term "desktop" for the software thing.)
twitter.com/kosmik_app/sta…
"Captured by Narrative" would be a great title for a book I wish existed about the role of utopian visions at modern tech companies.
(Or maybe it exists? 🙏) twitter.com/aza/status/156…
(Or maybe it exists? 🙏) twitter.com/aza/status/156…
It's quite striking to read what people were saying about the internet in the early 90s.
Esther Dyson: "The fundamental thing (the Net does) is to overcome the advantages of economies of scale…so the big guys don't rule."
Esther Dyson: "The fundamental thing (the Net does) is to overcome the advantages of economies of scale…so the big guys don't rule."
Kevin Kelly: "computers…are not the beginning of authority but its end"
books.google.de/books?id=vvSVt…
books.google.de/books?id=vvSVt…
(This passage has a real "hold my beer" quality which I love)
Fred Turner's "From Counterculture to Cyberculture" talks about how this group was very steeped in the ideas from cybernetics, scenario planning, etc.
Makes it even more surprising to me that they couldn't imagine how the internet would fail to live up to those early promises.
Makes it even more surprising to me that they couldn't imagine how the internet would fail to live up to those early promises.
I can tell none of y'all have kids cause my dall-e prompts are all "anna and elsa riding horses, coloring page, super pretty, and hello kitty is there too"
In several subfields of CS (e.g. PL, HCI, graphics) there's a feeling that good systems research is too hard to publish.
In programming languages, SIGPLAN actually has an award for the most impactful systems. So I wondered — how "publishable" were papers on those systems?
In programming languages, SIGPLAN actually has an award for the most impactful systems. So I wondered — how "publishable" were papers on those systems?
Of the 12 winners, only 3 — WebAssembly, Pin, and LLVM — had a canonical systems paper published in a SIGPLAN venue (conference or journal).
Another four — Racket, Z3, Jikes, and GHC — had a systems paper published in another major publication.
I'd count these as "misses" for SIGPLAN, as they were all published in venues that are ranked below the top SIGPLAN venues (PLDI, POPL, TOPLAS, etc.)
I'd count these as "misses" for SIGPLAN, as they were all published in venues that are ranked below the top SIGPLAN venues (PLDI, POPL, TOPLAS, etc.)
(Of course, my assumption here is that the authors would have preferred to publish in one of the top SIGPLAN venues if they could have. If that's wrong, I'm happy to be corrected here.)
Of the remaining 5 —
• The CompCert and Scala papers weren't published in major venues (not indexed by dblp)
• Coq doesn't have a canonical publication that I'm aware of
• Neither do V8 and GCC; they also don't come from academia, so maybe the authors didn't care to publish
• The CompCert and Scala papers weren't published in major venues (not indexed by dblp)
• Coq doesn't have a canonical publication that I'm aware of
• Neither do V8 and GCC; they also don't come from academia, so maybe the authors didn't care to publish
So, ignoring V8 & GCC…
Of 10 projects that won a SIGPLAN award for "significant impact on PL research, implementations & tools"
only 3 had a systems paper in a SIGPLAN venue.
That seems low to me, and suggests that it is indeed too hard to publish systems work in those venues
Of 10 projects that won a SIGPLAN award for "significant impact on PL research, implementations & tools"
only 3 had a systems paper in a SIGPLAN venue.
That seems low to me, and suggests that it is indeed too hard to publish systems work in those venues
Caveats and fine print —
The full list of papers is here: docs.google.com/spreadsheets/d…. I used citation counts and abstracts to judge what the "canonical systems paper" was for each project. If you think I got it wrong, let me know!
The full list of papers is here: docs.google.com/spreadsheets/d…. I used citation counts and abstracts to judge what the "canonical systems paper" was for each project. If you think I got it wrong, let me know!
A correction —
a Jikes system paper (it was called Jalapeño then) was published at OOPSLA '99.
So, 4 of 10 had a systems paper in a SIGPLAN venue.
twitter.com/JAldrichPL/sta…
a Jikes system paper (it was called Jalapeño then) was published at OOPSLA '99.
So, 4 of 10 had a systems paper in a SIGPLAN venue.
twitter.com/JAldrichPL/sta…
I wonder how much the "death of systems research" is related to the increased importance of paper counts.
Postman said "every technology has predisposition to being used in certain ways"
Maybe writing a great systems paper is just much harder? (vs. algorithms, techniques, etc.) twitter.com/dubroy/status/…
Postman said "every technology has predisposition to being used in certain ways"
Maybe writing a great systems paper is just much harder? (vs. algorithms, techniques, etc.) twitter.com/dubroy/status/…
"Writing papers is a primary mechanism for doing research…not just for reporting it"
From "How to write a great research paper" by @simonpj0: microsoft.com/en-us/research…
From "How to write a great research paper" by @simonpj0: microsoft.com/en-us/research…
Like it's just so much harder to achieve what SPJ describes here with systems work
"Writing papers is a primary mechanism for doing research…not just for reporting it"
From "How to write a great research paper" by @simonpj0: microsoft.com/en-us/research…
From "How to write a great research paper" by @simonpj0: microsoft.com/en-us/research…
@simonpj0 Reminds me of Amazon's "write the press release first"
Interesting…apparently PDF ("Camelot Project") was originally conceived as a stopgap solution for hardware that was not powerful enough for Postscript.
Source: pdfa.org/norm-refs/warn…
Source: pdfa.org/norm-refs/warn…
They say you can't judge a book by its cover but damn
Btw, in case it's not obvious, I like it (and the book seems pretty good too)
Ok so I ended up making a PDF playground: dubroy.com/pdf-playground/. Thanks to @pdfjs it was actually super easy.
Sharing here in case anyone else wants to experience the weird and wonderful world of the PDF stack language. twitter.com/dubroy/status/…
Sharing here in case anyone else wants to experience the weird and wonderful world of the PDF stack language. twitter.com/dubroy/status/…
Thinking about a web-based REPL/playground for the PDF language. Does this exist somewhere??
@pdfjs Shoutout to @gendignoux for the cheat sheet on PDF Graphics Operators: github.com/gendx/pdf-chea…
Thinking about a web-based REPL/playground for the PDF language. Does this exist somewhere??
…or for Postscript?
let's goooo
Anyone have a good example of a programming language construct that *only* exists for perf reasons?
i.e. where you can achieve the same thing with a more general construct, but there is a more specific thing that's "equivalent to X, but much faster"
i.e. where you can achieve the same thing with a more general construct, but there is a more specific thing that's "equivalent to X, but much faster"
Context: I'm looking at low-hanging perf improvements in @_ohmjs. I could do them as optimizations you get "for free", but that can lead to opaque (and brittle) heuristics and non-obvious perf footguns.
Or, I could add more specialized constructs that are always optimizable.
Or, I could add more specialized constructs that are always optimizable.
Thanks for the answers so far! I should add that I'm most interested in
1️⃣ examples from higher-level languages
2️⃣ cases that involve only a "syntactically-local" change (e.g., adding an annotation)
1️⃣ examples from higher-level languages
2️⃣ cases that involve only a "syntactically-local" change (e.g., adding an annotation)
"One of the great advantages of print based debugging for the infrequent developer is that it requires essentially no extra knowledge. We almost always know how to print things in the language…"
utcc.utoronto.ca/~cks/space/blo…
utcc.utoronto.ca/~cks/space/blo…
From The Long Nose of Innovation by @wasbuxton:
"Innovation is not about invention. An idea may well start with an invention, but the bulk of the work and creativity is in that idea's augmentation and refinement"
lri.fr/~mbl/ENS/FONDI… twitter.com/pcwalton/statu…
"Innovation is not about invention. An idea may well start with an invention, but the bulk of the work and creativity is in that idea's augmentation and refinement"
lri.fr/~mbl/ENS/FONDI… twitter.com/pcwalton/statu…
“A fantasy console is like a regular console, but without the inconvenience of actual hardware. […] It is similar to a retro game emulator, but for a machine that never existed.” lexaloffle.com/pico-8.php?pag…
Whoa, the PICO-8 png-based cartridge format is pretty cool:
"Cart data is stored using a steganographic process. […] The image is 160 pixels wide and 205 pixels high, for a possible storage of 32,800 (0x8020) bytes."
pico-8.fandom.com/wiki/P8PNGFile…
"Cart data is stored using a steganographic process. […] The image is 160 pixels wide and 205 pixels high, for a possible storage of 32,800 (0x8020) bytes."
pico-8.fandom.com/wiki/P8PNGFile…
I thought this idea (that science is primarily about falsification) had been pretty soundly rejected by now?
A couple examples from "The Meaning of Science" by Tim Lewens:
From "What Science Is And How It Really Works" by James C. Zimring:
Coryn Bailer-Jones (Max Planck Institute for Astronomy) on "Why science is not really about falsification" — www2.mpia-hd.mpg.de/homes/calj/fal…
One of my all-time favourites. I’d love to see a modern take on Lifestreams to see how the ideas hold up today. twitter.com/jackrusher/sta…
This is an amazing resource! All of technical video programs from CHI '83 to 2002 are now on YouTube thanks to @hcil_umd. youtube.com/c/acmsigchi/pl… twitter.com/jackrusher/sta…
The internet makes more sense when you accept that 99% of the things you read are content marketing.
This was a flippant tweet but I was struck by the fact that I use multiple workarounds to find “legitimate” information about certain topics.
The +reddit trick is a common one for product reviews. Another one I use for technical and popsci stuff is to search Google Scholar.
The +reddit trick is a common one for product reviews. Another one I use for technical and popsci stuff is to search Google Scholar.
This is one of the most inspiring Cedar-related demos that I’ve run across. There is also good paper that covers some of the implementation details: dl.acm.org/doi/pdf/10.114… twitter.com/jackrusher/sta…
An insightful post. I had similar thoughts when “Simple Made Easy” first made the rounds, but this post argues the point much better than I ever could.
“Simple tools do not necessarily do better at helping users manage complexity than more complex tools” t.co/0iCZizuxmP
“Simple tools do not necessarily do better at helping users manage complexity than more complex tools” t.co/0iCZizuxmP
It is probably something that’s best discussed with concrete examples. Here’s one from lobste.rs/s/zgwr6f/super…
My take us actually the opposite; I think it’s a good thing that JavaScript now has proper classes, rather than many different slightly incompatible implementations of the same concept.
See also mobile.twitter.com/dubroy/status/…
It's often said that programming languages should have "a small set of orthogonal primitives" but I wonder if there's any empirical basis for this?
Thinking about why no time-based organization system works as well as my phone’s photo stream.
It’s super easy to find screenshots of directions, confirmations, receipts, etc. Email inbox, Google Docs “Recent”, and similar are somehow inferior.
It’s super easy to find screenshots of directions, confirmations, receipts, etc. Email inbox, Google Docs “Recent”, and similar are somehow inferior.
One reason is that I can easily orient myself in time when I see thumbnails of photos I took. Any other temporal list loses resolution beyond the last week or two.
But Google has access to my photos! They could put thumbnails in Gmail, Docs, etc.
Another reason is that my photo stream is totally in my control — it’s pretty much guaranteed to be relevant to me. That’s not true for other things (bulk mail, docs shared with me, etc.)
Things in the photo stream also stay put. GMail threads, “recent docs”, etc. are much more dynamic and you can’t rely on something being go in the same place today as it was yesterday.
Maybe it’s time for another run at the Lifestreams idea? cs.yale.edu/homes/freeman/…
On a month-long camping trip across Canada. It’s mind-boggling just how many custom reservation systems exist — most of them quirky, unusable, or just plain broken.
50+ years into interactive computing I feel like we should have this one nailed?
50+ years into interactive computing I feel like we should have this one nailed?
It’s interesting — lots of people talking about alternative models for research funding, but I don’t see anyone looking for new ways to get smart, ambitious people to work on something together.
Many people assume funding is the problem, but at least for software, the biggest gap I see is in structures for collaboration.
Lots of people willing to self-fund their research work, but it’s hard to have much impact if you go it alone.
Lots of people willing to self-fund their research work, but it’s hard to have much impact if you go it alone.
I’m imagining a weird hybrid of @recursecenter and @inkandswitch
An interesting perspective on Logo and getting kids interested in programming.
Is there something in the spirit of Logo but for shader programming? That might show more of the “magic creative potential” twitter.com/presstube/stat…
Is there something in the spirit of Logo but for shader programming? That might show more of the “magic creative potential” twitter.com/presstube/stat…
Maybe the key is to show "amplification"…fractals and L-systems, game of life, etc. are some good examples. twitter.com/andy_matuschak…
You'll design a better system if you continuously evaluate it from at least two different viewpoints.
Something that looks "just right" from one perspective may be totally wrong from another.
Something that looks "just right" from one perspective may be totally wrong from another.
I wonder how much of the benefit of formal methods, TDD, and testing in general can be explained by this.
Nice to see that people are still thinking about the low-level building blocks of UI toolkits. Some interesting design decisions in here too. twitter.com/nikitonsky/sta…
I mean this alone is "you had me at hello"
Really enjoyed @danieljacksoncs's new book "The Essence of Software". His way of formalizing the conceptual models behind user interfaces seems both radical and and obvious (in the best way!)
press.princeton.edu/books/hardcove…
press.princeton.edu/books/hardcove…
@danieljacksoncs Beyond the content, a few things I loved about the book's form:
• Separate chapter of extended footnotes, which you could read on their own
• The interaction diagrams for concept composition 😘👌
• Separate indices for applications, names, topics, and concepts
• Separate chapter of extended footnotes, which you could read on their own
• The interaction diagrams for concept composition 😘👌
• Separate indices for applications, names, topics, and concepts
Also, the Déjà Vu platform (a project from Daniel's research group), is built on Ohm 😊.
twitter.com/_ohmjs/status/…
twitter.com/_ohmjs/status/…
I wish there were more really great mouse-oriented UIs. VisualAge Smalltalk was one of the best I ever used, for two reasons:
1️⃣ Ubiquitous context menus (speed and discoverability)
2️⃣ "Remove from list" to cull items that you're done with, or are irrelevant to your task
1️⃣ Ubiquitous context menus (speed and discoverability)
2️⃣ "Remove from list" to cull items that you're done with, or are irrelevant to your task
Examples of "Remove from list" —
- Reviewing diffs: you can remove method/class/module when you're done reviewing, and slowly prune down the list.
- Browsing senders/implementors: you can quickly remove items that are not relevant.
- Reviewing diffs: you can remove method/class/module when you're done reviewing, and slowly prune down the list.
- Browsing senders/implementors: you can quickly remove items that are not relevant.
Oberon and Acme are some other examples of powerful mouse-oriented UIs. What are some others?
I really like what @pketh is doing with @KinopioClub, with crossing selection and things like "Select all below" twitter.com/KinopioClub/st…
@jackrusher mentioned Cedar, and I managed to find a great demo video from @ComputerHistory: youtube.com/watch?v=z_dt7N…
twitter.com/jackrusher/sta…
twitter.com/jackrusher/sta…
✍️ Core dumps, feedback loops, and a game of telephone: dubroy.com/blog/core-dump…
A story about one of the most memorable debugging experiences of my career so far.
A story about one of the most memorable debugging experiences of my career so far.
A personal update —
I left Sourcegraph last month, for the wholly unoriginal (but also true) reason that I want to take an extended break to focus on family.
(Btw: great company, great people, and they're hiring! boards.greenhouse.io/sourcegraph91?…)
I left Sourcegraph last month, for the wholly unoriginal (but also true) reason that I want to take an extended break to focus on family.
(Btw: great company, great people, and they're hiring! boards.greenhouse.io/sourcegraph91?…)
Not sure what's next (or when)…the only immediate plan is a road trip across Canada in May/June.
If anyone wants to chat, I've got lots of time in the next few weeks…my DMs are open.
If anyone wants to chat, I've got lots of time in the next few weeks…my DMs are open.
In 2022 I didn't expect APL to have an online REPL+tutorial that beats many modern languages. It's quite nice: tryapl.org
I love how the weird symbols (which APL is obviously known for) are such a key part of the design. Honestly if I was a kid I think I'd find this much cooler than Scratch or Code.org or whatever.
I love the use of animated "small multiples" to compare performance of different algorithms. Much more striking and memorable than a bar chart. twitter.com/keenanisalive/…
Academic papers are pretty great actually.
You know they'll tell you:
- what the problem is
- a high-level description of their solution
- how it compares to other solutions
…and usually in the first 2-3 pages.
95% of blog posts / landing pages can't manage to do this.
You know they'll tell you:
- what the problem is
- a high-level description of their solution
- how it compares to other solutions
…and usually in the first 2-3 pages.
95% of blog posts / landing pages can't manage to do this.
I got more out of these two paragraphs on the *first page* of the QuickCheck paper than I did from a dozen blog posts on property-based testing. cs.tufts.edu/~nr/cs257/arch…
I wish it would be easier to automate stuff like this!
Sometimes there's such a huge gap between the informal solution (drag the slider to make the line as spiky as possible) and the formal one.
(The whole thread is interesting but this part stuck out to me.) twitter.com/benmschmidt/st…
Sometimes there's such a huge gap between the informal solution (drag the slider to make the line as spiky as possible) and the formal one.
(The whole thread is interesting but this part stuck out to me.) twitter.com/benmschmidt/st…
Something I've noticed —
Breakpoint debugging feels more cognitively demanding to me. I feel like I have to stop, make a plan, and then (carefully) execute it.
With print statements, it feels like I can proceed more incrementally and follow the "information scent". twitter.com/thorstenball/s…
Breakpoint debugging feels more cognitively demanding to me. I feel like I have to stop, make a plan, and then (carefully) execute it.
With print statements, it feels like I can proceed more incrementally and follow the "information scent". twitter.com/thorstenball/s…
Years ago @johnjbarton introduced me to the concept of "querypoint debugging". I'd love for this to become a thing. infoscience.epfl.ch/record/167390/…
My take: the growing complexity of software is continually moving the goalposts of what is considered Real Programming™️.
So the statement below will always ring true and yet more and more people will be doing things that used to require "programming". twitter.com/msimoni/status…
So the statement below will always ring true and yet more and more people will be doing things that used to require "programming". twitter.com/msimoni/status…
Snopes, but for studies from psychology / social science that are referenced in all the business books, TED talks, etc.
"Phillip Zimbardo and his colleagues from Stanford University conducted a novel experiment…" 🤨
"Phillip Zimbardo and his colleagues from Stanford University conducted a novel experiment…" 🤨
I want to spend a month going deep on a programming language that I'm not very familiar with.
What language would you recommend and why?
(Not eligible: JS, TS, Python, Rust, C, C++, Java, Smalltalk)
What language would you recommend and why?
(Not eligible: JS, TS, Python, Rust, C, C++, Java, Smalltalk)
Thanks for the suggestions! The most common answers so far:
- Prolog or Datalog
- Elixir and/or Erlang
- APL + variants (BQN, Q)
- Clojure
- Haskell
- Forth
- Prolog or Datalog
- Elixir and/or Erlang
- APL + variants (BQN, Q)
- Clojure
- Haskell
- Forth
Update: Forth is fun.
Lately I've been thinking a lot more about "casual programming" rather than "end-user programming".
I think it's much more about the task/context than it is about the person. The stuff in the post clearly isn't end-user programming but it is casual programming! twitter.com/b0rk/status/15…
I think it's much more about the task/context than it is about the person. The stuff in the post clearly isn't end-user programming but it is casual programming! twitter.com/b0rk/status/15…
Funny that there was a time where you had to explain why "display editors" (Emacs, vi, etc.) were easier to use than line editors.
From dl.acm.org/doi/abs/10.555…
From dl.acm.org/doi/abs/10.555…
Thinking of doing a "ways of mutating state" blog post, similar to my posts on handling user input. Good idea or bad?
twitter.com/dubroy/status/…
twitter.com/dubroy/status/…
Part of me is afraid that I'll end up having to write a monad tutorial.
There's this idea that programming needs large blocks of uninterrupted time — maker's schedule vs. manager's schedule, etc.
I wonder why more people don't realize that being productive with a busy schedule is a skill you can get better at.
I wonder why more people don't realize that being productive with a busy schedule is a skill you can get better at.
✍️ Getting things done (in small increments): dubroy.com/blog/getting-t…
About some habits and tactics I've adopted to help me be productive when I only have small chunks of uninterrupted time.
About some habits and tactics I've adopted to help me be productive when I only have small chunks of uninterrupted time.
It's really quite shocking when you realize how much of our culture is shaped around the ideals of competition.
Probably also no small part of the reason that we default to either/or thinking so much of the time. twitter.com/gnrosenberg/st…
Probably also no small part of the reason that we default to either/or thinking so much of the time. twitter.com/gnrosenberg/st…
No Contest by @alfiekohn opened my eyes to this: amazon.com/No-Contest-Cas…
He quotes Morton Deutsch on the competitive approach to (someone must "win") vs a cooperative approach to approach: "conflicting interests as a mutual problem to be solved by collaborative effort."
He quotes Morton Deutsch on the competitive approach to (someone must "win") vs a cooperative approach to approach: "conflicting interests as a mutual problem to be solved by collaborative effort."
It's often said that programming languages should have "a small set of orthogonal primitives" but I wonder if there's any empirical basis for this?
A highly relevant thread (thx @missingfaktor): twitter.com/slava_pestov/s…
The creator of Céu (ceu-lang.org) on the relationship between structured concurrency libs like Trio, Effection, etc. and the Esterel-derived imperative synchronous languages. twitter.com/_fsantanna/sta…
"The amazing thing to me is that, once I have the photo, my instinct is to accept the photo as objective reality. If the photo and my drawing disagree, it must be that the drawing is wrong." aaronhertzmann.com/2022/02/28/how…
In my mind there is a genre called "weird computing" and ToonTalk is squarely in it.
Lots of stuff by @rsnous and @neilsardesai too
twitter.com/dubroy/status/…
Lots of stuff by @rsnous and @neilsardesai too
twitter.com/dubroy/status/…
Can't believe I forgot to mention ToonTalk! (thx @abecedarius)
• Drag numbers on top of each other to add them (and a mouse comes to smash them together!)
• Use a (literal) scale to compare numbers
• Store values in nests
etc.
toontalk.github.io/ToonTalk/
• Drag numbers on top of each other to add them (and a mouse comes to smash them together!)
• Use a (literal) scale to compare numbers
• Store values in nests
etc.
toontalk.github.io/ToonTalk/
Most visual programming languages make limited use of the visual channel — the program structure is represented visually, but not much else. Usually the shapes and colors they use have an abstract (symbolic) meaning, not a concrete one.
What are some different approaches?
What are some different approaches?
One approach is graphical rewrite rules, or "visual before-after rules". It's a more concrete notion of visual programming: the program actually looks like the output.
Examples —
👉 AgentSheets: researchgate.net/profile/Alexan…
👉 KidSim / Stagecast Creator: acypher.com/Publications/C…
Examples —
👉 AgentSheets: researchgate.net/profile/Alexan…
👉 KidSim / Stagecast Creator: acypher.com/Publications/C…
Mikael Kindborg's work on "comic strip programs" addresses some of the limitations of graphical rewrite rules.
This uses more symbolic representation, based on the visual language of comics.
📄 Comic Strip Programs: Beyond Graphical Rewrite Rules citeseerx.ist.psu.edu/viewdoc/downlo…
This uses more symbolic representation, based on the visual language of comics.
📄 Comic Strip Programs: Beyond Graphical Rewrite Rules citeseerx.ist.psu.edu/viewdoc/downlo…
Squeak eToys has primitives for acting on visual conditions, e.g., "square overlaps line" or "car's 🟦 sees ⬜️".
This gives directness: the group of shapes isn't just a representation of the object, it *is* the object.
🎥 Squeak racetrack tutorial: youtube.com/watch?v=34cWCn…
This gives directness: the group of shapes isn't just a representation of the object, it *is* the object.
🎥 Squeak racetrack tutorial: youtube.com/watch?v=34cWCn…
There are also some visually-oriented esolangs.
Piet is probably the most well-known: dangermouse.net/esoteric/piet/…
Orca by @hundredrabbits is a 2D language where spatial relationships are semantically meaningful: metasyn.github.io/learn-orca/
Piet is probably the most well-known: dangermouse.net/esoteric/piet/…
Orca by @hundredrabbits is a 2D language where spatial relationships are semantically meaningful: metasyn.github.io/learn-orca/
What are some other approaches to visual programming? I'd love to see more examples of using visual channel in interesting ways…beyond what you usually see in blocks-based languages (e.g. Scratch) or flowcharts / nodes-and-wires (e.g. Quartz Composer).
I should also mention @mandy3284's work!
Recursive drawing: recursivedrawing.com
Shadershop: tobyschachman.com/Shadershop/
Apparatus: aprt.us
All domain-specific tools that are excellent examples of truly leveraging the visual aspects in a fundamental way.
Recursive drawing: recursivedrawing.com
Shadershop: tobyschachman.com/Shadershop/
Apparatus: aprt.us
All domain-specific tools that are excellent examples of truly leveraging the visual aspects in a fundamental way.
Can't believe I forgot to mention ToonTalk! (thx @abecedarius)
• Drag numbers on top of each other to add them (and a mouse comes to smash them together!)
• Use a (literal) scale to compare numbers
• Store values in nests
etc.
toontalk.github.io/ToonTalk/
• Drag numbers on top of each other to add them (and a mouse comes to smash them together!)
• Use a (literal) scale to compare numbers
• Store values in nests
etc.
toontalk.github.io/ToonTalk/
Spreadsheets for Images directly addresses the limitations of node-based VPLs:
"Flow charts spend their screen real estate on operators and their interconnections, which becomes uninteresting once the flow chart has been specified"
twitter.com/disconcision/s…
"Flow charts spend their screen real estate on operators and their interconnections, which becomes uninteresting once the flow chart has been specified"
twitter.com/disconcision/s…
This seems like a great way to encourage open-ended exploration in a playground-style tool.
A problem with many so-called playgrounds is that a beginner has no idea what they can even do with it! twitter.com/Wattenberger/s…
A problem with many so-called playgrounds is that a beginner has no idea what they can even do with it! twitter.com/Wattenberger/s…
In 2022, I want to start writing on my blog a lot more often — my goal is at least a post per month.
I post all new articles here, but you can also subscribe by email: buttondown.email/pdubroy
I post all new articles here, but you can also subscribe by email: buttondown.email/pdubroy
✍️ Handing user input with structured concurrency: dubroy.com/blog/handling-…
This is a follow-up to my previous blog post, "Three ways of handling user input": twitter.com/dubroy/status/…
This is a follow-up to my previous blog post, "Three ways of handling user input": twitter.com/dubroy/status/…
Offensive-defensive citation
Software criticism
This has a strong "Kill Math" vibe to it. twitter.com/abakcus/status…
Still thinking about this…
One take is that this is a clever visual proof of a deep idea.
Another take is that it's a trivial idea that's totally obscured by the symbolic representation.
(I honestly can't decide.)
One take is that this is a clever visual proof of a deep idea.
Another take is that it's a trivial idea that's totally obscured by the symbolic representation.
(I honestly can't decide.)
What's the best way to say it? (e.g. for a tool / library)
Today I discovered that there are online archives of the SIGGRAPH art show going back to the 80s (!)
1985 was 👌: digitalartarchive.siggraph.org/exhibition/sig…
1985 was 👌: digitalartarchive.siggraph.org/exhibition/sig…
Cybernetic Neckpiece (with on-board microcomputer)
digitalartarchive.siggraph.org/artwork/vernon…
digitalartarchive.siggraph.org/artwork/vernon…
Is there a general term for a function that is asymptotically more complex to solve, vs. verifying a solution?
It's related to P vs NP and one-way functions, but I'm taking about something like: O(n²) to solve and O(n) to check a solution.
It's related to P vs NP and one-way functions, but I'm taking about something like: O(n²) to solve and O(n) to check a solution.
Context —
I have a hunch that it's related to a useful definition of "declarative programming". The usual definition I've heard is "describe what you want to do, not how you want to do it" which imo is very vague.
I have a hunch that it's related to a useful definition of "declarative programming". The usual definition I've heard is "describe what you want to do, not how you want to do it" which imo is very vague.
Also related — "Defining syntactic sugar": loup-vaillant.fr/articles/synta…
There's such a huge difference between reading a paper about an algorithm/system/etc., and trying to implement it yourself.
I read the paper and think "I get it".
I try to implement it and realize I didn't get it *at all*.
I read the paper and think "I get it".
I try to implement it and realize I didn't get it *at all*.
(This tweet brought to you by Concurrent ML.)
Context: I'm still exploring models for concurrency as discussed in my last blog post. Got turned on to CML by @andywingo's excellent articles about it, e.g. wingolog.org/archives/2017/….
twitter.com/dubroy/status/…
Context: I'm still exploring models for concurrency as discussed in my last blog post. Got turned on to CML by @andywingo's excellent articles about it, e.g. wingolog.org/archives/2017/….
twitter.com/dubroy/status/…
@andywingo Related — @danluu on noticing "the feeling of glossing over something without really understanding it".
danluu.com/cocktail-ideas/
danluu.com/cocktail-ideas/
Always nice to discover projects that are using Ohm 😊
Here's one from @mcgillu twitter.com/_ohmjs/status/…
Here's one from @mcgillu twitter.com/_ohmjs/status/…
I love this notion of "teaspoon" languages from @guzdial and Tamara Schreiner.
"TSP languages are about making it easier to integrate computing to enhance learning in other subjects…"
web.eecs.umich.edu/~mjguz/uploads…
"TSP languages are about making it easier to integrate computing to enhance learning in other subjects…"
web.eecs.umich.edu/~mjguz/uploads…
@guzdial In many ways this reminds me of Etoys (vpri.org/pdf/hc_etoys_s…), but it suggests a slightly different way of delimiting the conceptual space of the "task at hand" vs. the more general purpose system underneath.
It's probably common but this is actually how I do testing in the one "production" spreadsheet that I have (for personal finance stuff).
+ conditional formatting that turns the cell background read if the value isn't "ok" twitter.com/tophtucker/sta…
+ conditional formatting that turns the cell background read if the value isn't "ok" twitter.com/tophtucker/sta…