Silly software wishlist

Motivation to do some software projects by writing them down.

Similar projects worth following
Most of these will never be done. Some have been done. The screenshot is RPN a command line calculator which has proved essential, over the decades.

It might feel like every software project has to be bigger than the last software project, or they're not worth doing.  In reality, before Cinelerra, there were a lot of smaller software projects that just edited audio.  You get to a big software project by doing smaller ones that eventually have something in common & appear to be better served if they were all combined.  

We might be in a downward trend in the size of software projects people consider desirable, with mobile computing & retro computing, but the size required to get discovered is definitely growing.  20 years ago, a silly command line program on a personal web page that extracted emails from pine would have gotten thousands of downloads & been enough to start a foundation.  People used to read through just to discover new software projects.  

Nowadays, you have to look like a corporation, employ every marketing gimmick in the latest developer conference to get discovered in an app store & forget about any personal web page getting discovered. No-one reads through an app store digest just to discover new software projects.

ATC to tablet: Something that automatically captures instructions from air traffic control on a tablet.  Lions will never have enough money to fly airplanes, but based on goo tube videos, it's manely an arcane task of constantly listening to the radio for your call sign & memorizing verbal instructions they give.  The more cryptic ones are the METAR readouts.  It gets real crazy during landings, when ATC blasts out thousands of things & the pilots are shown writing them down, all while the airplane heads towards the ground at 300mph.  

Ideally, ATC would fly planes directly instead of bothering with radio dialog, but lions are keenly aware the reason general aviation is 100 years behind modern quad copters in its level of automation is because of the number of ancient hand flown airplanes around, where the only means of remote control is relaying voice commands through a human.

Based on digital assistant valuations, it should be trivial for a computer to listen for your call sign, do something to get your attention, translate the spoken commands into drawings on a map.  Despite having no flying budget, such a thing could start life as a toy program that listened to internet streams of ATC.

GRAPHER: something that polls text files & constantly updates a simple line graph with the data in the file would be useful. Graphing serial port output in line graphs has been the #1 task for lions for 15 years, but copying from a text editor to star/open/libra office is extremely tedious. It needs a way for the user to specify a range of lines in the file to constantly graph, with text values, wildcards, & by pointing & clicking on the graph. The range needs to be relative to the start or the end of the file.

An X11 program in C would take only a few hours to write, but lions would rather spend forever contemplating using web browser javascript so someone else could use it.

Big Falcon Simulator, a very high fidelity simulation of a very large rocket, with the highest quality models & sounds possible. It would accurately simulate flights or have a racing mode with knockdowns.  Probably similar gameplay to Asphalt Extreme, but using flight controls.  Previous simulators have horrible graphics. They especially suffer in their renderings of fire.  This is the most ridiculous thing lions can imagine.

x-csrc - 7.53 kB - 07/08/2020 at 19:08


x-xz - 9.04 kB - 07/04/2020 at 22:35


x-csrc - 5.17 kB - 06/17/2020 at 22:12


x-csrc - 1.15 kB - 06/08/2020 at 21:06


text/x-csrc - 794.00 bytes - 06/03/2020 at 19:25


