OSS CV
This very much a work-in-progress; it is planned to be a list of all the Open Source I've written.
CPAN
The following Perl modules are officially released code with generally good test coverage and unit level documentation. Many of it is used in production. Items in bold are the ones I think are the most important.
- Apache::BalancerManager: Allows programmatically interacting with Apache's Load Balancer.
- App::Adenosine: CLI tool for working with RESTful interfaces
- App::Charon: CLI tool to share local files over HTTP
- Catalyst::TraitFor::Controller::DBIC::DoesPaging: Catalyst integration for paging with DBIC.
- Catalyst::TraitFor::Controller::DoesExtPaging: Catalyst integration for paging to ExtJS.
- Catalyst::ActionRole::DetachOnDie: Module to correctly abort the rest of a request when an exception is thrown.
- Catalyst::ActionRole::PseudoCache: Silly little role to memoize an action.
- CGI::Application::Plugin::DBH: Integrates database handles with CGI::Application.
- CGI::Application::Plugin::DBIx::Class: Integrates a DBIx::Class Schema with CGI::Application.
- CGI::Application::Plugin::ExtJS: Integrates DBIx::Class, CGI::Application, and ExtJS.
- Catalyst::Action::FromPSGI: Exposes an endpoint within Catalyst that runs a PSGI application.
- Catalyst::Controller::Accessors: Hides access to the stash behind accessors.
- Code::Crypt: DRM for your code.
- Cogit: A fork of Git::PurePerl, intended to be pure Perl including deps, and with a simpler interface.
- Config::Station: 12-Factor config system.
- Config::ZOMG: Faster replacement for Config::JFDI.
- DBIx::Class::Candy: Sugar interface for defining DBIx::Class results.
- DBIx::Class::DeploymentHandler: Flexible database schema management tool.
- DBIx::Class::Helpers: A pile of addons for DBIx::Class results and resultsets. Functionality varies from simple shortcuts to entirely new abstractions that allow more cross engine portability.
- DBIx::Class::MaterializedPath: Materialized Path implementation for storing trees in tables with DBIx::Class.
- DBIx::Class::QueryLog::Conditional: Conditionally log queries run by DBIx::Class.
- DBIx::Class::QueryLog::Tee: Log queries run by DBIx::Class to multiple places.
- DBIx::Class::UnicornLogger: Powerful, flexible query logger featuring features like stacktraces and color coding.
- DBIx::Introspector: A tool for introspecting a database connection.
- Digest::MurmurHash2::Neutral: Murmer2 implementation that matches that of nginx.
- DateTime::Format::MSSQL: DateTime::Format module for SQL Server's ISO8601 dialect.
- Email::MIME::Kit::Renderer::Xslate: Integration for rendering Xslate in Email::MIME::Kit.
- Git::Validate: Module for validating git commits.
- Harbinger::Client: Client for an in house stats framework.
- JavaScript::Dependency::Manager: Module for building Javascript files into single files.
- Log::Contextual: Logging metatool, specifically engineered for a lightweight interface and flexible logging.
- Log::Sprintf: A reimagining of Log4perl's log specs.
- Log::Structured: Meant to be integrated with Log::Sprintf, allows logging structures instead of strings and rendering them at read time.
- Net::Async::EmptyPort: Integration to add empty port capabilities back into networked IO::Async programs.
- Net::Async::Ping: Multiple implementation of ping (ICMP, TCP, etc) built asyncronously.
- Plack::App::File::CaseInsensitive: A transitional file server that finds files ignoring case, even on case sensitive file-systems.
- Plack::Middleware::Acme::PHPE9568F34::D428::11d2::A769::00AA001ACF42: This module adds one of PHP's best features to Perl.
- Plack::Middleware::ProcessTimes:
Exposes
times(2)
data incurred by each request of a web server. - Pod::Weaver::Plugin::Ditaa: Plugin for Pod::Weaver that allows insertion of the output of a Ditaa diagram.
- Pod::Weaver::Plugin::Exec: Plugin for Pod::Weaver that allows insertion of the output of an arbitrary program.
- Sub::Exporter::Progressive: Tool to only load Sub::Exporter when the full featureset is used by a consumer and instead uses Exporter. Reduces compilation time and run-time requirements.
- Syntax::Feature::Gather: Wrapper layer for Syntax::Keyword::Gather.
- Syntax::Keyword::Gather:
Backported implementation of Perl 6's
gather
/take
syntax. - Syntax::Keyword::Junction: Backported implementation of Perl 6's junctions.
- Web::Util::DBIC::Paging: Abstracted module to allow pagination of DBIx::Class ResultSets in any web framework.
- Win32::ServiceManager: Module to start, stop, and restart services in Microsoft Windows.
- warnings::illegalproto: Module to allow disabling warnings about illegal prototypes. Pretty much exists for Web::Simple.
Adopted Modules
I took over releasing these modules either to scratch an itch or just help out. Unless otherwise noted, I generally took patches that had been outstanding for a long time, applied them, and released the code.
- Catalyst::View::CSS::Minifier::XS
- Catalyst::View::JavaScript::Minifier::XS
- CGI::Application::Plugin::Session
- Data::Dumper::Concise
- DBIx::Class::QueryLog
- Feed::Pipe
- IO::All
- Math::Random::Secure: On top of converting this to Moo, I was able to make it more secure by regenerating the seed after a fork.
- Net::Amazon::DynamoDB
Unreleased Modules
These are modules I never released. Either they are incomplete or there is some unresolved issue that caused me to not bring myself to release them.
- Carp::Skip: Originally built by ribasushi inside of DBIx::Class.
- DBIx::Exceptions: This module parses exceptions returned by a variety of RDBMS engines and returns them as objects.
- Catalyst::ActionRole::TxnDo: Wrap actions in transactions automatically. No idea why I never released this.
- Clone::Hooker: Part of a weird project related to cloning objects at arbitrary depth.
- DBIx::Class::VersionControl: An aspirational sketch of the API I wanted out of the (also unreleased) DBIx::Class::Shadow.
- GPGME::FFI: FFI interface to gpgme.
- HTML::Zoom::Widgets: My failed attempt at implementing a high level widget system on top of HTML::Zoom.
- MooseX::Role::ApplyHooks: This module would allow authors to run arbitrary code when Moose roles were consumed. Didn't release because Stevan asked me not to.
- Web::MachineX::Goldberg: A layer built on top of Web::Machine and DBIx::Class inspired by my drinkup project. Tim Bunce released a far superior version as WebAPI::DBIC.
Docker Images
I run a bunch of software as Docker containers on my laptop. To make that work I define images in github. These are all of varying quality and usefulness.
- aws cli: I use this multiple times a week.
- frew perl: Never used this.
- goobook: I use this daily, at least.
- hq: Sadly I can't use this much because most websites are Javascript heavy.
- httpd: The intention was to replace my linode's apache installation with this. I just axed my linode instead.
- hugo: This was useful when the color coding in Hugo was done by Python. Now that syntax highlighting is part of the static binary I don't use it anymore.
- jmespath terminal: Never used.
- OfflineIMAP: Constantly using this to have local email.
- PgCLI: Never used.
- Rakudo: Never used.
- s3cmd: I used this when I publish my blog.
- TinyTiny RSS: Never used this.
- WeeChat: I use this for IRC and sometimes Slack.
Forks
These are forks that are maintained for more than shipping a patch.
- awesome-utils and awesome-vicious were forked to access files instead of a remote weather service, to keep from blocking the interface when the internet was down.
- charitable is a long lived fork of sharetags to provide a more XMonad like multihead interface.
- ergodox-firmware: A fork of the original ergodox firmware to define my keyboard's layout.
- ExtJS: Self righteous fork
- godoc2md: A fork of Dave Cheney's
godoc2md
that works better for me. - go-sqlmock: fork to allow running queries over and over again.
- netrc: Fixes the same silly bug implemented in the Python netrc module where you can only have one user/password per host.
- OfflineIMAP: OfflineIMAP maintainers were unwilling to accept a patch to fix the netrc module, so I maintain this fork. I should build a netrc filter to obviate the need.
- tmk_keyboard: A fork of a fork of TMK to define my keyboard's layout.
- yaml: Removes the silly feature from go-yaml to support hashes with a boolean key.
Git Conversions
I've converted something like seventy-five repositories to Git. At some point I'll make a list, but in the meantime check it out.
Go
- github.com/frioux/manifests: Made as an example of how to do k8s manifest validation
- github.com/frioux/mozcookiejar: package that allows accessing the cookies of Firefox or other Mozilla products.
- github.com/frioux/mozlz4: package that reads the non-standard mozlz4 / jsonlz4 file format used by Firefox and other Mozilla products.
- github.com/frioux/shellquote: package that quotes tokens for use in shell or shell-like contexts.
- github.com/ZipRecruiter/cloudwatching: Export cloudwatch metrics as prometheus metrics efficiently.
Misc
- App::Adenosine prefab is a
fully fatpacked version of
App::Adenosine
- LCP6: Aborted port of Log::Contextual to Perl 6.
- Template-Tiny-js: A port of Template::Tiny to Javascript, because ExtJS templates were buggy.
- https://github.com/frioux/webfilters: Personal filters to make websites less annoying.
- https://github.com/frioux/brew.afoolishmanifesto.com
- https://github.com/frioux/cell.afoolishmanifesto.com
- https://github.com/frioux/fp
- https://github.com/frioux/goat-mem
- https://github.com/frioux/mssql-docker-demo
- https://github.com/frioux/notes-example
- https://github.com/frioux/pico-8
- https://github.com/frioux/quick-scope
- https://github.com/frioux/tic-toc
- https://github.com/frioux/zmeu-multimech
Personal
- Amygdala: Tool to add automation to notes. Modern replacement for Lizard Brain.
- Catherine25: Silly encryption system made for a birthday.
- clog: My coffee roasting and cupping log.
- dotfiles: dotfiles that are installed on every system I use.
- drinks: Repo to manage cocktail recipes
in a totally different way than
drinkup
. - Lizard Brain: An abandoned project to automate or track much of my life. Replaced with notes.
- notes: View of the public portion of my notes.
Play
These repositories are typicially created to to learn how to use one or more technologies.
- https://github.com/frioux/Log-Robot
- https://github.com/frioux/Async-play
- https://github.com/frioux/Business-Card
- https://github.com/frioux/Games-NewWorldOfDarkness
- https://github.com/frioux/IO-Async-eg
- https://github.com/frioux/PCLI-play
- https://github.com/frioux/TLS-eg
- https://github.com/frioux/TLS-play
- https://github.com/frioux/Wheels-Within-Wheels
- https://github.com/frioux/container-play
- https://github.com/frioux/exercizes
- https://github.com/frioux/fsharp-play
- https://github.com/frioux/game-play
- https://github.com/frioux/geneg
- https://github.com/frioux/go-play
- https://github.com/frioux/go-understanding-computation
- https://github.com/frioux/rust-play
- https://github.com/frioux/sss-pm
- https://github.com/frioux/udp-play
Presentations
- What I've Learned about Golang: ZipRecruiter Lightning Talks, 2018.
- Scalability, Reliability, and Performance at ZipRecruiter: YAPC, 2017.
- fREW's Blog Integrations: Los Angeles Perl Mongers, 2017.
- IAM at ZipRecruiter: Los Angeles Perl Mongers, 2017.
- fREW's Miscelaneous Debris: A talk going over a pile of topics I did at the Perl Mongers in Los Angeles the day before interviewing at ZipRecruiter. 2015
- DBIx::Introspector: A talk about the eponymous room, which was packed. YAPC, 2014.
- DBIx::Class: YAPC, 2014.
- DBIx::Class Introduction: YAPC, 2012.
- Tools: Mitsi, 2011.
- Catalyst: Mitsi, 2011.
- DBIx::Class Component: YAPC, 2011.
- DBIx::Class::Shadow: YAPC, 2011.
- DBIx::Class::DeploymentHandler: YAPC, 2010.
- DBIx::Exceptions: YAPC, 2010.
- git intro: DFW.p6m, 2010.
Standalone Programs
- https://github.com/frioux/cartool
- https://github.com/frioux/cgid
- https://github.com/frioux/corn
- https://github.com/frioux/debounce
- https://github.com/frioux/drinkup
- https://github.com/frioux/ec2-resource-for-ip
- https://github.com/frioux/export-wordpress-to-ikiwiki
- https://github.com/frioux/go-scraps
- https://github.com/frioux/Harbinger
- https://github.com/frioux/leatherman
- https://github.com/frioux/light-daemon
- https://github.com/frioux/perlcritic-web
- https://github.com/frioux/perltest-web
- https://github.com/frioux/ptome
- https://github.com/frioux/supersearch
- https://github.com/frioux/teatime
- https://github.com/frioux/unproductive
- https://github.com/frioux/webdict
- https://github.com/frioux/w.pl
Submitted Patches
- https://github.com/asticode/go-astilectron-bundler
- https://github.com/frioux/easyjson: non trivial patch to migrate easyjson to using Go's type checker. Abandoned when performance goals were not met.
- https://github.com/frioux/neilb-blogposts: collaborated with friends Rob Hoelz and Neil Bowers on a blog post.
- https://github.com/frioux/blog-1: collaborated with my friend Rob Hoelz on a blog post.
- https://github.com/frioux/encoding: improved error messages surfaced from segmentio's json encoder.
- https://github.com/frioux/Net-Amazon-Signature-V4
- https://github.com/golang/tools
- https://github.com/mailslurper/mailslurper
- https://github.com/frioux/vim-projectionist
- https://github.com/frioux/Apache-LogFormat-Compiler
- https://github.com/frioux/Email-Reply
- Python: https://bugs.python.org/file42510/netrc.patch
- https://github.com/frioux/vim-obsession
- https://github.com/frioux/offlineimap
- https://github.com/frioux/vim-fugitive
- Amazon::DynamoDB
- https://github.com/frioux/taffybar
- https://github.com/frioux/p5-io-socket-ssl
- https://github.com/iovisor/bcc
- App::Genpass
- App::PAUSE::Comaint
- HTML::Restrict
- KiokuDB::Backend::DBI
- MooX::Types::MooseLike
- Throwable
- https://github.com/sanbeg/Etsy-Statsd
- Exception::Reporter::Summarizer::Catalyst
- https://metacpan.org/pod/App::Nopaste
- https://metacpan.org/pod/SQL::Abstract
- https://metacpan.org/pod/Net::Amazon::Signature::V4
- https://github.com/jwiegley/git-scripts
- https://github.com/frioux/teadash
- https://metacpan.org/pod/Exception::Reporter::Summarizer::Catalyst
- https://github.com/frioux/reply
- http://zsh.sourceforge.net/
- https://www.perl.org/
- https://github.com/Perl/docker-perl
- https://github.com/SirVer/ultisnips
- https://github.com/bluefeet/Starch
- https://github.com/colinnewell/Jenkins-API
- https://github.com/emberjs/website
- Log::Log4perl::Appender::DBIx::Class
- https://github.com/go-yaml/yaml
- https://github.com/kazeburo/Gazelle
- https://github.com/rjbs/Email-MIME-Kit
- https://github.com/rjbs/Email-Stuffer
- https://github.com/rjbs/Getopt-Long-Descriptive
- https://github.com/syncthing/syncthing
- https://github.com/tmux/tmux
- https://github.com/tomnomnom/gron
- https://github.com/vicious-widgets/vicious: added more detail to weather widget.
- https://github.com/yanick/git-cpan-patch
- https://github.com/miyagawa/docker-plenv-vanilla
- https://metacpan.org/pod/Catalyst::Action::REST
- https://metacpan.org/pod/Email::MIME
- https://metacpan.org/pod/Exporter::Declare
- https://metacpan.org/pod/IO::Async::JSONStream
- https://metacpan.org/pod/IO::Async
- https://metacpan.org/pod/Net::Async::XMPP
- https://metacpan.org/pod/App::PAUSE::Comaint
- https://metacpan.org/pod/Net::Async::HTTP
- https://metacpan.org/pod/Win32::Service
- https://metacpan.org/pod/Test::Roo
- https://metacpan.org/pod/DBIx::Locker
- https://metacpan.org/pod/Archive::Zip
- https://metacpan.org/pod/Web::Machine
- https://metacpan.org/pod/WebService::Bonusly
- https://github.com/papers-we-love/papers-we-love
Vim Plugins
- lost.vim: Find where you are in a large file.
- regedit.vim: Easily edit registers.
WIP
These repositories are typically very unpolished, lacking little or any of what is needed to use them, and maybe not even enough to learn from.
- https://github.com/frioux/App-Moirai
- https://github.com/frioux/DBIx-Class-Schema-Auth
- https://github.com/frioux/DBIx-Reflect
- https://github.com/frioux/Dist-Zilla-SettingsFromREADME
- https://github.com/frioux/FeedPipe.py
- https://github.com/frioux/WWW-RetroPie-Game-Picker
- https://github.com/frioux/Web-Util-ExtPaging
- https://github.com/frioux/WebService-TTRSS
- https://github.com/frioux/data-stream-bulk
- https://github.com/frioux/docker-ttrss
- errinj: ambitious error-injection projection.
- https://github.com/frioux/falcor2
- https://github.com/frioux/git-ack
- https://github.com/frioux/git-super-status
- ogma: Full test search for my books.
- https://github.com/frioux/sysdig
- https://github.com/frioux/win32-prove
- https://github.com/frioux/ircparser
- https://github.com/frioux/autopot