Collector's Case

Collector’s Case

What’s Collector’s Case?

Collector’s Case is an app I wrote that allows you keep track of your action figure collection. It allows you to keep specific information on your pieces, share your pieces, and honestly works exactly how I want to track my collection (I mean I wrote it after all). I have a lot of fun plans for the app and hopefully get to implement them all in the future.

You can find it here on the App Store. Collector's Case

App Store Description

Do you keep up with your Action Figure collection using a spreadsheet? Wish it could do more? Collector’s Case is designed to allow you to track YOUR toys and your collections in ways that work for you. You can keep track of specific items, add pictures of them, and add details for each item.

It was designed to showcase your actual toys and collectibles. Have that rare prototype? Rocket Firing Bounty Hunter? Maybe even everyone’s favorite mouse on everyone’s favorite Commander. What about that Sliced Bread Barbarian? Showcase YOUR items and not someone else’s pictures and stock images. Keep the information you want listed!

Need to dig up some information on your collection quickly? You can do an “Advanced Search” using specific details you need. Imagine you are at a convention and need to know which of your figures are not complete? If you added the detail on whether an item is complete or not, you can quickly do a search and see everything that’s complete or incomplete!

I designed Collector’s Case to let me track my own collection, and hopefully it allows you to track yours too. I have been using a spreadsheet for years but wanted more out of it. I wanted to add pictures, for it to sync across all my devices, easily accessible and readable at conventions (where wifi and data can be quite scarce) and a lot more. Collector’s Case fits all my needs and helps me keep everything sorted and displayed quite nicely. All the screen shots are from my own personal collection!

History

So back in like 2017 I started toying with ideas to make an app that would allow me to track all my GI Joes, Transformers, and toys in general. I toyed with it, worked on it and actually used it myself for a few years. I added features as I wanted them like pictures, sharing, search, etc and just made this for myself. After talking and encouragement from Brittany I finally embarked on preparing it for Apple’s App Store and on September 19th, 2023 I released it!


The Need for an iMessage API

So like everyone else with an iPhone I'm a pretty heavy iMessage user.  I love having the ability to use it on both my iPhone AND my Macs.  I like that it's encrypted so that random people can't snoop over an open wifi spot.  I also like that just about everyone I know is on the service.  The only thing I think it's missing?  An API.

I would love it if Apple provided an API or protocol for access to iMessage.  I really like the Messages app on the phones, but I wish I could use a different app on my Mac.  I use the Mac app because it's my only choice.  I would LOVE to be able to hook iMessage into Adium or a similar app.  I think this could really open up a lot of possibilities for apps.

Other possibilities are that a fully open API would open up would be other layers of encryption if you wanted them. Services like Adium provided encryption across services like AOL (RIP) and Yahoo (RIP), so it could stack that on top of Apple’s built in encryption. I don’t think it’s really needed, but having that option would be great.

Remember how when Twitter started it had a completely open API? There were TONS of clients and a ton of innovation. I would love to see that same sort of environment around Apple’s Messages. It would even be a really easy way for them to expand onto Android. Someone else would end up making a client for it. Of course let’s all hope that if Apple went this way that they don’t go down the Twitter route and then lock everyone out.

Apple's Messages in iCloud

So Apple finally brought Messages in iCloud in iOS 11.4 and macOS High Sierra 10.13.5.  This was one of the features I was most excited about when iOS 11 was announced.  It was in a bunch of the betas but took until 11.4 for it to make it out into the world. 

Why am I so excited about it?  I like the idea of everything truly syncing with Messages across all my devices and it also provides me with a great backup for my Messages.  Messages are already a part of my daily backup, so they won’t add anymore to my iCloud space usage.  Everything being stored in the cloud should help save a lot of local storage space on my Macs and iPhone.

I’ve also been wanting to do a “clean install” (not installing any 3rd party apps), but I didn’t have a good way to restore messages while clearing everything else.  Now I can do that and restore all my messages.  Not that my messages have any super important conversations, but there are some attachments I might want later that I haven’t saved into Photos or somewhere else.

Messages was the last major service in the Apple ecosystem they needed to be moved to the cloud.  Now to hope iOS merges conversations based on contact info so that I don’t have multiple threads with the same person...

Apple Photos and Mac Storage

So Brittany and I have recently been cleaning up our data situation.  For a while we had data spread between our MacBooks, Mac mini, iPhones, iPads, external hard drives, iCloud, etc, etc, etc. We didn't have what you would call a clear strategy...  I decided to really start working on the best way to manage our data, and we are making progress.  Part of that process was to get Brittany's MacBook Air under control.  She had it so full of data that she was getting a warning message anytime she did anything that she was out of space.  So we decided that we needed to completely start new on her MacBook.  So I formatted it, but I still had one problem.  Her Photos Library was bigger than her hard drive.  So naturally...  more trouble...

