Two Weeks In

On May 12th, I started a new day job at the company Atlassian. Atlassian, is THE premier provider of tools for Teams. One of the most exciting parts about being a Newlassian, is that from everything I have experienced so far, they are truly practicing what they sell to customers.

The ability for anyone to work anywhere, while still being part of the team, is a key attribute of #TeamAnywhere. They also focus on their employee’s in a way I have not seen since the very earliest part of my career.

As part of the onboarding that I am going through right now (30 days of basic onboarding and another five weeks of onboarding for my specific role), they talk about the company values. While I’ve been at multiple companies in the past that talk about Company values, most tend to feel like either designed by committee, or a third party consulting firm, as to ensure that they sound pithy but have no teeth. Atlassian’s values don’t seem like this at all.

  1. Open company, no bullshit – This means that the language within the company is direct and open. No corporate passive aggressive crap, that had become all too common in other companies.
  2. Build with heart and balance – This to me is the exact opposite of the “move fast and break things” approach. While Atlassian is now 20 years old, they have a thoughtful startup mentality.
  3. Don’t #@!% the customer – While the values page uses #@!%, the company doesn’t fuck around with the term. Going back to #1 above, the language is direct. It must be the Australian mindset. But it is definitely true, in all the meetings I have been in the customer is front and center, and the teams focus on doing the right thing.
  4. Play, as a team – Software is a team sport. Business is a team sport. While people call out the “leaders” or “founders” as the people who are successful, it can’t be successful without a team. And as such, the people I am meeting and working with are really focused on everyone succeeding.
  5. Be the change you seek – And finally, all of the prior items lead us to how can you make the change you need to be successful.

I am only two weeks in, but I already feel like I made the right choice to pursue working here. Will check in again in the future, as I continue to move forward in this stage of my career.

Have You Considered, LLC

I’ve been working for some time to appropriately setup a business around my App work, along with other activities I’ve done. To that end, the business has been setup as a LLC.

A LLC is a Limited Liability Corporation. And this morning, I have updated the copyright on all of my apps to show that they are part of Have You Considered, LLC.

On-Device Design Failure

Privacy

Privacy is one of the reasons I really like Apple products. Apple tries to keep things happening on device for the sake of privacy. I try to keep to this same design principle for my apps. I have feel it is important that people can trust that you are not doing things with their data. And to that end, I’ve been working on a new app, that will contain some very personal data. That data should only be available on the device of the user.

Features

One major feature that the app MUST have is to trigger an event if the user is no longer able to respond. To achieve this feature, I had thought to send the user a local notification, on a periodic schedule of the user’s own choosing. I would then monitor for a response to the notification. The app will trigger sending data to someone if a response is not received within a certain amount of time.

I have built out the scheduling mechanism and added in logic for acknowledging that the user has tapped on the notification. Those were the easy parts. Since then I’ve investigated triggering an event via the app when the notifications are sent. This does not seem possible, as most likely the app will be in a background state. At this point, I have to use a remote notification, breaking my rule for only on device notifications.

Challenge

Given that the notification is only there for proof that the user can respond, this is probably not a big security / privacy issue, but I had not wanted to track any data about any users. This will require that I register the device, and the user being able to respond. It will then make it so much easier to add additional features which take advantage of having this server based backend.

Should I do this? Or should I call the app off?

Latest Activities

I’ve been working on a few projects lately, and it has impacted my desire to blog more often. Just a few things I have been working on include:

Building a business – yeah. this is a big deal. I retired from my “day job” back in October, and since then I’ve been working with a startup called TVPCT, Inc. As Vice President – Technical Strategy and Operations, I am helping the team focus on two things:

  1. Improving their technical solution.
  2. Improving their operational posture.

Like many startups they have been working hard on creating a technical solution, that not only meets the needs of the founder, but that also addresses the many requests from visionary early users. They have an incredible solution that allows SMB (Small and Medium Businesses) take advantage of the recent explosion of AI capabilities. I’ve been helping them understand issues like Scalability, Maintainability, and Customer onboarding. It’s an exciting time to be working on these challenges.

Improving my technical credentials – I received my AWS Architect certification and am currently working on AWS Security certification. These two certifications are both technical and challenging. Many of the practices and learnings are applicable for other platforms too.

Releasing new Applications – I’ve released a new application back in January (Quick Localizer) which allows for easy localization of your application developed within Xcode. Xcode uses a xcstrings catalog for all the strings in your application. As such, we can take advantage of Apple’s language support on macOS to translate strings from one language to another. I am currently working on two new applications:

  1. Vinyl tracker – an application that allows you to keep track of the vinyl records in your collection.
  2. Letter tracker – an application that allows you to track physical letters that you send to people.

I am really excited to work on these new applications, as they are giving me an opportunity to really stretch my knowledge of SwiftData and SwiftUI.

Greet Keeper 1.5 Feature Test

One feature I’ve been wanting to add for Greet Keeper is to allow a user to grab the image of the cards they’ve sent from the manufacturer’s site, or if they sent an e-card to include an image of the ecard.

