# Susam Pal

Susam's Feed

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Childhood Computing

DevFeed: [Childhood Computing](<https://devfeed.tech/articles/childhood-computing-37662.md>)

Original publisher: [Read original article](<https://susam.net/childhood-computing.html>)

Published: 2026-05-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [ibm](<https://devfeed.tech/topics/ibm.md>), [pc](<https://devfeed.tech/topics/pc.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [code](<https://devfeed.tech/tags/code.md>), [computer](<https://devfeed.tech/tags/computer.md>), [computing](<https://devfeed.tech/tags/computing.md>), [dos](<https://devfeed.tech/tags/dos.md>), [graph](<https://devfeed.tech/tags/graph.md>), [ibm](<https://devfeed.tech/tags/ibm.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pc](<https://devfeed.tech/tags/pc.md>), [programming](<https://devfeed.tech/tags/programming.md>), [saving](<https://devfeed.tech/tags/saving.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

A personal essay recalls learning programming in a school computer lab in 1992 using IBM PC-compatible machines, MS-DOS, floppy disks, and Logo. Limited computer access led the author to write and test programs on paper, while classmates copied and modified one program in an early informal form of software sharing.

### Source excerpt

I recently stumbled upon a nice blog post titled Childhood Computing. It made me think about my own childhood computing experience. I am much older than the author of the aforementioned post, but like them, I too love computers. I have for most of my life. In 1992, when I was eight years old, my parents decided to transfer me to a new school because of its curriculum. They did not know it then, and it probably did not even matter to them, but this new school had a computer lab. That was quite remarkable for its time. I grew up in a very tiny industrial town. The computers in the lab were hand-me-downs from the silica factory around which the town was built. We got only about two hours of time per month in the computer lab, but the little time I got there opened up a whole new world for me. Before entering the lab, we had to leave our shoes at the door. 'These are expensive machines. We must keep them free of dust', our teacher would say. It was a ritual. The computers were very old IBM PC compatible machines, mostly with monochrome cathode-ray tube (CRT) monitors. They had no hard disks at all. They had a few hundred kilobytes of RAM. Every time, we performed the same ritual. Insert a 5¼-inch floppy disk to load MS-DOS into memory. Then insert another disk to load LOGO.COM. Then write small Logo programs and watch the turtle move. I have written more about that early Logo programming experience here: FD 100. Further, since there were no hard disks and storage was at a premium, nothing was ever saved. The moment you turned off the computer, all your work vanished. So saving a program meant literally writing the program down in a physical notebook. Video capture of IBM Personal Computer Logo [MP4] Since I had so little time with an actual computer, most of my Logo programming happened with pen and paper at home. I would 'test' my programs by tracing the results on graph paper. Eventually, I would get about thirty minutes of actual computer time in the lab to run them

## Why Developers Should Avoid Reimplementing Browser Features in Website Design

DevFeed: [Why Developers Should Avoid Reimplementing Browser Features in Website Design](<https://devfeed.tech/articles/don-t-roll-your-own-37666.md>)

Original publisher: [Read original article](<https://susam.net/do-not-roll-your-own.html>)

Published: 2026-05-23T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [web design](<https://devfeed.tech/topics/web-design.md>), [Website](<https://devfeed.tech/topics/website.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [developers](<https://devfeed.tech/tags/developers.md>), [modern-web-design](<https://devfeed.tech/tags/modern-web-design.md>), [web-design](<https://devfeed.tech/tags/web-design.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This opinion article argues that web developers should avoid reimplementing browser-provided behaviors such as scrolling, link navigation, text selection, context menus, copy and paste, password fields, and date pickers when users depend on the native behavior. It compares this practice with the cryptographic principle of avoiding private, unreviewed implementations.

### Source excerpt

This is going to be a rant about modern web design practices. But before I get to that, let me begin with a familiar principle from the world of cryptography. Among software developers, and especially among those who work on security-sensitive systems, there is a well-known maxim: Don't roll your own crypto. This does not mean that nobody is allowed to write cryptographic code. Someone has to. It means that, for ordinary production software that protects sensitive data of users, we should not rely on a private, unreviewed implementation that has not been vetted by the wider software development community. We should use established, vetted software packages or tools wherever possible. Fortunately, it is now standard industry practice to avoid rolling your own crypto and instead use cryptographic algorithms and packages that have been peer reviewed and stood the test of time. It wasn't so some twenty years ago. I have seen several flawed home-grown RC4 implementations early in my career, with issues like improper initialisation vectors, predictable keystreams and partial leakage of plaintext into ciphertext, putting sensitive data of users at risk. But today, major e-commerce websites or banks typically do not use home-grown cryptography for its web services. In fact, in regulated domains such as payments, healthcare and personal data processing, doing so could violate requirements for strong cryptography, possibly leading to hefty financial penalties. Website design is obviously not cryptography. A broken scroll bar is not the same kind of failure as a broken encryption scheme. But I wish there were a similar maxim for website design as well. There are many aspects of websites where, I think, developers should not be rolling their own X, especially when X is something browsers already do well and something users depend on every day. Here I present a list of such X. Don't roll your own page scrolling. Don't roll your own link navigation. Don't roll your own text selec

## Five Minutes of Prime Time

DevFeed: [Five Minutes of Prime Time](<https://devfeed.tech/articles/five-minutes-of-prime-time-37667.md>)

Original publisher: [Read original article](<https://susam.net/five-minutes-of-prime-time.html>)

Published: 2026-05-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [games](<https://devfeed.tech/tags/games.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [number](<https://devfeed.tech/tags/number.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>), [rsa](<https://devfeed.tech/tags/rsa.md>)

### AI overview

A personal story about nerd culture at RSA, including mathematics and physics forums, monthly team challenges, and a five-minute contest to write as many prime numbers between 1 and 1000 as possible.

### Source excerpt

Let me share a very silly story from roughly 18 years ago! In 2008, I joined RSA, the network security company named after the initials of the inventors of the RSA algorithm, Rivest, Shamir and Adleman, who were also the founders of RSA, the company. There was a bit of a nerd culture in the workplace where topics like prime numbers, combinatorics, probability theory, etc. were discussed fervently. A prime-number employee number was considered a lucky charm. I had a rather nice large five-digit prime number as my employee number, which I remember being quite pleased about. There were internal forums for almost all kinds of topics. A few I remember fondly were a mathematics forum where colleagues would challenge each other with mathematical puzzles and a similar physics forum where, for some reason, crafting contrived paradoxes using special and general relativity and putting them up for debate was a common activity. The participants would analyse each paradox to determine if it truly was one or if it could be resolved into something that was no longer a paradox. I loved hanging out on those forums and made many friends there. The mathematics forum, in particular, gave me plenty of fun problems to think about. In fact, my Langford Pairing (2011) post was the result of a question I had stumbled upon there. The human resources (HR) department used to organise afternoon games once every month where people would self-organise into teams and solve a small challenge. There was a cash prize for the winning team each time. The HR folks were very well aware of the nerd culture and the fascination with prime numbers, but they probably did not know enough about exactly what type of problems we were fascinated with. So in one of the monthly game events, the HR team gave us this challenge. Write as many prime numbers between 1 and 1000 as you can in 5 minutes. The 5-minute timer started immediately. Really, that was the challenge. We all looked at each other in surprise, wondering

## The Problem of Pedagogy in Advanced Mathematics

DevFeed: [The Problem of Pedagogy in Advanced Mathematics](<https://devfeed.tech/articles/the-problem-of-pedagogy-in-advanced-mathematics-37661.md>)

Original publisher: [Read original article](<https://susam.net/advanced-mathematics-pedagogy.html>)

Published: 2026-05-11T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [advanced](<https://devfeed.tech/tags/advanced.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [students](<https://devfeed.tech/tags/students.md>), [theory](<https://devfeed.tech/tags/theory.md>)

### AI overview

The article argues that pedagogy remains a serious problem in advanced mathematics. It focuses on graduate-level textbooks whose proofs are often presented as high-level outlines, leaving students and even professional mathematicians to reconstruct omitted intermediate steps. It advocates explanations that are correct, complete, and accessible to reasonably motivated students.

### Source excerpt

It is a commonly held opinion that educational institutions could do more to improve the pedagogy of mathematics. This is especially applicable to primary and secondary schools, where students are first exposed to mathematics as a formal subject, along with other new subjects. Poor exposition can turn students away from mathematics for a lifetime. Only the highly motivated ones continue to engage with the subject. This is very unfortunate because mathematics is a beautiful subject and it is filled with wonder. It also teaches rigour in reasoning, clarity of thought and the discipline of constructing arguments from first principles to obtain intricate and often beautiful results. What is perhaps less known is that pedagogy is a problem even for graduate-level mathematics students and professional mathematicians. The proofs in many graduate-level mathematics textbooks are, in my humble opinion, not really proofs at all. They are closer to high-level outlines of proofs. The authors simply do not show their work. The student then has to put in an extraordinary amount of effort to understand and justify each line. Sometimes a 10-line argument in a textbook might expand into a 10-page proof if the student really wants to convince themselves that the argument works. I am not a mathematician, but out of personal interest, I have worked with professional mathematicians in the past to help refine notes that explain certain intermediate steps in textbooks (for example, Galois Theory by Stewart, in a specific case). I was surprised to find that it was not just me who found the intermediate steps of certain proofs obscure. Even professional mathematicians who had studied the subject for much of their lives found them obscure. It took us two days of working together to untangle a complicated argument and present it in a way that satisfied three properties: correctness, completeness and accessibility to a reasonably motivated student. There is a reason why jokes like 'proof by obv

## I Will Not Add Query Strings to Your URLs

DevFeed: [I Will Not Add Query Strings to Your URLs](<https://devfeed.tech/articles/i-will-not-add-query-strings-to-your-urls-37669.md>)

Original publisher: [Read original article](<https://susam.net/no-query-strings.html>)

Published: 2026-05-09T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [CSS](<https://devfeed.tech/topics/css.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [console](<https://devfeed.tech/topics/console.md>), [file](<https://devfeed.tech/topics/file.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [css](<https://devfeed.tech/tags/css.md>), [developer](<https://devfeed.tech/tags/developer.md>), [html](<https://devfeed.tech/tags/html.md>), [query](<https://devfeed.tech/tags/query.md>)

### AI overview

The article reflects on Chris Morgan's opposition to query strings in URLs and connects that discussion to the author's experiences learning web development, CSS, HTML, and building the self-hosted Wander Console.

### Source excerpt

Last evening, a short blog post appeared in my feed reader that felt as if it spoke directly to me. It is Chris Morgan's excellent post I've banned query strings. Contents Wisdom on the Web Wander on the Web Misfeature Broken URLs Qualms Conclusion Wisdom on the Web Chris is someone whose Internet comments I have been reading for about half a decade now. I first stumbled upon his comments on Hacker News, where he left very detailed feedback on a small collection of boilerplate CSS rules I had shared there. I am by no means a web developer. I have spent most of my professional life doing systems programming in C and C++. However, developing websites and writing small HTML tools has been a long-time hobby for me. I have learnt most of my web development skills as a hobbyist by studying what other people do: first by viewing the source of websites I liked in the early 2000s and later by occasionally getting possessed by the urge to implement a new game or tool and searching MDN Web Docs to learn whatever I needed to make it work. One problem with learning a skill this way is that you sometimes pick up habits and practices that are fashionable but not necessarily optimal or correct. So it was really valuable to me when Chris commented on my collection of boilerplate CSS rules. It helped me improve my CSS a lot. In fact, a few of the lessons from his comment have really stuck with me; I keep them in mind whenever I make a hobby HTML project: always retain underlines in links and retain purple for visited links. I have been following Chris's posts and comments on web-related topics since then. He often posts great feedback on web-related projects. Whenever I come across one, I make sure to read them carefully, even when the project isn't mine. I always end up learning something nice and useful from his comments. Here is one such recent example from the Lobsters story Adding author context to RSS. Wander on the Web A couple of months ago, I created a new project called Wan

## Wander Console 0.6.0

DevFeed: [Wander Console 0.6.0](<https://devfeed.tech/articles/wander-console-0-6-0-37664.md>)

Original publisher: [Read original article](<https://susam.net/code/news/wander/0.6.0.html>)

Published: 2026-05-08T00:00:00Z

Content type: release

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [interface](<https://devfeed.tech/tags/interface.md>), [network](<https://devfeed.tech/tags/network.md>), [release](<https://devfeed.tech/tags/release.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [server](<https://devfeed.tech/tags/server.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Wander Console 0.6.0 is the sixth release of a small, decentralised, self-hosted web console for discovering websites and pages recommended by independent website owners. The release removes the referral query parameter because arbitrary URL parameters could prevent some pages from loading, and includes minor user interface adjustments and fixes.

### Source excerpt

Wander Console 0.6.0 is now available. This is the sixth release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website discover interesting websites and pages recommended by a community of independent website owners. To try it, go to susam.net/wander/. To learn how it works and how to set it up on your own website, see the project README. The main change in this release is the removal of support for the via referral query parameter, which was added to recommended URLs so that website owners could identify visits coming from a Wander Console in their access logs. The via query parameter was introduced in version 0.4.0 in response to community demand, but it turned out to be a misfeature. Some websites refuse to serve web pages when arbitrary query parameters are added to URLs. Although it was possible to turn this feature off via configuration, I would rather not keep a dubious feature that may prevent some pages from loading successfully. This feature has now been completely removed. See this excellent article by Chris Morgan to learn more about why adding arbitrary query parameters to URLs is a bad idea. Commit b26d77c has more details about the removal of this feature. Apart from this change, there are a few minor user interface adjustments and fixes. See the changelog for more details. If you own a personal website but have not set up a Wander Console yet, I suggest that you consider setting one up. You can see what it looks like by visiting mine at /wander/. To set up your own, follow the installation instructions in the README. It only involves copying two files to your web server, so the installation is very straightforward. Also, check out our new community page called Wander Console Network. This page shows a recent snapshot of all known Wander Console instances along with the web pages they recommend. We have an IRC channel too at #wander on irc.libera.chat in case you are looking for a place to hang out with the comm

## From RSS to Atom

DevFeed: [From RSS to Atom](<https://devfeed.tech/articles/from-rss-to-atom-37668.md>)

Original publisher: [Read original article](<https://susam.net/from-rss-to-atom.html>)

Published: 2026-05-04T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [Atom Feed](<https://devfeed.tech/topics/atom-feed.md>), [RSS Feed](<https://devfeed.tech/topics/rss-feed.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>), [Git](<https://devfeed.tech/topics/git.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commit](<https://devfeed.tech/tags/git-commit.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [rss](<https://devfeed.tech/tags/rss.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The author describes switching a personal website from RSS feeds to Atom feeds in 2026. The change was implemented in Common Lisp, took about an hour, and included replacing RSS item identifiers with UUID-based Atom entry identifiers and updating feed templates.

### Source excerpt

Yesterday, I switched my website from RSS feeds to Atom feeds. In case you are wondering whether you have somehow landed on an ancient post from 2010, no, you have not. Yes, this is the year 2026, and I have finally switched from RSS feeds to Atom feeds. Yes, I am fifteen, or perhaps twenty, years too late. Contents Impulse Coding Atom Entries Temporary Workaround Does It Matter? References Impulse Coding I have always wanted to do this but could never make the time for it. Finally, it happened while I was giving my brain some rest from my ongoing algebraic graph theory studies. That's when I felt like spending a little time on my website and doing a little Lisp to change the feeds from RSS to Atom. I suppose this was impulse coding, a bit like impulse buying, except that I ended up with an Atom feed instead of a new book. I find it quite surprising that when I have plenty of time, it usually does not occur to me to do these things, but when I am too busy and really short of time, these little ideas possess me during the short breaks I take. My personal website is one of my passion projects. Common Lisp is one of my favourite programming languages. So any time spent on this passion project using my favourite programming language is a very relaxing experience for me. It serves as an ideal break between intense study sessions. It took about an hour to implement the changes needed to make the switch from RSS to Atom. In the end, I could go back to my studies reinvigorated. In case you are curious, here is the Git commit where I implemented the change from RSS to Atom: 596e1dd. As you might notice, a large portion of the change consists of replacing the key attribute in each post with the uuid attribute. The key attribute value was used as the value of the <guid> element in the RSS feeds. While an arbitrary short string could serve as the <guid> element for the items in an RSS feed, the <id> element of the entries in an Atom feed needs to be a URI. It turns out UUID URN

## QuickQWERTY 1.2.3

DevFeed: [QuickQWERTY 1.2.3](<https://devfeed.tech/articles/quickqwerty-1-2-3-37663.md>)

Original publisher: [Read original article](<https://susam.net/code/news/quickqwerty/1.2.3.html>)

Published: 2026-05-03T00:00:00Z

Content type: release

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [bug](<https://devfeed.tech/topics/bug.md>), [dialog](<https://devfeed.tech/topics/dialog.md>), [Code](<https://devfeed.tech/topics/code.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [bug](<https://devfeed.tech/tags/bug.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [code](<https://devfeed.tech/tags/code.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [github](<https://devfeed.tech/tags/github.md>), [release](<https://devfeed.tech/tags/release.md>), [update](<https://devfeed.tech/tags/update.md>), [web](<https://devfeed.tech/tags/web.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

QuickQWERTY 1.2.3 is a release of the browser-based touch typing tutor. It fixes an incorrectly updated licence link and removes an unnecessary dialog that appeared when selecting the already active number-key split.

### Source excerpt

QuickQWERTY 1.2.3 is now available. QuickQWERTY is a web-based touch typing tutor for QWERTY keyboards that runs directly in the browser. This release includes two small bug fixes. In the previous release, QuickQWERTY source code management moved from GitHub to Codeberg. During that update, the licence link in the footer was updated incorrectly. The broken licence link has now been fixed. Further, there was a minor bug that caused a redundant dialog box to appear while switching between 6-7 split and 5-6 split. Units 16 to 20 contain two links labeled '6-7 split' and '5-6 split' which allow you to select how you want to split the number keys between left and right hands. Clicking either of those links brings up a dialog that explains what the two splits mean and prompts you to confirm in order to make the switch. Say, the '6-7 split' was already the chosen split. Clicking the '6-7 split' label triggered the dialog box unnecessarily. A dialog was unnecessary in that case since if you were already on the '6-7 split', clicking the '6-7 split' label resulted in no switch. This unnecessary dialog has now been eliminated. To try out QuickQWERTY, please visit quickqwerty.html. The source code of QuickQWERTY is available under the terms of the MIT licence at codeberg.org/susam/quickqwerty. Read on website | #web | #programming