ZC’s Programming Project Ideas

1. Introduction

There are a lot of ideas out there for beginners’ programming projects, but I honestly can’t be inspired to create many of them since they don’t feel original to me. If I were to attempt making most of them, I would feel as if I’m reinventing the wheel. For some reason, doing redundant tasks feels nihilistic to me, sometimes even if it’s necessary for training. Thus, the purpose of this webpage is to detail a list of original or mostly original programs to create. The idea is that the novelty of the programs would inspire their creation, which would help the programmer practice.

Each of these projects are of varying difficulty. I’ve tried to sort the projects based on their estimated difficulty, but your mileage may vary. None of the ideas below describe in great detail how the final programs should be made or what they should look like, so it’s up to the reader to plan these out in greater detail before committing to the project.

If anybody would like to assist or work together with me on creating some of these projects, please reach out at my contact page.

2. Personal Programming Project Ideas

2.1. Relatively Simple Projects

  1. Build a truth table generator of some sort in various forms in python?
  2. Create a gif in Python and Manim to illustrate what the next overpopulation crisis will look like, instead of what cornucopians think it would look like. Display it in the Overpopulation FAQs section: The Next Overpopulation Crisis.
  3. Write a python program that automatically re-labels downloaded files to your filename specification standards (this should be straight-forward, as it only involves case-toggling and search-and-replace function calls); store the original filenames somewhere somehow. You can later write a program with similar functionality in Elisp or C, as a later project for those languages.
  4. Build an equivalent application to the p7-smash command shell in Rust?
  5. Edit gThumb’s source code so that scrolling on the image will zoom in and out, instead of switching pictures in the images browser (lower panel). Perhaps you could make it toggle for this.
  6. In Okular, clicking a location in the vertical scroll bar should jump to that page/location in the pdf, not slowly scroll up until it gets to that point.

2.2. Intermediate Projects

  1. Animated Video based on my paper “Mathematical Methods for Modeling Language Phonology” (using Manim Python library) For Summer 2024 Math Exposition?
  2. Write a Python program that retrieves data from your Ebembe Language excel workbook.
  3. Create a Python bot for writing Wiktionary entries, using the Ebembe corpus data.
    1. Think of other Lexicography projects that use Python?: https://dictionaryapi.com/.
  4. Design a web application / software program that could automatically count and generate syllables after specifying all the phonotactical constraints of the language, dialect, and sociolect in sufficient enough detail. This would be a worthwhile investment if there was a need to count and generate syllables for thousands of different languages, dialects, sociolects, et cetera.
  5. Are there any programs out there that can create venn diagrams, based on a given set of set theory propositions? Or a set theory program that states a list of set theory propositions, based on the venn diagrams drawn and defined by the user? Or a program that allows input and output both ways?
  6. Create better screenshot program for Linux, similar to the one on MacOS.
  7. Create a custom Python extension for Ulauncher. It should be something that you would use often.
  8. Tweak DockBarX with Python: https://github.com/M7S/dockbarx.
  9. A reddit bot would that searches comments for people who spell <should’ve>, <would’ve>, <could’ve>, etc incorrectly and explains what the correct spelling and grammar should be. It would go a long way towards making the grammatically and professionally correct spelling more popular than the ungrammatical, incorrect spelling.
    1. As well as <shouldn’t’ve>, <wouldn’t’ve>, <couldn’t’ve>, etc
  10. Python programming projects for Raspberry Pi: https://raspberrytips.com/python-projects-on-raspberry-pi/.

2.3. Advanced Projects

  1. A data structure could then be invented to store information essential to producing and/or recognizing sounds, which could progress the field of Natural Language Processing.
  2. Create/Train an AI algorithm and/or bot to respond to reddit posts and comments regarding people who ask questions or make arguments that assume the misconceptions presented in the FAQs.
  3. Create AI Software that can intake a corpus of content and create FAQs pages, similar to your concise and well-formatted style. List of ideal FAQs pages to create and/or improve:
    • Pro Gun Rights FAQs
    • Georgism FAQs
    • Drug Legalization FAQs. I don’t have enough interest in writing this, so it’d be better to crowd-source help from Libertarians and other proponents.
    • Orthotropics FAQs
    • Efilism FAQs (directed towards Efilists)
    • Epistemology FAQs
    • Pragmatosphere Glossary
      • Note: An AI program designed to create FAQs pages could surely create great glossaries as well.
  4. Create AI software that can take written essays and turn them into educational videos.
  5. Creating a tool that will automatically generate graphics similar to the ones shown in Carneades’s Philosophy YouTube videos?
  6. Create an algorithm that figures out which abbreviations are the most intuitive, or tries to figure out how natural language speakers would abbreviate words in their languages (given their specific dialect).
    • Abbreviated words seem to be most intuitive when only the first syllable is used, it’s clearly identifiable and unlikely to be ambiguous, and it typically features a distinct onset and distinct coda.
  7. Improve espeak to make it sound more human/natural? (even if this is far beyond your abilities or free time, you could still figure out what would need to be done to improve it) https://itsfoss.com/espeak-text-speech-linux/.
  8. Program hardware drivers for my ergonomic mouse?
  9. Fine-tweaking the QMK source code for my ZSA Moonlander to do something really specific that I can’t program with ZSA’s Oryx Webapp.
  10. Rewrite programs written in OOP code in functional programming or Rust instead.