To that end, I’ve been toying with adding a new picker to the add Card Gallery image. Here’s a prototype of it a simple one screen app. What do you think?

Greeting Keeper 1.4.1 Updated

I’m really pleased to show off the latest version of Greeting Keeper, version 1.4.1. The design has been slightly tweaked from 1.4.0 to fix a few issues with colors and navigation..

The following video shows Greeting Keeper running on the iPhone SE (3rd generation) simulator.

When you launch the app for the first time, you are presented with a simple walk through which describes what the three tabs are for:

  • Occasions – which are simply any reason you may wish to send out a greeting card. Examples include: Birthdays, Anniversaries, etc.
  • Cards – which is where you create a gallery of cards for specific occasions.
  • Recipients – which is anyone you send a card to. You can either pick them from your contacts, or manually add their information. You can even classify the recipient as family, home, or work. I added this, for a possible future feature to print address labels for mailings.
  • Sending a card to a recipient – this is about tracking what card you sent to who. You do this by selecting a resident and pressing the + .

I think the app is now fully feature complete for all the basic functions. As you can see on many of the screens you can long press on things to edit them, and even just tap on a card to see a larger version.

I’d love to hear what you think of the latest version, so please rate it and review it on the app store, and also drop me a comment here for new features you may wish to have.

So far I have the following ideas in the backlog:

  • Add an App Intent to show a gallery of a specific event type’s card. This would be used to show a widget full of cards
  • Add ability to view all the people who received a specific card from within the Card Gallery
  • Add date range selection for the various PDF reports.
  • Add additional information on the full screen card view, i.e. manufacturer

Greeting Keeper 1.4.2 Released

There’s been a few releases over the last few weeks, but I am running into one ongoing bug on the visionOS version. The PhotoPicker causes a looping situation, that I’ve spent days trying to resolve.

The code works fine on macOS, iOS, and iPadOS, as such I am thinking that it is a SwiftUI behavioral difference on visionOS. So far, I’ve not had much uptake on the visionOS version, and as such I am thinking that it is not a big deal.

My base assumption is that visionOS users also have either a mac or iPhone, and as such they can work around the PhotoPicker bug by just using the other versions. visionOS still makes a great viewer, and instead of spending more time on it, I would like to add additional features.

What do you think?

Quick Localizer – Now available!

If you are a developer, who uses Xcode, then you need Quick Localizer! This app helps you get started on the path to support multiple languages in your app.


Check out the coming soon post I wrote a while back.


The app is really easy to use, and has a simple $4.99 one time charge.

I’d love your feedback and reviews. I am leveraging Apple’s own translation features, but packaging it up nicely for your Localizable.xcstrings file.

Coming Soon Greeting Keeper 1.3.0

It’s been a lot of fun updating Greeting Keeper, and I really appreciate the help I am getting from all my testers. This coming release will have a new “one time” getting started view. Should make it easier for new users to understand the application as a whole. You can see a demo of it here.


The other BIG change is a total rewrite of the PDF generator. While I am guessing very few people use this feature, it is a great way to get a backup of your data.

You can generate a listing of:

  • all the specific cards you’ve sent by “Occasion”
  • all the “Occasion” cards (including how many you’ve sent of a specific card – great for re-ordering your favorite “Thank You” card),
  • listing of all the cards you’ve sent to a specific “Recipient”
Detail Screen for a Recipient (in German)

Additionally, I used my new Quick Localizer to update the app for over 10 languages! Can’t wait to see what everyone thinks about this.

Coming Soon – Quick Localizer

This past weekend I attended a monthly Hacking with Swift session to build an app within two hours. Paul Hudson does these sessions as part of the paid “plus” service and usually recommends that someone clean up and/or complete the app and get it on the app store.

My Completed App

This is the first month where i decided to take him up on the challenge. Introducing “Quick Localizer”.

This app allows a developer to either start from scratch, or take an existing Xcode Localization strings catalog, and generate translations for Apple supported languages. The output can then be saved to a Localizable.xcstrings file to be included in your Xcode project.

Initial Features

The session on Saturday created a great frame work with the following features:

  • A picklist of “supported” languages, based on macOS Sequoia’s
  • Ability to create a .xcstring output file
  • Ability to translate a list of strings to export

A few additions

While this was a great starting point, it wasn’t enough to ship the app. I spent time on Sunday then adding the following features:

  • Ability to import an existing .xcstring file and display the source strings in the translation view
  • A secondary screen that allows you to look at the translations for the strings. You can select which language you’ve translated
  • A base set of instructions as the default view in the text editor
  • A cool icon

Polishing it

Putting this all together I quickly submitted the app on Sunday night, only to discover Monday morning that it did not correctly handle two key errors:

  • Loading an incomplete .xcstrings file, would silently not allow for translations
  • Saving the file should defaults to Localizable.xcstrings
  • Localized the application using the translations for all the supported languages.
  • Don’t forget my privacy policy.

I’ve also decided to charge for this app. It’s a one time charge of only $4.99 in the US, with the appropriate amount in other countries.

I will post a new blog post when Apple approves the app.