HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
psypete
public-bin
Perl2012–2022
psypete / public-bin

public-bin

Some random cruft you might find interesting

2Distinct people
16Mentions
1Explicit recommenders
11GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Some random cruft you might find interesting

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

First off, I love the philosophy, and the package format is nice. I'm not a language hipster, I don't care what language you write something in as long as it fits the purpose…

peterwwillis used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year16 dated mentions

Observed mentions: 2012-09-10 14:58:04 UTC to 2022-08-15 18:15:35 UTC.

012342012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC303
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC312
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC404
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101

What Hacker News says

16 sources
peterwwillis·Sep 20, 2019Recommendation phrase
First off, I love the philosophy, and the package format is nice. I'm not a language hipster, I don't care what language you write something in as long as it fits the purpose well, and shell can certainly do that here. However, some uses of shell in the package manager are non-obvious, and that will make it more difficult for people to troubleshoot or maintain this code. @OP: I imagine you've examined Slackware's pkgtools? (https://slackware.osuosl.org/slackware-12.1/source/a/pkgtool...) They're written in shell too, and have been in use since 1994. I wish they would get a bit more updated to do things like read metadata (especially for Slackbuilds) and handle build dependencies, but I always found them pretty easy to understand and modify to my needs. Later I threw together some scripts to automate the most common configure/make/make ins
Read the rest
tall/packaging steps (https://github.com/psypete/public-bin/tree/public-bin/src/sl...). My scripting experience was, let's say... "limited". :) I ended up making a couple thousand packages from tarballs. What that taught me was that actually managing build dependencies, and the complications of layering different software into the same file tree, was a lot more weird than it seemed. So depending on people's intentions with this distro, it may end up being a lot more complicated for them to manage than they think.
In Kiss – A Linux distribution with a focus on “less is more”
Back when Fetchmail would segfault on certain spam messages, and a bug report to ESR went nowhere, I wrote my own mail fetcher in Perl. Then I extended it to IMAP, and later IMAPS, working around some bugs in some popular IMAP servers. I had it deliver mail to a local mda (so I could use Maildir and mda filters) and configurable to keep or delete mails from the remote server. I think it only supports one remote mailbox, however. https://github.com/psypete/public-bin/blob/public-bin/src/po... (It's very old code that sucks, and not secure, fwiw)
In OfflineIMAP: sync and backup tool for IMAP
Perl modules to implement this would be Date::Manip and DateTime::Format::Natural. To see some funnier modules (like calculating Discordian dates or Japanese eras) look here: http://www.perl.com/pub/2003/03/13/datetime.html I actually bumped up against legacy time/date issues while working on SSL cert parsing. An old Perl interpreter's 32-bit limits kept resetting my dates! Rather than upgrade perl or my architecture, I wrote my own perl methods to calculate infinite time (sorta?) on 32-bit systems with old perls. For those that haven't worked with date parsing before: timezones are surprisingly complex, leap years are stupid, daylight savings is really stupid, and leap seconds are impossible without a regularly updated leap second database (similar to timezones, but worse). (The math to calculate dates correctly is rather simple, but yo
Read the rest
u need to be pretty good at math to optimize it) https://github.com/psypete/public-bin/blob/public-bin/src/ne...
In Show HN: Duckling – Open-source datetime expression parsing
That's weird. Bash_history doesn't usually get flushed for every command you run; only when you exit an interactive shell. If you `kill -9 $$` or erase the .bash_history file and create it as a directory, it loses the history. The exception is if you create a custom PROMPT_COMMAND="history -a; history -n", which would append on each new bash prompt. (You'd think a hacker would know these things...?) As an alternative to dumping history, if your system has perl and strace and you want to watch a live ssh or bash session, I wrote a script that will do that. https://github.com/psypete/public-bin/blob/public-bin/src/sy...
In We may have witnessed a NSA "Shotgiant" TAO-like action
I threw together an alternative to Red October that only requires bash, coreutils and openssl. Because it uses existing applications there's virtually no risk of the crypto implementation having bugs (or only openssl's bugs, anyway). And because it's so simple you can add whatever functionality you want to fit your system. For example, you can modify it to require a passphrase on the keys; I left it out for simplicity. https://github.com/psypete/public-bin/blob/public-bin/src/se...
In Red October: Go server for "two man rule" file encryption by Cloudflare
First, pick a CM package. This depends entirely upon your level of masochism and the kind of language youlike scripting in, as literally anything will do. Even shell scripts. Even Makefiles. Whatever you're most comfortable with, just start writing out configs. (you will eventually come to hate your job if you allow non-programmers to script/program in your CM, but blah blah keep shipping blah blah) Break it all out intoa wide hirearchy so you can reuse some bits in other bits. Hey look, I wrote a crappy one! https://github.com/psypete/public-bin/tree/public-bin/src/si... Next we implement the OP's comments. Hey look, I already implemented it in my crappy CM tool! https://github.com/psypete/public-bin/tree/public-bin/src/si... First push your CM tool and configs to the host: scp -r simplecfm-0.2 remote-host: Then run the main config fi
Read the rest
le which calls the others: ssh remote-host "cd simplecfm-0.2/ ; perl simplecfm examples/first-five-minutes/main.scfm" Aaaaand you're done. Of course I haven't tested these configs and something will probably break (most likely my crappy code) but you'll get the idea from looking at the examples.
In How I spend my first 5 minutes on a server
A cursory examination of the certificate will appear to be exactly the same as the "real" one, with the exception of lengthy obscure keys and numbers that nobody would identify unless they compared them to the original side by side. The proxy vendor MAY provide its own issuer description in lieu of faking the original, but it by no means has to. Fake certs can look just as authentic as real ones if your browser trusts the root cert that signed them. If you want to verify a certificate is signed by a "real" trusted CA, use a program that traces the chain of trust against a list of CAs that ship with browsers. I have such a tool here: https://github.com/psypete/public-bin/blob/public-bin/src/ne...
In Websockets 101
/usr/local is a crutch. When you're a user installing software, you don't get to write to /usr/local. You have to use $HOME/usr or something and modify your path. When you're an admin on a box, you can install software anywhere. You could totally './configure&&make&&make install' and your software lands in /usr/local. If you're lucky, there won't be any conflicts with existing earlier versions in /usr. But there's consequences. Now you've built a lot of software and some of it depends on stuff you put in /usr/local. Now you need to upgrade. But is something going to break? What's the compatibility? How can I track what has been installed? Can I uninstall anything? You don't realize how big of a mess you're getting into until you have to remove all of /usr/local just to get some working apps and start from scratch. Take the time to learn t
Read the rest
he package manager for your system, and package your software before installing. Hell, use checkinstall or some other tool to automate it. I use my scripts called slacktools [https://github.com/psypete/public-bin/tree/public-bin/src/sl...] to automate packaging in Slackware. One command 'slackpack foo-1.4.5.tar.gz' builds me a Slackware package. Tiny modifications could make it build rpms, debs, etc. The benefit you get is actually upgrading old packages do you don't have conflicting versions, a sane default path, and the ability to remove or upgrade the package when necessary.
In Using /usr/local

Showing the 15 most recent of 16 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.