[HN Gopher] Ask HN: What are some tools / libraries you built yo...
       ___________________________________________________________________
        
       Ask HN: What are some tools / libraries you built yourself?
        
       Many times you just want to plug something in. PostgreSQL, Node.JS
       Express, Java Spring, numpy, Three.js. There's many examples where
       the already existing solution fits well.  Sometimes that's not good
       enough tho. What are some tools, libraries or services you built,
       are they open-source and why weren't you satisfied using what
       already existed?
        
       Author : graderjs
       Score  : 239 points
       Date   : 2021-05-16 07:47 UTC (15 hours ago)
        
       | CarrotCodes wrote:
       | Daisy is a Kotlin (server side) message processing library based
       | on some boilerplate I've written a number of times privately
       | https://github.com/CarrotCodes/Daisy
       | 
       | I've been thoroughly enjoying using Kotlin for backend
       | development for a few years, and gave coroutines a chance this
       | year. Feels great to open-source something that's been privately
       | useful, and hopefully contribute to the wider ecosystem.
        
       | wsc981 wrote:
       | I've built a Swift library to generate 2D dungeon maps, based on
       | Perl and Javascript code from Donjon [0]. The code is kinda ugly
       | but it works and I think it is one of the nicer dungeon
       | generators: https://github.com/wolf81/DungeonBuilder
       | 
       | The repo contains the original Perl and JavaScript code for
       | reference.
       | 
       | I also wrote a small library to deal with time in an AD&D
       | setting. This library is also in Swift and the code is quite
       | clean I think: https://github.com/wolf81/Harptos
       | 
       | I built both libraries to use for a game, but I never finished
       | it: https://www.youtube.com/watch?v=TsqMGCWeD6I
       | 
       | At some point I hope to do a re-write in LOVE 2D.
       | 
       | ---
       | 
       | [0]: https://donjon.bin.sh
        
       | wcarss wrote:
       | I made a crappy little web tool[1] that lets me paste a timestamp
       | into it, and will show me that time in my current timezone by
       | default (I think that's just hardcoded haha), or in another one
       | that I select. I mostly use it when reasoning about logs -- for
       | some reason my mind has never gotten used to mapping UTC time to
       | my time.
       | 
       | It also has a selector for the source timezone, but that doesn't
       | work, for reasons I've forgotten. I think that part was intended
       | to allow me to see times without tz data included, reinterpreted
       | as being from other tzs, but I never ended up using it enough to
       | fix.
       | 
       | I made this because I often read some logs, thought "hmm when was
       | this again?", then typed "UTC to EDT" into a new tab, and then
       | ended up on some ad-loaded page that with dropdowns to select
       | things like the year. I don't want dropdowns! I've already got a
       | timestamp. I made this over a year ago and I use it 2-3x/week.
       | 
       | 1 - https://wcarss.ca/tz
        
         | nicoburns wrote:
         | Yeah, nice benefit of living in the UK is local time is at most
         | one hour out from UTC. Downside is it's easy to code timezone
         | bugs in winter and not notic until summer!
        
       | arbuge wrote:
       | https://addue.com - set of internet marketing tools we needed
       | most often in our marketing agency. Didn't find any existing
       | product offering all of these in one place.
        
       | haxzie wrote:
       | I built https://snipp.in because I was top frustrated about the
       | loading times of notion. I am a developer and I take notes quite
       | often, most of us spend a lot of time on an IDE and when we need
       | format a quick json or copy a tiny snippet we often find
       | ourselves in opening another instance of an editor with a txt
       | file or random website to formate json. Snipp.in is a tiny jn
       | browser editor, note taking app and a snippet manager all in one
       | which looks like an Editor but really fast without any bs of
       | signin/signups or cloud. It just stores everything in your
       | browser using IndexedDB. It's also open-sourced at
       | https://github.com/haxzie/snipp.in
        
       | tycoon177 wrote:
       | This last week, I created my own minimal rss reader that has no
       | fluff so that I could combat my incessant use of the web. My
       | intent was to make content as dry as possible so that it doesn't
       | continually pull me in.
       | 
       | Here's the Hacker News rss feed in action!
       | https://rss.mchone.dev/?feed=https://news.ycombinator.com/rs...
       | 
       | Here's the engadget rss feed as well. It's more content-rich
       | https://rss.mchone.dev/?feed=https://engadget.com/rss.xml
       | 
       | And here's my github repo: https://github.com/BenMcH/remix-rss
        
       | catchmeifyoucan wrote:
       | I built something called Libmon (https://libmon.com/) to monetize
       | programming libraries.
       | 
       | I had built one for the product I was working on, but I wasn't
       | sure if I wanted to open source it yet and give it away just yet.
       | 
       | It lets you set call limits on function calls, and various
       | counters within a library to have a "demo" period. I built it
       | because I didn't want to stand up a service that I'd have to
       | maintain.
       | 
       | Libmon handles providing tokens for customers. It integrates with
       | Gumroad. So you just need to create a product page, drop in our
       | library into yours and set your limits, and you're good to go.
        
         | Cyberdog wrote:
         | I feel like your "How it Works" section is missing quite a bit.
         | Is your implementation specific to certain programming
         | languages or frameworks? How is the number of times the
         | framework is used tracked, and what's stopping someone from
         | doing something like just deleting the file that's counting the
         | uses so it appears as a new installation again?
        
           | catchmeifyoucan wrote:
           | Thanks for the feedback! Right now it only works for NodeJS.
           | 
           | It's a library that you call from the library you want to
           | monetize, and you can pass the token as an arg within your
           | constructor. It makes an API request to validate with our
           | token service. It also exposes a few helper methods (see
           | docs) to kill a library (e.g by crashing it).
           | 
           | It's not a catch all, end all kind of thing. It just makes
           | the library a tad harder to use without purchasing a token.
        
       | tbrock wrote:
       | I wrote a tool to tail CloudWatch logs called saw:
       | http://github.com/TylerBrock/saw
       | 
       | I was so fed up trying to debug lambdas and the other AWS
       | offerings that a tool like this to see program output in near
       | realtime is indispensable. I use it all the time.
       | 
       | Is it bug free? No
       | 
       | Did i write tests for it? Also no.
       | 
       | Is it useful? Yes.
        
       | nathants wrote:
       | i often am annoyed with the generality and complexity of existing
       | solutions, and seek something simpler. additionally, that which i
       | cannot build, i do not understand. to summarize: building things,
       | for fun and profit.
       | 
       | agr: https://github.com/nathants/agr
       | 
       | like ag or ack, but with the ability to replace matches or delete
       | lines.
       | 
       | tinysnitch: https://github.com/nathants/tinysnitch
       | 
       | a minimal system firewall for inbound/outbound connections with
       | visual prompts on connections without an existing rule. fails
       | closed.
       | 
       | cli-aws: https://github.com/nathants/cli-aws
       | 
       | a cli for working with aws, particularly ec2 and lambda, that
       | dramatically simplify operations. currently exploring a go port.
       | 
       | bsv: https://github.com/nathants/bsv
       | 
       | a binary data format and composable tools for maximum performance
       | data processing. several tools have triplicate implementations in
       | go and rust for performance experiments. generative testing with
       | small and varying buffer sizes ensure correctness. prototype with
       | pipes, optimize with a single binary (see related posts in
       | readme).
       | 
       | s4: https://github.com/nathants/s4
       | 
       | maximum performance distributed object storage with adhoc
       | distributed computation and data shuffle. duplicate
       | implementations in go and python, for fine grained objects prefer
       | go, for medium and coarse grained, use either. use with ephemeral
       | data and instance local storage (i3en). prefer vendor object
       | storage for durability.
        
       | superasn wrote:
       | I wanted to easily deploy chrome's puppeteer scripts on AWS
       | lambda. The goal was to alert me when a delivery slot was
       | available on Bigbasket during peak covid.
       | 
       | Now I use the same to check if my websites are running properly
       | :)
       | 
       | I call this project little lambda puppets and it deploys
       | puppeteer script on aws lamba in one click and comes with inbuilt
       | telegram api integration to send out alerts and cron. It has
       | served me well for almost over an year now.
       | 
       | (1) https://github.com/san-kumar/lambdapuppets
        
       | Cyberdog wrote:
       | My first major Drupal project was for a local newspaper (now
       | defunct... hopefully my site wasn't too big a factor in that) to
       | which many writers were publishing articles, first to a "staging"
       | site for sign-off to an editor, then to the live site. One of the
       | many, many problems we ran into on that project (it was
       | definitely a learning experience for all involved) is that the
       | writers would link to other articles by finding the article on
       | the staging site, copying the link, and then pasting that link
       | into the article. When the article was published to the live
       | site, that link was still linking to the staging site's URL which
       | was inaccessible to the broader internet, so they were
       | effectively broken links.
       | 
       | To fix this I wrote a Drupal "input filter" called Pathologic
       | which basically found all internal links in content and tried to
       | rewrite them to point to the same content on the "current" site
       | (which would be the live site after the article was published
       | there). Eventually, after feedback from others, it could do other
       | tricks like rewrite absolute paths to relative ones and vice
       | versa (so your paths could be relative in a web browser, but
       | absolute when the content was published via RSS feed or email),
       | make sure http:// vs https:// was sorted out, and so on - broadly
       | speaking, its goal was to make sure that links to internal
       | content were always correct in all circumstances, and except for
       | a few bizarre edge cases (there were always bizarre edge cases,
       | though I'm glad to say they got exceedingly bizarre as the
       | project matured), it met that goal. It became quite popular in
       | the Drupal ecosystem and was my most successful open source
       | project by far in terms of the number of users.
       | 
       | Sadly, in recent years, I haven't been able to work with Drupal
       | except for either small personal projects or projects that ended
       | up failing before launch, so the code is now in disrepair and
       | won't run well on current releases Drupal 8 or 9 if it runs at
       | all. I'm hoping some day I'll be commissioned for a new Drupal
       | project again and have the motivation to get it updated, but for
       | now it has rotted. I'm still really proud of how many people it
       | helped out in its heyday, though.
       | 
       | https://www.drupal.org/project/pathologic
        
       | amacneil wrote:
       | Dbmate: https://github.com/amacneil/dbmate
       | 
       | I found most database migration tools tried to be too smart (I'm
       | not a fan of automatic migrations), were too tightly integrated
       | with specific languages or frameworks, or didn't support basic
       | developer workflow pleasantries such as dropping and recreating
       | the database.
       | 
       | I created a simple single binary migration tool that runs
       | migrations (sql files), and keeps track of applied migrations in
       | a table (inspired by Active Record migrations). Dbmate works with
       | any language or framework, and generally tries to be useful while
       | staying out of your way.
       | 
       | Comparison against other tools here:
       | https://github.com/amacneil/dbmate#alternatives
        
         | doctor_eval wrote:
         | I found that I wanted something really specific, and built a
         | tool in Go that lets you write, modify and use plpgsql
         | functions as if they were regular source code files rather than
         | database objects. You can write them as Go packages, import
         | those packages into other Go projects, and write tests -
         | without maintaining migration files for anything other than the
         | tables. Combined with IDEA's plpgsql language support it's made
         | me super productive.
         | 
         | I've used it very successfully in production for a few years
         | and have been curious if anyone else would find it useful
         | enough for me to open it up.
        
           | danielheath wrote:
           | I definitely want something like that.
        
         | smileart wrote:
         | Used Dbmate in my pet-project. Absolutely love it! Thank you!
        
         | void_mint wrote:
         | Curious about the lack of comparison to https://flywaydb.org/ ,
         | which I've seen a ton of support for in the past and people
         | seem to really enjoy
        
         | asadawadia wrote:
         | I love Dbmate! Such a great library!
        
       | emehex wrote:
       | I'm building a turn-based strategy game for iOS (in Swift).
       | 
       | Just extracted the Monte Carlo Search Tree logic into a package
       | called Carlo [1]!
       | 
       | [1] https://github.com/maxhumber/Carlo
        
       | monokai_nl wrote:
       | A tool to automatically resize pictures in the media library to
       | the grid layout you define in your Wordpress theme:
       | https://responsive.pics/
        
       | skittleson wrote:
       | Many times I wanted a small portable tool that I can manage 3d
       | printer / cnc gcode files. So I built just that.
       | https://github.com/skittleson/GcodeController
        
       | diego wrote:
       | I built bip38, a java library for password-protected private keys
       | in Bitcoin (and dogecoin) implementing the BIP388 standard.
       | 
       | https://github.com/dbasch/BIP38
       | 
       | And implementations of paper wallets for offline storage using
       | it:
       | 
       | https://github.com/dbasch/dogecoin-paper-wallet/
       | 
       | https://github.com/dbasch/bitcoin-paper-wallet
        
       | CrawfordJF wrote:
       | A Python program to make an embeddable search engine for a static
       | website: https://github.com/joe-crawford/Static-Site-Search
       | 
       | It indexes the site and generates search functionality in
       | JavaScript (the index is just a static JSON file) that can be
       | uploaded wherever JS/HTML/etc. files can be uploaded. I thought
       | it might be useful for people with sites on GitHub pages or
       | similar who don't want to use one of the major search engine
       | company widgets.
       | 
       | Also my back of the envelope calculations were that the simple
       | search index for a small-medium site won't be that big.
        
         | mrweasel wrote:
         | That's pretty clever, I guess that for most personal blogs it
         | will be more that sufficient.
        
           | CrawfordJF wrote:
           | Cheers, yes that was the idea!
           | 
           | I looked for a while to find something similar. I'm sure it
           | must already be implemented out there, but to answer the
           | question in the original post about why build something, I
           | couldn't find an easily downloadable "tool" for doing it when
           | I looked (2019) and it was simple enough to be "fun".
        
       | boyneyy123 wrote:
       | I have built a few tools for developers:
       | 
       | - Mockit - A tool to quickly create mocked APIs.
       | 
       | - awsicons.dev - Quickly find AWS icons
       | 
       | - EventBridge Atlas - Discover and document your AWS EventBridge
       | schemas
       | 
       | I'm currently building a tool that will hopefully help all open
       | source engineers in the world.
       | 
       | I want to give open source engineers the ability to quickly
       | create landing pages for their GitHub projects.
       | 
       | I think README.md files can only go so far, but (for me anyway)
       | nothing beats a nice landing page selling your open source
       | project.
       | 
       | Not all of us have the time or skills needed to create landing
       | pages so I built https://gitpages.app that can help everyone.
       | 
       | https://gitpages.app is a tool that hopefully can inspire and
       | help open source engineers. It's still in development but if
       | people are interested let me know.
       | 
       | Cheers!
        
         | mr_o47 wrote:
         | awesome project And I definitely love the idea of helping open
         | source developers with the landing pages
         | 
         | Me as an opensource developer always have a hard time building
         | a landing page as I suck at design
        
           | boyneyy123 wrote:
           | Thanks!
           | 
           | Yeah thats the whole point, just to help people out! I enjoy
           | doing all sorts and writing tools so anything I can do to
           | help people.
           | 
           | If your interested in the project, sign up for the early
           | access, I give weekly updates on progress and hopefully soon
           | give people links to give the tool ago for themself!
           | 
           | I just this second created another Youtube video with a
           | weekly update if your interested:
           | 
           | https://youtu.be/rimFEf5grGk
        
       | daneeveritt wrote:
       | I made a platform for hosting game servers at scale. All of the
       | options previously on the market at the time were highly limited,
       | didn't really put a lot of effort into security, or had existed
       | for 10+ years and didn't feel much need to innovate.
       | 
       | https://github.com/pterodactyl/panel
       | 
       | Kind of took off after posting here about it a few years back,
       | and now it just kind of sustains itself with some bug fix inputs
       | every now and then.
        
       | gravypod wrote:
       | Some tools I built at my last job:
       | 
       | 1. Pronto [0]: An "ORM" that mapped a protobuf to an object in
       | MongoDB. The idea was to extend it to other storage backends
       | (RocksDB, sstable, sqlite, etc) to make it easy for a service
       | owner to decide what access pattern they needed and easily and
       | efficiently map a proto to it. It wasn't too slow and was very
       | intuitive for people to use since it only exposed a LevelDB-like
       | API (Get(key), Set(key, value), List(filter)) and it made use of
       | some of the newer features of MongoDB's libraries to do sorts and
       | streaming on the client side. Really lowered latency and DB size
       | requirements.
       | 
       | 2. bazel_compose [1]: A tool to wrap Bazel, rules_docker, ibazel,
       | and docker-compose to give developers a fast, hermetic, and
       | automatically rebuilding/restarting local environment for
       | development. You could essentially go to
       | `http://frontent-a.localhost` in your browser and get routed to
       | the right frontend.
       | 
       | 3. branchpoke [2]: When I joined we had ~300 open branches per
       | developer. People would hack something, push it to git, and
       | forget about it. Some branches had critical fixes that were
       | deployed before getting into master. Lovely startup things ;). I
       | wrote this to send everyone a slack message once a week about 10
       | branches they had open that were over a month old in our
       | monorepo. Over a few months we deleted most of the old branches.
       | 
       | Stuff I built at college:
       | 
       | 1. Parking Analysis [3]: My college had an _awful_ parking
       | situation. I setup a cron to hit an undocumented API grab the
       | number of spots open in the parking lots. I graphed those with a
       | heatmap to find when our parking lot filled up around different
       | holidays.
       | 
       | 2. Butcher School [4]: A website used to "study" (memorize) the
       | ARRL exam question set. It used some regex to parse the .doc file
       | that is published by ARRL into it's json so anyone can create an
       | updated set of questions. It also ran in local storage so you
       | could study without internet on your laptop (like in the car on
       | your way to Dayton). I built this for students who were having a
       | tough time joining the Amateur Radio Club at NJIT (I was the
       | treasurer). It's not the best tool by any means. It's just the
       | most free (price and libre).
       | 
       | [0] - https://github.com/CaperAi/pronto/
       | 
       | [1] - https://github.com/CaperAi/bazel_compose
       | 
       | [2] - https://github.com/CaperAi/branchpoke
       | 
       | [3] - https://github.com/gravypod/NJITParking/
       | 
       | [4] - https://github.com/gravypod/ButcherSchool
        
       | michaelbuckbee wrote:
       | I made https://foragoodstrftime.com/ - which isn't open source
       | (But honestly is just a few lines of code). I made it as I found
       | it useful and hoped others would as well.
        
         | excitednumber wrote:
         | Great name
        
       | nsdarren wrote:
       | I built Ward (https://github.com/darrenburns/ward), a Python test
       | framework.
       | 
       | I have issues with the way the pytest fixture system works
       | (parameter names matching function names), the readibility of the
       | output, and some other things.
       | 
       | It started as a little learning experiment and has turned into
       | something I've been building into what I hope will (and already
       | is in some aspects) be a viable contender to pytest.
        
       | geuis wrote:
       | I wrote Helium https://github.com/geuis/helium-css a while back
       | to help find unused css on a site. The process of building sites
       | has changed a lot since then so it's not as universally useful as
       | it used to be. (...Glares at React...). Joking aside, it's had a
       | good run. I've had some ideas for a few years about an updated
       | version but it would really be an entire new project.
       | 
       | Also created https://jsonip.com. Get your IP address in a json
       | object. I created it a decade ago to solve some problem I had and
       | have been running it ever since. Last I checked it's supporting
       | 4-6 million requests per day from a pretty wide group of users.
        
       | j4yav wrote:
       | I am building AsyncGo (https://asyncgo.com) which is still
       | evolving but it is a kind of forum for businesses structured
       | around having important conversations and documenting the
       | decisions that come out of them.
       | 
       | I built it to have something simple and lightweight for
       | discussions for remote teams, as an alternative to meetings and
       | using more heavyweight methods like issues for conversations. It
       | is still early days but there is a free tier, if you are
       | interested and check it out I would love feedback.
        
       | miguelmurca wrote:
       | I wanted something that was fairly simple like Make, but that
       | allowed me to write/manage my logic, and not have to learn a
       | domain specific language. OTOH I didn't want to go through the
       | hassle of having to install Meson or whatever, and learn how to
       | configure it.
       | 
       | I built [Sane][0], which is a single-file library without
       | dependencies, that is basically a decorator definition and a
       | function export.
       | 
       | [0]: https://github.com/mikeevmm/sane
        
       | utdiscant wrote:
       | When building Eduflow.com we needed in-app and email
       | notifications. We built notifly.io to solve it and released it as
       | a SaaS.
        
       | dmotz wrote:
       | I recently wrote a library to abstract away the tedious aspects
       | of WebRTC called Trystero:
       | 
       | Repo: https://github.com/dmotz/trystero
       | 
       | Demo: https://oxism.com/trystero/
       | 
       | The goal is to allow adding P2P/multiplayer to your web app in a
       | few lines and no server setup.
       | 
       | While there are a few good abstraction libraries out there (this
       | one builds on simple-peer), I felt the need the set up a server
       | for matchmaking peers was too much friction for experiments and
       | too centralized in the context of P2P apps. Trystero abstracts
       | away the matchmaking aspect using BitTorrent, IPFS, or Firebase
       | behind the scenes.
        
       | ericwooley wrote:
       | I'm almost done with a graphql react form generation plugin for
       | graphql code generator.
       | 
       | Basically, just write a mutation, and a react form pops out.
       | Fully customizable per form, or globally with context.
       | 
       | Just gotta finish validation, and give it some real good testing.
       | 
       | GitHub https://github.com/ericwooley/graphql-code-generator-
       | react-f...
       | 
       | Website https://graphql-code-generator-react-
       | form.thewooleyway.com/
        
       | chriswarbo wrote:
       | I needed to process some large JSON files on a 32bit machine, and
       | kept blowing the RAM. I found it easier to process the data as
       | msgpack, since msgpack specifies field lengths in advance, whilst
       | JSON requires scanning through the contents to find matching
       | delimiters. I couldn't find a conversion tool which didn't _also_
       | run out of RAM (presumably due to buffering until it found a
       | delimiter); so I wrote my own bare-bones converter (which assumes
       | well-formed input and doesn 't even support numbers):
       | http://chriswarbo.net/git/json-to-msgpack
       | 
       | For another project I was getting static HTML reports from a
       | tool, which contained third-party styles and scripts that didn't
       | work when the reports were accessed from 'file://' URLs. I asked
       | on StackOverflow (
       | https://stackoverflow.com/questions/50339325/inlining-extern... )
       | but all the suggestions involved a Web browser or complex
       | Javascript build tools. I ended up writing a little Python script
       | to replace such third-party content with data-URI versions:
       | http://chriswarbo.net/git/html-inliner
       | 
       | Many years ago I wanted to control some physical
       | sensors/actuators using an Arduino, controlled via a complicated
       | C++ project running on my desktop. I wrote a simple sketch for
       | the Arduino which just reads/writes 'commands' over a USB cable,
       | in a simple JSON format http://chriswarbo.net/projects/arduino (I
       | then wrote a trivial Python script to shuttle messages back/forth
       | between the USB line and the C++ program)
       | 
       | I like reading RSS/Atom feeds in Emacs, but my preferred reader
       | only supports maildir. There are a few projects which can convert
       | between these, but they all include 'databases', URL fetching,
       | etc. which I didn't need. Hence I took one of these and ripped
       | out all of the functionality I didn't need
       | http://chriswarbo.net/blog/2017-01-14-rss_to_maildir.html
       | 
       | I've come up with a few scripts and Emacs macros for extracting
       | metadata from PDF files http://chriswarbo.net/projects/pdf-
       | tools.html
        
       | anubhav200 wrote:
       | I created React Native styling library that support media queries
       | and it even lets you create your own style rule.
       | 
       | https://github.com/anubhavgupta/react-native-styleman
        
       | tastyfreeze wrote:
       | I made my own Java libraries for interacting with about a dozen
       | crypto exchange APIs. I used it for awhile for a triangular
       | arbitrage bot.
        
         | mathgenius wrote:
         | That sounds like fun (except for the java part!). How did it
         | go?
        
       | NikhilVerma wrote:
       | I made a small utility to help me search for JS code better. It's
       | called @nikhilverma/ast-grep. It works really well for my use
       | case but I hope to polish it more and release it more widely.
       | 
       | npx @nikhilverma/ast-grep '{ meta: { title: "___" }}' src/
       | 
       | This will search for any object with a key meta which is also an
       | object and has a property called title which is any string. It
       | uses AST for grepping so you don't need to worry about placement,
       | whitespaces etc.
        
       | breuleux wrote:
       | I made a CLI interface for the Microsoft Academic API so you can
       | search for papers, download them, and generate HTML from a
       | collection: https://github.com/mila-iqia/paperoni
       | 
       | I'm using it to automatically collect papers published by members
       | of the research institute I work for, it's working pretty well.
       | 
       | I also made a small utility to sync folders on-demand on my
       | different machines: https://github.com/breuleux/synecure
       | 
       | Most of the work is done by a library called bsync that someone
       | else had written, which itself uses rsync, but I'm quite happy
       | about the interface I made. By default it syncs home-to-home, so
       | you don't have to specify both the source and destination
       | directories. You can just type "sy -r remote" in ~/whatever to
       | sync it to ~/whatever on the remote.
        
         | matsche wrote:
         | paperoni is awesome!
         | 
         | I once implemented the crossref api in rust in order to search
         | for publications from the command line
         | https://github.com/mattsse/crossref-rs
        
           | breuleux wrote:
           | Thanks :)
           | 
           | How complete is crossref? I can't find my own publications on
           | the search page they have on their site (well, I found one),
           | but the search engine is garbage so I don't know whether it's
           | because they're not in the database or if it's just an issue
           | with the search. I assume it works better with the API.
           | 
           | Microsoft Academic is quite complete from my experience, I
           | haven't really managed to find any paper that wasn't in their
           | database unless they're very recent. Only downside is the
           | need to get an API key (but they're free up to 10K
           | queries/month or so, which is plenty).
        
       | crtxcr wrote:
       | - adhocify: I wanted to launch commands upon file system events,
       | however without first configuring a daemon for that task.
       | Therefore, I created adhocify:
       | https://github.com/quitesimpleorg/adhocify
       | 
       | - qssb.h: A header library to make sandboxing applications on
       | Linux more easier. Currently at an early stage though:
       | https://github.com/quitesimpleorg/qssb.h The original aim was to
       | make utilizing namespaces and seccomp easier without dealing with
       | nuances. Currently working to get landlock in, then perhaps a CLI
       | utility and test cases.
       | 
       | - raou: I found sudo too complex for the simple taks of switching
       | users on a system. Given sudo also had some vulnerabilities in
       | the past, I decided to write an alternative in Rust:
       | https://gitea.quitesimple.org/crtxcr/raou
       | 
       | - qsni: https://github.com/quitesimpleorg/qsni At times I simply
       | wanted to cut off a few applications from the network or to
       | assign some specific firewall rules:
       | https://github.com/quitesimpleorg/qsni
        
       | j4yav wrote:
       | I commented my own project in another thread, but I have to say
       | that reading all these is really inspiring. The HN community is
       | pretty amazing.
        
         | mathgenius wrote:
         | I'm vaguely reminded of freshmeat.net, which I used to read
         | religiously, some 20 years ago... back in the day :-)
        
       | baron816 wrote:
       | Fromable[1] allows you take any Javascript iterable, transform it
       | using .map and .filter, and then output it into a collection,
       | without creating intermediate values.
       | 
       | [1] https://github.com/baron816/fromable
        
       | corobo wrote:
       | https://imgy.org - yep open source [1]
       | 
       | Made it because imgur put an ad interstitial into its upload flow
       | and I just want to be able make images available online quickly
       | 
       | [1] https://github.com/cohan/imgy
        
         | dkarras wrote:
         | nice domain you got there
        
       | maciekmm wrote:
       | I created a Firefox addon to display tabs in the sidebar, grouped
       | by privacy containers (isolated cookie containers)
       | 
       | https://addons.mozilla.org/en-US/firefox/addon/container-tab...
        
         | edoceo wrote:
         | Wow, thanks!
        
       | w_t_payne wrote:
       | I wrote a Python library for model based systems engineering,
       | because existing tools (e.g. Simulink) don't coexist nicely with
       | mainstream version control systems, and don't generally have such
       | a nice interface for system level meta-programming and design
       | optimisation.
        
         | raizinho wrote:
         | What's the name of the library?
        
       | jacobmischka wrote:
       | I made a few things for my personal use that are used often that
       | I'm quite pleased with, in no particular order:
       | 
       | 1. Wallpaper adhesive (https://github.com/jacobmischka/wallpaper-
       | adhesive), an electron app I made _ages_ ago when electron was
       | still relatively new that creates spanned wallpapers for
       | multimonitor setups based on your displays ' resolutions. I use
       | it every time I change my wallpapers, every month or so.
       | 
       | 2. ics-merger (https://github.com/jacobmischka/ics-merger), a
       | suite of tools including a webapp to merge separate calendar
       | feeds together into a grouped feed, with possible subgroups. One
       | can navigate through the subgroups, see event details, and
       | subscribe to a merged feed, among other similar things. I made it
       | for work, where it's used as the master departmental calendar
       | feed. The webapp heavily relies on fullcalendar, but the added
       | features aren't trivial.
       | 
       | 3. Tea whistle (https://github.com/jacobmischka/tea-whistle), my
       | second simple microcontroller project I made for my mother for
       | her birthday because her teapot doesn't have a whistle so she
       | kept accidentally boiling it over. It just polls the attached
       | thermometer and beeps when the temperature is over boiling. She
       | uses it every day and says she hasn't boiled it over once since!
       | 
       | 4. inmytime.zone (https://github.com/jacobmischka/inmytime.zone),
       | a simple webapp that allows you to create a URL that converts the
       | time you give it into the local timezone of whoever is viewing
       | it. It's effectively just a clone of https://everytimezone.com/
       | or one of the many other similar tools, but much less busy and
       | without ads. I let the domain expire a few months ago, so it's
       | not currently available, but I just renewed it so it should be
       | again once the domain servers propagate. Edit: Seems to be back
       | up for me now, at least.
       | 
       | 5. Gym notebook (https://github.com/jacobmischka/gym_notebook), a
       | flutter app I made when flutter was still quite new to track my
       | workouts using firebase for storage. It's quite rough around the
       | edges, fetches data from the network way more often than
       | necessary, and needs a few bugfixes and could use a bit of work,
       | but it's still good enough for me to use it 4-5 times per week.
        
       | schappim wrote:
       | I made a macOS script that OCRs text on screen. It is super handy
       | for dealing with everything from scanned documents with account
       | numbers to web pages with text in images.
       | 
       | When I press F16, I get an image capture cursor, and the area
       | selected is turned into text.
       | 
       | Example:
       | 
       | https://files.littlebird.com.au/Screen-Recording-2021-05-17-...
        
         | nicoburns wrote:
         | Can you share it? That sounds pretty useful!
        
           | jjgo wrote:
           | Not op, but I wrote something equivalent based on a linux
           | script that I found [1]. Here's the mac version of the script
           | [2]. You need tesseract [3] installed for the OCR. For
           | launching it using a keyboard shortcut I use a hammerspoon
           | [4]. Example of how I bind it [5]
           | 
           | [1] https://github.com/sdushantha/bin/blob/master/utils/ocr
           | 
           | [2]
           | https://github.com/JJGO/dotfiles/blob/master/scripts/bin/ocr
           | 
           | [3] https://pypi.org/project/pytesseract/
           | 
           | [4] http://www.hammerspoon.org/
           | 
           | [5] https://github.com/JJGO/dotfiles/blob/master/mac/.hammers
           | poo...
        
             | schappim wrote:
             | Nice, I started with tesseract, but moved to Google Vision
             | as the quality was better.
             | 
             | Azure's offering was better for hand written notes.
        
               | jjgo wrote:
               | Interesting, that doesn't really work for me as I
               | sometimes use it to OCR sensitive stuff from scanned
               | documents, and it wouldn't work offline. I found
               | tesseract to work pretty reliably for my use and only
               | fail when scanning non-ASCII characters.
        
               | schappim wrote:
               | Yeah, I only use it for things where the context wouldn't
               | matter. For example grabbing an account number from a
               | document.
               | 
               | I've been experimenting w/ CoreImage detectors (mainly
               | for categorisation of scanned documents based on QR
               | codes).
               | 
               | When I clean things up today, I'll see what can be used.
        
         | deepdmistry wrote:
         | Please share if possible, this is very useful
        
           | jjgo wrote:
           | Not the original poster, but this
           | (https://news.ycombinator.com/item?id=27177609) how I do the
           | same thing
        
         | schappim wrote:
         | Edit: I'll clean the script up and make it available as a "Show
         | HN:" soon.
        
         | NetOpWibby wrote:
         | You have a hit on your hands. Let me (@NetOpWibby) know if you
         | need a website built.
        
       | fersho311 wrote:
       | I want a web interface that sets up ssl certificates for me (with
       | wildcard sub domains) and let's me create sub domains on the fly
       | so I can run multiple apps on my server quickly.
       | 
       | I don't like nginx because managing the config files is a hassle,
       | it's complex, and there's a lot of copying redundant config files
       | over and over again.
       | 
       | https://github.com/garagescript/myproxy
        
       | davidkuennen wrote:
       | I created https://minimalanalytics.com some years ago.
        
       | GauntletWizard wrote:
       | I built KubeTLS[1]. It automatically generates TLS Certificates
       | for pods within your kubernetes cluster. It's a simple model for
       | mTLS; The CA's scope is your cluster, and identity is the
       | ServiceAccount of your pods.
       | 
       | It's not production ready and the libraries to do advanced
       | authentication aren't there yet, but it gets past the initial
       | hump of "I need to encrypt in-transit and not rely on my cloud
       | provider's network links to be safe" (because they aren't)
       | 
       | [1] https://gitlab.com/gauntletwizard_net/kubetls
        
       | mingodad wrote:
       | I created Lua with C/C++/Java/Javascript syntax
       | https://github.com/mingodad/ljs
       | 
       | Also forked a scripting language
       | https://github.com/mingodad/squilu and extended it to accept a
       | pseudo C++/Java/CSharp/Typescript syntax to make easy to reuse
       | code and have fast iteration when creating new functions (with it
       | and minor changes I could get
       | https://ssw.jku.at/Research/Projects/Coco/ parser to work for
       | easy grammar development).
       | 
       | Create a tool for create, document and prototype database
       | applications at "user level" in near realtime (live)
       | https://github.com/mingodad/db-api-server.
       | 
       | Extended GLPK to accept a bigger subset of AMPL and made some
       | performance improvements in the GMPL interpreter
       | https://github.com/mingodad/GLPK
        
         | mingodad wrote:
         | Here I'm showing something I did some time ago
         | https://meimporta.eu/htmleditor/ it's a crude WYSIWYG html
         | editor for people that already knows HTML/CSS and uses
         | basically the browser contenteditable capabilities. It was
         | inpired by Webflow (https://webflow.com/) but very simple and
         | basic, it has 4 main sections: editor shortcuts, wysiwyg
         | editor, html editor, tree view. Some things are easy done in
         | the wysiwyg editor but sometimes the raw html editor is better,
         | we can edit in both of then and get instant result.
         | 
         | Don't bother comment on the UI/UX it's an personal naive tool
         | straight to the point I needed. Anyway any feedback to improve
         | is welcome.
        
         | solipsism wrote:
         | What in the world does _with C /C++/Java/Javascript syntax_
         | mean?
         | 
         | Four different languages with four different syntaxes.
        
           | mingodad wrote:
           | An attempt to allow code reuse for a subset of all of then.
        
             | solipsism wrote:
             | You should word it differently because I never would have
             | guessed that is what it means.
        
       | emehex wrote:
       | I've been working on gazpacho [1] for last two years.
       | 
       | It's a general purpose web scraping library for Python that
       | replaces BeautifulSoup + requests for most projects.
       | 
       | Just surpassed ~2K downloads every week!
       | 
       | [1] https://github.com/maxhumber/gazpacho
        
       | nierro wrote:
       | I built a C actor-like event library:
       | https://github.com/FedeDP/libmodule
       | 
       | It actually has lots of improvements in the 6.0.0 pull request
       | that i am delaying because i am too lazy (and haven't got much
       | time) to fully rewrite doc.
        
       | bichiliad wrote:
       | I have been working on an app to act like my short-term memory
       | and to help me focus. Its called ScreenHint, and it's loosely
       | based on an unmaintained app called Snappu. It's pretty
       | unpolished still (I don't even have a website figured out yet),
       | but it's been incredibly helpful to me so far. It's for macOS and
       | it's free, and any feedback would be hugely appreciated.
       | 
       | https://apps.apple.com/us/app/screenhint/id1566621533?mt=12
        
       | shinycode wrote:
       | I made an iOS app that is structured around the same idea of a
       | Bullet Journal. Is allows me to segment my tasks by priority of
       | today / this week / this month and later. Even on paper that's a
       | nice system that works pretty well to get things done.
       | 
       | I also built an Apple Watch that set a timer by adding prime
       | numbers up to 59 minutes. That was fun to do as an experiment. I
       | use more often the other way of setting the timer: by choosing
       | the end time. It's faster than the default app and when I can't
       | use Siri.
       | 
       | https://bulletweek.app
       | 
       | https://primetimer.app
        
       | mshekow wrote:
       | I built an Android app that lets you create bookmarks for any
       | kind of Android audio track (e.g. played by some music player or
       | podcatcher app). My app, "Stop It!", captures which player app
       | was used, which track/artist was playing, as well as the exact
       | timestamp. I create bookmarks whenever I hear something I like
       | (but I don't have time to pause the playback and make notes).
       | Stop It lets me get back to that particular track and time stamp
       | easily, hours or days later, and avoids that nice things fall
       | through the cracks. The bookmark creation mechanism is to pause
       | playback and immediately resume it, which you can do with any
       | Bluetooth headset - no need to unlock your screen. The app is
       | open source, but not on the Play store. I built it because
       | nothing like this exists... More details here:
       | https://www.augmentedmind.de/2020/08/16/stop-it-create-audio...
        
       | shezi wrote:
       | I built commandeer, a library for seamlessly exposing python
       | functions as command line calls.
       | 
       | https://commandeer.readthedocs.io/en/latest/
       | 
       | I was fed up with having to build the nth argparse parser and
       | instead used my already existing python functions to create the
       | cli for me.
        
       | mattgreenrocks wrote:
       | Currently:
       | 
       | AudioWrangler:
       | https://apps.apple.com/us/app/audiowrangler/id1565701763
       | 
       | Got sick of my Mac using the wrong audio device when waking up,
       | so I wrote a little utility that lets me prioritize which devices
       | to use based on what's connected. It's my first app on the App
       | Store. I'm enjoying learning Swift and using it to write desktop
       | apps!
       | 
       | In the past:
       | 
       | * Lucid: https://github.com/mattgreen/lucid.fish
       | 
       | A pure-style prompt for fish shell that pioneered truly async
       | fish prompts. Still use it daily.
       | 
       | * Fogeybot: https://github.com/mattgreen/fogeybot
       | 
       | A Discord bot for Heroes of the Storm that creates teams for
       | pickup games using player ratings.
        
       | cperciva wrote:
       | Open source spinoffs from Tarsnap: https://www.tarsnap.com/open-
       | source.html
       | 
       | scrypt: Because the world didn't have any strong password-based
       | key derivation functions.
       | 
       | spiped: Because using stunnel or ssh tunnelling to connect to
       | servers is _gross_.
       | 
       | kivaloo: Because I wanted a high performance KV store optimized
       | for small values (e.g. 40 bytes) rather than larger "items" (each
       | containing multiple key-value pairs) or "blobs" (e.g. cached
       | chunks of HTML).
        
         | justin_oaks wrote:
         | Can you elaborate on what makes stunnel or ssh tunneling
         | "gross"? Is it the network overhead they add or is it the
         | complexity of the protocol, or is it something else?
        
           | H8crilA wrote:
           | Not the author but the reliability of a simple SSH tunnel is
           | horrible. I still use it occasionally because it's "always
           | there".
        
           | cperciva wrote:
           | Protocol complexity, number of vulnerabilities in the
           | codebase, and for ssh there's reliability as well. (SSH
           | tunnels multiplex connections over a single TCP connection,
           | whereas TLS and spiped map one TCP connection to one TCP
           | connection.)
        
             | eps wrote:
             | But what's wrong with stunnel?
        
               | cperciva wrote:
               | Protocol complexity and the number of vulnerabilities in
               | the codebase.
        
               | anthk wrote:
               | OpenSSH too?
        
               | danielheath wrote:
               | It's not a small project...
        
         | papaf wrote:
         | Did you also write bsdiff [1] or is that someone with a similar
         | name?
         | 
         | [1] http://www.daemonology.net/bsdiff/
        
           | cperciva wrote:
           | Yes, that was also me. A very long time ago -- I wrote it in
           | 2003 when I was at university and I've barely touched it in
           | the past 15 years.
        
       | PNWChris wrote:
       | I used to maintain a sprawling spreadsheet to manage my
       | retirement investments. I would use it to compute the trades I'd
       | need to do to rebalance (so I can stay on-target with my desired
       | asset allocation).
       | 
       | I ended up making https://github.com/cjjeakle/rebalance-calc to
       | do the same thing, but with a slicker user experience. I use it
       | quarterly, so it definitely fits the bill for my use case, and I
       | occasionally show the tool to friends to help explain what
       | rebalancing is and how to do it.
        
       | [deleted]
        
       | sbacic wrote:
       | I wrote a frontend template for NextJS because I was tired of
       | having to set up everything every time I started a new project.
       | It includes i18n, Storybook, a test suite, some VSCode defaults,
       | linters for code and commit messages and a code formatter.
       | 
       | https://github.com/sbacic/frontend-template
        
       | soylentgraham wrote:
       | Amongst many other reinvented wheels; PopH264 -
       | https://github.com/NewChromantics/PopH264 A cross platform (mac,
       | win, ios, android, magic leap, pi, linux) h264 decoder and
       | encoder library with a nice and simple CAPI (alloc, push data,
       | pop data, free). I use it in unity, my own engine, node.js server
       | and just doing an unreal bridge.
       | 
       | There just wasnt a _simple_ cross platform library with hardware
       | support. (Anyone who suggests libav hasnt tried it outside of an
       | statically linked demo app :)
        
       | [deleted]
        
       | mevorah wrote:
       | I wrote a tool that parses a single user's Cloudwatch metric logs
       | as a .har file. Har files are used in the network developer pane
       | in browsers. Doing this allowed us to visualize a customer's
       | journey and discover areas in the code with high latency!
        
       | cl42 wrote:
       | I made a video input form: https://github.com/wgryc/video-input-
       | js
       | 
       | The idea is that you have a form field-like command that you can
       | record a response with. You can then submit the video via a
       | regular POST request.
       | 
       | I couldn't find any simple tools like this for rapid prototyping
       | different survey responses and experiences. It was fun to build
       | and nice that some people have starred this on GitHub!
        
       | lewisjoe wrote:
       | I made a chrome extension that lets me close tabs that I want to
       | read later & delivers them to my inbox every monday -
       | https://closetab.email
       | 
       | I also made my blog sync with my google docs - https://hexo.press
       | 
       | I knew both of those would be helpful for others as well, so I
       | made a service out of each of them and open sourced the code -
       | https://github.com/joelewis
        
         | chriswarbo wrote:
         | I made a Chrome extension which avoids duplicate tabs (based on
         | their URL). http://chriswarbo.net/git/chrome-duplicate-tab-
         | detector
         | 
         | I made it when developing Drupal sites, whose test output end
         | up with _lots_ of temporary HTML pages (response snapshots).
        
       | mikewarot wrote:
       | I wrote a cooperative multitasking system for Turbo Pascal
       | because I needed to be able to stream data through a series of
       | text pipes and it was easier than faking it with a bunch of
       | temporary files. I also wrote a series of data entry routines to
       | allow the quick creation of database editing programs.
       | 
       | I haven't open sourced them because I doubt anyone would care
       | about those old MS-DOS/TP7 tools now, and I'm not up for
       | maintaining them.
        
         | qorrect wrote:
         | > I haven't open sourced them because I doubt anyone would care
         | about those old MS-DOS/TP7
         | 
         | Maybe not a huge audience but I bet the people needing them
         | would be hugely grateful. I use a couple old tools that I
         | gladly contribute ( money ) to because despite being old they
         | work great and there is no alternative.
        
       | noT1 wrote:
       | CLI wizard to build infra
       | 
       | Uses a game loop to iterate over parameter collection.
       | 
       | I type something like "create kubernetes cluster" it checks for
       | cloud creds or asks, and proceeds to gather the cloud providers
       | params.
       | 
       | F5 saves state to JSON :)
       | 
       | It's opinionated in that it only ever spins up a new account
       | under an org. Blue/green accounts :)
       | 
       | Infrastructure people are insane to babysit all that (I used to
       | be one).
       | 
       | It's old man sysadmin rearing his ugly head again.
        
       | bakenator wrote:
       | I built a graphical logging tool called Llama logs. Mostly
       | because I thought it would be cool to see a live diagram of a
       | cloud system I was working on. Also because webgl has been a
       | hobby of mine.
       | 
       | https://llamalogs.com/docs/what
        
       | nickreese wrote:
       | Elder.js, an SEO first, Svelte framework and Static Site
       | Generator. [0]
       | 
       | Lots of SSGs existed but none supported Svelte and I wanted
       | partial hydration when people said it was impossible.
       | 
       | [0]: https://elderguide.com/tech/elderjs/
        
       | KyleJ61782 wrote:
       | My company does most of our development in Delphi, but
       | unfortunately that means that crash dumps are very difficult or
       | impossible to utilize with the embedded Borland/Embarcadero TDS
       | debugging information. I wrote a utility that extracts the TDS
       | info from a Delphi executable and uses an LLVM debug info library
       | to write out a PDB and also modify the executable to point to
       | that PDB.
       | 
       | The source can be found here:
       | https://github.com/powerworld/TDSToPDB
        
       | tburch wrote:
       | I built JsonBlob[1], to help mock out JSON APIs so that building
       | backends could be decoupled from front end development. I'd been
       | needing this tool forever and then finally spent a weekend about
       | 8 years ago building it out. I've been trying to find time to
       | rebuild it with Kotlin and Micronaut, but just don't have the
       | free time I used to have... [1] https://jsonblob.com/
        
       | gru wrote:
       | https://github.com/grdl/git-get - for cloning, managing and
       | organizing git repos. Inspired by the folder structure created by
       | "go get".
        
       | batch12 wrote:
       | I built an email forwarding tool for myself @
       | https://dontsellthis.email.
        
       | lindellme wrote:
       | Using microservices created frustrations when doing smaller
       | changes over all or most of these repositories. These changes
       | where often small and predictable. Like fixing the builder name
       | in a travis file, adding a pull request template or just some
       | minor renaming refactoring.
       | 
       | All of these where easily scriptable, but I needed a way to run
       | it everywhere. Hence multi-gitter was born.
       | 
       | https://github.com/lindell/multi-gitter
        
       | parkerhoyes wrote:
       | I created a CLI tool which is kind of like tar, except it only
       | saves the attributes and (optionally) hashes of files, and it
       | uses a text-based one attribute per line format. You can finely
       | configure exactly which attributes to save (eg. just execute
       | permissions, or just modified time, etc.) and it can write the
       | attributes back to the filesystem.
       | 
       | It's useful for various sysadmin-related tasks, like checksumming
       | an entire directory tree, finding the file(s) that are different
       | between two directory trees, or tracking file attributes in git.
       | Since it's text-based, it's really easy to process using sed/grep
       | (the file format is specifically designed to be regex-friendly).
       | 
       | GitHub: https://github.com/parkerhoyes/stat-archiver
        
       | Sesse__ wrote:
       | I made plocate (https://plocate.sesse.net/), because I found it
       | absurd that mlocate would need 20+ seconds to find my files if
       | Google could search all of the Internet in less than 100 ms.
        
       | davnicwil wrote:
       | React Frontload, a library to load data into components that
       | works with the same code on client and server render.
       | 
       | Why? I wasn't happy with the pattern of hooking data loading into
       | a router, and having to load all data needed for a page upfront
       | at the route level and then plumb it through. I just wanted a way
       | to let components specify what data to load themselves, and then
       | do it on the fly as they render, whether on the client or on the
       | server.
       | 
       | It still surprises me a bit that React itself never built in an
       | async lifecycle method for server render that would solve this
       | problem. React Frontload basically acts as a polyfill for that
       | feature - it's been slowly ticking up towards 500 stars over the
       | past couple of years, so I can't be the only one who finds this
       | useful :-)
       | 
       | https://davnicwil.com/react-frontload
        
       | tiddles wrote:
       | I've written some pretty low-level OpenGL bindings in Rust,
       | because the existing solutions are either too high level or over
       | the top complexity wise.
       | 
       | At the time I only had experience with the OpenGL C api and
       | didn't want to learn a totally different Rust abstraction or mix
       | C/C++ libraries into a pure Rust project.
       | 
       | https://github.com/DomWilliams0/name-needed/tree/develop/ren...
        
       | jp1016 wrote:
       | I have created Codekeep.io that lets you store and share bits of
       | code and text with other users. Snippets can be organized into
       | folders/labels for instant reuse. Create code screenshots and
       | link it with codekeep. It was inspired from Google keep ,I have
       | made the ui and ux similar to it and also added syntax
       | highlighting https://codekeep.io
        
         | dr_kiszonka wrote:
         | Pretty interesting, especially the discovery feature. Based on
         | the landing page, do you really have over 1.5k users? That is
         | quite impressive!
        
       | robotmay wrote:
       | I built a really weirdly specific caching helper for Rails:
       | https://gitlab.com/robotmay/chunky_cache
       | 
       | By default Rails issues a cache network request per call with the
       | built-in view fragment cache helpers. It does allow multi-
       | fetching in some situations but not when you have multiple cache
       | calls in the same view.
       | 
       | I had the idea bumping around for years but finally mangled it
       | into working and I'm oddly proud of how weird the solution is.
        
       | aeroheim wrote:
       | I wrote a library for animating image backgrounds on the web
       | using After Effects style filters and transitions:
       | 
       | https://aeroheim.github.io/midori/
       | 
       | It's basically a post-processing pipeline implemented with
       | Three.js and WebGL using a few shaders that I wrote.
       | 
       | I created it primarily because I needed it for one of my current
       | projects, so the use case is fairly niche and mostly only
       | relevant for stuff like creative coding. It was my first dive
       | into computer graphics however, and I learned a TON about
       | computer graphics in general and had a lot of fun writing the
       | library.
        
         | maddyboo wrote:
         | This is really cool! I've never seen a slideshow look that nice
        
           | aeroheim wrote:
           | Thank you!
        
         | zachwill wrote:
         | Wow, awesome work on this!
        
           | aeroheim wrote:
           | Thank you - much appreciated!
        
       | unethical_ban wrote:
       | I along with one or two others wrote a python toolkit for Palo
       | Alto firewalls on top of their `pan-python` library. It
       | abstracted all the XML API crap into pure python, and made it a
       | lot easier for our team to do audit and compliance stuff on
       | firewall security policy. Super helpful. To hell with XML!
       | Unfortunately, my former employer had an old-school approach to
       | open source (aka don't use it or contribute to it).
       | 
       | I may out myself to any potential former coworkers here, but oh
       | well. I'm proud of it.
        
       | forgotmypw17 wrote:
       | I built a framework for making static and semi-static websites,
       | because I was dissatisfied with the state of accessibility and
       | compatibility on the Web.
       | 
       | Out of the box, it builds something compatible with most browsers
       | made since 1995, with and without JS, CSS, Unicode, and
       | optionally supporting dynamic elements like commenting and
       | private-key-backed user accounts.
       | 
       | It's nowhere near 0.1 yet, but I'm enjoying building it publicly.
        
       | fellowniusmonk wrote:
       | I built a note taking app that's effectively an OS and inverts
       | the relationship between data and apps.
       | 
       | I wasn't satisfied with note taking apps or the way apps own data
       | when I prefer the flexibility of my data/structure having apps.
        
       | batch12 wrote:
       | I also built a browser plugin to remove twitter nanny nags and a
       | censorship-resistant link sharing service for myself.
        
       | thesephist wrote:
       | At this point I've made a habit out of building homebrew tools
       | and languages. Very few of these are purely because I was
       | dissatisfied with off-the-shelf solutions; many of these just
       | exist because I thought it would be fun/educational/challenging
       | to build an X for myself from scratch.
       | 
       | I've made
       | 
       | - A dynamic programming language, Ink (https://dotink.co), which
       | runs in "production" (for whatever that means for side projects)
       | for around a dozen projects written in it.
       | 
       | - A compiler to compile that to JavaScript
       | (https://github.com/thesephist/september)
       | 
       | - A bunch of language tooling around that language, like syntax
       | highlighters, editor plugins, code formatters (for example, the
       | code formatter https://github.com/thesephist/inkfmt)
       | 
       | - A small UI library (https://github.com/thesephist/torus)
       | 
       | - A suite of productivity tools
       | (https://thesephist.com/posts/tools/) like notes, todos, shared
       | whiteboard, contacts/CRM
       | 
       | - Twitter client (https://github.com/thesephist/lucerne/)
       | 
       | - Theres a few dozen more at (https://thesephist.com/projects/)
       | :)
       | 
       | Many of these end up building on top of each other, so across the
       | few dozen projects built on top of these tools they form a nice
       | dependency graph ->
       | https://twitter.com/thesephist/status/1367675987354251265
        
       | throwaway0vzbxh wrote:
       | I struggled to find a job board that was not filled with shabby
       | recruitment agencies, that had clear high quality job postings
       | and clear salary ranges in each job opening. I therefore created
       | the job board[0] and it now includes a directory for Go
       | developers[2], Companies using Go[3] and a salary trends
       | section[4]. It's all been written in pure Go, basic HTML/JS/CSS
       | and PostgreSQL and it's open source[1] :)
       | 
       | - [0] https://golang.cafe
       | 
       | - [1] https://github.com/golang-cafe/golang.cafe
       | 
       | - [2] https://golang.cafe/Golang-Developers
       | 
       | - [3] https://golang.cafe/Companies-Using-Golang
       | 
       | - [4] https://golang.cafe/Golang-Developer-Salary-Remote
        
       | giantg2 wrote:
       | I built a tool to calculate how much alcohol you need for alcohol
       | you need at a party based on the BAC formula.
       | 
       | I guess it's not very useful.
        
       | foreigner wrote:
       | A git script named wip-push that commits changes in my working
       | copy with the message "WIP". A git script named wip-pop that
       | undoes the head commit, leaving the changes in my working copy,
       | only if the commit message is "WIP". I use these dozens of times
       | every day.
       | 
       | Also I've written my own logging library. Multiple times. Doesn't
       | everybody?
        
         | blitz_skull wrote:
         | Ahh, I've done something similar except I call mine "save" and
         | "undo".
         | 
         | Basically I just define them as git subcommands so I just use
         | "git save" to create a SAVEPOINT commit, and "git undo" to undo
         | the last commit onto my working index.
        
       | folli wrote:
       | A couple of years ago, I built http://www.genewarrior.com
       | 
       | It's a suite of tools to work with DNA sequences (from simple
       | tasks such as reverse complement to medium complex tasks such as
       | multiple sequence alignments and primer design).
       | 
       | I built it because I wasn't very happy with the existing tools.
       | It never got very popular, but after all these years I still
       | think it's a very useful tool.
        
         | dsco wrote:
         | I wonder if some explanatory texts, alongside usability
         | improvements could help you get more users. I can't tell if
         | your website is useful since I know anything about DNA
         | sequencing - but from a UX perspective there is room for some
         | improvements.
        
       | StavrosK wrote:
       | Most recently, I wrote this Docker deployment tool because I was
       | tired of having to either set up a Kubernetes cluster or manually
       | log into my home server to update stuff:
       | 
       | https://gitlab.com/stavros/harbormaster
       | 
       | It allows you to run Docker Compose containers from a simple git
       | repo (no Docker registry), and to specify all the Compose apps
       | you want to run in a straightforward YAML file. It'll take care
       | of automatically pulling/restarting/deleting everything for you.
       | 
       | I love it.
        
         | zaptheimpaler wrote:
         | This seems cool! I recently moved my homeserver and dev
         | environment to a big docker-compose file and am loving it. Just
         | curious, what prompted you to use multiple docker compose files
         | over a single one?
        
           | StavrosK wrote:
           | The big advantage is that you can reuse the Compose file for
           | other computers. For example, in my model, Home Assistant
           | would come with a Harbormaster-compatible Compose file, so to
           | run it you'd only need to include the Home Assistant
           | repository URL in your config file, and you'd get automatic
           | updates and everything without having to do anything else.
        
       | BiteCode_dev wrote:
       | I made a script to generate my otp codes from my terminal because
       | there were none at the time and I was fed up with using my phone
       | (I don't use otp in fear my machine in compromise, but in case
       | something outside of my house is).
        
       | feross wrote:
       | In 2013, I started https://webtorrent.io the first torrent client
       | that runs in a web browser. It's open source here:
       | https://github.com/webtorrent
       | 
       | I built it to make torrent technology more accessible to the
       | masses. We're still actively building it and we even have a slick
       | desktop app that uses the same engine for streaming.
       | 
       | WebTorrent also powers https://wormhole.app an end-to-end
       | encrypted file sending service that I built with my friend
       | jhiesey.
        
         | tediousdemise wrote:
         | Wormhole looks awesome!
         | 
         | I was looking for something just like this a few days ago since
         | Firefox Send was shitcanned by Mozilla. I ended up using send-
         | anywhere, but Wormhole looks so much better. I wish it showed
         | up in my Google results when I needed it.
         | 
         | Is Wormhole p2p? If so, why the 10 GB limit? If it's not p2p,
         | why are you storing user data on servers (even if it's E2E
         | encrypted)?
        
           | indigo945 wrote:
           | According to the explanation on the website, it appears that
           | the 10GB limit only applies if you make the optional choice
           | to also store a copy of the file on Wormhole's servers, to
           | keep the file available after you close your browser.
        
             | tediousdemise wrote:
             | Where did you find that? The tooltip I saw says they store
             | files up to 5 GB on their servers, but it doesn't appear to
             | give you a choice. It also says that for files larger than
             | 5 GB, it will use p2p (that answers one of my previous
             | questions, I guess), but it still says "up to 10 GB."
             | 
             | Why would there be a 10 GB limitation for p2p transfers if
             | data is not being stored remotely?
        
         | [deleted]
        
       | paysonderulo wrote:
       | A perennial topic of Hacker News seems to be browser tabs; yet
       | another post about the topic appeared on the front page earlier
       | this weekend, if I'm not mistaken. While the exact cause of all
       | the consternation is still up for debate, my attempt at a
       | solution has been the application of the Unix philosophy[1] to
       | the problem. I've made a browser extension and a couple of
       | accompanying host applications[2] that allow the user to interact
       | with browser sessions as files, and I've been very satisfied with
       | the result. I'm looking to implement some additional
       | functionality, namely around auto-saving and streamlining moving
       | tabs between sessions, in the future.
       | 
       | [1] https://en.wikipedia.org/wiki/Unix_philosophy
       | 
       | [2] https://github.com/paysonwallach?tab=repositories&q=amber
        
       | ausbah wrote:
       | I wrote arXivist, a CLI for searching, storing, and recommending
       | papers from preprint sites like arXiv. Haven't worked on it in a
       | while due to school, but it fills a previously unmet space.
       | 
       | https://github.com/njhofmann/arXivist
        
       | lingrino wrote:
       | Vaku - A CLI for Vault that lets you operate on folders instead
       | of just paths. Search, copy, move, read vault folders easily.
       | 
       | https://github.com/lingrino/vaku
        
       | cagataygurturk wrote:
       | I was so sick of creating and deleting temporary Route53 Health
       | Checks to measure the latency of my API endpoints from different
       | parts of the world, I ended up creating a CLI tool doing that for
       | me
       | 
       | https://github.com/cagataygurturk/global-load-test
        
       | malibaki wrote:
       | I created a plugin for mongoose (NodeJS/mongodb) to measure and
       | log query execution time https://www.npmjs.com/package/mongoose-
       | execution-time
        
       | mceachen wrote:
       | I needed a good Node wrapper for ExifTool and wrote
       | https://github.com/photostructure/exiftool-vendored.js
       | 
       | When I saw how slow it is to fork child processes in Windows, I
       | then realized I wanted to run ExifTool in "stay-open" mode, which
       | meant I needed to manage 1 or more long-lived child processes
       | that communicate via stdin/stdout, so I wrote
       | https://github.com/photostructure/batch-cluster.js
       | 
       | In switching to TypeScript, I really missed Scala's
       | `Option/None/Some` and `lazy`, so I added those (and several
       | other small, helpful functions/classes) that I documented here:
       | https://photostructure.com/coding/uncertain-lazy-forgetful-a...
        
       | JaDogg wrote:
       | https://github.com/JaDogg/expressPython - goal was to learn some
       | C++ and Python, I wanted to work on text input and wanted a UI.
       | 
       | https://github.com/JaDogg/sbx - flashcards console app (not sure
       | if there are similar applications)
       | 
       | https://github.com/JaDogg/pydoro - pomodoro timer console app (I
       | couldn't find such application)
        
       | jlipps wrote:
       | I found myself frustrated with Node's child_process library. Some
       | great primitives but a lot of boilerplate to do simple tasks like
       | return a Promise when a subprocess is known to have started. So I
       | built teen_process as a wrapper with a nicer async interface,
       | helpful defaults, and all around cleaner ways of doing subprocess
       | management with Node. https://github.com/appium/node-teen_process
       | 
       | (NB: once the project was determined to be useful we moved it to
       | the Appium org and it has seen lots of contributions from others,
       | not just me)
        
       | hirako2000 wrote:
       | Open sourced a minifier/beautifer/pastebin so that it can be self
       | hosted.
       | 
       | With on focus on performance with minimalist UX
       | 
       | https://gisteam.herokuapp.com/
       | https://github.com/hirako2000/gisteam
        
       | brendoncarroll wrote:
       | A message based p2p library.
       | https://github.com/brendoncarroll/go-p2p
       | 
       | There is a single abstraction (the Swarm) which is capable of
       | modeling communication, NAT, and identity. And you can layer them
       | (Swarms) to provide whatever functionality you need. For the most
       | part, you communicate using tell or ask methods.
       | 
       | The big name in this space is lib-p2p. It doesn't have a UDP
       | transport (it exists but is incomplete), and the examples were
       | focused on manipulating streams so it wasn't clear how to model
       | message based communication from reading the docs. You also have
       | to buy into many other abstractions when you use it e.g.
       | multiaddrs.
        
       | continuational wrote:
       | I created TopShell - a purely functional, reactive scripting
       | language for fetch/process/visualize style tasks:
       | https://github.com/topshell-language/topshell
        
       | winrid wrote:
       | A forked version of browserify-middleware which uses more than
       | one thread: https://www.npmjs.com/package/browserify-middleware-
       | concurre...
       | 
       | Solves a common problem in the enterprise world - you have a big
       | monolith UI stack with multiple apps, and starting it in dev mode
       | gets slower over time. Lots of companies just allow you to start
       | one of the individual apps, or they start splitting up the stack.
       | This speeds up starting the stack for a developer, since all the
       | apps get "browserified" on their own thread.
       | 
       | all the other stuff is in my bio :)
        
         | winrid wrote:
         | Oh - also! Recently I wanted MongoDB's docs on my Kindle. But
         | they no longer offer a PDF. So I created something to make one:
         | https://github.com/winrid/mongodb-docs-download
        
       | kkoncevicius wrote:
       | - R package "matrixTests":
       | https://github.com/karoliskoncevicius/matrixTests
       | 
       | I often have to perform statistical tests on genomic data. Which
       | in practice means running the same test on every gene (row of a
       | matrix). Running it separately on each row is slow, specially in
       | R. Hence to speed it up I started an R package which is a lot
       | faster and deals nicely with edge case scenarios (missing values,
       | infinities, empty matrices, etc).
       | 
       | - R package "annmatrix":
       | https://github.com/karoliskoncevicius/annmatrix
       | 
       | An S3 object for matrices with persistent metadata. This again is
       | mostly relevant in genomic contexts where a matrix of, say, gene
       | expression has to also keep information about rows (gene names,
       | positions, chromosomes), as well as samples (disease status, age,
       | sex).
       | 
       | - R package "basetheme":
       | https://github.com/karoliskoncevicius/basetheme
       | 
       | On of the advantages of ggplot2 in R is the ability to specify
       | themes. I prefer working in base plotting system and ended up
       | creating a package that allows setting themes for base graphics.
       | 
       | - Vim plugin "sendtowindow"
       | https://github.com/karoliskoncevicius/vim-sendtowindow
       | 
       | A minimal plugin which implements an operator for sending text to
       | another window. Handy for sending code from the buffer to a REPL
       | running within another ":terminal" buffer.
        
       | Snild wrote:
       | https://github.com/SonyMobile/py-hprof is a Python library that
       | exposes a Java heap dump's objects as Python objects, allowing
       | convenient interactive and/or scripted analysis.
       | 
       | IIRC, I started out with Android Studio's dump viewer, but I
       | wanted to check a "nested" attribute (.x.y.z) for all instances
       | of a class -- and there were several thousand instances. I
       | quickly tired of expanding and scrolling the nested attribute
       | lists.
       | 
       | I think I also tried MAT's OQL, but still missed the ability to
       | add whatever logic I needed on-the-fly.
       | 
       | My "Show HN" post got no traction, and I don't think very many
       | people have used it, but I'm still proud of it.
        
       | jchw wrote:
       | I made a library called Restruct. https://github.com/go-
       | restruct/restruct
       | 
       | It is useful for parsing and emitting binary structures. It uses
       | Go struct tags to allow you to define fairly advanced arbitrary
       | structures. Unlike some similar libraries, it supports both
       | reading and writing data. I used it to write a quick program that
       | manipulates FL Studio project files, and another that extracts
       | PNGs out of a blob (like binwalk but more accurate for this
       | specific task.)
       | 
       | https://github.com/jchv/pngextract
       | 
       | https://github.com/jchv/flsplit
       | 
       | If you've never seen Kaitai, it might take a while for it to
       | click what you can do with it. I was actually inspired by 010
       | Editor's binary templates, but found out about Kaitai Struct
       | after creating Restruct. I stole their idea of having arbitrary
       | expressions and wrote my own expression engine for Restruct, and
       | also ended up contributing improvements to Kaitai's Go compiler
       | too, for good measure. The bottom line is, these tools make it
       | extremely easy to work with complex binary files. I can
       | incrementally sketch out an unknown file format, like FL Studio
       | FLP, and quickly test my assumptions about structure shape.
       | Kaitai also has their IDE tool, which lets you use Kaitai
       | interactively:
       | 
       | https://ide.kaitai.io/
       | 
       | I actually hope to do the same for Restruct, but want to re-
       | engineer some aspects of it to make it work better in an
       | interactive context.
        
       | paustint wrote:
       | I work on the Salesforce platform and got annoyed at how long it
       | took to do basic dev/admin type tasks and all the existing tools
       | are horrible or outrageously expensive and slow, so I built
       | https://getjetstream.app/ which includes a lot of admin/dev type
       | tools (query builder, data loader, api explorer, anon apex with
       | syntax highlighting).
       | 
       | I also built a supporting tool to parse SOQL queries to support
       | Jetsream because everything open source was broken and really
       | sucked. https://paustint.github.io/soql-parser-js/
        
       | mondoshawan wrote:
       | I built a widget set for small monochrome LCDs called
       | "bitwidgets" as part of my g13d rewrite because nothing came
       | close to what I wanted in terms of features and simplicity. I use
       | it to give the G13 applets their UI on the LCD screen. Its built
       | on top of Pillow, and I'm planning on extracting it from the g13
       | repo as a separate library.
       | 
       | https://github.com/jtgans/g13
        
       | davidkpiano wrote:
       | I built XState because I wanted a way for developers to integrate
       | state machines & statecharts into web applications in a way that
       | could be automatically visualized:
       | https://github.com/davidkpiano/xstate
        
       | alschwalm wrote:
       | https://github.com/alschwalm/transient - A tool for quickly
       | creating short-lived virtual machines for doing kernel or
       | hypervisor testing, made after I got tired of dealing with races
       | and general complexity from libvirt-based tools.
        
       | pknerd wrote:
       | I built Fehrist(https://github.com/kadnan/Fehrist) and
       | Gocache(https://github.com/kadnan/GoCache/ last year during
       | lockdown while learning Go.
        
       | cube2222 wrote:
       | I've written jql[0], an alternative to jq with much less syntax
       | (being lispy) and much easier to use for me. The project may seem
       | dead to some, but I'm using it daily, it's just finished.
       | 
       | [0]:https://github.com/cube2222/jql
        
         | mro_name wrote:
         | s-expressions to tame json - quite my humour! And an eternal
         | binary, awesome!
        
       | daemon001 wrote:
       | I made a highly configurable newsletter producer similar to
       | mailbrew called Paisley. Paisley can crawl your list of websites
       | and produce a newsletter for you in the format you want it.
       | https://github.com/uduakabaci/palrealtors
        
       | logotype wrote:
       | I built fixparser, a Node/browser library for parsing FIX
       | messages. https://www.npmjs.com/package/fixparser
       | 
       | I built it because at the time there weren't any good FIX library
       | written in JS/TS and because I wanted to learn how it works.
        
       | navanchauhan wrote:
       | I built a web-based webAR creator, because I hate rewriting the
       | same template code again and again, and I didn't like to pay for
       | something so easy to build myself.
       | 
       | I added an asset manager so I can mix and match while creating AR
       | stuff and then directly export it as a single file so I can
       | archive it. I mainly use it to create AR experiences for friends
       | and family (think, interactive birthday cards or for example,
       | when MyHeritage launched their animate old photos, I used those
       | animations on top of image based tracking)
       | 
       | I might turn it into a SAAS platform for marketers, but even if I
       | don't I'm going to open-source it either way.
       | 
       | The only thing holding me back is deciding what to name it. If
       | anyone has a nice suggestion, I'll open source it right away
        
       | paulbares wrote:
       | I wrote a small library https://github.com/paulbares/spring-
       | testcontainer that provides integration between the Spring (Data
       | JPA) testing framework and Testcontainer library to easily test
       | my application with different containerized database instances.
        
       | throwaway_dcnt wrote:
       | A fully featured feature store for our machine learning platforms
       | to plug into.
        
       | schappim wrote:
       | This one is hardware and software.
       | 
       | I made webUSB postage scales and a webUSB thermal printer.
       | 
       | We used to use Dymo label printers etc, but macOS' printer queue
       | would get stuffed up every 200 or so prints.
       | 
       | The advantage of a webUSB based solution was:                 -
       | No OS based printer queue to get gummed up       - Super-fast
       | (just ZPL printer commands being sent down the wire)       - One-
       | click to create a postage label       - Automatic label printing
       | when a new order comes in (Websocket + WebUSB)       - Live
       | parcel weights and prices updated via Javascript
       | 
       | We used to create labels by copying and pasting between Shopify
       | and Australia Post. This hardware saves us ~4min per parcel.
       | 
       | [1] Demo: https://vimeo.com/334547755/c387957a25
        
       | weichsel wrote:
       | Wrote an implementation of the ZIP specification in Swift:
       | https://github.com/weichsel/ZIPFoundation Main motivation back
       | then was a side project of mine, but since I open sourced the
       | library, the project is also well received by the iOS and server-
       | side Swift community.
        
       | johnnyRose wrote:
       | I created a simple Firefox extension to skip Google's search
       | result redirect.
       | 
       | I was motivated after the redirect page "hung" several times in
       | one day, and I didn't fully trust some of the existing
       | extensions.
       | 
       | https://addons.mozilla.org/en-US/firefox/addon/skip-google-r...
        
       | sarimabbas wrote:
       | I wasn't able to find a link bookmarking app with the
       | organizational flexibility I needed, so I created my own
       | bookmarking app with infinite nesting, splitscreen previews and
       | file uploads: https://makechaos.app
       | 
       | It's not open source but i am/will open sourcing its individual
       | components
        
       | felle_realist wrote:
       | Before I answer I'll just test whether this account has been
       | shadowbanned like my previous accounts. It is a sad thing that I
       | have to test for this but I'm not putting time in answering
       | interesting questions for my answers to be blackholed again.
       | 
       | - edit -
       | 
       | Yes, shadowbanned again. Have a look at the comment history on
       | this account and decide for yourself whether this is in any way
       | defensible.
       | 
       | I'm done with HN.
        
         | mathgenius wrote:
         | I don't think you are shadowbanned, i can see your comment.
         | You're welcome on HN anytime you want to come back. Btw., when
         | i first came accross HN, some 10 years ago, i had this same
         | fear of being shadowbanned. Heh.
        
       | semireg wrote:
       | I built an app to design and print labels on thermal, inkjet and
       | laser printers. It's built with electron and it uses a handful of
       | native modules to communicate with windows/mac usb devices. That
       | way, a user can literally download my app, plug-in their printer,
       | and start printing. Works great with zebra, ROLLO, and color
       | inkjet label printers like Primera/Epson.
       | 
       | I'm trying to figure out how to market my app as a tool for
       | desktop dynamic image generation. My app is kind of like
       | bannerbear but for the desktop. For example, you can import a XLS
       | or CSV and batch generate images from the data. That's the
       | essence of my app. It just so happens that "printing labels" is
       | the marketable niche.
       | 
       | I'm selling licenses using a custom system I built using
       | stripe/JWT and even do a subscription with expirations. It's been
       | a blast.
       | 
       | Revenue from MRR is in the thousands and one-time licensing sales
       | is 6 figures. I couldn't have built this without the awesome OSS
       | JS community.
       | 
       | You can download my app here: https://label.live
        
       | jpomykala wrote:
       | https://github.com/simplelocalize/simplelocalize-cli
       | 
       | Uploading & downloading translations
        
       | kiechu wrote:
       | I wrote https://vocapouch.com so I can save the translation I do
       | on the websites.
        
       | slmjkdbtl wrote:
       | Still in the process but: a software renderer, a cross-platform
       | gfx / audio api, a scripting language, code editor, sprite
       | editor, ... (libs are all written in C for portability and easy
       | scripting integration) Totally meaningless (to others) wheel
       | reinventing, but it makes me 100x happier when making games and
       | apps!
       | 
       | DIY everything is my path to programming happiness (in any field
       | in fact). Tools should be extensions of your body, tools made by
       | others are unlikely to be that.
        
       | netdur wrote:
       | I have built series of canvas libraries using Typescript, render
       | engine, layout and CSS support.
       | 
       | The story is that I have spent decade writing a JavaScript UI
       | library, I was hired during early days of jQuery movement,
       | pivoted several times (html + images, html + css, flat html +
       | css, canvas, canvas + webgl) however end up with unused tools and
       | UI kit, few years later, during 2017 I have decided to rewrite
       | some tools using Typescript and release as GPL2 (which I should
       | change to LGPL2) and changed career.
        
       | bestouff wrote:
       | A tool to generate ext2/ext3 filesystems from various sources
       | (device tables, directories, tar archives, etc.) used mainly for
       | generating embedded systems images or android ROMs.
       | 
       | https://github.com/bestouff/genext2fs
        
       | peterhi wrote:
       | After a time it finally occurs to me that those "one off" scripts
       | that I write to help out at work really need to be packaged up.
       | So I end up with https://github.com/PeterHickman/Nginx-Log-Tools
       | to get basic stats out of Nginx log files.
       | https://github.com/PeterHickman/chop to spit out just the parts
       | of log files I am interested in.
       | https://github.com/PeterHickman/Raid to bundle up all of my short
       | scripts into just one Markdown formatted file.
       | https://github.com/PeterHickman/Measure-Rails-SELECT-Perform...
       | to summarise database activity from Rails application or postgres
       | logs
       | 
       | There were others but as the issue passed or no longer needed to
       | be dealt with they fall into disuse. Some however have ended up
       | as part of the tools we use at work
       | 
       | Some even got documented :)
        
       | dheera wrote:
       | I built a tool to visualize ROS topics (robot sensor data,
       | including images, maps, point clouds) inside the terminal using
       | ASCII/Unicode art.
       | 
       | https://github.com/dheera/rosshow
        
       | Agentlien wrote:
       | I tend to worry about criticism and whether my things are
       | actually useful enough for others to be worth the trouble. So
       | I've never actually published anything.
       | 
       | When I was a teenager I made a bunch of games for which I created
       | level editors and the like. This was before there were free
       | alternatives that I knew of which fit my needs.
       | 
       | When I started with graphics programming I made a library with
       | OpenGL helpers for setting up shader programs, textures, double
       | buffered textures, etc. configurable via configuration files. I
       | ended up using it for a number of private projects and my
       | master's thesis.
       | 
       | I've also made a Vim plugin for handling projects: setting up
       | working directory, loading session files, setting a number of
       | project specific paths and compiler options, etc. I wanted it to
       | do enough little things that it was difficult to find a ready
       | solution.
       | 
       | I once had a number of video files with subtitles which were out
       | of sync, so I made a command line tool to resync them. It only
       | took me a few minutes so it felt worth it and was very
       | satisfying.
        
       | swlkr wrote:
       | I wrote a really naive web stack from http to db all in janet
       | 
       | https://github.com/joy-framework/joy
       | 
       | I wrote it because I really like janet and there wasn't a web
       | framework in janet yet, although I think there may be more now
        
       | JohnHaugeland wrote:
       | i half-baked a state machine programming language
       | 
       | https://github.com/StoneCypher/jssm
        
       | NoahTheDuke wrote:
       | I was dissatisfied with the available fixture/test data
       | generation tooling for Obection.js and Knex, so I ported
       | factory_bot from Ruby to Typescript. I've called it Fixture
       | Riveter [0]. It's more verbose than the other similar tools
       | (factory_girl for javascript, Fishery for typescript), but it's
       | extremely versatile and supports factory_bot's full api.
       | 
       | [0]: https://github.com/Batterii/fixture-riveter
        
       | sawyerjhood wrote:
       | I built auger-state [1] a few months back since I was really
       | unhappy with most front end state management solutions for React.
       | I was tired of the Redux song and dance when building apps with
       | centralized state and I wanted something that was quick to get up
       | and running with, but scaled a bit better than useReducer +
       | context. It has really helped me hit the ground running when
       | building apps.
       | 
       | [1] https://github.com/SawyerHood/auger-state
        
       | iamwil wrote:
       | I built a "Pokemon for Sushi", where I kept track and collected
       | all the different sushi that I ate, and where I found it. It
       | connects to the Foursquare API, so I can just pick the sushi shop
       | from a drop down through my phone
       | 
       | https://torodex.herokuapp.com/netas
        
       | arkokoley wrote:
       | I built a Pdf viewer library for VueJS based on Mozilla's PDF.js.
       | PDFVUER - https://github.com/arkokoley/pdfvuer
       | 
       | I also built a time tracker library that tracks how much time was
       | spent on the current open tab. It also detects when the user
       | moves away from the page or comes back.
       | 
       | Actively - https://github.com/arkokoley/actively
       | 
       | For a GIS project, I needed to extract county level data from
       | NASA's MODIS dataset. Wrote a bash utility to do that:
       | https://github.com/arkokoley/modis_county_cropper
       | 
       | Also wrote a boilerplate latex template for Academic homework:
       | https://github.com/arkokoley/latex-homework-boilerplate
        
       | gattr wrote:
       | Back in 2015 I needed a convenient & fast post-processing and
       | image alignment tool for (mainly) astrophotography time lapses,
       | that's how ImPPG was born [1, 2]. (If GIMP had had high-bit-depth
       | support back then, I'd probably try to write a plugin instead.) I
       | still use it, and make small additions every now and then. It's
       | seen some use in the community (probably mainly for solar
       | imaging); GitHub reports a couple thousand downloads for the
       | release that's been up the longest.
       | 
       | [1] https://greatattractor.github.io/imppg/
       | 
       | [2] https://github.com/GreatAttractor/imppg
        
       | ManuelKiessling wrote:
       | I find most Continuous Delivery tools/services overkill most of
       | the time, so I wrote (and heavily use, even in enterprise setups)
       | my own tool ,,SimpleCD", which is just a single Bash script, but
       | is extremely powerful and flexible:
       | https://github.com/manuelkiessling/simplecd
        
       | ldd wrote:
       | - Visual Tech Trees (React, javascript) [0]
       | 
       | - JQ Live View (VS Code extension) [1]
       | 
       | Both used to create my game, a pokemon-ish roguelite (React,
       | typescript) [2]
       | 
       | -- Links:
       | 
       | [0]: https://ldd.github.io/react-tech-tree/ [0-source]:
       | https://github.com/ldd/react-tech-tree
       | 
       | [1]: https://github.com/ldd/vscode-jq
       | 
       | [2]: https://www.necromancers-gift.com/
        
       | vially wrote:
       | I built a website for making it easier to read Wayland protocols
       | documentation (which are originally published as XML):
       | https://wayland.app/protocols/
        
       | leifg wrote:
       | I built a sales reimplemented the salesforce formula language in
       | JavaScript. At that time I was still using Salesforce and I was
       | annoyed that it took forever to see the results of changing a
       | Salesforce formula. So I wrote a JS parser and a web interface.
       | 
       | [0] https://github.com/leifg/formulon [1] https://formulon.io
        
       | systematical wrote:
       | https://github.com/cnizzardini/cakephp-swagger-bake which builds
       | out openapi from your cakephp applications meta data. One of many
       | projects I took up to occupy myself during covid lockdowns.
       | 
       | I wasn't satisfied with writing the YAML or annotations manually.
        
       | Ayesh wrote:
       | I wrote in my own markdown flavor. It was based on ParseDown
       | (PHP), and I was ended up extending it too much, to a point that
       | I rolled it as a my own private library.
       | 
       | I recently started to write more often, and having a consistent
       | and surefire syntax helps a lot.
       | 
       | It started with custom anchors for header tags, table rows,
       | custom classes for block quotes, highlights in code snippets,
       | line break patterns, etc.
        
       | danielEM wrote:
       | https://github.com/DanielMazurkiewicz/hussar <- this one is work
       | in progress, but I've published couple of other repos over the
       | years https://github.com/DanielMazurkiewicz, but nothing so far
       | that got any significant traction
        
       | thiht wrote:
       | I made Smocker[1]. It's a mock server we use extensively with my
       | coworkers because we develop Go HTTP "micro" services and most of
       | the tests we write are integration/component tests. We needed a
       | way to mock the external services to test our service in an
       | isolated way. Before that we used http-mock-server but it came
       | short in a lot of ways: JSON config (very bad when you need to
       | configure it to return JSON payloads), bad performances (our
       | tests made it crash routinely), big memory and space footprint (a
       | bit annoying for our CI and for our test machines). So we made
       | Smocker to fix these issues and add more useful features. It does
       | less than http-mock-server but is more focused IMO.
       | 
       | [1]: https://smocker.dev
        
         | noir_lord wrote:
         | This looks amazing.
        
           | thiht wrote:
           | Thanks!
        
         | andreynering wrote:
         | Although I don't do microservices, this project is really
         | interesting.
        
           | thiht wrote:
           | It really shines with microservices, but it's not limited to
           | microservices! You can configure any app supporting
           | HTTP_PROXY environment variables with Smocker as a proxy, and
           | still mock anything you want :) It's not our main use case
           | but was useful a few times, so I can imagine it be used like
           | this too.
        
       | victornomad wrote:
       | I made a JS framework for Android to quickly prototype IoT and
       | apps in general. It started as a tool for teaching my students
       | back in the day. Then changed the purpose multiple times :)
       | 
       | https://phonk.app
        
       | nestorD wrote:
       | I wrote pandas2numpy [0] it helps you turn a pandas dataframe
       | into one (or two if you have categorical variables) numpy tensors
       | ready to be pushed into a deep learning framework.
       | 
       | It can deal with continuous data, categorical data, normalisation
       | of the data, log scale and NA.
       | 
       | I found it really useful to work on tabular data and, since it
       | uses numpy, it is agnostic to the deep-learning framework used.
       | 
       | [0]: https://github.com/nestordemeure/pandas2numpy
        
       | [deleted]
        
       | Enhex wrote:
       | i was annoyed by the verbosity of XML when using it for config
       | files at my workplace so i tried to design maximally human
       | readable & writable text file format, which turned out to be
       | extremely concise and fast: https://github.com/Enhex/Deco
       | 
       | after trying at least dozen C++ GUI libs and none of them being
       | good enough (license, limited portability, limited
       | customability,...) i started making my own one which is OpenGL
       | based, got automatic layouting, separation of concerns of
       | layout/style/logic, permissive license, and provides building
       | blocks to make your own widgets. https://github.com/Enhex/GUI
        
       | DanHulton wrote:
       | I've settled into a stack that I like for building web apps with
       | Node/Express on the back-end and Vue on the front-end. However, I
       | still ended up re-implementing common things every time, like
       | build automation, my Docker setup, user authentication, payments,
       | all that basic stuff.
       | 
       | So instead of writing all that custom each time, I wrote a SaaS
       | starter kit to build from, and decided to polish it up and also
       | release it as a full-fledged product:
       | 
       | Nodewood: https://nodewood.com/
       | 
       | It's helped me to be more rigorous when building out features (if
       | it's going to go into a framework that others are going to use,
       | it needs to be well thought-out, tested, etc), and is there as a
       | stepping stone for future businesses I want to work on. It's been
       | really satisfying to build out for the past couple years, and I'm
       | closing in on completing the last few features and adding
       | sufficient polish so that I can take it out of beta.
        
       | eweitz wrote:
       | I created Ideogram.js, a JavaScript library for chromosome
       | visualization [1].
       | 
       | Ideogram supports genomic views to research and report findings
       | on cancer, clinical variants, gene expression, evolution,
       | agriculture, and more [2]. What previously existed for genome
       | visualization was either focused on short genomic regions (e.g.
       | genes) or complex to set up and maintain.
       | 
       | [1]: https://github.com/eweitz/ideogram
       | 
       | [2]: https://eweitz.github.io/ideogram
        
       | mohitsingh wrote:
       | njk - https://github.com/mohitsinghs/njk
       | 
       | Annoyed by amount of tooling required to render markdown,
       | nunjucks and front-matter, I wrote this cli and used it for all
       | of my static sites. Since then, I've mostly migrated my sites to
       | nextjs.
       | 
       | Surprisingly, when looking at dependent projects, people tend to
       | put it in their dependency tree for weird reasons.
        
       | daveed wrote:
       | I made this chrome extension to help with inline replies for
       | gmail:
       | 
       | https://chrome.google.com/webstore/detail/reformat-gmail-inl...
       | 
       | It's basically a compressing of the copypaste+"quote-button"
       | thing that people do. I reply inline quite a bit, so I've found
       | it useful.
       | 
       | Just made this too (and am pushing a quick update soon) - it
       | tracks how much time you spent on each chrome tab, and when you
       | hit Alt-T it gives you your tabs, sorted approximately by time
       | spent recently, so you can find your place better.
       | https://chrome.google.com/webstore/detail/historia/hfibppfil...
        
       | jedberg wrote:
       | I needed a simple command line tool that could tell me how far
       | apart two post codes in North America are, so I built one. You
       | could in theory load it as a library too.
       | 
       | https://github.com/jedberg/Postcodes
        
       | thomashabets2 wrote:
       | A curious question. Aside from my day job, this seems like a
       | thing I do all day. :-)
       | 
       | I'm not sure what the motivation for your question is. Do you
       | feel like everything's been invented and built already, and it's
       | just a matter of (at most) plugging the things together?
       | 
       | I find myself constantly thinking "this should exist". I don't
       | have time to make them all exist.
       | 
       | https://github.com/ThomasHabets/arping
       | 
       | Nothing like it existed at the time, and I wanted to send ARP
       | requests as easily as sending ICMP ping.
       | 
       | https://github.com/ThomasHabets/simple-tpm-pk11
       | 
       | I wanted to use a TPM chip for SSH client keys, and couldn't find
       | anything like it.
       | 
       | https://github.com/ThomasHabets/tlssh
       | 
       | I wanted to explore what it would be like to have SSH, but with
       | identities not based on providing username, but an x509 cert.
       | (and TPM chip protecting the key) Also became a fun learning
       | experience about terminals.
       | 
       | https://github.com/ThomasHabets/cmdg
       | 
       | I wanted to use GMail from a fast cli that used the native gmail
       | API.
       | 
       | https://github.com/ThomasHabets/rslurp
       | 
       | I wanted to download concurrently and according to patterns. Ok,
       | so honestly this one probably exists somewhere in a form that I
       | would like, but I couldn't find it.
       | 
       | https://github.com/ThomasHabets/sim
       | 
       | I wanted multi-party authorization for sudo, and couldn't find
       | one.
       | 
       | https://github.com/ThomasHabets/monotonic_clock
       | 
       | People kept using gettimeofday, so this is part of my compaign
       | against it. (see https://blog.habets.se/2010/09/gettimeofday-
       | should-never-be-...)
       | 
       | https://github.com/ThomasHabets/gtping
       | 
       | I worked in mobile core networks, and wanted a "ping" that used
       | the GTP protocol since that won't be firewalled.
       | 
       | https://github.com/ThomasHabets/ind
       | 
       | I wanted my bash scripts to have automatic indentation, while not
       | sacrificing buffering latency and such.
       | 
       | https://github.com/ThomasHabets/tlscheck
       | 
       | I wanted a simple tool to audit my TLS certificates for expiry.
       | 
       | https://github.com/google/huproxy
       | 
       | I was travelling to China on vacation and wanted a VPN out that
       | would be unlikely to be blocked by the great firewall. Ok, so
       | there are many VPN-like tools for getting through the GFW. Maybe
       | it was just an excuse for me to write it. Honestly ssh -D would
       | have likely worked just fine. It's being used by the keymaster
       | project now though, so maybe it did something right:
       | https://github.com/Cloud-Foundations/keymaster/blob/master/d...
       | 
       | https://github.com/google/tcpauth
       | 
       | I wanted to lock down SSH to anyone who doesn't have a secret key
       | (and portknocking is usually ridiculous). Why not use TCP MD5 for
       | it? https://github.com/google/tcpauth (MD5 is actually safe to
       | use in this mode. It's not broken for all use cases) No firewall
       | needed, and the TCP port is simply not open for anyone without
       | the key.
       | 
       | That's what I can think of right now, after filtering the less
       | interesting ones.
        
       | bullen wrote:
       | I made my own HTTP app. server and distributed JSON database:
       | https://github.com/tinspin/rupy
       | 
       | On top of this I have made many projects and I still use all of
       | them today even 10 years later, some favourite:
       | 
       | http://fuse.rupy.se (multiplayer system)
       | 
       | http://tentacle.rupy.se (digg)
       | 
       | http://sprout.rupy.se (wordpress)
       | 
       | http://talk.binarytask.com (reddit)
       | 
       | I also made my own cloud service both with my own hardware and on
       | top of GCP:
       | 
       | http://host.rupy.se (raspberry 2 cluster)
       | 
       | http://host.binarytask.com (GCP)
        
       | ithkuil wrote:
       | * https://github.com/mkmik/jsonnetenc : Go package to help
       | generate jsonnet template sources (yes, sometimes that's useful)
       | 
       | * https://github.com/mkmik/multidoc_yamldiff : helps making sense
       | of diffs between single file multi-doc yaml streams, potentially
       | with out of order documents within a stream.
       | 
       | * https://github.com/mkmik/runck : curl + check if downloaded
       | file matches a hash + run it
       | 
       | * https://github.com/mkmik/generated-secrets : declare the
       | existence of a secret and have a controller generate (and rotate)
       | it. Most k8s secrets (especially where both server and client are
       | inside k8s) are implementation details, devops folks should never
       | need to see the them or back them up with whatever, just generate
       | them as needed.
       | 
       | * https://github.com/mkmik/knot8 : alternative approach to
       | parameterizing k8s manifest files, without having to turn them
       | into templates.
       | 
       | * https://github.com/mkmik/ocipfs : Stateless synthetic oci
       | registry that serves single layers from IPFS
        
       | nick-of-time wrote:
       | I have a python library that performs dice rolls:
       | https://github.com/the-nick-of-time/dndice
       | 
       | Basically just made for fun.
        
       | snwfog wrote:
       | An alternative Reddit client, that is compact and desktop
       | friendly, cuz I dislike the "modern" (read: too much negative
       | spaces) UI.
       | 
       | It has a "TweetDeck" look and supports multi-accounts.
       | 
       | - https://rdddeck.com
        
         | dwrodri wrote:
         | Just throwing this out there: This could be a killer competitor
         | with Apollo[1] if you optimize the UX for desktop/iPad.
         | 
         | 1 = https://apolloapp.io
        
       | sideproject wrote:
       | I had so many domain names being un-used and I hated all domain
       | parking solutions, so I created a tool to build an automatic
       | content aggregator. Of course along the way, I found people who
       | had the same need.
       | 
       | https://www.newsy.co
        
       | jazzido wrote:
       | tabula-java [0], a library for extracting tables from PDF files.
       | It started as a monolithic webapp written in JRuby, and we later
       | extracted the table detection and segmentation logic into a Java
       | library.
       | 
       | [0] https://github.com/tabulapdf/tabula-java
        
       | MrPowers wrote:
       | I built daria (https://github.com/MrPowers/spark-daria) to make
       | it easier to write Spark and spark-fast-tests
       | (https://github.com/MrPowers/spark-fast-tests) to provide a good
       | testing workflow.
       | 
       | quinn (https://github.com/MrPowers/quinn) and chispa
       | (https://github.com/MrPowers/chispa) are the PySpark equivalents.
       | 
       | Built bebe (https://github.com/MrPowers/bebe) to expose the Spark
       | Catalyst expressions that aren't exposed to the Scala / Python
       | APIs.
       | 
       | Also build spark-sbt.g8 to create a Spark project with a single
       | command: https://github.com/MrPowers/spark-sbt.g8
        
       | pantelisk wrote:
       | I built audiomass ( https://audiomass.co ). it is not a dev tool
       | but a general productivity tool (allow people to record, edit and
       | manipulate audio directly in the browser).
       | 
       | I just wanted something that works as promised and respects the
       | user (open source, 70kb total payload size, no ads, no tracking,
       | feature complete, etc)
        
         | StavrosK wrote:
         | This is great, well done!
        
       | erulabs wrote:
       | I built "deploy-node-app", an NPM package to help people deploy
       | their node apps to docker/kubernetes - mostly because I wound up
       | asking the same sets of questions every time and wanted to turn
       | it into a set of prompts for people to follow.
       | 
       | It needs more love - I really should add more love to it... but
       | it works fairly well for node and react apps!
        
       | pkhuong wrote:
       | Among the less niche ones:
       | 
       | - UMASH: https://github.com/backtrace-labs/umash Fast hash
       | functions don't usually come with collision bounds, and crypto
       | hashes try too hard for my needs. With umash, we get speed that's
       | comparable to regular hash functions, and a 128 bit output such
       | that hardware failure is more likely than collisions.
       | 
       | - poireau: https://github.com/backtrace-labs/poireau existing
       | heap profilers are more intrusive (first, you have to replace the
       | allocator), and, in long-lived servers, any long-lived allocation
       | is cause for concern, regardless of reachability. A flamegraph
       | compatible output is also useful for visualisation.
       | 
       | - CSM: https://github.com/pkhuong/csm Testing an SLO-type
       | property that's expected to hold, e.g., 99% of the time, quickly
       | becomes an annoying exercise in balancing test duration and false
       | alarms. CSM implements a statistically valid dynamic stopping
       | criterion, so the tests only run for as long as needed to be
       | confident that the SLO holds or doesn't hold.
       | 
       | - Reciprocal: https://github.com/pkhuong/reciprocal existing
       | runtime div-by-mul libraries in Rust (and most other languages)
       | are branchy, making their runtime behaviour too hard to
       | characterise for my tastes.
        
       | andreynering wrote:
       | I built an alternative to Make written in Go that is simpler to
       | use and cross-platform: https://taskfile.dev/
       | 
       | Also, a library to write tests with databases for Go:
       | https://github.com/go-testfixtures/testfixtures
        
       | mikeytown2 wrote:
       | 2011: httprl. Parallel http requests; can also issue a http
       | request to its self for "asynchronous" function calls in php.
       | 
       | 2014: apdqc. asynchronous MySQL driver used for the cache
       | backend. Simplicity of the stack increased our uptime. async db
       | writes are quick.
        
       | drmohundro wrote:
       | I was working for a team that didn't have any mobile developers
       | so we had outsourced an iOS app to connect with our SOAP based
       | API. A few years later, our mobile app was woefully out of date,
       | so I thought I'd take upon myself to 1) learn Swift and 2)
       | convert the library over. Unfortunately, it was a nightmare to
       | work with SOAP (and XML) in Objective C and Swift, so I played
       | with an abstraction to help with parsing XML. The end result
       | became an early version of SWXMLHash [1].
       | 
       | The irony is that I never finished the rewrite, but the library
       | was helpful to other Swift developers so I've been maintaining it
       | since.
       | 
       | [1] https://github.com/drmohundro/SWXMLHash/
        
       | jasfi wrote:
       | A todo manager: https://todo.network
        
       | iillexial wrote:
       | https://github.com/ivaaaan/smug: A tmux session manager built
       | with Go. I really needed it for my daily job and started it as a
       | simple bash script. Then it grew up into a Go program.
        
       | andrey_utkin wrote:
       | Wearable computer (on-body Linux) with audial calendar reminders
       | and "normal" hand-strapped "desktop" https://github.com/andrey-
       | utkin/wearable-computer/wiki
       | 
       | TODO list and personal project tracker - like TaskWarrior but
       | SQL-accessible https://github.com/andrey-utkin/taskdb/wiki
       | 
       | sqlhub.net - Access to public datasets in form via PostgreSQL
       | server https://github.com/sqlhub-net/sqlhub-net/wiki
        
       | jononor wrote:
       | I built emlearn, a Machine Learning inference engine for
       | microcontrollers and embedded systems. It allows converting
       | traditional ML models to simple and portable C99, following best
       | practices in embedded software (no dynamic allocations etc).
       | https://github.com/emlearn/emlearn At the time of creation, there
       | were not many open source libraries for that niche. Now there are
       | also deep learning frameworks like TensorFlow Lite for
       | microcontrollers, but emlearn is a nice complement because it
       | focuses on the simpler models RandomForest, Gaussian Naive Bayes
       | etc.
        
       | coverclock wrote:
       | At last count I have 36 repos on GitHub - some private - but by
       | far the one that has been the most useful is my Diminuto (com-
       | diag-diminuto) LGPLv2 repo that is a library of C/GNU/Linux-based
       | functions and tools that provide simpler (for me anyway) APIs for
       | tasks that routinely crop up in the kind of embedded programming
       | I typically do: logging, time keeping, sockets, linked lists,
       | red-black trees, GPIO, threads, etc. It's saved me a lot of time
       | in other C development, both my own side work (e.g. com-diag-
       | hazer), and in several commercial products I've worked on for
       | clients, to have a library that is already unit tested and with
       | which I have years of experience using.
        
         | coverclock wrote:
         | Related: my Hazer (com-diag-hazer) LGPLv2 repo, which makes
         | extensive use of Diminuto, is my go-to tool for evaluating
         | GPS/GNSS/IMU devices or building geolocation tools. I _do_ use
         | stuff like the GPS Daemon (gpsd) in many of my precision
         | timekeeping projects. But if I need to get closer to the direct
         | output of the device (which is typically the case), step 1 is
         | cloning, building, and installing Diminuto and then Hazer. I
         | find I can only learn and internalize stuff by doing, and Hazer
         | is my mechanism to keep abreast of technology in this field.
        
       | GuB-42 wrote:
       | https://github.com/GuB-42/dupfiletree
       | 
       | A tool to find identical files.
       | 
       | Compared to other tools that do similar things, it can also find
       | identical directories, handles archives and is designed to work
       | with millions of files efficiently.
       | 
       | It works is two steps: first make a list of files and checksums
       | with xmd5 and analyze it with dupfiletree.
       | 
       | Made for personal use, not documented, designed for performance
       | first, stable enough for me but use at your own risk.
        
       | softwaredoug wrote:
       | Quepid (http://quepid.com) and Splainer (http://splainer.io) both
       | are tools I created a long time ago to work on improving search
       | result relevance in Solr or Elasticsearch. Both are open source.
       | 
       | I literally started coding Quepid next to a colleague complaining
       | about search so I could help them. It's basically a kind of test
       | driven approach to continually tuning and proving you're not
       | harming existing use cases too much. The first version that day
       | was super hacky :) but it worked: it was a "single page server
       | side application" ;). Just dumping a huge HTML page from flask
       | about how our search was doing based on stakeholder feedback.
       | 
       | Nothing out there existed that did what I needed. Tooling around
       | search engines for relevance just wasn't great. In part because
       | it wasn't paid as much attention to ~10 years ago when I worked
       | on creating these tools.
        
         | graderjs wrote:
         | Cool! :) I'll definitely take a look at this. I'm working on a
         | search thing now and need some way to measure and improve
         | search result to query relevance. Thanks for posting! :p ;) xx
        
           | jll29 wrote:
           | There is a new, emerging job role, the "relevance engineer",
           | who ensures that search results stay relevant as content sets
           | changes.
           | 
           | In London, the annual Search Engine Solutions meeting (each
           | autumn/fall) organized by the BCS IRSG (Chartered Institute
           | of IT's Information Retrieval Specialist Group) provides a
           | forum for search practitioners to exchange best practices.
           | 
           | Here's the report from the 2020 meeting:
           | https://irsg.bcs.org/informer/2021/01/search-
           | solutions-2020-...
           | 
           | Talk proposals, demo proposals, tutorials etc. welcome.
        
       | lou1306 wrote:
       | I made a small tool to script source-to-source transformations
       | and apply them on C programs: https://github.com/lou1306/absentee
       | 
       | I used it during my PhD to automatically instrument benchmark
       | programs for several different software verification tools (there
       | is some form of standardization going on, but there are still a
       | lot of corner cases where the same program will be interpreted,
       | and thus verified, differently by two tools).
       | 
       | It's written in Python 3 and uses pycparser to do most of the
       | heavy lifting. Currently it's a bit on the back burner, but I
       | hope to come back to it soon-ish. Some desiderata:
       | 
       | * pycparser's AST API is not terribly efficient when you have to
       | rewrite large subtrees, but I don't know if there are any nice
       | alternatives. * That's probably a pipe dream, but I wish there
       | was some easy-to-use library to get semantic info about C
       | programs (like a symbol table). That would help me "teach" the
       | tool some neat tricks, such as SSA.
       | 
       | By the way, thank you OP, as your post convinced me to make the
       | repo public.
        
       | Sean-Der wrote:
       | I started (but many many others contributed) to the Go
       | implementation of WebRTC Pion WebRTC
       | https://github.com/pion/webrtc if you aren't familiar with WebRTC
       | it is really amazing tech. Check out some of the projects on
       | https://github.com/pion/awesome-pion. Stuff like
       | https://github.com/giongto35/cloud-game continues to blow my mind
       | :)
       | 
       | Along the way I worked on a Go implemenation of DTLS that gets
       | used on its own a bit https://github.com/pion/dtls
       | 
       | In another life I wrote Therac https://github.com/sean-
       | der/therac. A PHP debugger that was viewable from a browser. I
       | was a remote at the time (2015) and it was a great tool to use
       | with others.
       | 
       | I also wrote fail2web https://github.com/sean-der/fail2web a web
       | frontend to fail2ban
        
       | springogeek wrote:
       | I wanted a game engine/framework which had a Fantasy Console-
       | style API, but using a scripting language that came with Classes
       | and Objects built in, so I built DOME, which uses the Wren
       | language.
       | 
       | Lovingly documented and well maintained :)
       | 
       | https://domeengine.com
        
       | polishdude20 wrote:
       | I made https://CampAlert.live , a notification service for last
       | minute camp site cancellations. It sends you an email and text
       | message when we find a free spot of your choosing. Currently, it
       | supports only Canadian campsites in BC, AB and National Parks.
       | 
       | I've looked into previous tools but their services were all too
       | expensive. They also didn't have the granularity I wanted in the
       | options you could choose for campsites. We tried expanding to the
       | USA last year but since we made it a paid service, it's been hard
       | to advertise and get into the market. When we were free for the
       | first month, we got multiple local radio interviews and news
       | stories which really helped bring that critical mass of users in.
        
       | escot wrote:
       | React component for zooming/panning on desktop and mobile. I
       | wanted something with minimal deps and minimal api surface to
       | just nicely turn any div into a google maps style interaction.
       | 
       | https://github.com/strateos/react-map-interaction
        
       | h3rald wrote:
       | Here's most of the stuff that I built myself (and that I still
       | use on a regular basis):
       | 
       | - fae [https://h3rald.com/fae] * a minuscule find and edit
       | utility
       | 
       | - h3 [https://h3.js.org] * an extremely simple javascript
       | microframework
       | 
       | - hastyscribe [https://h3rald.com/hastyscribe] * a professional
       | markdown compiler
       | 
       | - hastysite [https://hastysite.h3rald.com] * a high-performance
       | static site generator
       | 
       | - herald [https://h3rald.com/herald-vim-color-scheme] * a well-
       | balanced vim color scheme
       | 
       | - litestore [https://h3rald.com/litestore] * a minimalist nosql
       | document store
       | 
       | - min [https://min-lang.org] * a small but practical
       | concatenative programming language
       | 
       | - mn [https://h3rald.com/mn] * a truly minimal concatenative
       | programming language
       | 
       | - nifty [https://h3rald.com/nifty] * a tiny (pseudo) package
       | manager and script runner
       | 
       | - nimhttpd [https://h3rald.com/nimhttpd] * a static file web
       | server
        
         | NetOpWibby wrote:
         | Well damn!
        
       | jwilber wrote:
       | roughViz, a library to make hand drawn looking charts in the
       | browser: https://github.com/jwilber/roughViz
        
       | sandermvanvliet wrote:
       | Two things that I use daily:
       | 
       | Serilog.Sinks.InMemory for help with unit testing log messages
       | etc: https://github.com/sandermvanvliet/SerilogSinksInMemory
       | 
       | TestableHttpClient to make testing API calls easier by providing
       | a simple way to configure responses and behaviour as well as
       | asserting actual calls:
       | https://github.com/sandermvanvliet/TestableHttpClient
       | 
       | Both I think equal parts not invented here, "how hard is this
       | really?", not finding something at the time and just doing it for
       | the fun of it
        
       | epoch_100 wrote:
       | I built Shynet [0], a modern, privacy-friendly, and detailed web
       | analytics tool that works without cookies or JS.
       | 
       | I also built a17t [1], an atomic web design toolkit that makes
       | using Tailwind CSS a bit easier from the start.
       | 
       | [0] https://github.com/milesmcc/shynet
       | 
       | [1] https://github.com/milesmcc/a17t
        
       | nicholast wrote:
       | I've created the Automunge python library to automate tabular
       | data cleaning for ML, including preprocessing transformations,
       | missing data infill, etc. It's very useful!
       | 
       | https://github.com/Automunge/AutoMunge
        
       | gervwyk wrote:
       | We've created https://lowdefy.com and open-sourced it.
       | 
       | Over the past 5 years we've been building custom B2B and back
       | office web applications. Nothing in the market had the level of
       | customization we required both from a technical and commercial
       | angle. So decided to standardize how we "configure" apps into a
       | platform.
       | 
       | We did this by designing a schema by which to define web apps
       | which is easy to read, write and understand, and works well with
       | normal developer tools like editors, git and CI. While keeping it
       | self hosted and even server-less.
       | 
       | Lowdefy has enabled us to rapidly deploy custom business apps
       | like BI, CRM to MRPs.
       | 
       | Check it out :) https://github.com/lowdefy/lowdefy
        
         | paustint wrote:
         | This looks really cool! Just added a reminder to check out in
         | more detail when I get to a computer :)
         | 
         | Thank you for sharing.
        
           | gervwyk wrote:
           | Thanks! We are having great fun building it and making it
           | useful for others!
           | 
           | Please reach out if you have any questions:
           | https://discord.gg/WmcJgXt
        
       | Keats wrote:
       | I've made a few things:
       | 
       | - Zola (https://github.com/getzola/zola) a SSG that works like
       | _I_ wanted and had a template engine close to Jinja2. I was using
       | Hugo at the time but can 't stand Golang template engine (imagine
       | my sadness recently when I realised what Helm Charts are
       | using...)
       | 
       | - Tera (https://github.com/keats/tera): a template engine pretty
       | close to Jinja2/Django templates - at the time it was made only
       | Handlebars existed in Rust and it was not enough for what I
       | needed in Zola
       | 
       | - kickstart (https://github.com/Keats/kickstart): an equivalent
       | of cookiecutter from Python but trying to be more
       | interactive/powerful as a simple binary, see the GIF in the repo
       | for an example
       | 
       | - validator (https://github.com/Keats/validator): my take on
       | Python marshmallow validations, nothing existed at the time.
       | 
       | So yeah, most of my open-source is re-creating libraries I use
       | with Python in Rust.
        
         | spsesk117 wrote:
         | The last software team I was on used Zola for a lot of our
         | internal documentation publishing. It worked great and we were
         | really happy with it!
        
       | pushkar8723 wrote:
       | As a frontend developer I often struggle with the component
       | library to use. At last I set out to create my own
       | https://nfui.js.org. It isn't complete yet. I still need to fix
       | SSR and create a few essential component. But so far it is coming
       | out great. With bundle size < 25K gzipped and more than 20
       | components already in place.
       | 
       | There are many I have tried before this project, but there is
       | something always missing. I primarily work on React and so my
       | experience can be a little different from people working on other
       | view libraries.
       | 
       | Following are few libraries I tried and my pet peeves with them.
       | Material UI was just too complex in terms of use. I had to always
       | have a doc open in a tab and refer it for even a simple component
       | like toolbar. Antd bundle size is way too large and few essential
       | components like timepicker is > 100KB gzipped. React bootstrap
       | doesn't have theming and looks outdated (Bootstrap 5 will fix
       | this).
        
         | hariharasudhan wrote:
         | have you tried tailwinds and their uikit tailwindui?
        
           | _puk wrote:
           | I'd also recommend TailwindUIKit [0]. 100+ free Vue, React
           | and VanillaJS tailwind components with light and dark mode
           | support as well accessibility.
           | 
           | I did end up paying for the premium components, as I wanted
           | to support their efforts, and it was reasonably priced, but
           | didn't feel like I had to.
           | 
           | 0: https://tailwinduikit.com/
        
           | pushkar8723 wrote:
           | I haven't tried it but I did go through their doc. Any thing
           | slightly complex (like toggle) is behind a premium. I feel it
           | would be great for creating layouts, but to create a
           | component, I still have to go through the same trouble as
           | material ui (but with classes instead of components).
        
       | dr_traktor wrote:
       | I created a CMake package that autogenerates Python bindings for
       | annotated C++ functions.
       | 
       | If you have a C++ static lib in CMake, it takes two more lines of
       | CMake to generate a Python extension module, and a single line of
       | annotation per C++ function that you want to export.
       | 
       | https://github.com/bebump/bbmp_interop
       | 
       | I use it mostly for testing numerical C++ code using Numpy and
       | Scipy.
        
       | itiswh4titis wrote:
       | https://github.com/nagypeterjob/ecr-scan-lambda - A set of
       | lambdas to periodically trigger vulnerability scans on ECR images
       | & report on the results.
        
       | makeworld wrote:
       | I created dither, a library for image dithering in Go. And then I
       | created didder, a CLI tool for the library. I had become
       | interested in the aesthetic effect of dithering, but realized
       | that there aren't many tools that do the math correctly, and also
       | provide many different algorithms to explore.
       | 
       | https://github.com/makeworld-the-better-one/dither
       | 
       | https://github.com/makeworld-the-better-one/didder
        
       | jlelse wrote:
       | I built my own blogging engine (source at
       | https://jlel.se/goblog). Previously I used Hugo, but there were
       | just too many workarounds to get my IndieWeb and ActivityPub
       | setups working the way I want them. Writing my own blog software
       | also enabled me to implement other features and focus on
       | performance and simplicity.
       | 
       | In addition to that I built a few other tools, like my link
       | shortener. It does everything I need it to do the way I want it,
       | but nothing more.
        
         | mro_name wrote:
         | Interesting. What do you think about such an approach to
         | (micro)blogging for a broad, tech-layperson audience:
         | https://mro.name/o/2021-03-30-142424-prototypefund10-068.pdf
        
           | jlelse wrote:
           | Really interesting!
        
       | RichardChu wrote:
       | I'm making Notabase [1], which is a personal knowledge base for
       | non-linear thinking. It's inspired by note-taking apps like
       | Notion, Roam Research, and Obsidian.
       | 
       | I started it because I wanted a note-taking app for networked
       | thought / Zettelkasten that is easy to use for the average user
       | (not the average Hacker News reader). So you don't need to use
       | Markdown if you don't want to, you can format text in other ways
       | like using the formatting toolbar or through keyboard shortcuts.
       | And syncing between different devices is handled automatically
       | for you since it's a web app.
       | 
       | I also wanted to make it open source [2] so that anyone could
       | look at the code and contribute to it if they wanted to. I'm not
       | a big fan of the way that a lot of the apps in this space are
       | closed source -- you don't really know what they're doing with
       | your data, and it doesn't inspire confidence in the app's
       | longevity.
       | 
       | It's still early in development, but I'm hoping to build a solid
       | community behind it.
       | 
       | [1] https://notabase.io
       | 
       | [2] https://github.com/churichard/notabase
        
       | nsm wrote:
       | I built a little PWA just for me that I can use to scan ISBN
       | codes of physical books I read. It then looks up the book and
       | adds it to my spreadsheet of "Books I've read". I wrote a bit
       | about it here https://nikhilism.com/post/2021/tracking-books-i-
       | read-using-...
       | 
       | It was partly just a way to try out Svelte and XState.
        
         | raunak wrote:
         | That's funny - I just started building something _exactly_ like
         | this for my own website - I wanted mine to be more like a
         | vintagy/iBooks-like proper wooden bookshelf that displayed the
         | book covers of the books I was currently reading on the front
         | page of my personal website.
        
       | HugoDaniel wrote:
       | A low-level graphics engine, where each WebGL function has a
       | corresponding HTML tag (web component), like a-frame but low-
       | level instead.
       | 
       | https://hugodaniel.com/projects/shader-canvas/
       | 
       | The idea was to bring a more declarative vibe to the low-level
       | WebGL API.
       | 
       | Done for a personal project, but I ended up using Three.js
       | because my time to develop it further was running out :(
        
       | wenbin wrote:
       | Early 2017, I built Listen Notes [1] , so I can search podcast
       | episodes by keywords and listen to individual podcast episodes
       | without subscribing to the entire podcast. A few years ago, most
       | podcast apps assume you wanted to subscribe to podcasts first
       | then listen. Maybe I'm not a typical podcast listener. I don't
       | like subscribing to podcasts. I just want to listen to individual
       | episodes then move on. Similar to consuming web contents, I don't
       | bookmark entire websites. I just search on google, read the web
       | page, then move on :)
       | 
       | [1] https://www.listennotes.com
       | 
       | [edit] This is my Show HN of Listen Notes in early 2017:
       | https://news.ycombinator.com/item?id=13310834
        
         | mr_o47 wrote:
         | I love listen notes, It has made it easier to search for
         | specific podcast which I had to discover myself. now I just use
         | Listen Notes to search with few keywords and I'm able to find
         | the podcast for my taste.
         | 
         | Anyways love your product and I definitely enjoyed reading your
         | article on medium where you talked about how you ran the entire
         | company as a solo dev and that's how I discovered ListenNotes
         | back then
        
         | zigzaggy wrote:
         | Whoa! I'm glad I found this. I think it'll fit into my writing
         | workflow. Thanks!
        
           | wenbin wrote:
           | Most searches are about people's names, e.g., book author's
           | name, a celebrity's name, a CEO's name...
           | 
           | And you can curate playlists of episodes by topic / people,
           | e.g.,
           | 
           | - Scott Galloway https://lnns.co/0LWEK3dhSfy
           | 
           | - Female VCs: https://lnns.co/depiDjM1XvQ
           | 
           | - More playlists: https://www.listennotes.com/podcast-
           | playlists/
        
         | zachwill wrote:
         | I'm a huge fan of Listen Notes!
        
           | wenbin wrote:
           | Thank you :)
        
       | seanbarry wrote:
       | I've been learning about different sorting algorithms recently
       | and spent a rainy Saturday a couple of weeks ago building a tool
       | to visualise them.
       | 
       | https://seanbarry.github.io/sorting-algorithms/
        
       | nrvn wrote:
       | We were in need of a simple and reliable Redis failover in
       | Kubernetes. There were a number of options. All of them tried to
       | leverage Redis Sentinel which is not very Kubernetes friendly.
       | 
       | That is why this Redis Operator was born which can be considered
       | as a Kubernetes native implementation of Sentinel.
       | 
       | https://github.com/amaizfinance/redis-operator
        
       | siscia wrote:
       | Several, the one I am more proud of is:
       | 
       | - https://nostashapp.com I use it personally and I love to have
       | my notes online.
       | 
       | - https://docutemplate.com actually work in progress to
       | understand the API of googles.
        
       | visox wrote:
       | i build 2 recent tools i also posted on HN
       | 
       | https://insightrend.com/?page=term-trending - like google trends
       | but better
       | 
       | and https://ideasfilter.com/ a list of apps that you can copy and
       | make money of
        
       | lasftew wrote:
       | I built knut (https://github.com/sboehler/knut), a personal
       | finance CLI tool. It is similar in terms of use cases to ledger
       | and beancount, but focused on getting multi-currency and
       | valuation right.
        
       | recursivedoubts wrote:
       | I created intercooler.js in 2013 so I could do AJAX in HTML:
       | 
       | https://intercoolerjs.org
       | 
       | Last year I removed the jquery dependency and cleaned it up based
       | on a lot of lessons that I learned, renaming it to hmtx:
       | 
       | https://htmx.org
       | 
       | Same idea: extends/complete HTML as a hypertext so you can build
       | more advanced UI within the original hypermedia web model, with a
       | cleaner implementation.
       | 
       | Part of that cleanup involved me pulling out some functionality
       | around events and a proto-scripting language (ic-action), and I
       | enjoy programming languages, so I created a front end scripting
       | language to fill that need:
       | 
       | https://hyperscript.org
       | 
       | It's based on HyperTalk and has a lot of domain specific features
       | for lightweight front end scripting, kind of a jQuery or AlpineJS
       | alternative.
        
         | tiger3 wrote:
         | Thank you for intercooler and htmx! It's a godsend for someone
         | like me that doesn't want to get too deep in the weeds with
         | frontend dev but still get some dynamic UI actions and lazy
         | loading/click loading done.
        
       | slooonz wrote:
       | As a system administrator, I'm frustrated by two things :
       | 
       | * The existing backup tools, that are all hyper-specialized, all
       | configured differently, all have slightly different feature sets,
       | and so on. You will likely have very different tools to backup,
       | say, your /etc folder and your mariadb database
       | 
       | * cron is cool, but its logging/alerts capabilities are...
       | subpar, to say the least
       | 
       | So I've developed tools to alleviate my pain in those two areas.
       | 
       | I've just open-sourced the first one :
       | https://github.com/sloonz/uback/. Feedback is welcome ! I'll
       | probably make a Show HN post about it when it hit 0.5.
       | 
       | For the second one, I've made some tools to monitor cron jobs.
       | Not released yet, but open-sourcing it is on my TODO-list too. It
       | will need way more polishing for it tho.
       | 
       | On another shameless plug (but it's the topic of this post, so
       | let's be shameless indeed), I needed something very similar to
       | vouch-proxy but that could protect multiple unrelated domains and
       | be configurable with a database (because I'm not the one who is
       | going to configure the ACL, and the guy who is going to configure
       | the ACL is perfectly able to use phpmyadimn). Since the guys
       | behind vouch-proxy were not willing to accept the changes
       | necessary to make this work, I decided to create my own
       | alternative : https://github.com/sloonz/ngx-auth
        
       | golergka wrote:
       | Tiny library to work with transactions with very popular Node
       | Postgresql driver: https://github.com/golergka/pg-tx I'm pretty
       | proud of this one, although it's very tiny, because before I
       | built it, I used a stack overflow answer that turned out to have
       | a nasty bug, and it wasn't an easy one to figure out. I mean,
       | since I just told you where to look, it's obvious, but before I
       | realised that I handled transactions wrong, I spent a long, long
       | time looking in other places.
       | 
       | Telegram bot to deliver new Hacker news comment replies:
       | https://github.com/golergka/hn-comment-bot It's hosting is broken
       | and I've been meaning to fix it in the last month or two, but the
       | code is working.
        
       | iwebdevfromhome wrote:
       | There was a time in my team where we were taking just too much
       | time and derailing in our daily standups, and the manager wanted
       | to have a way to control how much time each one of us took during
       | our standup and leave any further discussion for the 16nth
       | minute. I created a [DSU timer][0] for the team which we used for
       | quite some time and it served it's purpose. We later switched to
       | another approach for our standups. It's currently [hosted][1] on
       | github pages.
       | 
       | [0]: https://github.com/deathwebo/tinydiamond-timer [1]:
       | https://deathwebo.github.io/tinydiamond-timer/
        
       | jvanderbot wrote:
       | I made some CLI tools to show me just how bad I am at my favorite
       | multiplayer games. It calculates some stats on my match journal
       | and does hypothesis tests on various loadouts.
       | 
       | https://github.com/jodavaho/kda-tools
       | 
       | https://github.com/jodavaho/poisson-rate-test
       | 
       | https://github.com/jodavaho/kvc
        
       | ivthreadp110 wrote:
       | Something I call Event Stream Assistant. I found myself commonly
       | having to code small utilities for message brokering
       | management/assistance (over and over again)- for the simple
       | things like: Flat File Processing, Flat n' Sort, Single State,
       | Single State Merge, CnC (CLI for managing (SAS) ESP projects).
       | Logic Engine (basic logical engine / schema interpreter) Pika
       | (AMQP), MQTT wrappers, and Websocket Async services...
       | 
       | Some of these items are in production environments. I plan on
       | releasing it open source (fully) once I get around to it. It's
       | really useful.
        
       | pgsandstrom wrote:
       | I've built several extensions to vscode. My best one has to be a
       | tool to help you upgrade dependencies in your package.json:
       | https://github.com/pgsandstrom/package-json-upgrade
       | 
       | I just felt that other extensions lacked polish. The UX wasn't
       | very good, or they didn't read all npm config properly.
        
         | qorrect wrote:
         | Wow I love it!
        
       | ElectronShak wrote:
       | I built this Subject/Topic Extractor[1] in NodeJS to quickly
       | extract topics/nouns/subjects from a String. My Use-Case was to
       | determine what is trending, given a number of news article titles
       | in a day
       | 
       | [1]: https://github.com/mudulo/subject-extractor
        
       | zikani_03 wrote:
       | built a couple of tools that I use very often:
       | 
       | - zefaker[0] - a CLI for generating (random) data and exporting
       | to SQL, Excel, CSV and JSON. Has helped in generation of test
       | databases and test data for various scenarios. Much more
       | convenient than a tool tied to a specific framework. Also gave me
       | a chance to learn how to work with the Groovy script engine.
       | 
       | - groupby[1] - A CLI tool to group files into directories, by
       | year, month or even day. Originally started writing it in Rust
       | but got annoyed when I kept losing fights against the Rust
       | compiler/borrow-checker; eventually drove me to learn Go...
       | 
       | [0]: https://github.com/creditdatamw/zefaker [1]:
       | https://github.com/zikani03/groupby
        
       | spywhere wrote:
       | I wrote my own game engine that support an adaptive music system
       | (some called dynamic music system), built using OpenGL (by SDL2),
       | OpenAL, Physics powered by Box2D.
       | 
       | Pretty old projects, built during my years in the university. But
       | also one of the proudest projects I achieved.
       | 
       | https://github.com/spywhere/Legacy-ParticlePlay
        
       | djedr wrote:
       | Created TAO[0] -- a minimal syntax that's even simpler than
       | S-expressions.
       | 
       | Building notations on top of it, currently focusing on one for
       | data -- an alternative to XML, JSON et al.
       | 
       | Open-source, prototyping on GitHub[1].
       | 
       | Keepin' it simple ain't easy.
       | 
       | [0] https://tree-annotation.org/
       | 
       | [1] https://github.com/tree-annotation
        
         | dr_kiszonka wrote:
         | It looks very neat. I quite like the example where tapping JSON
         | code shows, which characters would be removed in TAO.
        
           | djedr wrote:
           | Glad to hear that, tried my best to present it in a clear and
           | concise way. Quite the task in itself.
        
         | majewsky wrote:
         | Is this not too little syntax, though? The two JSON documents
         | { "foo": true }       { "foo": "true" }
         | 
         | would both have to map to the same TAO representation:
         | foo [true]
        
           | djedr wrote:
           | Yes, Data TAO as shown on the website maps to a subset of
           | JSON with only one primitive type (string).
           | 
           | However this is by design.
           | 
           | The idea is to provide only the most generic constructs,
           | decouple specialized data types from the core syntax and
           | enforce/interpret them on a separate layer.
           | 
           | An ad hoc (but perfectly sensible IMO) way to apply this idea
           | to the example is: if foo is supposed to be a string then no
           | need to do anything (that's the default primitive). If it's
           | supposed to be a boolean, then parse it as such (e.g. 'true'
           | -> true, 'false' -> false, error otherwise; or even error if
           | typeof JSON.parse(value) !== 'boolean' in JS).
           | 
           | A non-ad hoc data type layer for TAO is something I've
           | thought about a lot and hope to be able to figure out in the
           | future.
           | 
           | Two basic (non-exclusive) ways to do this:
           | 
           | 1. Inline/mixed with the data -- type annotations, op-based
           | literals
           | 
           | 2. Separated from the data -- schema-based
           | 
           | Example designs for the 1st point:                   foo [`t]
           | foo`: boolean [true]
           | 
           | Both of these associate the boolean `true` with `foo`.
        
         | neolog wrote:
         | Is your project related to the tree notation project or are you
         | the same guy?
        
           | djedr wrote:
           | If you mean https://treenotation.org/ then it's completely
           | unrelated.
           | 
           | I saw this recently on the front page. Was pretty confused
           | myself. Domain name is very similar and what the project is
           | about seems to overlap, but ultimately it goes in a different
           | direction.
           | 
           | TAO is my independent original project, but it makes sense
           | that there is > 1 person making an effort to figure this
           | stuff out.
        
       | tekdude wrote:
       | I was building a touchscreen music-production app for Windows,
       | and I wanted it to have a phone/tablet style interface. It would
       | have a stack of modal popup Views that the user could tap (or
       | click) off of to close the top View and go back down. I ended up
       | splitting the UI system off into a separate library and kept
       | working on it. It now has DI (with scoping) and some other
       | features. I've since used it for a few other small personal tools
       | and projects, though no one else is that I'm aware of.
       | 
       | It's written in C# and runs on top of WPF:
       | https://tinyurl.com/upbeatui
        
         | qorrect wrote:
         | Pretty neat. Is the Music app written somewhere ?
         | 
         | Also question to the room, is DI really worth it ? All that
         | complexity to switch out sub-classes . A clean design but in
         | practice it just feels like too much work for the benefit.
        
           | tekdude wrote:
           | Thanks. The music app code is closed. There's a public demo
           | still online, but I got terrible feedback, so I'm slowly
           | rebuilding it from scratch with a completely different
           | design.
           | 
           | As for DI: in my case, it was definitely worth adding. The
           | original music app didn't have it, so I had to come up with
           | convoluted mechanisms to share cross-cutting services with
           | different ViewModels, and it got messy. Some had to keep
           | references to services that they didn't actually need
           | themselves, but their child ViewModels did... With DI, I just
           | register the services with the library, and let it inject
           | whatever a ViewModel needs.
        
       | offbynull wrote:
       | I've written...
       | 
       | * a Java library to open up ports on your router, because at the
       | time nothing existed for Java that handled all 3 major port
       | mapping protocols.
       | 
       | * a Java library implementation of Kademlia, because I wanted to
       | learn the protocol.
       | 
       | * a Java coroutines toolkit, because I needed the functionality
       | but at the time Javaflow was dead but Project Loom wasn't yet a
       | thing.
       | 
       | * a Node library that extends markdown-it with my own special
       | flavour of Markdown that I use for taking long-form notes. It
       | automatically links terms in the document and lets me call into
       | container images to generate outputs (e.g. generate
       | chemfig/tikz/svgbob/graphviz diagrams, run a block of python and
       | spit the output, etc..). I built this one because, at the time,
       | Google Docs just wasn't cutting it in terms of features and had
       | some bugs when the doc was hitting the low hundreds of pages. A
       | sample of the MD
       | <https://raw.githubusercontent.com/offbynull/learn/master/Bio...>
       | and its rendered output at <https://offbynull.com/data/learn/Bioi
       | nformatics/output/outpu...>.
        
       | nlh wrote:
       | I built an open source library/mini-framework to seamlessly
       | integrate a Svelte (JS) frontend with a Crystal backend. It's
       | really fun to build apps with this!
       | 
       | https://nlh.me/projects/celestite
       | 
       | Still very much a WIP, but it works. You can build your front-end
       | in pure Svelte components and it supports server-side rendering,
       | client-side hydration, and all that good stuff.
       | 
       | I did this entirely to scratch my own itch - I love working in
       | Crystal (it's a beautiful, elegant language) and I love working
       | in Svelte (modular, reactive web components) and it all just fits
       | together nicely.
       | 
       | Would love feedback / contributions!
        
         | NetOpWibby wrote:
         | I find Crystal fascinating but I haven't been able to
         | internalize non-web languages just yet.
        
         | durkie wrote:
         | Cool! I love working in both Crystal and Svelte. I'll
         | definitely check it out.
        
       | boldslogan wrote:
       | Passport Reader API for on device scanning and verifying
       | passports. The idea was to let people do touchless on boarding
       | for their users.
       | 
       | Some cool RFID cryptography and some machine learning that had to
       | be done on device (privacy and security reasons).
       | 
       | passportreader.app/
       | 
       | Pleased with the service and how it is so far.
        
       | impoppy wrote:
       | I built a configuration tool for Python apps:
       | https://github.com/Euromance/confboy
       | 
       | Supports dynamic values, TOML configs, runtime mutations, merging
       | and stuff.
        
       | galactus wrote:
       | A command line client for the firestore DB, because there was
       | none:
       | 
       | https://github.com/sgarciac/fuego
        
       | ig0r0 wrote:
       | I build my own macos app for easier ios apps localization
       | management as xcode sticks at it
       | https://github.com/igorkulman/iOSLocalizationEditor
        
       | fredsted wrote:
       | * https://webhook.site - for testing webhooks, evolved into a
       | SaaS for building workflows from http requests and emails
       | 
       | * https://instadj.com - simple app for making youtube playlists,
       | wanted a simple app for playing music at parties (example:
       | https://instadj.com/wam)
       | 
       | Both are open source.
        
         | senko wrote:
         | Thank you for webhook.site!
         | 
         | It's phenomenal, just works and doesn't require I jump through
         | signup just to get started. Definitely the best webhook test
         | tool I've seen.
        
         | mft_ wrote:
         | Instadj looks great!
         | 
         | Tangent, but: I was dabbling with a YouTube webapp a while
         | back, and ran into a problem where some of the music videos had
         | a license that didn't allow embedding - which was obviously
         | necessity to play within my page. (Also at the time the api
         | didn't succeed in filtering out such videos within a search -
         | tho I've not checked back to see if this is now fixed.)
         | 
         | Did you encounter this, and circumvent or fix it?
        
       | sudowing wrote:
       | I spent a much of 2020 developing a project that auto provisions
       | REST, GraphQL & gRPC services that support CRUD operations (with
       | full validation) to tables, views and materialized views of
       | several popular databases (postgres, postgis, mysql, sqlite).
       | 
       | Features include: Full CRUD, geoquery support (bbox, radius,
       | custom wkt polygon) complex_resources (aggregate & sub queries),
       | middleware (access the query before db execution), permissions
       | (table/view level CRUD configs), field redaction (enable query
       | support -- without publication), schema migrations, auto
       | generated openapi3/swagger docs, auto generated proto file, full
       | validation.
       | 
       | GitHub https://github.com/sudowing/service-engine
       | 
       | YouTube Overview
       | https://www.youtube.com/playlist?list=PLxiODQNSQfKOVmNZ1ZPXb...
        
       | kamyarg wrote:
       | Recently started working on a command line tool to easily record
       | things I learnt.
       | 
       | https://github.com/kamyar/til
       | 
       | You can install it using "pip install til-cli",
       | feedback/suggestions most welcome. :)
       | 
       | Was inspired by Simon Willison's TIL Page
       | 
       | One Year of TILs: https://news.ycombinator.com/item?id=27017604
        
       | Faaak wrote:
       | pykorm (https://github.com/Frankkkkk/pykorm) : the python
       | kubernetes ORM.
       | 
       | We found out that many CRUD operations on CRDs were painful, so
       | made a simple, yet useful, ORM. Don't hesitate to check it out !
        
       | MH15 wrote:
       | I wanted a static site generator[0] in the Node.js ecosystem but
       | without React. Or, that's what I told myself- I really just
       | wanted to build a static site generator for fun. Really enjoyed
       | working on it and it's feature-complete enough to run my blog and
       | a few blogs/portfolios my friends run [2]. Learned a lot about
       | publishing and updating NPM packages.
       | 
       | [0]: https://github.com/MH15/neanderthal [1]:
       | https://matthall.codes/ [2]: https://kwest.haus/
        
       | fishywang wrote:
       | I wrote a few go libraries. The most recent one is to implement
       | python's defaultdict in go:
       | https://pkg.go.dev/go.yhsif.com/defaultdict
       | 
       | I originally implemented that for my rowlock library
       | (https://pkg.go.dev/go.yhsif.com/rowlock) a few years ago. But
       | there was some recent other work requires something similar, so I
       | extracted the defaultdict portion out to be in its own library.
        
       | jhspt wrote:
       | https://github.com/jhspetersson/fselect
       | 
       | A tiny tool I wrote to search within file piles (mostly unsorted
       | downloads, torrents, and such). I could never remember `find`
       | options, and more advanced queries are a pain. Now one can use
       | some kind of SQL flavor to get the job done.
        
         | zaptheimpaler wrote:
         | Looks awesome! SQL seems like a much nicer interface for this
         | kind of thing over a pile of command line flags.
        
       | karlicoss wrote:
       | - promnesia: a Memex-like tool to enhance my web browsing
       | experience with more context and connections
       | https://github.com/karlicoss/promnesia#readme
       | 
       | - cachew: library that allows to cache python function calls in
       | an sqlite database with just a single decorator (leveraging on
       | type annotations) https://github.com/karlicoss/cachew#readme
       | 
       | - dron: a friendlier 'frontend' for systemd which allows me to
       | declare jobs as python code living in the same file -- combines
       | best bits of systemd and cron
       | https://github.com/karlicoss/dron#readme. I elaborate a bit more
       | on motivation for it on my blog
       | https://beepb00p.xyz/scheduler.html
        
       | rikroots wrote:
       | I started building Scrawl-canvas[1] - my Javascript canvas
       | library - back in 2013 because I was trying to land my first
       | full-time job in the industry and a recruiter told me it would be
       | a really good idea if I had a portfolio of sites and projects to
       | show prospective employers - including one on GitHub to prove
       | that I knew what GitHub was.
       | 
       | I'm still developing the library because ... I don't know why.
       | I've lived with it for so long now it's become a bad habit I
       | can't shake. I'm also quite proud of it because it can do things
       | that other libraries can't do[2][3].
       | 
       | [1] - website - https://scrawl-v8.rikweb.org.uk/
       | 
       | [2] - Shape, and animate, an image between two paths -
       | https://codepen.io/kaliedarik/pen/ExyZKbY
       | 
       | [3] - Filter over a live media stream -
       | https://codepen.io/kaliedarik/pen/OJNVaEX
        
       | RhysU wrote:
       | Plot one or more files from the command line:
       | https://github.com/RhysU/gplot
       | 
       | "Interpret" C and C++ files: https://github.com/RhysU/c99sh
        
       | city41 wrote:
       | I created mate-i3-applet as it was the missing piece in a perfect
       | MATE/i3 integration: https://github.com/city41/mate-i3-applet
        
       | blacktriangle wrote:
       | Back in the Rails 3 days I built a AR compatable ORM that used
       | Neo4j as the database. It was incomplete but what was there
       | worked really well, a Rails dev could have looked at the code and
       | not even known it wasn't a SQL db but you could also do direct
       | Cypher queries when you needed them. Ultimately I dropped it
       | since it was just easier to write straight Cypher.
        
       | Aeolun wrote:
       | I wrote (well, I mostly combined) [eslint-formatter-pretty-
       | summary ](https://www.npmjs.com/package/eslint-formatter-pretty-
       | summar...).
       | 
       | I really enjoy writing stuff like this that makes my day at work
       | easier. There were formatters for a full summary, and there were
       | pretty formatters for all errors. But we had so many warnings in
       | eslint that it polluted the list of errors.
       | 
       | So now you get summary information for the warnings, and full
       | (and pretty) information for the errors.
       | 
       | I'm also writing a desktop version of Jira that works fully
       | offline. Because I just cannot deal with the web UI slowness.
        
       | jareklupinski wrote:
       | I built a really simple cloud watchdog using only free-tier
       | services:
       | 
       | http://www.watchdog.email/
       | 
       | https://github.com/jareklupinski/watchdog-email
       | 
       | planning on adding a timeout parameter soon!
        
         | Thomaschaaf wrote:
         | Maybe I missed it. But what use case is this for?
        
       | dceddia wrote:
       | Last year I built Recut[0], a native Mac app that helps speed up
       | video editing by automating the rough-cut process. It finds
       | silence, gaps, and pauses and removes them, creating a cut list
       | that you can import into editors like ScreenFlow, Final Cut,
       | Premiere and Resolve. Here's the Show HN [1] from a couple months
       | ago.
       | 
       | I built it because I was making screencasts and cutting out
       | silence + mistakes was 90% of my editing time. This makes it a
       | ton faster. There were some command-line scripts to do a similar
       | thing but I wanted something visual with a fast feedback loop,
       | where I could quickly preview how it would sound and tweak the
       | parameters in real time.
       | 
       | I didn't know anything about video and had never built anything
       | with Swift before so it's been a fun way to learn a bunch of new
       | stuff.
       | 
       | 0: https://getrecut.com
       | 
       | 1: https://news.ycombinator.com/item?id=26317265
        
         | ronyeh wrote:
         | Genius. You need to find a way to market to the right audience
         | and up your price to $79 or something. The current price seems
         | too low for all the time it saves (if I'm a serious vlogger).
         | 
         | I'll definitely check it out (and maybe purchase it before your
         | price increase, haha).
        
           | dceddia wrote:
           | Hah, I've been thinking about exactly both of those things!
           | $79 is the ballpark I was gonna aim for too.
           | 
           | I'm thinking the YouTuber audience might be a good place to
           | start. People seem to "get it" right away, but nobody knows
           | about it yet.
        
         | hivacruz wrote:
         | I'm not a vlogger or anything but this is a great product. Nice
         | job!
        
           | dceddia wrote:
           | Thanks!
        
       | acj wrote:
       | Last year I built a tool for visualizing log file volume (based
       | on time) in your terminal [1]. Similar tools exist, but none were
       | fast enough or easy to set up in a hurry, e.g. when you're
       | investigating a production outage.
       | 
       | The year before that, a tool for visualizing ping latency as a
       | heatmap [2]. My laptop's wifi had developed a severe latency
       | stutter every ~500ms that was driving me nuts when using SSH and
       | other interactive tools, not to mention killing my throughput.
       | Once I could visualize it and saw the pattern, it was very clear
       | that there was a system-level issue. Eventually traced it to a
       | virtualization product's network driver.
       | 
       | It's definitely a pattern for me -- feel frustrated with
       | diagnostic and data viz tools that are either too slow to handle
       | or too complex to configure when I need them, and try to build
       | simple tools that solve exactly the problems I keep bumping into.
       | These smaller projects also provide good opportunities to
       | practice with new languages or frameworks.
       | 
       | [1] https://github.com/acj/krapslog-rs (also krapslog-go)
       | 
       | [2] https://github.com/acj/pingrok
        
       | jftuga wrote:
       | I am more of a Sys Admin but really enjoy programming and
       | automation. I'm also open to exploring new opportunities -
       | JohnTaylor at gmail.
       | 
       | https://github.com/jftuga/sqs_clipboard - Use AWS SQS as a
       | clipboard to copy and paste across different systems and
       | platforms
       | 
       | https://github.com/jftuga/gofwd - A cross-platform TCP port
       | forwarder with Duo 2FA and Geo-IP integration
       | 
       | https://github.com/jftuga/spotprice - Quickly get AWS spot
       | instance pricing
       | 
       | https://github.com/jftuga/ipinfo - Return IP address info
       | including geographic location and distance when given IP address,
       | email address, host name or URL
       | 
       | https://github.com/jftuga/photo_id_resizer - Resize photo ID
       | images using face recognition technology
       | 
       | https://github.com/jftuga/tcpscan - A fast, simple, multi-
       | threaded cross-platform IPv4 TCP port scanner
       | 
       | https://github.com/jftuga/date_gap_finder - detect date gaps in a
       | CSV file
       | 
       | https://github.com/jftuga/nics - Display information about
       | Network Interface Cards (NICs) - cross-platform
       | 
       | https://github.com/jftuga/deidentify - Deidentify people's names
       | along with pronoun substitution
       | 
       | https://github.com/jftuga/quautomatrics - Command-line automation
       | of Qualtrics(tm) surveys
       | 
       | https://github.com/jftuga/timeit - A cross-platform CLI tool used
       | to time the duration of the given command
       | 
       | https://github.com/jftuga/dcmp - Compare files within two
       | directory trees for equivalency
       | 
       | https://github.com/jftuga/file-watcher - Monitors a given file
       | location for create, change, rename and delete file events
       | 
       | https://github.com/jftuga/compinfo - Display basic computer info
       | 
       | https://github.com/jftuga/less-Windows - GNU less compiled for
       | Windows 10. Stand-alone version with no dependencies.
        
       | jph wrote:
       | I built "assertables" (https://crates.io/crates/assertables) for
       | Rust testing macros. It's open source. It provides more options
       | for TDD, more detail in error messages, and more capabilities for
       | runtime checking.
        
       | astashov wrote:
       | Just built "yatro" last weekend - TypeScript's actually typesafe
       | router. I wanted a framework-agnostic router, that would actually
       | be typesafe - it'd match the request with specified routes where
       | path and querystring parameters' types are descdribed, and
       | provided properly typed extracted parameters. Couldn't find
       | anything like that in npm.
       | 
       | https://github.com/astashov/yatro
        
       | [deleted]
        
       | Link- wrote:
       | I recently built this: (https://github.com/Link-/github-app-bash)
       | as a quick way to generate access tokens to use with GitHub's
       | APIs. Now I can use tokens with a limited scope, and lifetime
       | when I test which is safer than using a personal access token
       | that never expires. It's fully written in bash and does not have
       | many dependencies. It's quick does the job.
        
       | Buttons840 wrote:
       | OwnTime.jl - A Julia profiling library [1].
       | 
       | It reports the time spent on each line of your project, and you
       | can filter which files are included. For example, you might do a
       | complicated map operation which calls a function in another
       | library, if you filter out the library then it will report that
       | all the time was spent in your code on the line that performed
       | the map. However, if you don't filter out the library then it
       | will report that all the time was spent on the lines inside the
       | library.
       | 
       | I was tired of looking at profiling reports filled with lines of
       | code I had never seen before.
       | 
       | I couldn't figure out how to get what I wanted from the existing
       | profiling libraries so wrote this. It was quite easy once I
       | figured it out. Julia has a built in sampling profiler you can
       | turn on, and from there you can process the sampled stackframes
       | however you'd like and display them however you'd like.
       | 
       | [1]: https://github.com/DevJac/OwnTime.jl
        
         | amval wrote:
         | I gave it a try with a couple of calls of a framework which I
         | have written and I suspect is littered with bad practices.
         | 
         | Not sure what to make of the results, since most of the time
         | seems to be spent here: [1] 79% =>
         | poptask(W::Base.InvasiveLinkedListSynchronized{Task}) at
         | task.jl:760
         | 
         | Is this just something internal to Atom to execute code?
        
           | Buttons840 wrote:
           | Does task.jl contain code you wrote? Feel free to make an
           | issue and we can talk about it on GitHib too.
           | 
           | Try setting a stackframe_filter, filter on the root path of
           | your project and then only lines in your repository will be
           | reported.
        
       | abhgh wrote:
       | Have posted about this before, but I have been working on my
       | Python library called "compactem". A way to make traditional ML
       | models smaller: [1].
       | 
       | * the core idea is to selectively use training instances to learn
       | a compact versions of a model. Multiple models are produced with
       | different tradeoffs between accuracy and size. The user is then
       | free to pick one that fits his needs. See [2], [3].
       | 
       | * one can also find the "minimal dataset" a models needs to reach
       | a certain accuracy - [4].
       | 
       | Currently working on:
       | 
       | * I am reformulating the problem to work with (twice)
       | differentiable losses to speed-up the compaction process.
       | 
       | * Also, I am looking multiple "stages" of compaction to see if
       | that leads to models with further reduced sizes.
       | 
       | Refs:
       | 
       | [1] https://compactem.readthedocs.io/en/latest/
       | 
       | [2] see how the model's generalization is affected, also has
       | accuracy vs size curves:
       | https://compactem.readthedocs.io/en/latest/key_ideas.html#wh...
       | 
       | [3] Compaction profile - a plot to visualize the range of size
       | reductions between the original and compacted models:
       | https://compactem.readthedocs.io/en/latest/usage.html#compac...
       | 
       | [4]
       | https://compactem.readthedocs.io/en/latest/usage.html#optima...
        
         | arkmm wrote:
         | This sounds similar to "knowledge distillation" in machine
         | learning literature, where you take a large model and use it to
         | train a smaller model. Could you comment on the similarities
         | and differences?
        
       | shiny wrote:
       | https://github.com/kmurph73/set-state-is-great
        
       | 4lejandrito wrote:
       | I made react-guitar, a beautiful and accessible guitar component
       | for React:
       | 
       | https://react-guitar.com
       | 
       | It started as a guitar fretboard exploration tool that did not
       | survive, but I ended up publishing it as a reusable component.
       | 
       | I also made Creepyface, a JavaScript library to make your face
       | look at the pointer:
       | 
       | https://creepyface.io
       | 
       | I originally developed this to use it in my resume, and then
       | ended up building a site for it and a plugin system to make faces
       | even dance.
        
       | langitbiru wrote:
       | Mamba (https://mamba.black). It's a blockchain development
       | framework. It's like Ruby on Rails but for smart contracts
       | development.
       | 
       | The story goes like this....
       | 
       | I was writing a book called "Hands-on Blockchain for Python
       | Developers" in 2018. At that time, the only Pythonic blockchain
       | development framework which supported web3.py and Vyper (a smart
       | contract language that has syntax similar to Python) was Populus.
       | A week after my book was published, Populus was killed by its
       | developer.
       | 
       | So I decided to create one to support Vyper language.
       | 
       | However, I need to tell you that there is another blockchain
       | framework that supports Vyper and web3.py which is more popular
       | than my framework. It's Brownie-eth. If this tool existed in the
       | first place, I wouldn't create Mamba. But hey, such is life. Now
       | I have to raise my child, Mamba. ;)
        
         | NetOpWibby wrote:
         | Excellent domain name!
        
       | noir_lord wrote:
       | I have a shell script (technically PHP) that uses the clipboard
       | to retrieve json, parses it and converts it into a correctly
       | formatted php array then puts it back on the clipboard.
       | 
       | Fantastic for writing unit tests where you want to quickly
       | _freeze_ API responses and such.
       | 
       | There is more it could do but it's hands down the best RoI in
       | terms of dev time I've had in a while.
        
         | theFak wrote:
         | How do you parse the text?
        
           | noir_lord wrote:
           | Really simply, I grab the json from the copy buffer, use
           | `json_decode` then `var_export` and then use some horrible
           | regex stuff to reformat that into a modern short array
           | syntax.
           | 
           | So it looks like `json_to_array.sh --assign --clip` (if no
           | clip just echoes the resulting PHP to stdout)
           | 
           | https://kopy.io/aLpar (its not good code, it's an itch
           | scratcher) - only works on Linux (it's all I use but would be
           | trivial to make it work on a Mac I think).
           | 
           | PHP makes a really good shell scripting language since it's a
           | full blown language with a massive API and can 'talk' to the
           | shell quite simply.
        
       | notamy wrote:
       | - I wrote my own message queue because of dissatisfaction with
       | existing solutions; it's like a very smart gateway:
       | https://github.com/queer/singyeong
       | 
       | - My own key-value store that versions values by default. partly
       | for fun, partly for things like caching:
       | https://github.com/queer/crush
       | 
       | - A Spring-inspired web app 'framework' for fun and learning:
       | https://github.com/queer/autumn
       | 
       | - Slowly building my own k8s-inspired container scheduler;
       | frustration with k8s led to me building this:
       | https://github.com/queer/mahou
        
       | riquito wrote:
       | I wrote "tuc", an alternative to the "cut" Unix tool, for those
       | situations where I need something more (mostly the ability to
       | collapse the separator or negative indexing)
       | 
       | https://github.com/riquito/tuc
        
       | simonsarris wrote:
       | I'm not the only developer but I made (and still make) GoJS, an
       | interactive diagramming library for the web.
       | 
       | https://gojs.net
       | 
       | Most of its popularity is with large companies building their own
       | internal tools where they need diagramming visualization
       | capabilities (layouts, save/load, undo/redo, data binding, etc).
       | So you won't see it too often in the wild, but under the surface
       | it's used in every industry.
       | 
       | I love it, and I love HTML Canvas, which I wish was more popular.
        
       | paulclinger wrote:
       | I developed a Lua IDE/editor/debugger (in Lua) [1], as I was
       | looking for something that would be simple enough to use for high
       | school students (for a project I was working on at that time) and
       | have been working on it for the last 10+ years. I do have several
       | commercial extensions/integrations on top of the IDE.
       | 
       | I also developed a Lua debugger [2] and serializer [3], as well
       | as took on maintenance of wxlua project for the last 5 years [4];
       | all open source.
       | 
       | [1] https://studio.zerobrane.com [2]
       | https://github.com/pkulchenko/MobDebug [3]
       | https://github.com/pkulchenko/serpent [4]
       | https://github.com/pkulchenko/wxlua
        
       | seanwilson wrote:
       | https://www.checkbot.io/
       | 
       | > Checkbot is a Chrome extension that tests 100s of pages at a
       | time to find critical SEO, speed and security problems before
       | your users do. Test unlimited sites as often as you want
       | including local development sites to find and eliminate broken
       | links, duplicate content, invalid HTML/CSS/JavaScript, insecure
       | pages, redirect chains and 50+ other common website problems.
       | 
       | I build this to automate audits I kept having to do manually
       | while doing frontend work. I also liked the idea of it helping to
       | teach people about web best practices, so tried to make it easy
       | to use with minimal jargon explanations (see
       | https://www.checkbot.io/guide/).
       | 
       | It written with Vue + TypeScript + Firebase + Paddle.
       | 
       | There's a free tier with no sign-up required - give it a quick
       | try on one of your own pages and it'll usually find something to
       | fix you didn't know about.
        
       | axegon_ wrote:
       | A scikit-learn port for Dart/Flutter with accompanying library to
       | export models from scikit learn:
       | https://github.com/axegon/SkLite-dart
       | 
       | Fast spectrogram generator for wav files:
       | https://github.com/axegon/spectrust
       | 
       | Static site library/framework thingy:
       | https://github.com/Rorigami/rorigami
       | 
       | All practically abandoned for a million and one obvious and not-
       | so-obvious reasons...
        
       | jordansmithnz wrote:
       | A while back, I built a sync library for iOS storage <-> CloudKit
       | (Apple's iCloud storage system)! It features offline queuing,
       | smart merge/deduplication, and uses NTP timestamps to make sure
       | offline/online merges are handled reliably. It took quite a bit
       | of time to get right, and is probably one of the projects that
       | has helped me grow the most (technically) as an engineer.
       | 
       | - I built it because at the time, sync for iOS was a mess:
       | Apple's original CoreData iCloud sync was very buggy and often
       | failed to sync. An open source alternative seemed nice but poorly
       | maintained, and I wasn't completely on board with the overall
       | architecture of it. A paid library was great but also quite
       | complex and I had no control over the direction, features, and
       | longevity.
       | 
       | - Apple released their own alternative recently, although it's
       | only available on newer iOS versions. Additionally, I'm not in
       | control of the CloudKit data schema, and I don't have the ability
       | to add more complex sync features if needed.
       | 
       | - underlying all of this: the need for control, reliability, and
       | customizability.
       | 
       | So, I spent a few weeks writing my own system. It works well and
       | despite a few hiccups that I've resolved, it currently provides
       | reliable, seamless sync for an app with millions of downloads.
       | 
       | - My library is quite generic but I never open sourced it. It
       | would be a nice contribution to the open source community, but
       | I'm not sure I have time to consistently maintain it or review
       | pull requests. I've considered it at times, but it's just never
       | been a priority.
       | 
       | - If sync ever goes wrong, I'm able to debug it and understand
       | exactly what the problem is.
       | 
       | - I can add features any time I like. I plan to do so soon to
       | support a few things that even Apple's new solution might not
       | encompass.
       | 
       | There are quite a few downsides to it too:
       | 
       | - I need to maintain it myself
       | 
       | - It probably has had less testing than something like Apple's
       | new solution
       | 
       | - I've occasionally shipped a small sync bug, primarily due to
       | lack of ability to test at scale
       | 
       | Overall I think it was worth it, especially given that Apple's
       | new solution wasn't available at the time. I learnt a lot;
       | building a generic framework is a great way to grow technically.
       | 
       | If I had to make the same decision again today, I'd heavily
       | consider Apple's new solution instead, although I'd only choose
       | it if I was confident that it is much more reliable than the
       | prior option they provided.
        
       | paulgb wrote:
       | I built Aper (https://aper.dev/) becomes I wanted to write a
       | multiplayer game (https://redwords.paulbutler.org) for my family
       | to play remotely and realized that what I wanted could be
       | generalized as a state machine that is synchronized across
       | clients. By generalizing it, I could use the same synchronization
       | infrastructure to power other games and simple apps.
        
         | an_opabinia wrote:
         | This is pretty cool. In my experience, the biggest pain point
         | is that game clients are written in netstandard2 C# in Unity,
         | while servers are written in not that. So bridging that gap
         | pays huge dividends.
        
           | paulgb wrote:
           | Thanks! It's still very much a work in progress, but it's
           | been fun.
        
       | cannam wrote:
       | Repoint, a thingy for checking out and versioning your source
       | code dependencies - for situations where you don't have a good
       | language-specific source package manager to hand.
       | 
       | https://thebreakfastpost.com/2018/05/18/repoint-a-manager-fo...
       | 
       | https://github.com/cannam/repoint
       | 
       | I wrote this because, as is normal, I was slightly dissatisfied
       | with all the options I could find that would work with the
       | language and hosting combination I happened to be using. I use it
       | for a number of projects now and I have to say that it's really
       | quite good.
       | 
       | It's written in Standard ML, which might tickle a few HN readers.
        
       | ransom1538 wrote:
       | Dumping mysql to bigquery (gcp). The current tool doesn't handle
       | large files. It was accepted after a year.
       | 
       | https://github.com/james-ransom/mysql-to-google-bigquery
        
       | Tajnymag wrote:
       | I've created a simple typescript library for generating QR
       | payment strings, which can then be encoded into an actual QR
       | payment. The actual standard for such payments is called SPAYD
       | and it's accepted in most of our contry's bank apps.
       | 
       | Initially, I needed to create such QR and hadn't found any
       | publicly available js lib, so I created one by myself.
       | 
       | https://github.com/Tajnymag/spayd-js
        
       | trinovantes wrote:
       | A silly userscript [1] that uses jQuery selectors to interact
       | with YouTube's DOM to help me move videos around my playlists.
       | Sadly it breaks every few months whenever YouTube updates their
       | DOM. AFIK this is the only way to "programmatically" move videos
       | out of my Watch Later list since they removed the functionality
       | from the API
       | 
       | [1] https://github.com/Trinovantes/userscript-youtube-
       | playlist-o...
        
       | erdo wrote:
       | I publish an open-source android library called fore:
       | https://github.com/erdo/android-fore A big part of the motivation
       | was so that I didn't have to continually explain the same
       | concepts to new android teams like: the observable pattern,
       | how/why to remove code from the view layer, how/why to write
       | reactive UIs, support rotation and avoid memory leaks (these
       | things were not widely understood 8 or 9 years ago in android
       | land).
       | 
       | Took me a few years to get round to publishing it, but although
       | it never really took off (I am not exactly a natural promoter) -
       | it's still the best way I know of to write capable, easy to
       | maintain android apps - and nowadays the concepts are much more
       | widely understood by your typical android developer.
       | 
       | I still keep it up to date almost 5 years later. It's 20% code:
       | 80% sample apps and docs explaining why it works
        
       | jonath_laurent wrote:
       | As a researcher in machine learning, I wanted to explore
       | applications of Deepmind's AlphaZero algorithm beyond board games
       | (such as in automated theorem proving or chemical synthesis).
       | 
       | However, I noticed that existing open-source implementations of
       | AlphaZero mostly consisted in complex C++ codebases that are
       | highly specialized for specific games (eg. Leela Zero and LC0).
       | Accessible Python implementations could be found but they were
       | usually too slow to do anything useful on limited computing
       | power.
       | 
       | Seeing this, I built AlphaZero.jl: https://github.com/jonathan-
       | laurent/AlphaZero.jl
       | 
       | AlphaZero.jl is written in Julia and it is consistently one to
       | two orders of magnitude faster than competing Python
       | alternatives, while being equally simple and flexible. I just
       | released a new version a few days ago with many new features
       | (support for distributed computing, support for arbitrary
       | MDPs...).
       | 
       | If you are a student, a researcher or a hacker curious about
       | AlphaZero, please consider having a look!
        
       | agentultra wrote:
       | https://github.com/agentultra/postgresql-replicant -- stream
       | delta changes from a PostgreSQL database. Not a novel concept or
       | implementation but this library doesn't exist in Haskell and
       | that's a shame because Haskell has lots of great libraries for
       | working with streams.
       | 
       | https://github.com/agentultra/DataVersion -- type-directed data
       | migration library. I needed to migrate some data in a document
       | database that had no schema with years of data in it to a format
       | that had a schema. I leveraged some other stuff to achieve it but
       | this library was a key piece to being confident that the
       | transformations were correct and complete. Migrated the database
       | and backfill it with a Lambda function using this library.
       | 
       | Those are just the most recent ones.
        
       | hbroadbent wrote:
       | I built - https://github.com/harrison-broadbent/libgen-api - a
       | library genesis client for Python, after having reliability /
       | usability issues with the alternatives.
        
       | porsager wrote:
       | I built a safe PostgreSQL driver for node from scratch with zero
       | dependencies in about 1200 lines. I did this mostly because of
       | the plumbing required to make the goto node driver tolerable to
       | work with. In the process I made it 4-5 times faster as well.
       | https://github.com/porsager/postgres
        
         | megous wrote:
         | Very nice! I'd ditch pg-promise in a heartbeat for something
         | simpler. I kinda dislike the tagged template literal helpers
         | magic. I'd be more comfortable with explicit references to
         | substituted arguments.
         | 
         | Though it seems like I can just use the unsafe api all the time
         | for that.
         | 
         | The rest of the API is very nice, .stream, .cursor, notify
         | support, all that.
        
           | porsager wrote:
           | Thanks!
           | 
           | I'm curious - What's the reason you don't like the tagged
           | template literal? It's those that give you implicit safe
           | parameters and let's you avoid doing parameter counting when
           | writing queries.
        
       | silb wrote:
       | A CLI tool for downloading the Java Specification Request (JSR)
       | of a given Java package:
       | 
       | https://github.com/silb/jsrlib
       | 
       | I found downloading the JSRs manually too cumbersome.
       | 
       | It is acompanied by an Eclipse plugin that i never got around to
       | publish on GitHub. It lets me right click a Java type in Eclipse
       | and open its JSR PDF file.
        
       | block_dagger wrote:
       | Nanocurrency node wrapper:
       | https://github.com/jcraigk/ruby_nano_rpc
        
       | myk9001 wrote:
       | Not sure if it counts, but I made two Roslyn analyzers for C#
       | code. A Roslyn analyzer is basically a C# compiler plugin which
       | can emit additional diagnostics if it encounters a certain
       | pattern in the code being compiled.
       | 
       | One of them lets a developer mark a C# method such that the
       | method must be invoked with named args [1], calling it with
       | positional args is a compile time error then.
       | 
       | And the other makes it a compile time error to discard a marked
       | method's return value [2]. Kind of like it is in functional
       | languages.
       | 
       | Was learning/practicing F# along the way, so the code is probably
       | not so good. But it works :)
       | 
       | [1]: https://github.com/mykolav/require-named-args-fs
       | 
       | [2]: https://github.com/mykolav/must-use-ret-val-fs
        
         | cyral wrote:
         | #1 is awesome! I love the new record syntax for DTOs but I also
         | like using named properties so that the ordering isn't messed
         | up as they are expanded (but also ensures that every property
         | is filled out, unlike the class initializer syntax). This will
         | be great for enforcing it!
        
       | adur1990 wrote:
       | In an attempt to move everything out of iCloud (I only use Apple
       | products), I missed a compelling, FOSS password manager. After
       | some time, I found passwordstore.org. Unfortunately, there was no
       | Safari extension, so I built it myself:
       | https://github.com/adur1990/Pass-for-macOS
        
       | TheLocehiliosan wrote:
       | I created a dotfiles management tool, yadm https://yadm.io
       | 
       | I'm a huge fan of Git, and the Git mental model just makes sense
       | to me. I wanted to manage my dotfiles in the same way. At the
       | time I had tried several other solutions, mostly similar tools
       | like homeschick and vcsh.
       | 
       | I wanted a solution that was very portable, which both of those
       | existing tools were. However, homeschick became a bit clunky to
       | use because each time I wanted to do most operations I had to
       | first "cd" into my "castle". In addition, that tool used
       | symlinks, which doesn't work out well to manage a file that may
       | get overwritten by a tool.
       | 
       | vcsh was the other main tool I tried. This tool adopts the bare
       | repo technique, allowing files to be used instead of symlinks.
       | The major drawback it had was that it was designed to work with
       | multiple repos, and forces you to specify the repo with every
       | command. Some simple aliasing helped mitigate that though. But by
       | that time I also started writing some custom code to encrypt
       | private data and was struggling to maintain different branches
       | for different systems which had slight tweaks to configurations.
       | It just became all fragmented and difficult to manage.
       | 
       | That is what lead me to create my own tool. The important
       | features I wanted: portability, seamless interaction with Git,
       | alternate files for different hosts, encryption for private data.
       | I shared it as open source back in 2015 and it has grown in
       | popularity some. It's been improved a lot over time including
       | contributions from others. I'm glad so many others have found it
       | useful.
        
         | Cyberdog wrote:
         | This looks cool. I currently have a nest of dotfiles I manage
         | with Git, and since I try to use them across Ubuntu, OpenBSD
         | and macOS, the platform-specific stuff seems useful.
         | 
         | But is there a way to "promote" my existing Git repo to
         | something yadm can use? If I just `cd ~; yadm status` I'm told
         | a Git repo doesn't exist, when it most certainly does (`git
         | status` behaves as expected). Or is the best way to just blow
         | away my existing .git directory and start over using only yadm?
         | I skimmed your docs for an answer to this but couldn't find it.
        
           | TheLocehiliosan wrote:
           | The best way would be to use "yadm clone" to clone the remote
           | repo.
           | 
           | yadm will keep its repo in ~/.local/share/yadm/repo.git.
           | 
           | Once cloned, you do not need to be in any specific directory
           | to run yadm.
        
       | simukti wrote:
       | sqldb-logger: https://github.com/simukti/sqldb-logger
       | 
       | It's a thin layer that wrap Go (Golang) SQL database driver, it
       | does not change sql.DB usage in any existing Go app.
       | 
       | It is because I prefer to use vanilla Go sql.DB in my web service
       | and I could not find any SQL logger for Go SQL database standard
       | library that can use structured JSON logging.
        
       | NetOpWibby wrote:
       | I was dissatisfied with SemVer and it turns out that most people
       | are using it wrong. So, I created ChronVer[0] (Chronologic
       | Versioning). There's a JS/Node plugin I made that will
       | automatically increment your package.json version, and someone
       | else made a Rust crate!
       | 
       | [0]: https://chronver.org
        
       | Zarel wrote:
       | I needed a way to embed arbitrary strings in URLs, as readably as
       | possible. I thought "hey, isn't that what Punycode does?" It
       | turns out, no: Punycode only works for embedding non-ASCII text
       | in URLs, it does not turn ASCII into valid URLs.
       | 
       | So I made my own encoding, and called it Dashycode:
       | 
       | https://github.com/smogon/pokemon-showdown/blob/master/lib/D...
        
       | ryando wrote:
       | I'm building a simple replacement for Apache Airflow to manage
       | some small data pipeline projects:
       | https://github.com/fieldryand/goflow. Airflow started to feel too
       | heavyweight for these projects where all the computation was
       | offloaded to independent services. I wanted a solution with
       | minimal memory requirements to save costs and avoid the
       | occasional high memory usage/leak issues I was facing with
       | Airflow. I know there are tons of existing solutions in this
       | space, but nothing I found seem to match the Airflow features I
       | needed, so I decided to build it myself. It's been a great way to
       | learn Go.
        
       | Mougatine wrote:
       | I've built with a collegue Continuum:
       | https://github.com/Continvvm/continuum
       | 
       | It's a Python library giving utilities to handle data in
       | Continual Learning, a subfield of Machine/Deep-learning where
       | data comes incrementally. It's made to be super simple to
       | understand, and can be used in fast prototyping on a notebook to
       | large codebase.
       | 
       | There are others actors in the field that came atfer us and do
       | more ads about their slightly similar library, but we manage to
       | produce something useful to many PhD students, so that's a win
       | for me.
        
       | hoshsadiq wrote:
       | I got tired of having to download loads of different apps to
       | convert data formats, so I built an all in one[0]. The plan is to
       | add more formats, I just haven't had time yet. I've also had a
       | thought of making it a bit more Swiss army knife like, in that it
       | includes things like encoding/decode, encrypt/decrypt and others
       | similar to cyberchef[1] but on the command line.
       | 
       | [0] https://github.com/hoshsadiq/big-fat-converter/
       | 
       | [1] https://gchq.github.io/CyberChef/
        
       | 0xfaded wrote:
       | I have a hacky OpenCL interpreter I built as a DSL in python to
       | step through compute shaders with arrays backed by numpy.
       | Basically makes it possible to debug the shader as python code.
        
       | iveqy wrote:
       | I build a ncurses distributed CRM system (that also have a web
       | frontend). I use it for my consult business, with invoicing,
       | event logging, todo lists, projects and so on.
       | 
       | I love a quick, keyboard driven application and I also have good
       | codebase to use as a testing ground for CI/CD, code analysis etc.
       | 
       | Two weeks ago I actually got my first customer buying a license
       | for it, after being in development for 9 years!
        
         | tartoran wrote:
         | I miss the ease with which ncurse based software made
         | navigation and managing things. Ncurse feels like instant and
         | being keyboard driven makes you fly through tasks. Looking
         | forward to using more ncurse software
        
       | doersino wrote:
       | There's aerialbot - while nominally a Twitter bot I created
       | because I wanted to follow it and it didn't quite exist in this
       | form yet, it can be used to download arbitrarily large satellite
       | maps from various services: https://github.com/doersino/aerialbot
       | 
       | Also: UnicodeMathML, a more-or-less-standard-compliant
       | UnicodeMath (a linear encoding of mathematics that leverages
       | Unicode for brevity and plain-text readability that's built into
       | MS Office) to MathML translator - it's the only reasonably
       | feature-complete, web-based UnicodeMath-to-anything compiler I'm
       | aware of: https://github.com/doersino/UnicodeMathML
       | 
       | And various tools around Morgan McGuire's web-based Markdown
       | renderer Markdeep - for creating presentations (see
       | https://github.com/doersino/markdeep-slides), undergraduate
       | theses (see https://github.com/doersino/markdeep-thesis), and
       | drawing diagrams (see https://github.com/doersino/markdeep-
       | diagram-drafting-board).
        
       | akud wrote:
       | Lead Engineer at PAX Labs, we just open-sourced some Java
       | utilities i wrote in the early days building service oriented
       | architecture on dropwizard: https://github.com/PaxLabs/java-utils
       | 
       | A few things in there:
       | 
       | * `HibernateQuery` - wrapper around hibernate jpa implementation,
       | because using the jpa criteria api is verbose as hell (seriously,
       | even for java). Coming from having written Django, I wanted the
       | ease of using Querysets in java
       | 
       | * Makemigrations - this seemed to be a missing hole in the java
       | ecosystem. Our contractors were hand-writing sql migrations and
       | using some framework that just ran them. Liquibase exists for
       | managing migrations, hibernate can generate the schemas. This
       | library is a dropwizard command to generate yml to migrate the
       | old schema to the new one.
       | 
       | * generic pagination bundle
        
       | panic wrote:
       | https://dezip.org - I was frustrated with GitHub's code search
       | and interested in a way to browse source code that wasn't tied to
       | a particular repository hosting service.
        
       | go_prodev wrote:
       | I built a python tool that connects to a datawarehouse or SQL
       | scripts and produces an interactive dependency diagram as a
       | Sankey chart, showing all objects and the data flow.
       | 
       | Used only on Redshift and Postgres, but it should work with other
       | DBs with minimal changes.
       | 
       | The company I was working for had staging, transformation and
       | reporting layers in their warehouses, but no nice way to
       | illustrate the objects in documents. Support was manged offshore
       | so the interactive diagrams helped with handover.
       | 
       | The redshift space is really lacking capable tools, which is why
       | I decided to create this.
        
       | rcthompson wrote:
       | I maintain an Emacs package that is fundamentally based around
       | user interaction (called ido-completing-read+[1]). At some point
       | I realized that I needed a test suite for it, but at the time
       | there was no easy way to test Elisp code that reads user input
       | without actual user interaction. So I wrote with-simulated-
       | input[2], a package providing a macro of the same name that let
       | you run a piece of code while supplying key sequence to feed to
       | that code as if the user was typing those keys. So now my package
       | centered around user input has a fully automated test suite, and
       | that's pretty cool.
       | 
       | [1]: https://github.com/DarwinAwardWinner/ido-completing-read-
       | plu...
       | 
       | [2]: https://github.com/DarwinAwardWinner/with-simulated-input
        
       | warmuuh wrote:
       | I built milkman[1], an alternative to postman because I wanted
       | one tool to integrate with the whole web development stack. One
       | tool that contains my SQL, rest and grpc calls to easily debug
       | issues. Also nearly none of those kind of tools that existed
       | supported SSE which I also use in my day to day work.
       | 
       | [1] https://github.com/warmuuh/milkman
       | 
       | Edit: I love these threads. You read so many things and
       | Frameworks and random stuff that you really learn in what silo
       | you are actually living
        
       | vinaygaba wrote:
       | I built an open source library for Android called Showkase [1].
       | Showkase autogenerates a UI component browser for your Jetpack
       | Compose components on Android and allows you to search, visualize
       | and organize your UI elements. Think Storybook but for Android
       | development.
       | 
       | [1] https://github.com/airbnb/Showkase
        
       | mro_name wrote:
       | - a Geohash de/encoder cgi both human and machine readable:
       | https://demo.mro.name/geohash.cgi to get a clean, public and easy
       | to host, ad-free service,
       | 
       | - a layperson microblog engine PoC
       | https://demo.mro.name/shaarligo
       | 
       | - a radio recorder for Bavarian public radio http://rec.mro.name
       | for personal use (legal issues, ugly to install)
        
       | yoran wrote:
       | I built Backtest[0], the backtesting tool for European index
       | investors, as a way to analyze the historical performance of my
       | portfolio of index funds. US investors can use a tool called
       | Portfolio Visualizer[1], which is really powerful and has tons of
       | different analyses you can run on portfolios. But the funds and
       | indexes that Europeans such as myself have access to are
       | different. And then there's the currency you hold your
       | investments in (USD vs EUR), which has a non-negligible effect on
       | the historical performance.
       | 
       | So I built Backtest to scratch my own itch. It's been growing
       | more or less organically for the past 1.5 years though and
       | currently sees about 500 visitors per day.
       | 
       | I'm thinking about open-sourcing it but I've yet to thoroughly
       | analyze the pros and cons, and decide on important things such as
       | the license.
       | 
       | [0]: https://backtest.curvo.eu [1]:
       | https://www.portfoliovisualizer.com/
        
       | wolfwyrd wrote:
       | I wrote a BDD style testing library. It builds on top of NUnit to
       | make unit testing classes with dependencies super simple.
       | 
       | https://github.com/LeapingGorillaLTD/Testing
       | 
       | I was fed up of having to substitute every dependency manually
       | whenever I wanted to write a test, finding it hard to apply clean
       | software design principals to test suites.
        
       | slim wrote:
       | The most useful library I built is "dome()" a javascript function
       | that would return a dom element out of an array. So that dome(["a
       | ",{href:"http://news.ycombinator.com"},["img",{src:"http://news.y
       | comb..."}]]) would return a clickable icon for example.
       | 
       | I wrote the function in 2007 and I'm still using it today. It's a
       | handful lines of code.
        
         | acarabott wrote:
         | I think you would like http://thi.ng/hdom
        
       | simonw wrote:
       | I have 112 mostly-maintained released project listed on
       | https://github.com/simonw/simonw/blob/main/releases.md now - most
       | of which are tools for loading data into SQLite database files (a
       | surprisingly under-served use-case given how ubiquitous SQLite
       | is) and plugins for my https://datasette.io/ project for reading
       | data back out of SQLite again.
       | 
       | I realized a few years ago that SQLite was the perfect tool for
       | doing data analysis at the small-data scale, where small data is
       | less that 10GB which is pretty much everything you might want to
       | analyze - especially for personal projects.
       | 
       | So I've been building tools to fill that niche!
        
       | vladf wrote:
       | I do quite a bit of data munging on multiprocessor Unix systems,
       | and found (some remarkably lightweight) homemade Rust/py tools
       | invaluable for getting stuff done.
       | 
       | A low-memory Unix map-reduce combinator -
       | https://github.com/vlad17/slb
       | 
       | A sparse matrix parser (cpython equivalents are not parallel) -
       | https://github.com/vlad17/svm2csr
       | 
       | A personal task planner when doing high-risk work which minimizes
       | time to failure - https://github.com/vlad17/fdd
        
       | cookiengineer wrote:
       | I built lots of tools in the past, and most of them are open
       | sourced and/or available as an archived snapshot via my website
       | [1]
       | 
       | One of the projects I failed to make money with but that I'm
       | still proud of is lychee.js [2] - it used game engine concepts to
       | build a generic graph/scene for "normal" applications.
       | 
       | But the twist is that every state and property can be serialized,
       | deserialized, and reconstructed over the timeline even with
       | differential analysis (e.g. in error cases) or even predictions
       | via tesselation and extrapolation over the multidimensional
       | timeline. It uses techniques similar to flow based programming,
       | but only to be able to vectorize the data in order to make it
       | learnable by neural networks.
       | 
       | I got to a point where backpropagated ES/HyperNEAT was able to
       | understand composite pattern based programming, whereas the
       | entity/components were the adapters for the multi-agent based
       | simulation layer and it could learn all kinds of cool things from
       | layouting up to combinatory things of state management, where the
       | neural networks could iteratively progress up until the final
       | (defined outcome/goal state) was reached. Something like "animate
       | this to that position" or "resort the grid layout based on user
       | interaction" was automatically done within seconds.
       | 
       | The biggest project I built with it was a simulation that was
       | learning the RAPID programming language, and was able to redesign
       | a complete car manufacturer virtual factory, including all
       | variables on the robot cell's code.
       | 
       | Then decided to take this into the cybersec sector, by letting it
       | learn the combinations of exploits and definition/generation of
       | payloads similar to how metasploit does it in a manual manner.
       | Won a DARPA contest by writing an adapter for it, got classified
       | and had to delete at least the AI parts behind it after a long
       | legal battle that I, as a private person, could not sustain.
       | 
       | Suffice it to say I'm not allowed to work on it anymore, so these
       | days I'm trying to fix the peer to peer web with compositional
       | game theory ideas I have in mind for a while now. [3]
       | 
       | [1] https://cookie.engineer
       | 
       | [2] https://github.com/cookiengineer/lycheejs
       | 
       | [3] https://tholian.network
        
       | SamWhited wrote:
       | For an issue tracker in Go I built a handful of reusable bits
       | that I keep at https://code.soquee.net/ including a HOTP/TOTP
       | multi-factor authentication library, something to "source" .env
       | files, a library for building migration tools with Postgres and
       | yet another HTTP router/multiplexer.
       | 
       | I also work on an XMPP library and related tools that has spawned
       | other libraries for handling XML streams (basically duplicating
       | all the functions in the io package but for XML tokens instead of
       | bytes), a SASL authentication implementation, etc.
       | https://mellium.im/
       | 
       | I have a ton more, but these are the two collections I more or
       | less keep up to date and use the most.
       | 
       | To give an example of why I wasn't satisfied with the existing
       | things, let's look at the library for migrations: prior to
       | writing it I was using Diesel, but it didn't exist in many
       | package repos and took literally hours to build on pretty good
       | hardware (Rust is garbage in terms of build time, as much as I
       | enjoy the language I almost never use it for this reason), and it
       | had _atrocious_ errors to the point that I 'd call them bugs (I
       | would frequently have errors that would spam the terminal with
       | pages and pages of parenthesis, I'm sure they've fixed this, but
       | at the time it was annoying). The various migration tools written
       | in Go had similar problems so if I handed my nice single-binary
       | application to someone to deploy on their own server I'd also
       | have to hand them a zip file full of migrations and they'd have
       | to figure out how to install a tool. Instead I wanted the binary
       | to embed and be able to run its own migrations, so I wrote the
       | library.
       | 
       | For the 2FA library it was a similar story: all the existing ones
       | I could find had the abstraction wrong, they just did TOTP or
       | HOTP and didn't seem to realize that they were the same thing
       | just with a different "ticker" function. Having a simple 2FA
       | implementation where you could create a token and pass in a
       | custom ticker (or of course the package would have the TOTP one
       | pre-defined) just "made sense". Also, the others I evaluated
       | weren't tested very well. I wanted at least a handful of tests to
       | make sure the tokens weren't going to break the next time I made
       | an update.
       | 
       | Finally, for the HTTP router/multiplexer I wanted to be able to
       | get the routes back out and match them to the URL components that
       | matched various wildcards so that I could do easy normalization.
       | Eg. if you had the route /u/{username string} and the URL /u/Me
       | matched it, I wanted to be able to automatically redirect to
       | /u/me. Most routers I tried didn't provide you enough information
       | to do this (eg. if you had the path /user/User and you just did a
       | naive find/replace that was more complicated than lowercasing,
       | you'd accidentally change both when the route was /user/{string}
       | so the first one shouldn't change). I also wanted typed route
       | parameters to avoid the boilerplate of converting in my handlers
       | every single time, and I wanted it to not have any ambiguous
       | routes (eg. if I register /user/me and /user/{user string}, and
       | the user creates a new account with the username "me" then should
       | /user/me trigger the static route or the user page?). To fix all
       | this I came up with the route syntax I've been using in these
       | examples and made a muxer for it.
        
       | HerrMonnezza wrote:
       | Quite some time ago, I built `j2pp` to be a general text file
       | preprocessor, a la m4 or cpp but using Jinja2 syntax:
       | https://github.com/riccardomurri/j2pp (being written in Python
       | seriously hinders its deployment, though)
       | 
       | Another tool that I wrote (and have used quite a lot) is
       | ElastiCluster: https://elasticluster.readthedocs.io/ It's a CLI
       | tool to deploy compute clusters (of different types (well, it's
       | basically a large collection of Ansible playbooks with a Python
       | wrapper), but mostly focused on batch-queueing systems) on IaaS
       | clouds. There's now multiple tools for doing the same but I think
       | this one is still one of the few (if not unique) to be able to
       | deploy multiple types of clusters on multiple clouds.
        
       | chriswarbo wrote:
       | Most of my blog posts (at chriswarbo.net ) are about programming,
       | so I wanted a way to run code embedded in markdown, and to
       | include the results in the rendered document. I wrote a couple of
       | scripts to do this via pandoc:
       | 
       | - https://hackage.haskell.org/package/panpipe
       | 
       | - https://hackage.haskell.org/package/panhandle
       | 
       | They're described in more detail at
       | http://chriswarbo.net/projects/activecode
        
       | XCSme wrote:
       | While building userTrack[0] I always encountered the need of
       | various auxiliary tools. I had to implement a custom deploy
       | system to build different variants of the product, to create a
       | licensing server (to create and verify license codes and to allow
       | downloads for valid license owners), a blogging platform[1], some
       | JS snippets [2], etc.
       | 
       | Most of the times, the libraries/tools that you build yourself
       | are either to connect and interact with a specific external
       | service OR to have a simpler (only the features you need) or
       | cheaper version of an existing product/platform.
       | 
       | [0]: https://www.usertrack.net/
       | 
       | [1]: https://github.com/Cristy94/markdown-blog
       | 
       | [2]: https://github.com/Cristy94/dynamic-listener
        
       | rockengineer84 wrote:
       | I made https://esyvite.com to solve the problem of giving hosts
       | an easy way to let their audience add events to their calendars.
       | With the rise of online events (meetups, friend hangout, live
       | streams etc) I realized that hosts simply post the times on their
       | social feeds but their audience has to do the hard work of
       | remembering and tracking the times.
       | 
       | Made it simple enough such that it requires no account, no
       | payment and no app. Developed using React, Typescript, Firebase.
       | Credit to all the libraries that I could leverage to build this.
       | 
       | Feedback on esyvite.com welcome at vamsi dot narla at gmail dot
       | com
        
       | marvinblum wrote:
       | I build a logging library for Go, because I couldn't find one
       | that logs to stdout AND stderr. If you used a logging lib on GCP
       | for example, all log output went into the same pile of junk and
       | it was hard to find "real" errors:
       | https://github.com/emvi/logbuch
       | 
       | Then there is "null", also because I couldn't find one that got
       | both, marshalling to JSON and be able to store null values in db:
       | https://github.com/emvi/null
       | 
       | And finally, our "flagship" open-source project Pirsch, an
       | embedded library for web analytics: https://github.com/pirsch-
       | analytics/pirsch
        
       | ignitionmonkey wrote:
       | Night Patrol - https://github.com/jahed/night-patrol
       | 
       | I got tired of passing flags to Nightwatch to filter tests and
       | looking through results to re-run failures. So I made an
       | interactive CLI for all of that. I stopped using this once I
       | moved to Cypress but even with Cypress' web interface, I feel
       | something like Night Patrol would be a lot more productive.
       | 
       | Firebase Rules - https://github.com/jahed/firebase-rules
       | 
       | I didn't like how Firebase's RTDB rules were expressions in JSON
       | strings so I built a library to build them using a lisp-like
       | syntax to compose and re-use rules. Firebase also has its own
       | rules language (Bolt) but I'd rather not learn and maintain yet
       | another tool-specific language.
       | 
       | Promises - https://github.com/jahed/promises
       | 
       | This isn't a complete solution yet, I didn't get time to refine
       | the API. But I really prefer using Promises as result types
       | (a.k.a. either, left/right) rather than using
       | async/await/try/catch. It's so much more powerful to write code
       | in a way that doesn't care if your functions are async or sync.
       | Again, kind of like a lisp, there's also power in not being tied
       | to a language's keywords and being able to provide a more
       | tailored vocabulary.
        
       | joisig wrote:
       | I built GRIT [1], originally for use in the Google Desktop
       | project as a way to stop doing nightmare three-way merges of
       | translated Windows resource files. It's been used in Chromium and
       | various other projects since then to aid with i18n, and many
       | other folks have contributed along the way. It is open source [2]
       | 
       | [1] https://www.chromium.org/developers/tools-we-use-in-
       | chromium... [2]
       | https://chromium.googlesource.com/chromium/src/tools/grit/
        
       | mFlorin wrote:
       | I built a Java library for android for displaying and playing a
       | musical score https://github.com/florinmuscalu/FM_Score
        
       | krtkush wrote:
       | Years back I made a circular progress bar library for Android.
       | Nothing special but it was something that was missing at that
       | time. Surprisingly, 1000+ downloads monthly (according to
       | JitPack) and I still get occasional issues reported on GitHub.
       | 
       | The lib - https://github.com/krtkush/LinearTimer
        
       ___________________________________________________________________
       (page generated 2021-05-16 23:01 UTC)