Skip Navigation
The Dislike to Ubuntu
  • Moved from Gentoo to Ubuntu in 2008 as I needed to focus more on my job, moved back to Gentoo in 2022. Snaps were part of it, but really the lack of maintenance and vision around the apt repository was really the issue. More and more I was installing stray debs, or having to use flatpaks / AppImages for what what I wanted the system to manage for me.

    Not that I've entirely stopped using flatpaks or AppImages, but the process of creating an ebuild is far simpler than trying to do anything with a deb. For a while I had hope about the ppa, however that became fewer and fewer. I do think that the battle to have a comprehensive software repository is a loosing one because of the way things are currently structured.

  • Making GUIs, how do you pick?
  • What languages are you wanting to use, the combination between toolkit and language can make a big difference to your experience.

    There are a lot of interesting options out there that aren't top of people's minds too. For instance Lazarus, and Flutter. Both can do cross platform.

  • Peter Molyneux thinks generative AI is the future of games, all but guaranteeing that it won't be
  • It's probably great for bulk as it gives you something close to what you would expect. I imagine it would be different for things that are specific to the lore, world, etc.

    Could mean that there is a lot more detail in games, and a lot might even be unintentional.

  • We need to nationalise Google, Facebook and Amazon. Here’s why
  • Back before the media decided it wasn't a competitor but rather a potential profit source. I do think the government does need to have it's own alternatives (obviously not identical more on this one day) for other reasons, such as for it's own media releases, but more internationally coordinated appropriate & considered legislation is probably better.

  • Is there a bookmark manager that works like KeePass?
  • It's fairly uncomplicated just flexible and without guide rails so you need to figure out how you want to represent it yourself. I've used a separate space for my links compared to everything else which is just in my 'home' space

  • Is there a Git repository activity aggregator, like GitHub's user activity but platform independent?
  • I asked chatgpt to write a go program for this, this looks roughly correct (I have used both libraries before) obviously this won't be enough for your particular use case. I imagine you can integrate an RSS feed to your site, however if you're using something like hugo perhaps output it as a csv.

    Super low effort but a good start I think:

    package main
    
    import (
    	"fmt"
    	"log"
    	"os"
    	"strings"
    	"time"
    
    	git "github.com/go-git/go-git/v5"
    	rss "github.com/jteeuwen/go-pkg-rss"
    )
    
    const (
    	timeout = 5 // timeout in seconds for the RSS feed generation
    )
    
    // Repository represents a git repository with its URL
    type Repository struct {
    	URL string
    }
    
    // Repositories is the list of git repositories
    var Repositories = []Repository{
    	{URL: "https://github.com/owner/repo1"},
    	{URL: "https://github.com/owner/repo2"},
    	// Add more repositories here
    }
    
    // FetchLatestTag fetches the latest tag from a git repository
    func FetchLatestTag(repoURL string) (string, string, error) {
    	// Clone the repository to a temporary directory
    	dir, err := os.MkdirTemp("", "repo")
    	if err != nil {
    		return "", "", err
    	}
    	defer os.RemoveAll(dir)
    
    	_, err = git.PlainClone(dir, true, &git.CloneOptions{
    		URL:      repoURL,
    		Progress: os.Stdout,
    	})
    	if err != nil {
    		return "", "", err
    	}
    
    	repo, err := git.PlainOpen(dir)
    	if err != nil {
    		return "", "", err
    	}
    
    	tags, err := repo.Tags()
    	if err != nil {
    		return "", "", err
    	}
    
    	var latestTag string
    	var latestCommitTime time.Time
    
    	err = tags.ForEach(func(ref *plumbing.Reference) error {
    		tag := ref.Name().Short()
    		commit, err := repo.CommitObject(ref.Hash())
    		if err != nil {
    			return err
    		}
    		if commit.Committer.When.After(latestCommitTime) {
    			latestCommitTime = commit.Committer.When
    			latestTag = tag
    		}
    		return nil
    	})
    	if err != nil {
    		return "", "", err
    	}
    
    	return latestTag, latestCommitTime.Format(time.RFC1123Z), nil
    }
    
    // GenerateRSS generates an RSS feed from the latest tags of the repositories
    func GenerateRSS() string {
    	feed := rss.Feed{
    		Title:       "Latest Tags from Git Repositories",
    		Link:        &rss.Link{Href: "http://example.com/"},
    		Description: "This feed provides the latest tags from a list of git repositories.",
    		Created:     time.Now(),
    	}
    
    	for _, repo := range Repositories {
    		tag, date, err := FetchLatestTag(repo.URL)
    		if err != nil {
    			log.Printf("Error fetching latest tag for repository %s: %v", repo.URL, err)
    			continue
    		}
    		feed.Items = append(feed.Items, &rss.Item{
    			Title:       fmt.Sprintf("Latest tag for %s: %s", repo.URL, tag),
    			Link:        &rss.Link{Href: repo.URL},
    			Description: fmt.Sprintf("The latest tag for repository %s is %s, created on %s.", repo.URL, tag, date),
    			Created:     time.Now(),
    		})
    	}
    
    	var rssFeed strings.Builder
    	rssFeed.WriteString(xml.Header)
    	if err := feed.Write(&rssFeed); err != nil {
    		log.Fatalf("Error generating RSS feed: %v", err)
    	}
    
    	return rssFeed.String()
    }
    
    func main() {
    	rssFeed := GenerateRSS()
    	fmt.Println(rssFeed)
    }
    
  • InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)AR
    arran 🇦🇺 @aussie.zone
    Posts 0
    Comments 68