Close
0%
0%

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 http://heroinewarrior.com/utils/rpn2.c 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 freshmeat.net 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.

bindiff.c

Show locations of differences in binary files without showing actual data.

x-csrc - 2.29 kB - 04/26/2019 at 20:02

Download

push.c

Move mutiple files to an android phone

x-csrc - 559.00 bytes - 03/09/2019 at 18:13

Download

dailymile.c

Recover the data from a dailymile.com account, except routes, comments, photos.

x-csrc - 10.06 kB - 12/09/2018 at 02:55

Download

diffdir.c

find the differences between files of the given extensions

text/x-csrc - 10.96 kB - 11/06/2018 at 22:42

Download

logcat.c

logcat a single process on android

text/x-csrc - 4.11 kB - 11/05/2018 at 05:15

Download

View all 7 files

  • Better audio from virtualbox

    lion mclionhead05/22/2019 at 23:31 0 comments

    A pulseaudio server is a good investment when running Linux a mac. Audio on Virtualbox still studders & only goes to 1/2 volume, after 20 years of virtual boxes & virtual machine corporations now at 12 figure valuations. Cinelerra predates both pulseaudio & jack, still using esound for networked audio, but pulseaudio can emulate esound. The /usr/local/etc/pulse/default.pa file needs

    load-module module-esound-protocol-tcp auth-cookie-enabled=0 auth-anonymous=1

    Then, the command line needs to be

    pulseaudio -v --exit-idle-time=99999

    They've firewalled it with multiple authentication layers & timeouts. On Cinelerra, the esound driver takes the IP address of the virtualbox host & a port of either 0 or 16001.  Playback buffer samples of 4096 has given the lowest latency without studdering.  While the playback buffer affects Cinelerra's stopping time, the audio continues playing until the later buffers in the TCP chain drain, which is always much longer

    Pulseaudio allows Linux to access the full dynamic range & doesn't studder. After years of being a $3000 brick, the mac finally has acceptable audio, though very bad latency. Better latency would require native pulseaudio support in Cinelerra, until the next protocol comes out.



  • bindiff

    lion mclionhead04/26/2019 at 20:19 0 comments

    Obviously, there will never be a meld for binary files, which detects transpositions of identical blocks of data.  There is a vbindiff tool which shows a hex view with the differences highlighted.  The lion kingdom has long had a tool for showing locations of changes without showing the actual data.

    https://cdn.hackaday.io/files/1380505906331200/bindiff.c

    For comparing disk images, you're more interested in equivalent sectors rather than bytes, so it takes a threshold argument to show differences by the sector.  There are still dreams of showing transpositions of identical data.

  • Move mutiple files to an android phone

    lion mclionhead03/09/2019 at 18:18 0 comments

    Frustrated with the adb command only pushing 1 file at a time, the lion kingdom wrote push as a shell script, then as a C program to get around the differences between the macos & Linux versions of bash.

    https://cdn.hackaday.io/files/1380505906331200/push.c

  • MP3 player for super commuters

    lion mclionhead01/20/2019 at 19:45 0 comments

    With monster commutes by car on track to resume for the 1st time in 10 years, the need has returned for a decent mp3 player.  Obviously, it would run on a phone, to have common code with the mp3 player used for running.  In a sign of regression, dedicated mp3 players are either no longer made or ridiculously expensive.  Phone apps no longer do nearly as much as what Rockbox or a high end player from 15 years ago did.  A high end player made out of an STM32 discovery board would not be useful for running.

    The mane requirements:

    Uses the directory structure as the playlists.

    Automatically resume playing with engine ignition.

    Recursively advance playlists.

    Easy deletion of songs.

    User interface for navigating songs.

    No dropouts.

    Retain playback position when quit.

    2 playback positions have to be stored: 1 for running & 1 for driving

    Manual playback from the running position or automatic playback from the driving position, depending on detection of the car speaker & whether it was playing when the engine was stopped.

    There were several competing ideas: a cheap, dedicated phone that stayed in the car, a reuse of the same phone for daily use, & a ground up hardware solution on an STM32 discovery board.  

    Bluetooth speakers are virtually free, nowadays, so scratch built hardware is pointless.  The speaker hardware just has to be modified to begin advertising with engine ignition & output line levels for the car radio.  To automatically start playing, the phone can rely on detection of the speaker or some alternate way of detecting the car's state.  In another sign of corporate dysfunction, Android automatically resumes playback & resets the volume when a TRS connector is plugged in, but doesn't resume playback or reset the volume when a bluetooth speaker is detected.

    Automatic detection of bluetooth speakers has been extremely unreliable, so it may require low energy or a wifi access point in the car.  The reliability of a bluetooth system has to be determined before going to a custom solution.  Requiring a TRS connector to be plugged in would be very painful.  

    The program would be some kind of service that always waited for the bluetooth speaker to become present.  The mane problem is the phone has to be plugged in to have enough power for such a long drive.  For rare, shorter drives, the phone could still be ignored.

    The STM32 solution tends to shine when it comes to automating the process.  It would store all the songs on its own storage, never have to be touched, & the complexity of detecting the speaker would go away.  It would expose a user interface over BLE which would be accessed by the daily phone.  It's a lot of redundant code, but so is the dual playhead idea.  There's also modifying playlists.  The lion kingdom went many years just moving an SD card between the car & the computer, but the future is web based file management.

    The user interface still requires firing up the phone, but the user interface was extremely rarely used, 10 years ago.

    Dropouts are a real problem for Android, since the spec requires it to stop music playback whenever in the presence of another phone.  Lions can bypass the spec by using their own software decoder, but it uses more power.

  • Recommendation engine based collabware

    lion mclionhead12/21/2018 at 20:44 0 comments

    The current crop of Atlassian acquisitions, githubs, slacks, skypes, jiras, bitbuckets, fabrics, crashlytics, timecard services, began as the collabware boom of 2005.  They're supposed to organize but these services seem to require a lot more attention & add a lot more complexity than before.  What's really needed is an organizer for the organizer services.  Perhaps it could give a sequential step by step workflow to do everything that every organizer needs, based on automatic prioritization & ease of the task.  It could be an Atlassian serializer, taking all their acquired cloud services & presenting them one at a time.  Step 1: merge a pull request.  Step 2: update a jira ticket  Step 3: send a build to fabric.

    A recommendation engine for collabware services could do a better job than a human trying to pick which of the thousands of cloud services to catch up with next.  The age old tasks of writing cold emails, merging source code, haven't gotten any easier either.  They just got renamed to text messages & rebasing.  They tried canned phrases, but they really need to compose the entire email.  

  • Cocoa pods dependency manager

    lion mclionhead12/14/2018 at 20:50 0 comments

    Cocoa pods is such a hideous mess of dependencies, version conflicts, & .lock files, the lion kingdom proposes another dependency manager to manage the cocoa pods dependencies. It'll be cocoaly podoro at a valuation of $50 billion. It'll have just 5 .lock files & 20 versions but will automatically install the right version of cocoa pods, set the right project lines, & create the right .lock files cocoa pods requires to install the right versions of your dependencies. They'll be the last project lines & .lock files you'll ever have to manetain.

  • Graphics in an xterm

    lion mclionhead12/12/2018 at 23:17 0 comments

    The lion kingdom originally wanted just a command line audio editor. It would draw the waveform in ASCII or embed monochrone graphics in the xterm, using the regis protocol or custom character sets.


    XTerm does draw graphics in the same window as the text. It has to be compiled using configure --enable-regis-graphics


    Then it has to be run as xterm -ti vt340


    printf("\eP0p"
    "S(C1)"
    "S(M3(R100G0B0))"
    "P[300,50]"
    "V(B),[+100,+0],[+0,-10],"
    "[-100,+0],(E)"
    "P[300,200],"
    "F(C[+100])"
    "\e\\");


    draws some simple graphics.

    You might use this to have an embedded system draw graphics through a serial port.  

  • Dailymile data recovery

    lion mclionhead12/09/2018 at 04:08 0 comments

    After much debugging, the 

    https://cdn.hackaday.io/files/1380505906331200/dailymile.c

    utility downloaded all 2136 workouts.  The lion kingdom used dailymile from 2014 until it was disabled in June 2018.  

    For the 1st time, the annual mileage could be plotted.  It definitely peaked in 2016.  That was the last year any humans of lion age were still running.  It was quite motivating to race against the humans, but all animals eventually outlive humans.  2017 was the achilles tendinitis.  2018 was the metatarsal.  Pushing the limits, trying new exercises & new footwear did it.

  • Recovering data from dailymile

    lion mclionhead12/07/2018 at 07:21 0 comments

    Like so many startups in the 2014 wave, Dailymile closed some time in 2018 after failing to receive a buyout offer.  The website still loads, but users can no longer log in & there's no way to retrieve your data.

    Some experiments revealed a way to get a JSON of a certain number of workouts for a user.

    http://www.dailymile.com/people/heroineworshipe.js?max_id=99999999&page=0

    Merely incrementing page gives another certain number of unique workouts.  The JSON is a single block of HTML.  Searching for all the entry_workout_ tags gives each workout.  For each workout, there are a number of links to the same URL which gives the complete commenting & details:  /people/heroineworshipe/entries/29741160

    While the details page doesn't give an exact date, the HTML does in the abbr class="published" block

    A simple C program should be able to recover all the data by flogging the server.  The trick is what format to store the data in.  Most likely, it'll go into a comma delimited text file which can easily be imported into a spreadsheet, but the comments have many linefeeds.

    Then of course, there's more data on mapmyrun.  Lions ran truly epic distances in those days, but more slowly.  The theory in those days was to run long & slowly.

  • A better way to merge

    lion mclionhead11/23/2018 at 01:14 0 comments

    In 25 years of UNIX era merging, the lion kingdom has never had a single patch file, CVS merge, SVN merge, perforce merge, git merge, or git rebase apply cleanly.  The modern dogma says to make a merge algorithm work, call it a new meaningless name, rewrite the same thing in a different programming language, insert a neural network somewhere to identify cars, or call it a company instead of a program & sell the company to salesforce.  

    The typical day job involves making a lot of changes to make a product actually work but which the company rejected (the spacex patch), making the changes that the boss actually wants (the ULA patch), then applying just the ULA patch to the remote.  The trick is stripping out the spacex patch before submitting the ULA patch.  Taking up changes from the remote also involves its own merge crisis.  The git rebase advertised being able to do this automatically, but it has never really done anything but allow github to get bought out by Microsoft.

    The lion kingdom has long pondered a way to aid the merging algorithm with code annotations.  It started with enclosing as much of the spacex patch as possible in ifdefs & manually tracking them down.  Something could probably be done with a config file that names whole files to swap & a tag to identify bits of a file to swap.  Ifdefs don't work with linker files, Makefiles, & IDE settings.  

    The other problem is the desire to freshly check out the remote version & apply the spacex patch to it.  The locations to insert the tagged areas would still rely on traditional diff text searching.  Suspect at least having tags in the input patch would help immensely.  

    The usual diff failure is caused by both files having different changes to the same line.  At least in a C program, we can keep both the patch file's line & the original line, tagging which one to use at compile time & which one to use at checkin time.  The automation is in removing all the functional bits so only the broken bits that the boss wants are checked in.

View all 44 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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