3. Emacs Lisp Programming Tasks for Improving Emacs

  1. Any macros to think of, record, and save as future Emacs commands with their own keybindings?
    • Create a keybinding or macro for double-spacing or single-spacing lines within the region.
    • See if you can record macro or some other solution that: 1. double-spaces, 2. single spaces, 3. added dash-bullets to a highlighted region of text.
    • If it doesn’t work out, maybe you can view the macro code while using edit-kbd-macro, and write equivalent Elisp code that would do the same, or ask ChatGPT?
  2. Modify insert-from-kill-ring.el so that pressing ’q’ and <enter> exits that lisp program by doing nothing.
  3. Modify insert-from-kill-ring.el to display the first line from each kill-ring entry on only one line. Preceding this, the number of the kill ring entry will be displayed at the beginning of the line in the following format: ##:\t[first_line_of_text_of_kill_ring_entry_#]
  4. Has anyone ever considered editing the info pages for Emacs so that they are displayed with org-mode instead, thus eliminating one less set of keybindings for learning, and also so that the folding headers functionality of org-mode can be gained when reading the info documentation? It shouldn’t be too difficult to create a parser that can edit all the info file to make them display in org-mode instead, right?
    • Or maybe there’s already packages that do this, that I don’t know about?
  5. Modify the Emacs windows <swap-buffers> function to use Colemak homerow letters for swapping buffers between windows instead of Qwerty’s homerow letters.
  6. The hybrid relative and absolute numbering should be modified. Since the main motivation and advantage for relative line numbering is to make vertical motion more efficient, there are no advantages for using it for the very top and very bottom line numbers of the screen, since ’H’ and ’L’ would both be used to navigate to those areas respectively, not numbered motion. In other words, three lines would be displaying absolute line numbers (or just two if the cursor is at the very top or very bottom line of the screen), and all other lines would display relative line numbers.
  7. The line numbering in org-mode should account for when the collapse of “:PROPERTIES:”, “:CUSTOM_ID:”, and “:END:” affect the displayed line numbering.
  8. Create a function that can toggle whether the line numbering displayed in the left numbering column shows what lines the headers are on in the buffer, or what relative line numbers would have to be entered to navigate to those parts of the buffer, if all the sections, functions, etc remain collapsed.
  9. Maybe I want a command that will only toggle between absolute and relative numbers, instead of doom/toggle-line-numbers, which toggles between relative, absolute, and no line numbers.
  10. It would be cool if there were commands that scroll by the number of visual lines given in the prefix arguments, instead of scrolling by logical lines. This would may scrolling files much easier when long lines are wrapped around the window edge, because then you could just look at the number line and know exactly how many lines to scroll up or down without even thinking about it.
  11. Similar to the evil-everywhere package, perhaps someone could create a colemak-everywhere package/module which replaces everywhere where keys were placed to fit Qwerty homerow keys with Colemak homerow keybindings and key presses?
  12. Pressing enter while I’m typing a bulleted list should not create a bullet that gets indented on the next line. Instead, it should just create a new bullet that is on the same level as the current one.
  13. The way how Emacs org-mode presents which text is italicized or not is not parsed correctly in cases where the slashes are before the end of the ending square bracket, like in this example. “Example” should be italicized in the previous sentence, but it isn’t, although it is italicized in HTML exports.
  14. Could I build my own major Emacs mode to keep track of my own personal streaks for doing certain things everyday?
  15. Create a command that can re-arrange the items, commas, and spaces within a list each time the command is executed forwards or backwards?
    • That said, absolute numbering should thus be used for the current line, as well as the top line on the screen and the bottom line on the screen.
  16. Create a command that only capitalizes the first word and content words, ’I’, and any other words that should be capitalized; but not words like ’a’, ’an,’, ’the’, ’to’, et cetera. It should not affect acronyms.
  17. Configure Emacs to switch to other quote (’’“”) when % is pressed
  18. Configure minibuffer to toggle to not display certain commands and stay blank.
  19. Maybe I could create a user-defined function and command that can automatically format text to fit the requirements outlined in my standard text file formatting standards.
  20. Develop an Emacs command tool that can highlight selected uses of the verb “to be” and its other conjugations. E-prime is probably a bad idea, but it might strengthen writing in some cases if forms of “to be” are rewritten to use less frequent and more creative verbs instead.
  21. Write some minor mode for typing Latin text in Emacs, such that macrons appear over the long vowels (when pressing the vowel key twice) and that latin text is spell checked.
  22. Typing a vowel’s letter twice to put a macron over it, and backspacing will simply delete the macron without deleting the entire letter.
  23. It would be convenient if there was somehow even greater compatibility between PageUp and PageDown buttons in the mouse layer of the ZSA Moonlander and Ctrl+b and Ctrl+f commands for moving back and forward within Emacs buffers.
    • For example, I wish that it was still possible to move forward and backwards pages in Firefox using Ctrl+b and Ctrl+f. The main benefit to this is that page navigation would be improved having to switch between the base layer and the mouse layer before and after pressing PageUp and PageDown. Of course, I could also program PageUp and PageDown into the keyboard if I hold a key down or double-tap, but I would dislike the added complexity that this alternative would involve.
  24. Make the insert state the default starting state for vim after creating a new file? If the file is new, there really isn’t anything useful to use the normal state commands on since the file is empty.
  25. When new sections are added in org-mode, Emacs should automatically insert a blank newline between the sections to help separate things.
    • Perhaps there could even be an option to toggle this in case there are times where it is unfavorable to have a blank newline for separation.
  26. I don’t know when this would be desired though. Maybe to keep information packed and dense, alignment of text, aesthetics, or something else?
  27. A list of English words (with nouns proceeded by ’the’) piped through DeepL into Spanish or French could be a great way to create a text dictionary. Then you could create a program that creates a new file and places the words side by side separated by some ASCII characters of your choosing, and perhaps even footnotes after a semicolon.
  28. A command that queries dictionary entries from wiktionary.org.
  29. Create a fully functional Emacspeak module for Doom-Emacs.
    • QUESTION: Or would it make more sense to create bookmarks folder(s) for accessing these files?
  30. Has anyone ever created an Emacs command that will display all of someone’s keybindings on an image of their keyboard inside an Emacs buffer? If not, would it be worth creating such a thing for my own use? I imagine thousands of other people would find such a program useful since it could help people visualize the most efficient keybindings that they could map onto their keys.
  31. Change light-blue color theme to underline current line with some sort of indicative color (similar to underwater theme), rather than highlighting current line to cyan?
  32. Display darker line number color instead of the faint gray color used in the light-blue theme.
  33. I wish it was possible to flush-lines in rgrep and multi-occur buffers, but every time I try this, Emacs always returns “file is read-only”, although it doesn’t do that for other editing commands.
  34. Edit occur to have a Key Word In Context (KWIC) toggle option that can display the keyword in question at the horizontal center of the screen, vs displaying the beginning of the line containing the keyword?

