1. 14

What have you made?

Side projects are fine. Small things are encouraged. Answers don’t need to be impressive (though those would be fine too).

  1.  

  2. 11

    A programming language called Inko, which is a bit of a mix of Erlang, Smalltalk, and Ruby. This is taking up most of my spare time, so I don’t really have time for other coding projects (save for the odd script to perform a specific task).

    1. 2

      I’ve been watching closely! This looks like a very cool project.

      1. 2

        Thanks! Hopefully this week (if I can get myself to it) I will start with monthly development updates on the forums. This should make it a bit easier to follow progress, instead of having to read individual commits.

        1. 3

          I like that idea. Or the oilshell-style posts that @andyc makes and posts here. I enjoy following those.

      2. 2

        Cool! I am also working (very slowly) on language inspired by Self and Smalltalk called tinySelf.

      3. 7

        I’ve always wanted to make games so the project closest to my heart is Dose Response. It’s a small open-world roguelike where you play an addict. Written in Rust, running on Linux, Windows, macOS as well as WebAssembly. Free/Libre/Open Source, pay what you want.

        Unfortunately, I did not have a lot of time and energy to update it after the 1.0 release yet.

        1. 4

          A great game! Thank you for sharing.

          1. 2

            Thank you for playing! I’m glad you like it!

        2. 7

          A while ago, but still the thing I’m most proud of: Historically, Firefox had some issues with XSS-like vulnerabilities in its JS/HTML implementation of front-end components. Given the JS APIs available to Firefox’s front-end an XSS here could be trivially escalated into a critical vulnerability that allows an attacker to execute arbitrary code on the victim’s machine. I built eslint-plugin-no-unsanitized to find and eradicate those bugs across the whole codebase. This found a couple of bugs, some of them truly critical.

          (Furthermore, we also modified the fragment parsing algorithm (used by innerHTML and its friends, the bit that parses strings into HTML trees) when invoked from privileged code, so it simply wouldn’t allow scripts and forms and so on)

          1. 2

            As a daily user of Firefox, I would like to thank you for that! :)

            1. 1

              I’m probably going to give a talk about this project in late September. Follow me on twitter or my web page (has an rss feed) if you want to know more :-)

            2. 6

              Quite a few things:

              • Arch Linux - lots of packaging like always
              • proby - checks a port on a different server and returns the status on HTTP
              • miniserve - small convenient webserver for sharing files
              • dummyhttp - dummy webserver that always returns a fixed response and logs all incoming requests
              • wmfocus - focus i3 windows visually
              • genact - nonsense activity generator for impressing colleagues
              • mt940 - a parser for bank statements formats
              1. 3

                I love genact. The other things are more useful, but genact is pure art.

                1. 1

                  Thanks :D

              2. 5

                My main project is Dinit, a service supervisor / init system written in response to Systemd. It’s cross-platform (regularly built on Linux, FreeBSD and OpenBSD), and featureful-yet-scoped, both in contrast to Systemd. On the other hand, it’s a one-man job and I’ve got limited time to work on it. It’s written in the language that everyone these days seems to love to hate, C++.

                Despite having worked on it for a long time, I’m still plodding on - and constantly having to resist the urge to jump onto newer projects that take my interest. That’s really the challenge that I’ve set myself - can I finish a project, to the point that it’s truly complete (and even polished?).

                1. 5

                  I’m working on a Firefox add-on for Secure Scuttlebutt called Patchfox.

                  1. 4

                    A travel planner to help me keep an overview when I plan trips. I tend to get lost in my own mess when booking places, flights, keeping track of things to do etc.

                    1. 1

                      This looks really neat! On Chrome Desktop it appears as though I can’t click “New Plan” – nothing happens. No errors in the console, either.

                      1. 2

                        Wait another week so that I can get around to implementing that :)

                        1. 1

                          I took another look. Something about the reading from localStorage (?) is a little wonky but this is neat. Is there a way to specify timestamps in events? Or concurrent/overlapping events? Any OSS plans?

                          1. 2

                            Hi, so cool that you came back to check out the progress :)

                            • I actually use precise timestamps to save events, but I’m still debating whether to expose them to the user. I want to keep this high-level sketching interaction before going into more micro-managing your trip. But I can imagine exposing it as an optional feature.
                            • no overlapping events, since they are only meant to describe the physical place where you are. In the future I want to add activities as lists of things on the right, where the notes are right now.
                            • I haven’t decided on open-sourcing, but I’m open to the idea. I am deferring this decision to a bit later, after I have a somewhat finished tool that people can seriously use.

                            If you want to hack on the source code, I’m happy to send it to you. I’ll email you.

                            1. 1

                              Ah! I was more hoping for something like:

                              • 18:00 Arrive at airport
                              • 20:00 Depart airport

                              Something like that. And all the while I can see some state transitions like “transition from being in San Francisco Bay Area to Switzerland” and the two states can be overlapped with smaller sub-activities. It’s a bit late here so this phrasing is likely garbled.

                              Oh, okay! Neat, I’ll take a look in my inbox.

                              EDIT: I suppose I am after something that I cannot do (easily) with either a calendaring application or a spreadsheet application. I’ll need to ruminate more.

                          2. 1

                            Aha! Gotcha. Excellent.

                      2. 4

                        I’ve had several thousand downloads of my filler_text gem but that’s pretty much it small and public code-wise. Two jobs ago, I was tech lead in charge of a commercial software product with $100M yearly sales, iirc, and created a spin-off tool that we have away for free with tens of thousands of downloads before it was retired at the end of last year after about two years of availability.

                        What I’m really proud of is the software community I’ve helped build, Code & Supply. We’re about to hold our fourth conference, Abstractions II, in less than a month. We’re more than 6,000 people strong and growing daily. I’ve hired from and gotten jobs, friendships, and enlightenment from the organization. Code is important to me but humans are paramount.

                        1. 4

                          Log library (Go), because there weren’t enough already: https://github.com/zgoat/zlog

                          Also continuing work on my more privacy-friendly simple website statics webapp. Technically much of it is finished, although there are still a number of details that need sorting (80/20 rule). Also need to sort out some business stuff to accept payments from Stripe or whatnot for the hosted version (… which is somewhat complicated as I don’t really have a fixed address, or even country of residence, at this point…)

                          1. 4

                            I have found that my side projects – mostly PL related – have died off since I started working on programming languages full time at work. I haven’t poked at my VM in a while. But I started tinkering with my networks project yesterday, so that was nice.

                            1. 4

                              I’ve recently had fun being masochistic with writing idiomatic and boring C code, and finished a skeleton generator last week, and now I’ve moved on to sort of a Pelican clone, just smaller.

                              A more normal project I’ve been working on for the last few months is a web based video synchronising tool (like WatchTogher) named Ijod. I’ve been using it to watch movies and series with a few friends of mine, so I fix bugs as they come along.

                              And then there’s all my Emacs stuff, especially my literate confugration, that constitutes very enjoyable Yak shaving – just today I added a first usable version of a function that let’s me add header files from anywhere in a file

                              All in all, nothing too impressive – Oh, and all of this while I should be studying for tests, which make it just that bit more enjoyable.

                              1. 4

                                I’ve been working on 30 Hour Jobs for the last 6 months or so. I’m in the process of rebuilding the whole site as a more cohesive experience instead of various services on subdomains cobbled together. I’m hoping to release v2 in the next couple weeks.

                                1. 4

                                  Yetibot: https://yetibot.com - a chat bot (IRC, Slack) written in Clojure.

                                  1. 2

                                    That’s interesting, bookmarking for a deeper look :) I love writing irc bots, but iirc I haven’t done one in Clojure.

                                    1. 1

                                      It’s a lot of fun :D feel free to join slack.yetibot.com. Happy to demo it or answer any questions.

                                  2. 3

                                    This looks long, but there’s more ~11 years of hobbyist fucking around here, preserved mostly because ~11 years ago I got access to the GitHub beta and stopped using awful svn-over-apache-on-localhost hacks.

                                    • rouge — a Clojure implementation in Ruby, a long time ago. I gave up on it because I was switching jobs and needed to refocus, but it was a lot of fun and trended for a little while! I only wish try.rouge.io was still a thing; surely the hallmark of a “real” PL project.
                                    • rubyex — an alternative Ruby implementation in C++. Mostly from 2008.
                                    • comrak — a GFM-compatible CommonMark library for Rust. Gets a decent amount of use!
                                    • avrbasic — the very beginnings of a BASIC implementation that can run on an 8-bit AVR micro.
                                    • golex — a flex-compatible lexer generator for Go. Aged.
                                    • akari — an old hobby kernel, C++. 2010ish.
                                    • tjtk — a little timer for your menubar in macOS.
                                    • piret — a small lisp whose idea was to get to a bootstrapping stage as quickly as possible. It does so! (very, very hackily.)
                                    • Erlang::Parser — I just know you’ve been dying to parse Erlang terms in Perl. I know it. Now you can.
                                    • vhskit — Ruby gem that can speak the Postgres server protocol. Used it for mocks.
                                    • k6_bytea — a mutable byte array for Erlang. Mostly wanted to try writing an NIF. Blog post on web archive.
                                    • stale-prs — I email myself daily with PRs that have had no activity for more than 2 months.
                                    1. 3

                                      Lots and lots of things. I spit out a blog post about 1/month, and 2/3rds of those are probably a new little project. Recent-ish favourites:

                                      • Dawn - a mobile-friendly version of the TfL bus display, written in Rust
                                      • Wharf - a web frontend for Dokku
                                      • Maiden - my Rockstar implementation
                                      1. 3

                                        Just an aspiring developer writing some small things to get better, I guess.

                                        I recently wrote this: https://github.com/androidkitkat/tugboat which is a tiny script to pull repos on push events.

                                        I know the code is very dirty and hacky, but if anyone has any suggestions, please let me know!

                                        Currently working on more small scripts, just try to flex my muscles a bit. Thanks!

                                        1. 3

                                          Lots of things! Three of the most fun side projects I have ongoing:

                                          • https://github.com/voidstarhq/voidstar a thing that projects files into colored particules inside a 3D cube. Future: dive through pi’s decimals in a VR headset.
                                          • https://github.com/fenollp/jit-beam a work in progress JIT for BEAM languages that uses the amazing tracing capabilities of the Erlang VM to make decisions and recompile optimized modules & hot-swap them without reboots.
                                          • https://github.com/FuzzyMonkeyCo/monkey a client (server isn’t FOSS :|) that aims to simplify developer UX greatly when it comes to testing software with QuickCheck / Hypothesis / fuzzers. I want this to become my job eventually!
                                          1. 3

                                            Not much, but I’m in the core team of Gambe.ro, the Italian Lobsters fork, and I’m developing a Twitter bot for Gambe.ro that is extensible with other social network/platforms and is compatible with every Lobsters fork that exposes a JSON feed.

                                            1. 3

                                              There’s a handful of other in-progress things too, and even more in planning/research stages.

                                              1. 3

                                                There’s a list here, but the current side-project that’s fun to work on is Developer to Manager.

                                                1. 3

                                                  I work on a JVM bytecode obfuscator called Paramorphism.

                                                  Currently related projects are:

                                                  • Koffee, a JVM bytecode DSL written in Kotlin
                                                  • A new site for obfuscator sales
                                                  • Obfuscator R&D (basically I just mess around with the JVM until something weird happens that I can abuse)
                                                  • Implementing a VM interpreter generator in JVM bytecode, so I can virtualize Java code into a unique virtual machine every obfuscation
                                                  • oof-jvm, a collection of strange Java samples that make program analysis (i.e: obfuscation) more difficult than expected

                                                  I’m unemployed and waiting to start university, so this side project is really the only thing I do, programming-wise.

                                                  1. 3

                                                    I’ve been working on a QR Code service written in Rust and provisioned to a tiny Digital Ocean VM with state of the art (I guess) Ansible. Mostly because all existing providers have had reliability issues and we need a reliable QR Code provider for internal stuff at work.

                                                    Apart from that I’m also working on adding a new diagnostic emitter to Rust, but progress has been a bit slow on my end.

                                                    1. 3

                                                      Right now, a desktop application written in React, running on Electron. Eventually I need to be able to port it to React Native and run it on iOS and Android. I’ve never used Javascript nor done application design in my life: But it’s going well, I actually like Javascript (ES6 (I think?) at least). It makes writing declarative-style functional code generally easy, especially with constructs like maps. The const func = (foo) => bar(foo) syntax is cute too

                                                      1. 3

                                                        I’m building up my homepage from scratch instead of using a blogging engine. Its nothing ground-breaking, but I’m enjoying the process of doing it all from scratch instead of using an off-the-shelf sitebuilder.

                                                        1. 3

                                                          I’m done working for but am still partially supporting a WHO application called EWAR (http://ewars-project.org).

                                                          Currently getting to grips with my new employers codebase.

                                                          On the side I’m working on some freelance HR style projects for a client and a rebuild of the EWARS platform above but generalised to be applicable to more contexts and having a higher degree of functionality as well as being a native desktop app first and web app second.

                                                          1. 2

                                                            A bytecode virtual machine for Go lang — https://github.com/antonmedv/expr We needed an expression evaluation library for non-turing expressions, fast but powerful.

                                                            In latest release added macros for working with arrays and syntax which will not allow lost nested calls: all(Tweets, {.Size <= 140}) == true

                                                            1. 2

                                                              I just pushed some updates to my dirs and directories crates.

                                                              It’s getting interesting as I get contributions to make the libraries run on platforms I barely know.


                                                              I also hope that I can push my Generics and Arrays overhaul across the finish line for Dora, a small language I’m trying to contributing to.

                                                              The idea is to improve generics syntax to use [] instead of <> and migrate former users of [] – arrays – to use () instead.

                                                              The result will be higher consistency, a simpler language and fewer special cases.


                                                              Apart from that, I’m working on introducing Java modules to an existing code base with ~1.5 million lines of code.

                                                              Lots of split packages, lots of code that was fine for decades, but has to change now with modules. Pretty cool work.

                                                              1. 2

                                                                Most of my coding time at home I spend on CHICKEN. I’m most proud of the full numeric tower support in CHICKEN 5 and also irregex, to which I added DFA compilation support for grouped submatches. This was one of the most challenging things I’ve done, even though it was “just” implementing an algorithm from a paper (the paper was really incomplete on details).

                                                                I’ve written a HTTP client and server for CHICKEN. While useful, it’s annoying and boring to work on. It helps that I get the occasional praise about how nice and Schemely it is. That’s probably what prevents me from completely abandoning it ;)

                                                                At my current day job I mostly work on the backend for a system to track trucks across Europe for a transportation company. At times it is very challenging, especially to ensure good performance. The system looks like it’s made by a team of dozens of developers, but in reality it’s basically a two man job, which is kinda cool :) For another client, I’ve written a generic SQL “compiler” for filtering and manipulating data to export it from a subscription system to arbitrary (text-based) file formats, which took many weeks to build. The end result is quite awesome and hasn’t required many tweaks since I built it. This took all of my SQL skills and some.. shall we say non-standard things in Django, too.

                                                                But at the moment I’m a bit burnt out / bored with programming. This comes and goes, I’ve had phases like this many times in my life. I think if I had a new challenging side project, that would bring back the energy and excitement. Perhaps I’ll get some new ideas when I receive my Librem 5. It would certainly be a number one goal to get CHICKEN on there in some shape or form :) For now I’m focusing a bit more on other things in my life, which is also good. And of course I perform the standard duties of a FOSS maintainer, i.e. fixing bugs in CHICKEN and my eggs.

                                                                1. 2

                                                                  I am preparing slides for the PerlCon 2019.

                                                                  I am giving there two talks.

                                                                  1. 2

                                                                    I run three startups. One is bootstrapped and making a small amount of money. One is bootstrapped and not yet making money. One is VC-funded but pre-revenue.

                                                                    Tech stack is basically the same for all three:

                                                                    • Haskell/Yesod
                                                                    • Elm
                                                                    • PostgreSQL
                                                                    • Redis
                                                                    • Nix/NixOS/NixOps
                                                                    • AWS

                                                                    More information here.

                                                                    1. 2

                                                                      I spend most of my work hours working on wayland.positiondev.com, which is a magazine subscription platform written in Haskell. @dbp made it in like 2013? and I’ve been maintaining and adding features since 2016.

                                                                      Lately I’ve gotten interested in tabletop roleplaying and making little JavaScript things for that – here’s a dice roller that I’ve been actually using: https://spot-barge.glitch.me/. Goal was mobile-first with minimal fuss and it works well! Next I’m probably going to make a character sheet app.

                                                                      1. 2

                                                                        I’ve been using Juice (the podcast app) for a few years on my home machine on Windows and it recently stopped updating RSS feeds with TLS 1.2/1.3, so it’s getting useless. I think the last release was 2006 and it’s an exe made of python code. I tried to dig in once but even gave up building it.

                                                                        So I’m now trying to write a replacement (main app is Qt/C++ to be crossplatform with optional very light PHP/SQLite backend), but I’ve not worked on it for a while because I lost my motivation a bit.

                                                                        Oh and before that? Tons of projects I never finish, for example a rescuetime clone in Rust + WINAPI, which was actually a fun proof of concept. Of course I left out all the nice GUI stuff, it just spits out text logs which are analyzed by a python script :P

                                                                        And I’m an occasional committer to a few open source projects, but no real noteworthy contributions or ever being a posterchild mainteiner.

                                                                        1. 2

                                                                          my current “active” project (i.e. something i hack intermittently on) is crosspad, which is ultimately intended to be a universal viewer, player, editor and converter for crossword file formats. i’m mostly concentrating on the viewer and converter bits, since i think that fills a niche where there aren’t any good alternatives (there are lots of good editors and players, but they use several incompatible formats).

                                                                          i’m also working on a web frontend in a separate project, but i find that a lot more of a struggle (how the heck did html layout get to be so damn hard anyway?!), so i typically work on the gtk frontend and every now and then put in a bunch of work to try to catch the web frontend up. i expect the web version would get a lot more users if i actually finish it, though.

                                                                          1. 1

                                                                            A small, paid, closed-source, centralized social network.

                                                                            1. 1

                                                                              In order of presentability:

                                                                              • an imageboard written in Ur/Web + a bit of C
                                                                              • an X11 bindings library in pure OCaml that compiles the protocol descriptions into somewhat well-typed code, which I fear I’ll never finish
                                                                              • a Syncplay client initially in Hy, now in Go, which is what I’m currently nibbling in my spare time
                                                                              1. 1

                                                                                Most recent project, a Gemini server. Gemini is a protocol somewhat between gopher and http (more on the gopher end) that addresses some of the issues with gopher. Not only was it the first Gemini server, it’s also has the most features, including content handlers and support for CGI scripts. It not only helped to shake out the bugs in my Lua TLS interface and network event driver, but also my URL parsing code.

                                                                                It’s a fun little project.

                                                                                [1] That’s not the code I’m currently using—I have yet to push the changes up, and it’s a major API change sadly.