Coding is only 50% coding. There’s documentation, collaboration, and version control. Believe it or not, if you’ve been coding for more than a few weeks, you’re ready to publish. You don’t need specialized skills if you have specialized knowledge or just a willingness to “dig in” for a few hours. Here’s a small project of mine: https://github.com/ShayHill/paragraphs. This project is much more documentation that code, but I use it all the time, and it’s there for me to install from anywhere whenever I need it.
Here’s my 50+ and growing list of beginning project ideas
- Interesting Enum (e.g., Chinese Emperors). Anything canonically named and ordered is well expressed as an Enum. Save the rest of us a little coding and a lot of research
- Elaborate or fun predicates: Can a 16-bit value be converted to 8-bit without loss? Would a stack of
n
bricks be bigger than a bread box, but smaller than a billy goat? - Sort items and keep track of original item index. This is an important first step in several algorithms
- Convert to fictional or archaic measurements (e.g., Roman digitus, gradus, passus)
- Permutations of a multiset. Vincent Vajnovszki has a great algorithm
- Dropped-object impact calculator. How hard and how fast did it hit?
- Vocabulary check against a favorite novel or author (e.g. identify words Melville didn’t use)
- Spline interpolation
- Yield only even or only odd permutations. The most common use for this is probably constructing polyhedra
- Count combinations with duplicates. How many ways can I line up four red vases and three green?
- Generate and format tests from a question bank
- Roman numeral converter. Yes, we still use these in MMXXI
- Map function that works with a specialized dataset, e.g., map(distance_to_library, coordinates)
- Approximate Bézier curves with circular arcs
datetime
(datetime is a Python library; every language has an equivalent) output in some ancient or fictional calendar- Odds calculator for
2 * D20 + 4
style gaming rolls - Strip or replace all non-ASCII characters from a string—sorry, Björn
- Give max height and distance of a projectile given initial speed and trajectory
- Integer to base-26 (Excel column numbering) converter
- Approximate oxygen percentage at a given altitude.
- Call an external command-line program (e.g., grep). Collect and parse output
- Build an html table that fits perfectly in a WordPress (or whatever) blog
- Iterate steps in a sorting algorithm
- Parse a module to create an argument glossary from the docstrings
- Break long text into n-character lines (or tweets)
- Partition a list based on a function
- Use introspection to create an output-file header with calling function, arguments, etc.
- Clustering algorithm.
- Sudoku solver or puzzle generator
- Reformat multi-line strings
- Recursive integer division (e.g., rediv(20, 6) => [3, 3, 3, 3, 4, 4])
- Equivalent of Manhattan distance on hexagonal tiles
- Palette generator from a given color
- Rolling averages
- Solve triangles
- Generate output file revision numbers
- Useful
filter
functions (see Python’s attrgetter) - Fetch temperature from somewhere on the Internet
- Parse module and create test functions to assert output type hints
- Triangle centers (if you’ve never looked, there are more than you think)
- Remove list duplicates, preserving order
- Pig Latin text converter
- Casino game odds reference
- Die Roller
- 4-dimensional rotation
- Switch between geometric plane definitions (3 points, point-normal form)
- Normal distribution cdf (without scipy or similar)
- Integer partitions
- Check for set/dictionary membership before adding element
- Capitalize strings as you would book titles: most words capitalized, articles lowercase
- Fetch conversion rates and convert currency
- Automate some other complex library call with sensible defaults
- Randomly generate names in a fictional language
- Approximate length of twine given a twine-ball diameter
- Algorithmically generated computer wallpaper