3.1. Changes That I Want To Make To Dired

  1. Display relative line numbers in dired by default (to make vertical motion easier)
  2. When I rename files that to similar but different names, how do I stop dired from preventing me from renaming the file since it thinks I am giving it the same name?
    • In the suggestions, the old name appears, so when I press enter, dired thinks I am selecting the suggestion, when that’s not what I want
  3. In dired, I wish ’gg’ and ’G’ would go to the top and bottom of every the directory files list, just as they do when editing text files. This might be resolved with evil-collection.
  4. Learn how to create symbolic links and hard links in dired.
  5. Remap the navigation keybindings in info mode so that they are exactly the same as dired-mode? This will generate less confusion.

4. Things To Report Or Program In Xfce

  1. Learn how to report issues on Gitlab.
  2. Report bug in xfce-screenshooter to xfce development team
  3. I wish that the xfce screen timeout timer would always reset upon awakening the computer from sleep/suspend mode, so that it wouldn’t be necessary to reset it upon starting the computer again.
  4. The icons on the desktop still go offscreen when there is a monitor that is smaller than the main monitor placed to the left. This needs to be fixed.
  5. Fix topmenu panel plugin for xfce.
  6. Create a variant of the Xfce time-out plug-in that counts upward as the minutes and seconds go by (instead of downwards), and when the time is up, the panel icon flashes. The stopwatch continues counting upwards until you click on it or use some chosen keyboard command. If you need/want to work a bit longer, then you can post-pone the time-out, and it will increase the length of the break that you should take to rest your eyes, while accounting for the additional time that you postponed the upwards-counting stopwatch. This behavior makes more sense than the current Xfce time-out plugin because it won’t block out the entire screen, will be less annoying, and it makes sense that you should want to take longer breaks that are at least several minutes long if you know that your eyes will need it, and you should take longer breaks if you have been working longer.
  7. If I’m in XfDashboard / Mission Control / Task View, it would be convenient if I could just press one of the numbers on the keyboard to switch to that desktop
  8. It would be cool if you could just press a keyboard shortcut to switch two maximized windows between two different monitors.
  9. I wish that the windows wouldn’t automatically shift to the left monitor when I plug in my second monitor. I also wish that the windows would return to their original positions on the main monitor when the second monitor is unplugged.
  10. Would it be possible to place the icons from HaikuOS into my main OS? It is possible that they might be the best icons I have ever seen.
  11. I wish that Thunar would have the name fields be longer by default, without me having to readjust that column’s width when resizing the window width.
  12. I wish that Thunar would have a viewing option similar to the column view on MacOS Finder how folders would be displayed in one column, and the next column(s) would display the contents of the selected folder(s).
  13. I wish that Ulauncher and Xfce’s app launcher would both know how to find and execute app image files.
  14. I think I would prefer Xfce to display the file renaming textbox inside the file manager’s window itself on the line of the file to be renamed, instead of opening a new pop-up window that will disappear (in only a few seconds if it’s a quick rename, which probably makes things a bit more annoying).
  15. It would be nice if Xfce gave the option to eject removable media whose icons are displayed on the Desktop.
  16. I also wish that Xfce would give the option to select a set of files, right click, and the option to place all the files in a new folder appears in the right-click menu.
  17. I wish Xfce would show the volume meter when I’m adjusting the volume, but it’s annoying, redundant, and unnecessary/unhelpful to display previous changes in the system volume in the notification center’s list of notifications.
    • I would also rather have the notification bell icon inside the panel to display not display a red dot every time there’s a new notification. It distracts me.
      • But currently, the only way to get rid of it is to turn on “Do Not Disturb”, which also distracts me since the notification bell icon is crossed out.
  18. Something to program in Xfce in the future?: I wish ’SUPER + 1/2/3/4/…’ would switch to that numbered tab in the file manager and maybe just all apps in general
  19. How to make scrolling more gradual for every turn of the mouse wheel in Xfce?
  20. I wish Xfce would allow users to set default window dimensions for windows from different applications.

Last Modified: 2024 April 03, 18:37

Author: Zero Contradictions