Photos provides an option to Optimize Mac Storage in Photos Preferences.  One of the options has the description, "Store full-resolution photos and videos in iCloud.  Originals will also be stored on this Mac if you have enough storage space".  Photos will continue to download the full resolution images from your photo library until your storage space hits a certain threshold (I don't know what the threshold is, and apparently that's still up for debate....) and then stops.  I decided to create a 10gb partition, and I created her library on it.  Photos should download the high resolution photos until it reaches the designated threshold on the new partition.  So instead of completely filling the main partition with photos (which can create problems when you want to move large data onto the drive, etc.), you now only fill that partition.

So far this has worked really well.  I have noticed that the photo-analysis process seems to be taking A LOT longer than it originally did to scan the photos.  We are talking it takes days to go through a few hundred photos (which was not the case before).  I don't know if this is due to Sierra reprioritizing the process or if this is because of the partition.  I am going to assume it is Sierra being more efficient, but I can't be certain.  We are just plugging it up every night and letting it do its thing.  One day it'll finish... one day...

Over all it seems to be working really well, and I'm going to be implementing this same thing on our desktop setup.  We both have our libraries on there, and I plan to limit those to 5gb for each user.  That way we aren't fighting for space on that machine.  We will still be able to work with images if we need them, but we'll just have to pull it off the cloud.

I'm working on a tutorial on how to do this and will update this post with a link to it.

Adding Logos

So how in the world did I not know about Automator on the Mac until roughly December?  I feel like this is something I should have known about, but apparently I am a bad Mac user because I didn't. :( So how did I end up finding Automator?  Pure laziness...

A little while ago (aka I can't remember when) Brittany and I talked about adding a logo to the images on her site.  Brittany started adding her logo to her images and it was taking her forever to do it.  She was adding the logo one image at a time.  After looking at it and thinking "I wonder if I can automate this" I started brainstorming.

My first thought was to write her a tool in Objective C because that's what I know and I think I could do a good job with it.  Being an engineer my mind definitely started over engineering the project.  I started thinking of a lot of fun things I could do in Objective C.  This started becoming another programming project I figured I would never finish...  (I have quite a few of them).  So I did a Google search for "Batch Pixelmator images" (We use Pixelmator for most of our work with images) and then I learned about Automator.  I also learned that Pixelmator has great Automator support.

I started making some pretty fancy Workflows for Brittany that copied and moved files.  They worked really well, but it did more than what she wanted.  So much for not over engineering huh...  I ended up making a simple Automator Service that just adds her logo to the images.  It's a permanent addition to the image, but that's what she wanted!  So now all Brittany does is highlight all the images she needs for her blog and then she right clicks, hits "Add Logo," and BOOM all her images have her logo.

So the only downsides to what I have built is that the logo is only one size.  So whether she is adding the logo to a HUGE image or a small image, the logo is the same size.  Of course now I want to write a more complicated Automotive Service to adjust the logo size...  Or maybe I go back and write something in Objective C when I find time....

 

Using External Code Libraries

So programming is one of the hobbies I have.  I don't consider myself a good programmer, but I'm a decent one (or so I think).  Most of what I have done lately is pure Objective C and Swift stuff (mostly Obj C but I have toyed around with Swift).  I have written apps that were published in Apple's iOS App Store, but I have never depended on my programming ability for my actual income.  Everything I do now is mostly hobby stuff, but it may one day end up leading to a new app.

One thing I have always strived to do is not to use any external libraries or resources outside of official APIs.  I always try to write my wrappers, classes, and everything on my own.  Even though I know there are TONS of libraries and code examples on GIT Hub, StackOverlfow, etc, it still makes me uncomfortable.  I'm worried about unexpected bugs I have to troubleshoot, code no longer being maintained, code I didn't write becoming obsolete, etc.  This can make for a frustrating experience.  I mean what happens if your app bases itself off of a library someone random maintains, they decide to stop all work on it and pull it offline, and now you are up a creek without a paddle (see the whole Parse situation, even though they at least tried to help the situation).

Recently I've actually thought about using two different external libraries because I honestly don't have the time lately to really sit and deep dive into a new topic (having a newborn baby can have the effect on you, but man she is awesome).  I want to be able to use CloudKit outside of the App Store and the only way to do is that is to use the CloudKit web services or JavaScript  frameworks for CloudKit.  Now I have NEVER written JavaScript before and honestly, didn't want to learn how. It's not that I don't think learning JS would be useful; I just have had to pick and choose what I want to learn.  I have looked at Agilebit's AgileCloudSDK and I like how it works.  I've also looked into using some sort of wrapper for the FSEvents API.  Mainly that's because I don't want to really dig into a C API.  While I would love to spend a lot of time learning everything, I just honestly don't have the time.  I'm lucky to just be able to write anything I already know!

While the apps I released in the App Store were all 100% my code and not dependent on others resources, I can see myself using a few libraries in the future.  I try to truly vet the libraries to make sure they are "future proof" and at least have source code available for me to use.  Anything closed source I won't use because I can't change something in it, and I am not sure what all it does (outside of what's documented).  

Hopefully my future does not involve using many of these libraries or code snippets.  I honestly believe buggy and bloated software has increased because people carelessly use unknown code and snippets.  Just because something works that you copied off StackOverflow does not mean it is the right solution.  Let's hope I don't get that lazy and undisciplined as I continue my coding adventures.