William John Holden
Web Applications
Programs
- Sieve of Eratosthenes
- Metronome in Python.
- A generalized form of the matrix product in Julia.
- Compute the (not-necessarily-minimum) spanning tree of a graph using MySQL queries.
- Measure jitter in PowerShell (manifest).
- Basic statistics in PowerShell. The integral is not very accurate.
- Path MTU discovery in PowerShell
- Measure bandwidth in PowerShell
- Editing distance in Julia using bottom-up and top-down (recursive) dynamic programming.
- Multicast Syslog client/sender in PowerShell
- An intentionally-bugged crossword meme generator like those "first three words you see are your reality," only this one contains few or no words. My first-ever Julia program.
- SAT Solver in Java using backtracking. Slow, but passes all AIM test cases of size 50 and 100.
- 5/3/1 table generator
- Connection Map, a Java Swing application to visualize TCP connections through a Cisco ASA using GeoLite2 data created by MaxMind.
- PowerShell module to convert IP addresses to integers and back.
- Dynamic programming solution to a wings menu problem. I've also made a video explanation. Also, here is a Wolfram Cloud application that applies the same algorithm (with disappointingly different results).
- Area Monitor, a Python script that uses PySNMP to scrape the OSPF Link State Database from a router and then render it as a graph using Viz.js.
- Node Monitor, a simple but (somewhat) scalable ICMP poller in Java to monitor large IT deployments.
- Route Monitor, a Java application to visualize routes advertised using RIPv2.
- Pisano Periods in WAV format, inspired by an edX course in Algorithm Design and Techniques and a Numberphile video. The WAV generation library is from Douglas Thain.
- Trie dictionary in C inspired by Robert Pitts.
- Weak RSA. Generates RSA keys with RANDU (a weak PRNG) and discovers common factors.
- Denial of service attack against Hot Standby Router Protocol and a video explanation.
- Polish Calculator for plotting simple functions of two variables.
- How can you print 1 to 100 in Java using no loops and no conditions? Two solutions I came up with use thread pools and reflection.
- Multicast Syslog console server in Java, mostly useful for troubleshooting multicast routing.
- NetViz, a pedagogical animated Swing application for illustrating loop prevention mechanisms used in routing and switching.
- Kruskal's Algorithm (Kruskal.jar) for computing the Minimum Spanning Tree of a graph.
- CopyRunHere, a technique for running show commands on many Cisco routers over SSH.
- Warshall's Algorithm (Warshall.jar) for finding the transitive closure of a relation.
- Power Set (PowerSet.jar) generator for integer sets with an interesting listComparator.
- Set Equality (SetEquality.jar) demonstration.
- Bisection algorithm to approximate a zero for a given function.
- Hello OSPF, a simple C program to send OSPF Hello packets. Old versions.
- RSA Cryptography Standard implemented in Java.
- IPv4 utility to find subnet masks and summary routes.
- 3dadd: "&&'s" the pixels of a bitmap together to produce a 3D .obj geometry that can be imported into Blender. Written in C#.
- Caesar cipher and trivial summation hash in C# for teaching cryptography fundamentals.
Papers
Fitness
Miscellaneous
Qualifications
- CrossFit Level 1 Trainer
- Bachelor of Science in Computer Science, Summa Cum Laude, no. 17A1-8005-W5N8
- Neo4j Certified Professional
- ALGS200x: Algorithmic Design and Techniques
- ALGS201x: Data Structures Fundamentals
- ALGS202x: Graph Algorithms
- ALGS203x: Algorithms for NP-complete Problems
- Cisco Certified Network Associate, no. 5VS0DL2NPC14Q755
- Cisco Certified Network Associate, Routing and Switching, no. 417772847595IPCJ
- Cisco Certified Network Associate, Voice, no. 417772847578BKBM
- Cisco Certified Network Associate, Security, no. 417772847587HMBF
- Cisco Certified Network Professional, Routing and Switching, no. 429834169669HMVL
- CompTIA A+ (2009 edition), no. YEB2NLDKVDV45V55
- CompTIA Network+ (2009 edition), no. 2XBST9GDLLVQ2GHC
- CompTIA Security+ (2008 edition), no. 7NLYWPWJJPE4Q20F
- CompTIA A+ ce, no. K7T3PPBEDLQ1SBQV
- CompTIA Project+, no. K005YRNPCPR4QD9L
- CompTIA Advanced Security Practitioner ce (CASP+), no. 0BRQ33HNGC4EQ2GM
- ITIL Foundation Certificate in IT Service Management, no. 6078064.20691483
- Oracle Certified Professional, Java SE 6 Programmer
- Microsoft Specialist: Windows 7, Configuring, no. 1150290, code wjholden1013454