Regrets? IMHO, only the very best.
One of those things you think about when you get your terminal diagnosis (and just *after* you get a good estimate on your Useful Time Left (UTL, us Army vets love our acronyms))(and programmers balance their parens or nothing works!) goes something like: is there anything left in this life I need to do before I no longer can?
In other words, what regrets for things left un-done in this life do I have? Some folks this haunts the shit out of. Me....after a great deal of soul-searching and balancing with Real Life (tm), I find I have actually very few regrets and none of them things I would do over or some mountain I left unclimbed.
I am Type A, an engineer and an inventor so some things are projects I just never got to finish or really in some cases get started on (but they have been in "design" mode for a long time). Here are the things at the top of the list, in no particular order:
* Teaching. I have worn many hats in my life but one that paid the least that frankly I fell in love with the most was teaching. I have no college so even though I have before, I know official teaching is out but I also know colleges and high schools strapped for cash would welcome a retired industry pro to teach programming, design, etc. Since I would be retired at this point, I would not need income (I would never ever depend on teacher pay to live on) so I would offer to work for free since the pittance such work pays is really immaterial. It was in Kalamazoo Michigan in the 90s teaching advanced C++ to adults. I just love teaching so much because of the reward, when you can bring that light-bulb to life above a pupils head...there is just no other feeling like it. Thanks to you, your student is a living example of the "teach a man to fish..." addage. Alas, LBD sez not this time around. Nuts.
* Completing my "Worlds" game. I have been in computers hard-core since before they had monitors and while some games have been OK for a time, very few have actually captured my imagination, my interest. The kinds of games that got close to what I wanted to play tended to be very....canned experiences. Once played, it was done-for and while it was cool one person could visit another person since universes coincided, that meant everyone got the same universe and once played-thru, there was never, ever anything left to explore. Regardless of the rest of the game, graphics, etc, that ends it for me, I am an explorer, I want to see and find things no one has seen before. I want my universe to be unique. So early-on in my computer research, I read everything I could get my hands on WRT artificial intelligence, constraint programming and more. The idea I had was both vast and simple (this was circa 1988 on a Commodore 64), to have the game, upon installation, use unique system info to seed and generate an entire universe of some arbitrary size. Initial target was 25,000 planets, though not all human-habitable.
The point was to generate a single species/race on each world as often depicted on Star Trek, etc but have at least 2 and up to 7. More, each world would be based on a specific environment amenable to (say) reptiles, aquatics, mammals, avian species and more. They would develop their own unique politics and philosophy based on their world and that in turn would end up dictating if they had a stronger inclination towards aggression and conquest.
But here is (was) the kicker: once the system generated XXX number of planets in your universe, it would then take that universe and apply 10,000 years worth of "time" to each world, keeping in mind that when the worlds were generated, a non-trivial number were initially designated as "primordial" or "prototypical" in that these worlds represent what the Earth probably looked like either around the time of dinosaurs or the time of man making his entrance. From there each planet would be moved thru time in lock-step with their neighbors, increasing populations, making advancements or falling into ruin, forming and re-forming governing and philosophical bodies, etc.
This would give you a universe with a wide variety of advancement, every world would guaranteed to be unique and the point of ALL of this was for Jeff to have a way to explore this universe in my own ship (later in the 2000s when I started watching Stargate, plan switched to that, waaaay simpler both graphically and plot-complexity-wise), see and meet the locals, befriend them in the same way Eliza would befriend the user. This, when combined with a health dollop of natural stuff like suns exploding, black holes, rogue comets and so one changing the universe in ways both big and small made for a pretty cool and unique universe. The bestest bit of all is this universe is basically a database of course and on the bizarre chance you explore all of this one, you just say regenerate and you get another 25,000 world universe, following roughly the same constraints listed above (not many) and the rest is left to chance and "evolution". IOW a game that if you like it, never ends for you.
This by itself was enough for me and set about designing it over the years but I did see some larger aspects that could lend itself to story arcs that I never had the energy to create, interstellar wars, political intrigue and so on. In truth, I would have been happy to see just the exploration aspect of such a thing become available to play in my lifetime. Alas, that doesn't seem to be likely. Some games seem to nudge around the edges but then lean too far into warfare to the neglect of pure exploration.
* Fun encryption at the border: When the current insanity at the border started and everyone was suddenly forced to unlock their phones and tablets, jailtime ensured in some cases and loss of privacy in the rest as the travelers rights are trampled. I saw this happening and waited and waited and never did see the perfect (and in almost uncatchable and very quickly available) solution, so here it is:
First at setup/partition time, set up two bootable partitions; the first is the smallest, comprising about 20% of the available space. This partition would be standard Win32 or exfat. The second partition would in fact be Linux-based, maybe Ext4....and encrypted. The first partition contains an image of a very generic users device, completely made-up data but the type and layout resemble an Android or iPhone factory install. The second partition is encrypted which you keep the key to.
One more piece completes this picture: the bootloader. This is the program that is loaded when the power button is first pressed, battery inserted, etc. Normally this is where I would insert the password request to unlock (and decrypt) the phones main partition. However long, long ago in a galaxy far far away I was a security system installer and repairmen. One emergency feature on every keypad was the "duress" code, which of course is what you enter if someone has a gun to your head, knife to your throat, loved one hostage, etc. In the normal case, this seems to unlock the system in case the intruder is watching but calls the cops silently, etc. I used that trick in this case to add a duress code to the boot loader. Say the passcode for your phone is 12345; entering that will decrypt the *second* partition and boot into it. However if you entered 12346, the boot loader simply boots into the first, open dummy partition and leaves the user there until next boot.
The upshot is if you find yourself forced to unlock your phone at the border you give them the duress code which unlocks the dummy. The agent looks at it, noses around, the dummy info is enough to bore them at-best. With nothing to find, no shifty moves on your part, there is no reason to look further and you go on your way, seemingly compliant. Of course, three steps away you reboot, enter the correct password and no ones the wiser.
This is nothing new, just putting together existing stuff and could be refined a great deal I regret someone not doing it yet. If I were capable still I would do it and open-source it in an instant, making a kind of safety free for everyone.
* I still think someone should expand my...I don't want to call it encryption because its not that, it is a method of moving any block of data from point A on the net to point B, past any firewall and would be totally undetectable due to the nature in which it works. Originally I came up with this idea back working on PS3 for Sony part of a skunk works kind of project but the clear piracy applications of it made them shy away...but good ideas tend to stick around and over the years I realized it was more than a way to pirate movies, if there was ever a need for human rights organizations to move a block of data, be it incriminating video or records of abuse, past nationalistic firewalls and other impediments, this would work great. The frustrating thing for the folks trying to catch it is that it will appear that one minute the file in on machine A, NO interaction between A and B nor coordination action between A, B or anyone else (so nothing to detect) and suddenly the file will appear on machine B.
It works by simply recognizing the fact that for the 90-quadrillion things to say the the equal number of ways to say them, on the net, in a computer there are only 256 ways to express each character. Each of these represents one small bit of information. Its only when its all together does it become War and Peace or Mein Kampf.
Further, since there are so many things that can be said (data to be expressed) and only so few ways needed to express them (ASCII 0-255 represents every letter in the English alphabet), then it only makes sense that for every single letter or byte in the secret file, those same bytes exist in millions of other, non-secret documents all over the Internet, publicly available. Carrying that thought further, if thats true and with so few byte combinations to work from (again, just 0-256) then by statistical probablility you will find many of the same groupings together all over the net as well.
Simplistic example to make the point: Say you are hidden behind enemy lines and you have the message "The Enemy Will Attack At Dawn On the 27th" to get out, yet the enemies can monitor all of your lines in and out watch for strings that look like what might be your message.
Howver in the simple scenario, you being hackerish in nature, wrote some scripts that scroured and indexed various public, non-changing internet repositories. Then you wrote a script that took your message, found each of those words in some other document on the net and compiled a simple, shorthand list of links to those documents and codes to indicated where in the document the key word would be found. This list is then transmitted with none of the original message in it. On the recieving end, they simply run a script that opens each document, gets each word and writes it to a local file. When done, the local file has the secret message in it.
At its core, this is it. I have glossed over a few things; this is me wearing my old project manager hat. Things in this list are things I consider not to be show-stoppers, things that you could live with and still demonstate the working system, things that I know have been solved in the past and so I am not about to resolve any of them; that work will be left for anyone coming after me.
One thing someone might note, English words and single bytes are not synonymous. I know that, I have a hard time explaining what seems so clear in my head these days and that is the best examply I have. I am also assuming I am not speaking to a computer scientist. If so I would tell them that not only does this work but actually it works on a data scale using standard installed operating system files as data repositories. What this also means is that there are many repeating byte-patterns in non-encrypted EXE, DLL (on Windows) and executables everywhere else. What this means in I could write a nasty virus, use software to analyze the byte-sequences and find as many matching patterns in a standard Windows 10 install as possible. In point of fact I know I could locate the entire virus code base inside of Windows, not because Windows is bad (it is) but rather its big and big means lots of code. For our purposes that means one of two possibilities: a virus that can appear almost instantly by magic or one that appears about 1 second later, an eternity to computers. But every single one would work.
Not picking on Windows, any computer system with a stock or near-stock installation would work fine. The only way it would not is if I was on using Mac files to gen a Windows virus. The raw data works of course but the likelihood of Mac files just being there on a Windows computer, well...
If you didn't want to use OS files (good for disconnected systems) then there is a shit-ton of stuff like PD movies for free (each clocking in at 600 megs or better of data to use), NOAA had tons of ocean data out there, NASA has public libraries of video and images available.
That is another kind of beauty of it; if someone starts to look for the "recipe" file to recreate some specific movie and is blocking it, the pirates just have to rerun to indexing app to find alternative sources for scraps of the move and presto you have a completely new and undetectable recipe file.
As a kind of proof of concept, back when I still had a brain I set up my little server farm in the back room, installed software I wrote to make them work together, share and solve big number-crunching kinds of problems. Used that rig for all kinds of fun stuff. Anyhow I was able to recreate the an entire 22 minutes episode of South Park (was fan back then) from a simple jpeg of Cartman I think and later I used the trailer for the latest Sony Spiderman movie to completely regenerate the entire feature film, just from the trailer. It works. It originally when through every byte of the Spiderman movie, scanned ahead as much as a hundred bytes, then scanned the trailer for largest maching sequence. Once found, the particulars were written to a "recipe" file. For example if scanning the original movie and starting at byte/position 1000, a 50 byte block is selected, positions 1000-1050. Then the trailer is scanned for all 50 bytes. In the unlikely chance they are found, the system writes down where it found them in the trailer (how many positions in from zero) and how many total matched characters there were. Say 16 are found to match and this sequence begins at position 19958; the line might read:
Size: Original Pos: Source Pos:
16 1000 19958
The system reading this would know to open the trailer, move to position 19958, grab the next 16 bytes and write them to the (now being regenerated) movie, starting at position 1000.
Now just think Lather, Rinse, Repeat. This has worked in every scenario I tried it on, until my brain went south.
So I guess the upshot or point of this is:
* Every byte in every secret or copyrighted ANYTHING is also located somewhere on the Internet in a publicly-available document.
* So if you have a good internet connection and need to carry secret or private shit with you, it makes no sense to do so since now at the borders anyone can just unlock your shit and have their way with your data. This way, the secret stuff stays out, off your phone, tablet, whatever and only when you really need the secret document do you run the app to reassemble it all and presto, you have gotten past some of the best security in the world.
I hope some one does something with this, smooths the rough edges; I did the heavy lifting back about 10 years ago...its cool though, I still love the idea.....and it would totally upend the whole bit torrent way of doing things but in a good way....a hacker in Ukraine can use his PS3 in Linux move to super-computer crunch the latest movie, say Tenet and then just distribute the ambiguous resulting recipe file, then presto each user who wants it gets it with no risk, the MPAA, FCC can watch every byte going in and out and because the retrieval app works like its retrieving web document data and most of that data is really small in a per-item count (see 16 bytes above, this is a really good sequence) so at worst, it just looks like standard web-traffic, another design goal I had, the hiding in plain sight thing....
Another thing I didn't get to finish was our Video On Demand system we built starting back in 1999 I think or maybe 2000 at the lastest. Beth was fully disabled at that point, and even though she could get out of bed with effort and pain, it took so much for her to try and find something in our DVD collection to watch while I was at work doing insane hours at the time....so what is a hacker to do with a problem like this, hundreds of physical DVDs, lots of scrap hardware from Linux experments and a network? Yet, I designed our own Netflix for our house. Sure the first years were pretty rough, with the TV "remote" being a wireless PC keyboard and most of the streaming video was limited to things like animation such as South Park. Hey I was teaching myself how to do ALL this stuff, from streaming and server load balancing to video encryption and transcoding, finding what worked best on the least hardware, etc.
This has continued to build and be improved on for 20 years now; we have not had "cable" or Dish network in that long. Not all improvements were to the streaming hardware and process; along the way I invented and published an open source project called DVD Metabase, which basically worked like CDDB. You know when you stick a music CD in your laptop, it reads it and somehow knows whats on it? What track is what and so on? It does that by running some math on the data on the CD, comes up with a unique "key", then looks that key up on the Internet. If found, it downloads all the "metadata" about that CD, what year is was made, genre, track list, etc. I did the same thing for DVDs so if you stuck a disc into your laptop, it knew which track was the main feature, which tracks were "extra features", which were spam, etc. Finally (and this was the point of it all), it made ripping from physical media a snap. I integrated it with Handbrake, the cross platform ripper from hell and came up with a system that, even if you knew nothing about video, DVDs, etc you couild stick in a DVD, the system would analyse it and not just rip the main file if you only wanted that but would also apply custom settings to each rip so you could have animation rip with one configuration, main features with say the quality turned up, extra features could have it turned down to save disc space, etc . And finally this system would then not just rip but properly name everything and stick it right where you want, in my case, overtime that target became a 12 terabyte NAS (Network Attached Storage) parked on our network in a back room. In our case, I set up the NAS to have three partitions, one for movies, one for TV shows and one for animation/anime. Inside of each are sub-category folders like there is movies->action, movies->drama, movies->documentary, etc so if I am in the mood for say a film classic like Casablanca I just surf to movies->classics->casablanca and there it is. Scifi, Fantasy, War, Westerns, Comedy, Seasonal and Musicals are just a few categories here.
On TV we broke it up ROUGHLY by genre but since TV crosses so many, this was a failed effort at enforcing order on chaos. Otherwise whole runs of series (sans commercials, natch) are stored under the series name->season number. So if I wanted to see, say the X-Files classic Clyde Bruckmans Final Repose I would surf to TV->Scifi->Mystery->Xfiles->Season05->Clyde.....you get the idea.
Animation is a whole 'nother ball of wax since we started in an American, Spiderman/XMen/SouthPark kind of thing but then decided Disney had the better options so started filling with that but thats when I started at Sony and we got hard-wired into the Anime world and so there is a VAST selection of anime out there...so the animation drive is a hodge-podge of stuff, I did my best.
On each TV in the house I have a little network box (with an honest-to-gosh remote) that watches that server and takes each folder of movies or videos and makes that into a menu item to choose from. Looks like this:
Now all of this is to show where its been and where it is now. Where develoment "ended." Howver thats not all that was in the pipeline. We had a pretty sophisticated suggestion system Netflix would have killed for, plus with all the video data and metadatga we had on a per-film/show basis, we had the abiltity to do wild things like....say you and a friend are watching a movie with someone in it but you can't place who that was or what they were in. The tight integration with our system would allow you to freeze a frame of video, get a list of actors and character names of who is on-screen, then if you decided to you could drill into one of the actors for example, find other stuff they did, locate it on your system and schedule it to play next. Or say watching Stargate SG-1, Apaphos dies like 6 times, he is basically Kenny from South Park with an attitude and some really sketchy friends. This would let you freeze on him and instanstantly jump to any of his previous death scenes, Picture in Picture....this was just the tip of the iceberg but for someone who loved TV and movies, this was a playground and a half I never got to finish.....
I may add to this in time but this is the extent of my "regrets of things left undone" which isn't that much and certainly stuff I can't do now even if I wanted to, so I am not beating myself up for not doing them now....On the upside though, I don't think we have sat thru a commercial or advert in at last 10 years and then only if stuck in a hotel or something. Right now we have every single episode of every season of every show we liked, digitized and stored, sans commercial breaks. Life can be good.