UR.IMG.UR (iPad) - Still crazy after all these years...
UR.IMG.UR (iPad) on the App Store.
When I started this project, I thought, "Ah, the differences between AppKit and UIKit are so infuriating!" When I finished this project, I realized 95 percent shared source code (not counting XIBs) was a definite possibility for future projects.
2016 Nibitaph - Build Mac and iPad applications from common source base in Objective-C 2.1
I hate wasting time. For me, wasting time is rewriting perfectly good code from the Mac so that it runs on iOS and vice-versa. Or trying to port UIKit graphics code back to AppKit. My solution, developed through rapid-prototyping techniques, was to create a protocol-oriented union of the two Kits and write my code to that. The first major project to utilize this library is UR.IMG.UR which is shaping up quite nicely.
I hate laying out Nibs twice and I hate Storyboards with a passion. But the thing I dislike most is doing something twice. Like writing two sets of code that are weirdly similiar. Somehow I was able to resolve all these annoyances with Nibitaph.
My hobbies include watching WWDC videos from 2011 and earlier (I still have much to learn!) and collecting/refurbishing Snow Leopard Macs from the peak of the Steve Jobs era. I found this mint 15" 2009 MacBook Pro at simply.ca by accident and just installed a SAMSUNG 500GB SSD in it. Love it! Runs all my PowerPC apps and just used it to build new versions of PPC MegaPEG and MPressionist for publishing on this blog. It's my new favorite Mac of all time. The battery/HDD compartment is just so well designed.
Hmmm, can I remember the original impetus for Quarantino? I think it was trying to install Android Studio. Which I had to sign with my own Developer ID certificate. I decided I could trust Google, probably. No, wait, it was because Skype was giving a warning. And maybe it wasn't codesigned. In any event, it was a viable use case and fiddling with the command line to check the signing credentials and quarantine status of an app seems like a hassle.
Also, at this point, I was itching to "ape" the look and feel of system utilities like Disk Utility.app.
Like most of my modern ObjC apps, the entire app is based on Cocoa bindings and KVC-compliant controller objects, even for things like security entitlements and so forth. It completely escapes me why this functionality is not included in Interface Builder for iOS.
As the cryptographically-sealed receipt evolves and changes, use PKCS#7Viewer to update your working knowledge of the documented and undocumented fields in the receipt.
I wrote this app as a Q&A/test-harness for the receipt-verification code generator for Tighten Pro. Tighten Pro utilizes 3 distinct receipt parsing implementations as "sanity-checks" for one another. For PKCS#7Viewer, I wrote a recursive PKCS#7 & ASN.1 parser in Objective-C. The tree-view is driven by an all-Objective-C implementation. dumpasn1 is included for comparative output (requires paid license).
In this screenshot, you can see the bundle identifier for the app embedded in the signedPayload of the crypto-signed Mac App Store Receipt.
Regarding the watermarking of teleplays and feature film scripts, I was seeking a solution that would result in a reasonable file size and would not pollute the resulting PDF file with search terms (i.e. the watermarking text). I came up with using patterns of dots with voids for the watermark text. I think it's an effective solution. Developed in Xcode 3.x with Objective-C.
LICENSEE: 0x00000001 LLC
Precise emulation of the POLAROID LAND CAMERA CIRCA 1950? Yes, please. Originally inspired by some photographs taken with expired film. Later pursued vigorously through the acquisition of a collection of cameras and as much expired film as I could find on eBay. Sadly most expired film for the LAND models is far too damaged to give interesting results.
This project was essentially a mindbender in resolving the innumerable and maddening differences between desktop OpenGL and GLES.
My first major UIKit project for iPhone 3(?) Has been updated but not submitted to App Store as of yet. I believe there are some problems with the increased working set of the OS wanking FotoRoid 1 on older devices.
LICENSEE: Digigami, Inc.
My first major Cocoa and multi-core project, MoviesForMyPod is compatible with all Intel Macs in existence and (currently) still runs perfectly on all of them. Granted, some of the conversion templates are a little dated, but still a great way to make a ringtone for the 2006 Nokia GSM phone.
Originally designed to drive the MegaPEG QT plug-in into the multi-core Intel era. But as it turned out, very useful for driving the existing QuickTime 'spit' exporters.
LICENSEE: Digigami, Inc.
FINAL (REQUIRES G4/G5 or ROSETTA/Snow Leopard): electron-image.ca/DGMPRMAC_esd333.dmg (PASSWORD: 'mpressionist')
The suite of MPEG-2 stream analysis tools I developed worked well. Unfortunately, I spent a great deal of time writing Altivec (PowerPC) code to optimize them. Some of that work (like writing an Altivec floating-point DCT) was satisfying in it's own way. But the switch to Intel was a slap upside the head. Although I looked into porting the tools to Intel, the writing was on the wall for MPEG-2 (read: H.264) so I moved on to other projects.
This is a screen grab of motion vectors in an ATSC HDTV stream downloaded over-the-air using an Elgato EyeTV and demultiplexed (from MPEG-2 TS) into elementary streams for analysis by/with MPressionist HD.
LICENSEE: Digigami, Inc.
FINAL (REQUIRES G4/G5 or ROSETTA/Snow Leopard): electron-image.ca/DGMEGMAC_esd333.dmg (PASSWORD: 'megapeg')
Much time spent understanding bitstream syntax and the like for MPEG-2 encoding/decoding which ultimately led to MegaPEG HDTV. Essentially my first and last major PowerPlant (C++) application for Mac.
While the Digigami MPEG-2 encoder for Windows was essentially a bug-fix release of the ISO reference source code, I rewrote most major subsystems of the ISO code for the Mac version, including the rate-control mechanism, the quantization algorithms, and as mentioned in the above post, Altivec'd almost every major bottleneck in the encoder. I did the same for the decoder, generating MPressionist as a byproduct. These two projects gave me valuable insight into digital imaging which I use extensively in my skunkworks project(s).
LICENSEE: Blue Sky Software
Some screen grabs from RoboHelp 3.5, the lost version, demonstrating some of the advanced features, including the use of ActiveX objects to represent WinHelp-specific features in MS-Word. At the time, it was rather forward-thinking. You could also target HTML, which was heretical at that point.
Contrary to what it says on Wikipedia, RoboHelp 1.0 was an independent development effort undertaken by myself in a basement in Edmonton, Alberta, Canada. I originally created it to build a help system for Process Solutions Canada. I have never worked for Blue Sky Software. They were a licensee.
Curiously, the attribution was correctly listed on Wikipedia circa 2011, around the time of the 20th anniversary of RH1.
I did two projects for the college I attended (that I remember). One of them was in PASCAL and was used to keep track of player statistics for an international invitational hockey tournament that they held every year.
The more significant project was done in Microsoft-C and (possibly) Vitamin-C (windowing system for MS-DOS). Essentially, at the start of the school year, the students would convene in the gymnasium and course registration would be done at individual banquet tables arranged around the circumference of the room. I developed a graphical system for registering students that ran on the PC. I recall that we used a sneakernet (read: 5.25" floppy discs walked from station to station) to collate the results into a master database.
I did not have any experience with networking at the time and from what Bill Hackborn (my faculty advisor) told me, the system was still in use well into the 1990s.
I had become familiar with Vitamin-C (or similar DOS windowing system) during the summer job I held between my first and second year of college. I worked for Lonnie Nunweiler at KING BYTE in Edmonton, Canada. KING BYTE developed real-time process control software for natural gas pipelines using ANSI-C and the QNX operating system. That job in particular initiated my lifelong love affair with the C language. I had always loved the speed of raw assembly language but hated the tediousness of it.
PETSPEED, C64 BASIC and 6410 ASM, what's not to love about my first published collection of apps, The Mechanic? I vaguely remember writing a 6502 disassembler in a really short amount of time (a weekend, or week) because the publication of my collection of utilities depended on it. In retrospect, probably not a good idea.
However, 1985 was a notable year for something else: Microsoft’s efforts to bring a 16-bit graphical user interface (GUI) to the consumer realm were realized. Though its origins can be traced back to 1981 under a project called “Interface Manager,” the Windows brand was announced in 1983, and the final Windows 1.0 arrived in November 20, 1985 — 30 years ago today.
I can't quite remember the name of the 6502 symbolic assembler I was using, but I remember it came in a small brown vinyl "leather" binder on 5.25" floppy diskette (UPDATE: it was LISA).
A grade school student spending 1/8th of his annual earnings on an assembler? Madness!
I do recall this winning contest entry as having some ridiculously small number of bytes, like 256 or 512. And that's a fair amount of code in 8-bit assembly. I did not understand the relationship between frequency and tuning a major scale, so the notes in the nonsense musical synthesizer got progressively sour as the register went up.
Although the contest results were published in 1985, I seem to recall actually testing the program on the Apple ][+ in Louise Robbins' science classroom. I never could afford an Apple ][+ series machine.