Hey everyone, I just pushed 30 of my projects to GitHub. I realized that all the projects were scattered across my blog and there was no central repository. So I took time to organize them, write documentation, and uploaded them to GitHub.
I did all of these projects for fun and to learn better programming. You can't become a great programmer if you don't program a lot. The more you program, the more language idioms and constructs you'll learn. You'll learn common patterns that occur frequently in programming and it will greatly improve your problem solving skills.
These were all relatively small projects and I think I am ready to move to the next level. I have several larger ideas in mind that need to be turned into code. I will post the updates to catonmat.
If you find any of my projects interesting, clone and start hacking. You can also follow my profile at github.
Here they all are. Enjoy!
1. Busy Beaver
Busy beaver is a computer science problem to finding the smallest Turing Machine that outputs the most data and eventually halts. This project is an implementation of a Turing Machine in Python and C++ that runs the busy beavers. It also comes with Turing Machine's tape visualization tool written in Perl.
2. Feedburner Graph Generator
Current Feedburner statistics graphs do not look nice. I wrote this Perl program to generate the nice graphs they had in 2008.
3. CodingHorror Keyword Analyzer
This is a Perl program that parses public statcounter data for codinghorror.com blog and stores the search keywords in an SQLite database.
- CodingHorror keyword analyzer on Github.
- Article about analyzing Coding Horror keywords on catonmat.
4. Adns
This is a tiny Python module that does asynchronous DNS resolution with adns library. My benchmarks were 20,000 resolutions per minute on a 512kbit/s connection.
5. Winamp Music Reporter Plugin
This is a Winamp plugin that reports to digitalpoint forums the tracks you are listening to. Written in C and uses Winamp SDK. The code can be modified to make it report to Facebook or Twitter, or anywhere you want.
6. Bithacks.h
Bithacks.h is a C header file that implements various bit operations.
7. Set Operations in Unix Shell
This is an implementation of 14 set operations by using only Unix utilities such as sort, uniq, diff, comm, cat, head, tail, awk, and others.
8. Hacker Top
Hacker top is a Unix top-like program written in Python for monitoring Hacker News from the console.
9. Reddit Top
Reddit top is a Unix top-like program written in Python for monitoring Reddit from the console.
10. GNU Awk YouTube Downloader
This is a program written in GNU Awk that downloads YouTube videos. It works well but please don't take it too seriously. It's a proof of concept code, written to see what can be done with GNU Awk's networking interface.
11. VBScript YouTube Downloader
This is a program written in VBScript that downloads YouTube videos. I wrote it because when I was a child, I did a lot of programming in Visual Basic and I wanted to remember what it was like.
12. Perl One-Liner YouTube Downloader
This is a Perl one-liner that downloads YouTube videos. I wrote it because I love Perl golf.
- YouTube downloader one-liner in Perl on GitHub.
- An article about creating the Perl one-liner that downloads YouTube videos on catonmat.
13. YouTube Video Uploader
This is a YouTube video uploader that works without any APIs. It just simulates what a browser would do and takes all the steps to post the video and set the video info. Written in Perl.
14. Plurk Translation Tool
This is a GreaseMonkey script that translates Plurks to English.
Plurk is like Twitter but more fun and organized. Come be my friend on Plurk, my profile name is pkrumins. Written in JavaScript.
- Plurk translation tool on Github.
- Plurk translation tool description on Plurk's Open Source website.
15. Command Line Plurker
Plurk from your command line. Written in Perl.
16. Find Plurks on Google
This program searches for plurks that were indexed by Google. It outputs URLs to indexed pages. It's written in Python and uses my xgoogle library.
17. Delete Plurks
This is a GreaseMonkey script that adds a "delete" button on individual plurk pages. This way you can delete your or other people plurks (if it's your thread) directly from the plurk page. Written in JavaScript.
18. Xgoogle
A Python library to Google services - Google Search, Google Sets, Google Translate and Sponsored Links.
- Xgoogle on GitHub.
- An article about Google search module on catonmat.
- An article about Google sets module on catonmat.
- An article about Google translate module on catonmat.
- An article about Google sponsored links module on catonmat.
19. Reddit Media
The old Reddit Media website that I created in 2007. No longer maintained. It was written in Perl.
20. Reddit River
The old Reddit River website for mobile devices. No longer maintained. It was written in Python.
21. Digpicz
This is the digpicz.com website that I created back in 2007. It got massive attention back then because Digg didn't have picture section then. It was written in Perl.
22. Picurls
Picurls.com is a picture aggregator much like popurls.com but for pics. Currently down for maintenance, will be soon up again. Written in PHP.
- Picurls on GitHub.
- An article about creating Picurls.com website part I.
- An article about creating Picurls.com website part II.
23. Bash Vi Editing Mode Cheat Sheet
Bash has two input modes - emacs and vi. This is vi input/editing mode keyboard shortcut cheat sheet.
24. Bash Emacs Editing Mode Cheat Sheet
Bash has two input modes - emacs and vi. This is emacs input/editing mode keyboard shortcut cheat sheet.
25. Bash History Cheat Sheet
This is the bash history cheat sheet. It summarizes everything there is to know about working efficiently with command line history in bash.
26. Screen Cheat Sheet
This is the screen terminal emulator cheat sheet. It lists the default keyboard shortcuts for working with screen.
27. Perl Special Variable Cheat Sheet
This is Perl predefined variable cheat sheet. It lists all the variables from <a href="http://perldoc.perl.org/perlvar.html">perldoc perlvar</a>
with a concise description and some example usages. I created it when I was mastering Perl. I enjoy Perl golf and I wanted to know all of the variables.
- Perl special variable cheat sheet on GitHub.
- An article about Perl predefined variable cheat sheet on catonmat.
28. Perl pack/unpack and printf/sprintf Cheat Sheet
This is Perl pack/unpack/printf/sprintf cheat sheet. The pack/unpack cheat sheet is on page one, and it lists the pack/unpack template parameters and what they do. The printf/sprintf cheat sheet is on page two, and it lists the printf/sprintf format specifiers and format attributes.
I created this when I was mastering what could be done with pack/unpack. I added printf/sprintf as I could never remember all the format specifiers.
- Perl pack, unpack, printf, sprintf cheat sheet on GitHub.
- An article about Perl pack, unpack, printf, sprintf cheat sheet on catonmat.
29. Awk Cheat Sheet
AWK programming language cheat sheet.
30. Sed Cheat Sheet
This is sed cheat sheet. Sed is the Unix stream editor. If you don't know it, you don't know Unix.
31. Ed Cheat Sheet
This is ed cheat sheet. Ed is The Unix Text Editor.
One day when I was learning sed, I got interested if it originated from ed, which got me interested in ed itself. I find that cheat sheets are a great way to learn new topics and therefore I created this cheat sheet.
32. The New catonmat.net Website
I just started pushing code to the new catonmat.net repository. It's going to be a state of the art personal website from now on.
I have around 100 ideas for it, and the next big article series on catonmat is going to be "Designing the new catonmat.net together with me." You should subscribe to my blog here if you are interested!
- The New catonmat.net on GitHub.
- Articles about designing the new catonmat coming soon.
If you have any questions, don't hesitate to ask in the comments!