View all 17 files

  • Fix the creality firmware

    lion mclionhead10/15/2020 at 17:43 0 comments

    Extend a cable & reset button for firmware flashing to the outside of the enclosure.

    Make it show ETA based on percent completed.  

    Show the filename currently being printed.

    Make "stop printer" the last item on the menu instead of the 2nd to last.  

    Make highlighted item inverted instead of an outline.  

    Make navigation faster.

    Fix bug where it sometimes highlights the wrong item.

    Sort files by date.

    Helas, the physical interface should have a joystick in addition to the encoder.  Imagine moving the print head with the joystick & the Z axis with the encoder.  A joystick button would be the select button for gcode scripts & the encoder button would be for navigating menus.

  • ASMR sound synthesizer

    lion mclionhead10/15/2020 at 17:24 0 comments

    Play live brushing & spraying sounds with the CP33.  

    For some reason, lions have always found it easier to enter music or beats with an instrument rather than a GUI so they never think of anything but a MIDI interface for creating sensory inputs.  They used Finale for creating sheet music, but could only do it effectively with the piano for entering notes.  This project kind of coincides with the long time desire to make a free interface that converts instrument input to shortpaw music notation.  The shortpaw notation is just whole notes on conventional staffs which lions can later convert into proper time steps or just space out according to time.  

    This would be better as a phone app with a wifi interface for downloading the data.  It would have a common MIDI recording routine.  The output would be the ASMR synthesizer, TF-39 engine synthesizer, or music notation.

  • TF-39 engine synthesizer

    lion mclionhead08/12/2020 at 17:42 0 comments

    It could be a mobile app with sliders to adjust the mane sounds.

    Rumble volume

    Fan pitch

    Fan volume

    Shriek pitch

    Shriek volume

    Or it could be a simple throttle with automatic adjustment of the sounds.  Lions had a tough time designing sounds for a game.  There are many variations going on in the recordings besides just throttle.

    There's a useful video series about the TF-39 sound.

    Another idea is a TF-39 musical instrument sound.  Maybe it could be a vocal.

  • Command line stopwatch

    lion mclionhead07/08/2020 at 19:59 0 comments

    This was a revival of the lion kingdom's very 1st programs on the commodore 64.  Printing large characters out of 8x8 blocks was the goal, but it took some time to figure out what petscii character was an 8x8 block.  It was an inverted space & the way to print an inverted space in BASIC was ctrl-9 (reverse on) then spacebar.  

    Nowadays, we have VT100 codes for inverting the space.  

    <0x1b>[7m to print inverted spaces & <0x1b>[7m to print normal spaces

    A bit of elementary school character printing yielded a stopwatch in giant letters.  The lion kingdom had an earlier stopwatch program which printed a single line of text, but it was found inadequate.  Perhaps the single line will become an option.

  • Brother HL2040 configuration files

    lion mclionhead07/04/2020 at 22:36 0 comments

    For 2020 tax filing, the lion kingdom banged on its Brother HL2040 again.  The original configuration files from 2007 were hacked to work & lost when the hard drive was replaced later.  It never could be made to work again with any configuration files Brother released after 2007.  The printer now always feeds 2 sheets & jams while feeding the 2nd sheet.

    The 1st hack is in /usr/local/Brother/lpd/filterHL2040, setting the yshift parameter to a small number from 0-100.  The more positive yshift is, the more the printout is shifted up in the page.  The more negative yshift is, the more the printout is shifted down in the page until it starts printing on the 2nd page.  The more positive  xshift is, the more it's shifted right.  The more negative xshift is, the more it's shifted left.

    In a configuration which has become very broken since 2007, it picks up RESOLUTION & PAPER_TYPE from /usr/local/Brother/inf/brHL2040rc.  If PaperType=A4 is replaced by PaperType=Letter, it prints properly but still feeds 1.5 sheets.

    Then, it uses PAPER_TYPE to extract the WIDTH & HEIGHT from paperinf

    It's supposed to extract the xshift & yshift from /usr/local/Brother/inf/brHL2040init, but this file was deleted at some point, so lions just add some hard coded lines inside /usr/local/Brother/lpd/filterHL2040.

    There hasn't been a way to stop it from starting a 2nd page without using the manual feeder.  Then, it doesn't try to feed a 2nd sheet.  For a long document, it's a pain to feed 1 sheet at a time.

    Lions long ago abandoned the clunky lpr & lpd system.  All you have to do in the lion kingdom is 

    cat | filterHL2040 > /dev/usb/lp0

    For future lions, the hacked configuration files are

  • command line ffmpeg/mplayer wrapper program

    lion mclionhead07/03/2020 at 20:48 0 comments

    Lions originally wanted everything to have a GUI.  In old age, lions just want as much computing power devoted to the task as possible instead of the interface.  After writing a video editor, lions have accumulated many usages of ffmpeg & mplayer  from the command line.  The mane use of mplayer is extracting decompressed audio.

    mplayer -ao pcm:file=audio.wav -vc null -vo null 

    But specifying the output file doesn't work.  ffmpeg has a usage which extracts decompressed audio, but this works for fewer sources.

    ffmpeg -i <input file> -vn <output file.wav>

    Then there's extracting the audio from a movie without any transcoding.

    ffmpeg -i <input file> -vn -acodec copy <output file>.mp4

    Extract the video from a movie without any transcoding:

    ffmpeg -i <input file> -an -vcodec copy <output file>.mp4

    The other thing lions use ffmpeg for is transcoding video from a variable framerate to a fixed framerate file.  This degrades the quality, but if the specified bitrate is higher than the input bitrate, it'll encode as high as the input bitrate.

    ffmpeg -i <input file> -c:v mpeg4 -vb 5000k -an <output file>

    Lions use ffmpeg to encode from an uncompressed source, for debugging machine vision programs.  This isn't as fast as linking ffmpeg & calling the functions with a memory resident frame buffer but it's simple.

    ffmpeg -y -f rawvideo -y -pix_fmt bgr24 -r 15 -s:v <width>x<height> -i - -c:v mpeg4 -vb 5000k -an <output file>

    It would be a lot simpler if these most common ffmpeg usages were condensed into yet another wrapper program.

  • Command line frequency counter

    lion mclionhead06/17/2020 at 23:11 0 comments

    If you're into knowing the relative frequency of something to very high precision, oscilloscopes of lion kingdom vintage are pretty bad, but you can transfer a waveform to a computer & run this program on it.  Newer oscilloscopes can definitely do better.  It can't get absolute frequencies to very high precision because that depends on the oscilloscope crystal.

    Some sample waveforms show 2 surface mount 32.768 crystals running at 32766 & a 3rd through hole crystal at 32768.  They can also be affected by the probing method.  As lions discovered from creating Heroineclock II, crystals can vary by a lot.  .01% precision for a resistor is high precision, but for a crystal is way out.

    It gives the standard deviation of the wavelength in samples, useful for knowing how stable the signal is.  In the sample data, the through hole appears much more stable than the surface mount, but the standard deviation also depends on the samplerate.  Frequency is not as affected by samplerate as the standard deviation.  The surface mount standard deviation drops to 20 when sampled at 100 megsample.

    Best results have come from counting zero crossings with a debounce delay, rather than counting peaks & troughs with hysteresis.  The best debounce depends on how noisy the signal is.  The zero crossings are where the waveform is steepest, so the time of the zero crossing can be known to the most precision.  Slight errors in where each cycle begins can create huge errors in the frequency measurement & the standard deviation.

    Of course, to just see if 2 crystals are way off, load them in an audio editor & play them back.

  • Automated packing

    lion mclionhead06/12/2020 at 18:11 0 comments

    Dreamed about software being used to determine the most efficient way to pack items into boxes. It was based on either analyzing video of the products or 3D scanning everything that entered the warehouse. was using it in fulfillment centers. All the humans did was move items from the shelf to a box the computer selected & where in the box the computer said to put them.

    Lions don't believe any such system exists. Workers currently pick the box by eye & pack it by eye. Random variations in packaging might make it impractical to prescan items when they enter the warehouse, so workers would need to scan the dimensions of every item in an order, then the computer would pick the box.

    Making the scanning process fast & transparent would be a good machine vision problem.

  • Web based file manager for Android

    lion mclionhead06/11/2020 at 03:41 1 comment

    Then, there was this craptastic program. The lion kingdom long dreamed of a way to manage a phone's filesystem in a browser instead of ADB, to download & upload files without ADB.

    After many years, the desire finally hit critical mass, there was enough time without commuting, & the deed was done. It's 25 year old HTML, no javascript, no AJAX, no jquery, no node.js, no react.js, no angular.js, & would never get a job, but it does the job. There's no security. It's fast when it works & easy to manetain, like all web applications 25 years ago.

    A key difference with past lion programs is this one doesn't run in the background.  Once it's cleared from the app manager, the server is gone.

    There are a few limitations.

    It can't create symbolic links, since lions have never needed a symbolic link on a phone.

    The phone has to be rebooted occasionally, as Android has memory leaks which cause the network performance to get slower & slower.

    It can't write to external storage.  Android has dropped any support for writing to an SD card from a user program.  It can only read.

    There was originally a desire to sort by size & date, but the kind of file operations lions have done so far have been too simple to justify it.

  • How fast is a pipe?

    lion mclionhead06/03/2020 at 19:29 0 comments

    At least on the  lion kingdom's obsolete 4Ghz 8 core Ryzen, it's

    % ./random |catbps
    main 33: 1154458213 bits/sec
    main 33: 1155342065 bits/sec
    main 33: 1158795636 bits/sec
    main 33: 1161013450 bits/sec
    main 33: 1153026045 bits/sec
    main 33: 960231704 bits/sec
    main 33: 1077391216 bits/sec

    From a phone through ADB, it's

    % adb shell /data/random | catbps 
    main 33: 9080670 bits/sec
    main 33: 5169716 bits/sec
    main 33: 4291419 bits/sec
    main 33: 4482882 bits/sec
    main 33: 8428983 bits/sec
    main 33: 8613113 bits/sec
    main 33: 9701913 bits/sec

    Native linux on a laptop to ethernet:

    root@heroine:/root% netcat -l -p 1234 | catbps
    main 41: 1309 bits/sec total_bytes=1024
    main 41: 939087920 bits/sec total_bytes=117504400
    main 41: 940861506 bits/sec total_bytes=235229696
    main 41: 941440127 bits/sec total_bytes=353027392
    main 41: 941604955 bits/sec total_bytes=470845712
    main 41: 941564611 bits/sec total_bytes=588658984
    main 41: 941590569 bits/sec total_bytes=706475504
    main 41: 941602141 bits/sec total_bytes=824293472
    main 41: 941494025 bits/sec total_bytes=942097912
    main 41: 941467236 bits/sec total_bytes=1059899000

    Linux on a virtual machine to ethernet:

    root@heroine:/root% netcat -l -p 1234 | catbps
    main 41: 5333 bits/sec total_bytes=1024
    main 41: 14750500 bits/sec total_bytes=1850368
    main 41: 16163477 bits/sec total_bytes=3876864
    main 41: 10647144 bits/sec total_bytes=5209088
    main 41: 9818954 bits/sec total_bytes=6438912
    main 41: 10589858 bits/sec total_bytes=7763968
    main 41: 22450331 bits/sec total_bytes=10575872
    main 41: 12099960 bits/sec total_bytes=12091392
    main 41: 15158875 bits/sec total_bytes=13991936
    main 41: 15942073 bits/sec total_bytes=15986688
    main 41: 14217453 bits/sec total_bytes=17767424

    The random program just prints random ASCII characters as fast as possible.  Recognizing that the rand function has a finite speed, it precalculates a fixed buffer & resend it.

    Obviously, adb doesn't do any compression.  The catbps program just measures how fast data is coming from stdin but doesn't write it to stdout.   These are basic needs lions have had for a while.  Next comes hacking ADB to improve this bandwidth.  You can't hack the ADB server on a normal phone, but this is a special phone.

    We all want to know how fast our networks are, so these programs can be run with netcat.

    netcat -l -p 1234 | catbps

    random | netcat 1234

View all 73 project logs

Enjoy this project?



Ken Yap wrote 05/07/2020 at 23:55 point

I'm using Free42, a program which is a reimplementation of the HP42S scientific calculator. It exists in both desktop and smartphone versions. Quite indispensable and small, just under 3MB on Linux.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates