HNHacker News
TopNewBestAskShowJobs

susam

24,527 karma · joined September 17, 2011

              ,-------------------------------------------.
              |                                           |\
              |   ,===================================.   | \
              |   |                                   |   |  \
              |   |  C:\>lynx susam.net               |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |                                   |   |  |
              |   |___________________________________|   |  ,
              |                                           | /-,
            ,-|___________________________________________|/ /|
           /         (_____________________________)        / |
          /_______________________________________________ /  |
         |                                                 |  |___
         | [@]                                             |  |   )
         |                                    [==========] |  /  /
         | ||||||||||                         [==========] | /  /
         |_________________________________________________|/  /
         _________________________________________________    /
        /  #  = = = =  # # # #  = = = =  # # #  /- - -/  /,__/
       /                                                //
      /  = = = = = = = = = = = = = ##  # # #  # # # #  //
     /  ## = = = = = = = = = = = = =  # # #  = = = #  //
    /  ### = = = = = = = = = = = ##         = = = #  /`
   /  #### = = = = = = = = = = ###    #    = = = #  /
  /  ###  ### ============= ## ##  # # #  === = #  /
  `-----------------------------------------------'
submissionscomments
susam··on Big-Endian Testing with QEMU
I wrote a similar post [1] some 16 years ago. My solution back then was to install Debian for PowerPC on QEMU using qemu-system-ppc.

But Hans's post uses user-mode emulation with qemu-mips, which avoids having to set up a whole big-endian system in QEMU. It is a very interesting approach I was unaware of. I'm pretty sure qemu-mips was available back in 2010, but I'm not sure if the gcc-mips-linux-gnu cross-compiler was readily available back then. I suspect my PPC-based solution might have been the only convenient way to solve this problem at the time.

Thanks for sharing it here. It was nice to go down memory lane and also learn a new way to solve the same problem.

[1] https://susam.net/big-endian-on-little-endian.html

susam··on Show HN: I built a frontpage for personal blogs
This is a very nice project! Thank you for creating it and sharing it here on HN. I like the minimal version more but the modern version is quite nice too. I would probably stick to the minimal version but since it seems to lack the search feature I end up using the modern version for that.

By the way, some minor issues I found:

1. In the minimal version, when browsing the list of blogs I cannot get past page 12. The last page the UI lets me navigate to is https://text.blogosphere.app/blogs-12 which shows blogs up to names starting with 'M'. I can reach page 13 by manually editing the URL to https://text.blogosphere.app/blogs-13 which shows two blogs starting with 'N'. However, pages 14 and beyond just load the home page. Surely there are more blogs with names starting with 'O', 'P', etc.?

2. The modern version at https://blogosphere.app/ uses infinite scroll, which makes it impossible to reach the footer. Each time I scroll down, more content loads and pushes the footer further away. I was only able to view the footer by modifying the DOM in the browser's developer tools. It would be nice if there were a straightforward way to access the footer.

susam··on Wander – A tiny, decentralised tool to explore the small web
@dvh Done as part of <https://codeberg.org/susam/wander/commit/8e901ce>. Thank you for the great suggestion.
susam··on Wander – A tiny, decentralised tool to explore the small web
Hello @deanebarker, This was implemented in <https://codeberg.org/susam/wander/commit/f952fe4>. If you visit <https://susam.net/wander/> now, you should see an 'Open' button that opens the recommended website in a new tab. Thank you for the great suggestion!
susam··on Wander – A tiny, decentralised tool to explore the small web
To add to this fine suggestion, I'd like to highlight that Wander supports customising the appearance of the user interface.

The section https://codeberg.org/susam/wander#customise-your-console describes how someone setting their own /wander URL can customise how their console looks and behaves. I have seen a few consoles already using this feature to change their theme.

So while I will keep my console as it is, because that is how I prefer it, with large buttons occupying the full header width, others who prefer a different layout can do so by adding custom CSS as described in the link above.

susam··on Wander – A tiny, decentralised tool to explore the small web
Thank you. This makes a lot of sense. I need to think it through since 'let' is one of the things about modern JavaScript that I quite like, so I need to decide whether I really want to go back to using 'var' again.

To be honest, I resisted adopting ES6 features for quite a long time because I was concerned about exactly this kind of situation, where a modern feature might not work in an older browser that is still in use. However, in 2022, prompted by ESLint's no-var rule [1], I began using ES6 features in my code [2]. Now I find myself wondering whether my earlier, more conservative approach to JavaScript might have been the better approach.

In any case, thank you very much for following up on this thread. It has given me something to think about.

[1] https://eslint.org/docs/latest/rules/no-var

[2] https://codeberg.org/susam/texme/commit/8e31dbf

susam··on Wander – A tiny, decentralised tool to explore the small web
Hello @superkuh, if you happen to revisit this, could you let me know which browser and version you were using? It would help me decide how far back I should support.
susam··on Wander – A tiny, decentralised tool to explore the small web
> If that's not desirable, it could be avoided by having the client keep a running list of all the consoles it has discovered this session and choosing from that list at random.

Implemented in <https://codeberg.org/susam/wander/commit/f4d95fa>. Thanks again for the discussion!

susam··on Wander – A tiny, decentralised tool to explore the small web
If you are on a computer, you might be able to see the previous links that were loaded in your web browser's Developer Tools > Console. The Wander console tool writes logs there to describe what it is doing internally.
susam··on Wander – A tiny, decentralised tool to explore the small web
The drkhsh.at website does not allow itself to be embedded in another website:

  $ curl -sSI https://drkhsh.at/ | grep -i frame
  x-frame-options: SAMEORIGIN
The problem appears to be that someone in the community added this website to their console even though it wouldn't load successfully.

See also a similar discussion here: https://codeberg.org/susam/wander/issues/3

There is also a note in the project README requesting console owners to be mindful of this while adding links: https://codeberg.org/susam/wander#caution

susam··on Wander – A tiny, decentralised tool to explore the small web
Sorry to know it did not work in your browser and thank you for reporting the problem here. If someone is able to reproduce it and share details either here or at <https://codeberg.org/susam/wander/issues>, especially which JavaScript features are not working, I would be happy to update the code.

I am aware that I have used a number of relatively modern features. For example, I suspect `for ... of` might be one, and perhaps `Element.append()` (instead of `Node.appendChild()`) could also be an issue. Unfortunately, I do not have old browsers to test this reliably, so any help in identifying the exact constructs or functions causing problems would be very appreciated.

susam··on Wander – A tiny, decentralised tool (just 2 files) to explore the small web
Thank you for the clarification and also for reaching out on IRC. I'm glad to know it was you who posted this here.

At one point there were three duplicate posts on the front page, all referring to the same project. I was concerned that if HN users flag them all as duplicates, then all three might lose the front page presence at the same time, so I reached out to the moderators to resolve the duplicates.

Unfortunately this one ended up being marked as a duplicate, even though it had gained more attention than my original announcement post at the time. So thank you for sharing it here. I really appreciate it, as it helped bring some initial visibility to this project and helped it grow.

susam··on Wander – A tiny, decentralised tool to explore the small web
Glad you like it. Yes, you are right. This is something I realised too initially as a natural consequence of being the only participant in the console network at the beginning. Keeping a list of discovered consoles is exactly what I was thinking too. I built this tool rather quickly as a proof-of-concept while taking a break from another activity, so I couldn't quite find the time to implement this solution. But I might implement it in the next update. Thank you for taking a close look at this project!
susam··on Wander – A tiny, decentralised tool (just 2 files) to explore the small web
Yes, this is a duplicate post created by a new account who seems to have copied my post from <https://lobste.rs/s/hjipba>. I have emailed the moderators to ask if they can mark this as duplicate and merge the comments here into the other thread.

Also discussed here: https://news.ycombinator.com/item?id=47427858

susam··on Wander – A tiny, decentralised tool to explore the small web
Yes, I am not sure how I managed to mess up the project name. I have emailed the moderators to ask for help in fixing it.
susam··on Wander – A tiny, decentralised tool to explore the small web
> I get that, but right now, if you traverse each "console", you end up with a list of 28 trusted "small web" links. The project grows in value if that list gets bigger over time either by you personally adding nodes or the community adding nodes.

Yes, all of this makes sense.

> I don't really have a way of knowing if you are intending to add more links to your console (thus growing the project) or this is a one and done type of system.

I personally do not plan to add too many page links to my console. However, I will add more console links, which has the effect of expanding my console neighbourhood and thereby increasing the pool of recommendations.

That said, I am not sure why it matters whether I add more links to my console specifically. In my opinion, any single Wander instance should not matter much on its own. What matters more is whether the network as a whole grows, that is, more consoles being set up and more of them linking to each other.

One of my design goals has been to avoid giving any particular console a special status. All consoles are equal participants in the network from a technical perspective. You should be able to pick any console from the network, perhaps one belonging to your favourite blogger, perhaps even your own and explore the neighbourhood from there. Yes, the neighbourhood would look different from each console but that's pretty much the point of this project. As long as the overall graph of consoles is connected, you could in theory reach any community recommendation from any starting point. Even if the graph is not fully connected, I do not see that as a significant issue. It just reflects how connections tend to form in a decentralised system. Please let me know if you think I have missed your point again.

susam··on Wander – A tiny, decentralised tool to explore the small web
There is indeed a lot of similarity with webrings and StumbleUpon but there are some differences as well. I discuss this in more detail in the project README here: https://codeberg.org/susam/wander#faq
susam··on Wander – A tiny, decentralised tool to explore the small web
Thank you for taking a look at this project. I'm glad you liked it.

You make a fair point. I put this together in about 1.5 hours in the early hours of the morning while taking a break from other academic work, so it is not as polished as it could be. Adding an 'Open' button to launch a link in a new tab sounds like a useful feature. I will consider this for the next update. Thank you for the feedback!

susam··on Wander – A tiny, decentralised tool to explore the small web
What you are describing sounds a bit like a blogroll, which many of us do indeed maintain. Mine is here, by the way: https://susam.net/roll.html

However, Wander is meant to be a bit like StumbleUpon, but without requiring a centralised service that everyone must go through. One limitation of a blogroll is that it does not provide a consistent way to discover recommendations recursively. For example, I might visit your website A, which recommends website B. I might then visit B, but B may not have any recommendations at all.

Every Wander instance, on the other hand, has a defined list of recommendations. It also links to the /wander pages of its neighbouring sites. If you visit the /wander page of website A, the tool can discover its neighbours (B, C, etc.), then the neighbours of those neighbours and so on. It can fetch recommended links from them and present the links within the same console.

Additionally, the tool provides a way to leave the current console and move to a neighbour's console if the visitor wants to continue browsing from there.

susam··on Wander – A tiny, decentralised tool to explore the small web
Thank you for taking a look at this project. I'm glad you like the concept. I am not sure I have understood your question accurately, but let me attempt a response anyway. If I get it wrong, please feel free to correct me or ask me again.

There is no need to re-download https://codeberg.org/susam/wander every few weeks. The setup is a one-time activity. From that repository, you copy exactly two files (index.html and wander.js) and place them on your web server, preferably within a /wander/ directory. After that, you only maintain the wander.js file.

You curate your own links and choose which other Wander consoles to link to as neighbours. The contents of wander.js are entirely yours to define. There is no need to diff or compare it with the version in the repository.

In fact, if you do not care about updating or curating links often, you can leave both files untouched indefinitely. The only downside is that some links may eventually succumb to link rot, which could affect the wandering experience. So it may help to review your links occasionally and remove dead ones, but beyond that no ongoing maintenance is required.

susam··on Wander – A tiny, decentralised tool to explore the small web
17 + 11 URLs from https://dahlstrand.net/wander/wander.js + 26 URLs from https://www.siddharthagolu.com/wander/wander.js that I link to from the above link. So 54 URLs so far.

The number of URLs grow as more people add this tool to their website and add each other as neighbours. The tool is capable of discovering neighbouring consoles and showing URLs from there.

susam··on Wander – A tiny, decentralised tool (just 2 files) to explore the small web
Yes, they are duplicates, although the links themselves are distinct. The current post points to my website, whereas the other points to my Git project. But they are indeed duplicates, in the sense that both refer to the same project.

Further, this post is from a new account with no posting history that has copied my submission (along with the exact wording) from <https://lobste.rs/s/hjipba/>. Copying the wording is no problem at all. I appreciate the visibility this post is bringing to this rather little project of mine. But I am not sure whether this post was made by a genuine user or by a bot. Any clarification from the poster or the moderators would be helpful.

I am also worried that one or both of these submissions may get flagged as duplicates. I had submitted the project myself earlier today at <https://news.ycombinator.com/item?id=47422759> but it did not gain any traction. I have emailed the moderators to ask whether it would be possible to merge the multiple stories into one.

susam··on Kagi Small Web
This thread inspired me to build a decentralised tool to explore the small web: https://susam.net/wander/

If you like it and if you have a website, please join the network. It only takes uploading two files to your web server to set it up. In fact, you can host it on GitHub Pages or Codeberg Pages too. And you can link to any small website (not just blogs).

Details about how it works and how to set it up available here: https://codeberg.org/susam/wander#readme

susam··on Wander – A tiny, decentralised tool to explore the small web
Hello HN!

This tool is inspired by Kagi Small Web (recent thread: https://news.ycombinator.com/item?id=47410542). A common concern raised here is that Kagi Small Web currently accepts only blogs, comics and YouTube channels. It does not accept arbitrary small websites. That limitation motivated me to build Wander.

Wander is fully decentralised. Anyone can host it on their own website. It consists of just two files: an `index.html` for the Wander console and a `wander.js` where you link to other Wander consoles. It is a bit like a webring, but more flexible. Each console can link to any number of sites and other consoles.

There is no server-side code, no database, nothing to install. If you have a website, you can set it up by uploading just two files. In fact, you can host it on GitHub Pages or Codeberg Pages too.

If you like the idea, please join the network. I would love to see it grow.

More details about how it works and how to set it up here: https://codeberg.org/susam/wander#readme

susam··on Kagi Translate now supports LinkedIn Speak as an output language
Input: Prime numbers

Output: Unlocking the foundational building blocks of mathematical excellence: Prime numbers. In a world of complexity, these unique assets stand alone—indivisible, resilient, and essential for scaling secure systems. It’s not just about the digits; it’s about the raw, unfiltered potential of being a "1" in a field of many. Are you optimizing your core algorithms for maximum impact? Let’s disrupt the status quo. #Mathematics #Innovation #GrowthMindset #CyberSecurity #Leadership #PrimePotential

susam··on The “small web” is bigger than you might think
> Why would you only include blogs in your small web index?

I am not associated with this project, so this would be a question for the project maintainer. As far as I understand, the project relies on RSS/Atom feeds to fetch new posts and display them in the search results. I believe, this is an easier problem to solve than using a full blown web crawler.

However, as far as I know, Kagi does have its own full blown crawler, so I am not entirely sure why they could not use it to present the Small Web search results. Perhaps they rely on date metadata in RSS feeds to determine whether a post was published within the last seven days? But having worked on an open source web crawler myself, many years ago, I know that this is something a web crawler can determine too if it is crawling frequently enough.

So yes, I think you have got a good point and only the project maintainer can provide a definitive answer.

susam··on The “small web” is bigger than you might think
I don't use 88x31 buttons but I do maintain an old-fashioned blogroll on my personal website: https://susam.net/roll.html

I follow the same set of websites with my feed reader too. There is an OPML file at the end of that page that I use with my feed reader. I keep the list intentionally small so that I can realistically read every post that appears on these websites on a regular basis.

Although I usually read new posts in my feed reader, I still visit each website on the list at least, roughly, once a month, just to see these personal sites in their full glory. These are blogs I have been following for years, in fact some of them for a couple of decades now! So when a new post appears on one of these websites, I make time to read it. It is one of the joys of browsing the Web that I have cherished ever since I first got online on the information superhighway.

Keeping the list small also makes it easy for me to notice when a website goes defunct. Over all these years a few websites did indeed sadly disappear, which I then removed from my list.

susam··on The “small web” is bigger than you might think
You can check: <https://github.com/kagisearch/smallweb/blob/main/smallweb.tx...>. I can see that your RSS URL is listed there.

But it currently does not appear in the search results here: <https://kagi.com/smallweb/?search=zahlman>. The reason appears to be this:

"If the blog is included in small web feed list (which means it has content in English, it is informational/educational by nature and it is not trying to sell anything) we check for these two things to show it on the site: • Blog has recent posts (<7 days old) [...]"

(Source: https://github.com/kagisearch/smallweb#criteria-for-posts-to...)

susam··on The “small web” is bigger than you might think
There is a '↗'-shaped icon in the navigation bar at the top. If you click on that it takes you to the original post in a new tab. On Firefox and Safari, you can also right click that icon and add the original post to the bookmarks.
susam··on The “small web” is bigger than you might think
A little shell function I have in my ~/.zshrc:

  pages() { for _ in {1..5}; do curl -sSw '%header{location}\n' https://indieblog.page/random | sed 's/.utm.*//'; done }
Here is an example output:

  $ pages
  https://alanpearce.eu/post/scriptura/
  https://jmablog.com/post/numberones/
  https://www.closingtags.com/blog/home-networking
  https://www.unsungnovelty.org/gallery/layers/
  https://thoughts.uncountable.uk/now/
On macOS, we can also automatically open the random pages in the default web browser with:

  $ open $(pages)
Another nice place to discover independently maintained personal websites is: https://kagi.com/smallweb
← PreviousPage 2 of 32Next →