Learn Core Data in SwiftUI visually

Core Data can be a challenging and complex framework to get a good handle on. This book does a great job of demystifying some of the seemingly archaic features. Take for example Sorting and Predicates. These are dissected and individually examined and explained. I could see the pages about Predicates becoming the go to resource to this often arcane looking language. I’m less than 200 pages in, and I’ve learn a ton, even though I’ve been using Core Data for more than 10 years. 

I love the format of these Big Mountain books. They take the time to break down each feature, concisely help to define them, in a visual style that is unique in the tech book industry. If you’re like me, a visual learner, this is the series of books for you. 

Mark Moeykens unique visual guides are a great learning resource. Whether you’re just getting started or already are a seasoned iOS developer, I think you’ll find the content clearly and cleverly presented. 

Buy Core Data Mastery here:

iOS Interviewing a ChatGPT Candidate

For fun I decided to interview ChatGPT as an iOS developer. I asked it the questions I would ask any iOS developer. ChatGPT draws upon readily available answers that are a year old, so the answers can seem a bit dated.  Some of the answers are not accurate and some elements have been renamed. eg. NSOperations is now Operations

Explain the difference between Structs and Classes in Swift programing language?

Structs and Classes are both very similar in Swift. They both allow you to create custom data types, used to store related data and functions.

The main difference between Structs and Classes is that Structs are value types, while Classes are reference types. This means that when you assign a Struct to a variable or pass it to a function, the Struct is copied. With Classes, only a reference to the existing instance is used.

Structs are more memory efficient and are used when you want to create simple data structures. Classes are more powerful and are used to create complex objects with relationships. Classes also support inheritance, allowing for re-use of code.

How does memory management work in iOS, and explain reference counting?

iOS memory management is an automatic process that is managed by the operating system. The iOS memory manager is responsible for allocating memory to applications, tracking memory usage and reclaiming memory when it is no longer needed. It works by allocating memory as needed and freeing up memory when it is no longer being used. iOS also helps manage memory by suspending applications when they are not in use. This helps save memory and battery life.

Reference counting is a memory management technique used by iOS to track the number of references to objects in memory. When an object is created, its reference count is set to one. When a reference to that object is passed to another object, the reference count is increased. When the object is no longer needed, the reference count is decreased. When the reference count reaches zero, the object is automatically freed from memory. Reference counting is an effective way to manage memory and ensure that objects are not kept in memory after they are no longer needed.

in swift programing what is an Optional and what type of object is it?

An Optional in Swift is a type that can represent either a value of the specified type or ‘nil’ if the value is missing. Optionals are used to represent values that may or may not exist, and provide a safe way to work with values that may be missing. Optionals are a kind of generic type and can hold any type of value.

Aren’t optionals enums?

No, Optionals are not enums. Optionals are a type that can represent either a value of the specified type or ‘nil’ while enums are a data type that can represent a limited set of values.

[Author’s note: I don’t think this answer is accurate. Options ARE and enumeration type.
@frozen enum Optional<Wrapped>
An enumeration type that represents either a wrapped value or nil, the absence of a value.]

Given the String “kayak” write a Swift function to prove it in a palindrome?

func isPalindrome(string: String) -> Bool {
  let reversedString = String(string.reversed())
  return string == reversedString
}

let palindrome = isPalindrome(string: "kayak")
print(palindrome) // prints true

Write the same to prove that “Madam, I’m Adam” is a palidrome?

func isPalindrome(string: String) -> Bool {
  let removedSpecialCharacters = string.replacingOccurrences(of: "[^a-zA-Z0-9]", with: "", options: .regularExpression)
  let reversedString = String(removedSpecialCharacters.reversed())
  return removedSpecialCharacters.lowercased() == reversedString.lowercased()
}

let palindrome = isPalindrome(string: "Madam, I'm Adam")
print(palindrome) // prints true

How can you make Core Data multithreaded?

It is possible to make Core Data multithreaded by using managed object contexts. Each thread should have its own managed object context and should not share any resources. To ensure thread safety, managed object contexts should be locked when writing to the persistent store. It is also important to be aware of the potential for deadlocks and use appropriate locking patterns. Additionally, all access to data should be performed on the main thread and any background threads should be used only for reading data.

how can you make Core Data thread safe?

Core Data can be made thread safe by using managed object contexts. Each thread should have its own managed object context and should not share any resources. To ensure thread safety, managed object contexts should be locked when writing to the persistent store. Additionally, all access to data should be performed on the main thread and any background threads should be used only for reading data. It is also important to be aware of the potential for deadlocks and use appropriate locking patterns.

Explain all the ways to set contraints in Xcode?

1. Storyboard: You can set constraints in Xcode’s storyboard by using the Interface Builder. This is a visual way of setting constraints, allowing you to drag and drop elements and position them on the screen.

2. Auto Layout: Auto Layout is a powerful tool built into Xcode that allows you to set constraints for elements in your user interface. With Auto Layout, you can set constraints that control how an element behaves based on the device size and orientation.

3. Size Classes: Size Classes are a feature of Xcode that allow you to set different constraints for different devices. For example, you can set different constraints for iPhones and iPads so that the user interface looks great on both devices.

4. Visual Formatting: Visual Formatting is a powerful language that allows you to set constraints using code. This is useful for when you need more control over the layout than what Auto Layout provides.

5. Layout Anchors: Layout Anchors are a new feature of Xcode that allow you to set constraints based on the position of other elements. For example, you can set a constraint that an element should be positioned a certain number of points from the top of the screen.

What are the pros and cons of native iOS development versus hybrid iOS development?

Pros of Native iOS Development:

– Native apps are built for specific platforms and are written in languages that the respective platform supports. This allows developers to leverage all of the device’s native features and create a more seamless and intuitive user experience.

– Native apps tend to be faster and more reliable than hybrid apps since they are specifically built for the device.

– Native apps can provide better support for device-specific features such as GPS, camera, and more.

Cons of Native iOS Development:

– Native development can be more expensive and time consuming than hybrid development.

– Native apps require more maintenance and updates since they are built for a specific platform.

Pros of Hybrid iOS Development:

– Hybrid apps are cheaper and faster to develop than native apps since they can be built using web technologies such as HTML, CSS, and JavaScript.

– Hybrid apps can be built once and deployed to multiple platforms, making them more cost effective in the long run.

– Hybrid apps can also access device-specific features such as GPS, camera, etc.

Cons of Hybrid iOS Development:

– Hybrid apps may lack the performance and reliability of native apps since they are built using web technologies.

How do you set up an iOS app to use push notifications in Xcode and AppStoreConnect?

1. Create your app identifier in App Store Connect.
2. Enable Push Notifications for your app identifier in App Store Connect.
3. Create a Provisioning Profile for your app identifier with Push Notifications enabled.
4. Download and install the Provisioning Profile in Xcode.
5. In Xcode, enable Push Notifications for your app’s Target.
6. Add the necessary code to your app to register for and receive push notifications.
7. Create a Push Notification Certificate in App Store Connect and download it.
8. Use the certificate in Xcode to configure your app’s push notifications.
9. Test Push Notifications in the iOS Simulator.
10. Submit your app to the App Store.

in an iOS app, how would you fetch an image from a web URL using NSOperations?

You can use NSOperation to fetch an image from a web URL by creating an NSOperation subclass that performs the image download. Inside this subclass you would use an NSURLSession to create a data task and download the image data from the URL. Once the download is complete, you would convert the data into a UIImage object and store it in a property of your NSOperation subclass. Finally, you would call the completion block with the UIImage object as a parameter.

Can you write a code sample?

// Create a subclass of NSOperation that performs the image download
class MyImageFetchOperation: NSOperation {

  // Store the image data
  var image: UIImage?

  // URL from which to download the image
  let url: URL

  // Completion handler called when the download is complete
  let completion: ((UIImage?) -> Void)

  // Initializer
  init(url: URL, completion: @escaping ((UIImage?) -> Void)) {
    self.url = url
    self.completion = completion
    super.init()
  }

  // NSOperation main method
  override func main() {
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
      if let data = data {
        self.image = UIImage(data: data)
        self.completion(self.image)
      }
    }
    task.resume()
  }
}

What if there is an error fetching the image?

If an error occurs while fetching the image, the completion handler will be called with a nil parameter instead of a UIImage object. The caller of the completion handler will then be responsible for handling the error appropriately.

Can you add the error handling to the code?

// Create a subclass of NSOperation that performs the image download
class MyImageFetchOperation: NSOperation {

// Store the image data
var image: UIImage?

// URL from which to download the image
let url: URL

// Completion handler called when the download is complete
let completion: ((UIImage?, Error?) -> Void)

// Initializer
init(url: URL, completion: @escaping ((UIImage?, Error?) -> Void)) {
self.url = url
self.completion = completion
super.init()
}

// NSOperation main method
override func main() {
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let data = data {
self.image = UIImage(data: data)
self.completion(self.image, nil)
} else {
self.completion(nil, error)
}
}
task.resume()
}
}

How would you create a flow for pull requests to a github repo on a large team?

1. Create a policy for pull requests. Define who is responsible for reviewing pull requests, when reviews should be completed, and how long pull requests can remain open.

2. Create a standard template for pull requests. Include information on the project, the changes requested, and the expected outcome.

3. Require all pull requests to be reviewed by at least one other member of the team.

4. Establish a process for resolving conflicts. This could include discussion, voting, or a consensus among team members.

5. Establish a process for merging pull requests. This could include a single person responsible for merging, or a process of consensus-based merging.

6. Establish a process for closing pull requests. This could include closing pull requests that have been open for too long, or closing pull requests after they have been merged.

7. Establish a process for tracking pull requests. This could include a dashboard or checklist to track the status and progress of each pull request.

8. Establish a process for responding to feedback and making changes. This could include incorporating feedback into the pull request, or creating a new pull request with the changes.

How would you prepare for a job interview as an iOS engineer?

1. Research the company and the position: Learn as much as you can about the company, its culture and mission, and the specific job you’re applying for.

2. Practice your answers: Prepare for common questions about your experience, qualifications, and goals.

3. Prepare questions for the interviewer: Asking thoughtful questions shows that you’re engaged and interested in the position.

4. Review coding fundamentals: Refresh your memory of the fundamentals of iOS development, such as Objective-C, Swift, and the iOS SDK.

5. Review your portfolio: Make sure your portfolio is up to date and reflect your best work.

6. Dress professionally: Dress in a professional manner that is appropriate for the industry.

7. Arrive early: Arrive at least 10 minutes ahead of time to ensure that you have plenty of time to relax and get settled before the interview starts.

What if they ask you about SwiftUI?

If a potential employer asks me about SwiftUI, I would explain that SwiftUI is an innovative new user interface framework for iOS apps. I would describe how SwiftUI uses a declarative syntax to make it easier to create complex user interfaces and how it integrates with existing UIKit code to help create a more unified development experience. I would also explain that I have experience with SwiftUI, having built several apps using the framework.

What about React Native or Flutter?

If a potential employer asked me about React Native or Flutter, I would explain that both are popular frameworks for developing cross-platform mobile applications. I would explain that I have experience with React Native, having built several apps using the framework, and that I have also studied Flutter, though I have not yet had the opportunity to build an app using it. I would also discuss the differences between the two frameworks, such as React Native’s focus on JavaScript and Flutter’s use of the Dart language.

If you were to interview a candidate as an iOS engineer, what would ask them about, and would test then on code examples?

1. What experience do you have developing iOS apps?
2. How are you familiar with Swift and Objective-C programming languages?
3. What techniques do you use to debug iOS apps?
4. Can you explain how memory management works in iOS?
5. What techniques do you use to optimize performance of iOS apps?
6. What experience do you have with Core Data and other frameworks such as UIKit, Foundation, and Core Animation?
7. Have you ever used version control systems such as Git?
8. What techniques do you use to test iOS apps?
9. How comfortable are you with submitting apps to the App Store?

Test them on code examples:
1. Create a simple iOS app that displays a list of items.
2. Create an iOS app that allows users to view and edit data stored in a Core Data database.
3. Implement a custom UIViewController subclass that performs some animation when transitioning between screens.
4. Create a simple iOS app that uses GPS to display a user’s current location on a map.
5. Create an iOS app that uses a REST API to fetch and display data.
6. Create an iOS app that uses the camera to

If I give you eight visually identical balls and tell you that only one is heavier than the rest, how would you find the heavy ball?

1. Place two balls on a set of scales and compare the weight of each.
2. If they are the same weight, place one of the two on one side of the scales, and three of the remaining balls on the other side.
3. Compare the two sides of the scales.
4. If the two sides are equal, then the remaining three balls contain the heavy ball.
5. Take two of the three balls and place them on the scales.
6. If they are the same weight, then the remaining ball is the heavy ball.
7. If they are not the same weight, the heavier one is the heavy ball.

Can you find a way to weigh them in the least amount of steps?

Yes, it is possible to find the heavy ball in the least amount of steps.

1. Place three balls on one side of the scales, and three balls on the other side.
2. Compare the two sides of the scales.
3. If the two sides are equal, then the remaining two balls contain the heavy ball.
4. Take one of the two balls and place it on one side of the scales, and the remaining ball on the other side.
5. Compare the two sides of the scales.
6. The heavier one is the heavy ball.

How would you test you iOS app for Accessibilty and what would you add to the app?

1. Use an accessibility testing tool such as VoiceOver to test that all elements of the app are accessible.

2. Check that all images and text fields have appropriate labels and descriptions.

3. Test that all buttons, links and other controls are labeled accurately and can be easily identified by users.

4. Make sure that all interactive elements can be used with only one hand.

5. Check that all text is legible and usable by people with impaired vision.

6. Ensure that all color contrast requirements are met.

7. Test that the app works with a variety of assistive technologies.

To add to the app:

1. Add a “Settings” panel that allows users to adjust the font size, color and contrast to fit their individual needs.

2. Include a tutorial to explain how to use the app with assistive technology.

3. Add custom keyboard shortcuts to allow users to quickly navigate through the app.

4. Include a “skip navigation” button to help keyboard users quickly skip to the main content.

5. Provide audio cues for all interactive elements.

6. Allow users to adjust the voice speed and pitch of the VoiceOver audio.

7. Add a “captions” option to provide subtitles for any audio or video content.

What about color vision issues?

To address color vision issues, you can add an option to adjust the contrast of colors in the app, as well as an option to invert the colors. Additionally, you can provide text labels to accompany any images or graphics, ensuring that they are always understood.

What is nil coalessing in iOS engineering?

Nil coalescing is a short-hand operator used in Swift programming to simplify the process of unwrapping optionals. It allows developers to check if a value is nil and, if so, use a default value instead. It is written in the form of “a ?? b” and will return the value of a if it is not nil, otherwise it will return the value of b.

What tools can we use for CI/CD in iOS engineering?

1. Fastlane
2. Jenkins
3. Travis CI
4. CircleCI
5. Bitrise
6. AppCenter
7. BuddyBuild
8. CodeShip
9. Bamboo
10. Xcode Server

Can you briefly explain each?

1. Fastlane: Fastlane is an open source project designed to automate mobile app development and deployment. It automates the process of building, testing, and deploying iOS, Android and web apps, allowing developers to focus more on the code.

2. Jenkins: Jenkins is an open source continuous integration and continuous delivery platform. It automates the process of building, testing, and deploying iOS and Android projects.

3. Travis CI: Travis CI is an open source continuous integration platform for iOS and Android. It automates the process of building, testing, and deploying applications.

4. CircleCI: CircleCI is a continuous integration and continuous delivery platform for iOS and Android. It automates the process of building, testing, and deploying applications.

5. Bitrise: Bitrise is a continuous integration and continuous delivery platform for iOS and Android. It automates the process of building, testing, and deploying applications.

6. AppCenter: AppCenter is an open source continuous integration and continuous delivery platform for iOS and Android. It automates the process of building, testing, and deploying applications.

7. BuddyBuild: BuddyBuild is a continuous integration and delivery platform for iOS and Android. It automates the process of building, testing, and deploying applications.

I thought BuddyBuild was acquired my Apple?

Yes, it is true that Apple acquired Buddy Build in 2018. Buddy Build is a mobile development platform that allows developers to easily create, test, and deploy mobile apps for iOS and Android.

is BuddyBuild still available?

Yes, Buddy Build is still available. However, as of March 2019, it is no longer open to new customers. Apple is now using Buddy Build internally to develop and test their own applications.

Spockcast podcast

Here is a compilation of our reviews covering Star Trek Picard Season 3 complete.

Powered by RedCircle

iOS Security

iOS, the operating system that runs on Apple’s iPhone and iPad devices, has a reputation for being highly secure. This is due in large part to the strict controls that Apple places on the development and distribution of apps for its platform, as well as the use of advanced security technologies built into the system.

One of the key features of iOS that contributes to its security is its closed system architecture. Unlike other mobile platforms, such as Android, which allow users to install apps from a variety of sources, iOS only allows apps to be installed from the official Apple App Store. This means that Apple can vet each app for security risks before it is made available for download, which helps to eliminate the possibility of malware or other malicious software being installed on a device.

Another important aspect of iOS security is its use of sandboxing. Each app on an iOS device runs in its own “sandbox,” which is a secure environment that isolates the app from other apps and from the underlying operating system. This means that even if a malicious app is able to take advantage of a security vulnerability, the damage it can do is limited to its own sandbox and cannot spread to other parts of the system.

iOS also includes a number of built-in security features to protect users’ personal and sensitive information. For example, the system includes a hardware-based encryption feature that uses a unique key to encrypt the data stored on a device, which makes it difficult for attackers to access this data even if they are able to gain physical access to the device. Additionally, the Touch ID and Face ID biometric authentication features provide an additional layer of protection for users’ sensitive data.

Finally, Apple regularly releases software updates for iOS, which often includes security patches for known vulnerabilities. Users can enable automatic updates to make sure their devices are always running the latest version of iOS with the most recent security fixes.

In conclusion, iOS security is achieved by combination of design choices, strict app vetting, and constant software updating that allows apple to protect users’ device and data from malicious software and hackers. Apple’s closed system architecture, sandboxing, and built-in security features like encryption and biometric authentication, all contribute to making iOS a highly secure mobile platform.

The Last Happy Meal

The events discussed here happened 28 years ago – Sept 25, 1994 – on this day. The names have been altered.

“I still don’t like it, but I’m ok!” – Anne’s cousin, age 8.

We had three ancient maple trees around our house in Oakville. They were a pain to mow around when doing the yardwork. They deposited a phenomenal amount of leaves on the lawn every fall. It would take weeks to rake them up to the curb for the city to pick up. My daughter Anne also had a tough time in the Fall. She often ended up in the hospital because of her asthma.

The largest maple tree stood in front of the house in the middle of a quarter acre. A few days after the events that follow, I sat down on the front porch. I looked up a this giant being and truly saw its majestic beauty for the first time. 

As I start to write it’s one week since my life had changed forever. I picked up Anne as usual on Friday night, a little late. When I got to her mother’s door, Anne answered a little distantly. She usually ran to me and hugged me. Today she was different. She just said, “Hi,” then turned to get her shoes. 

Anne’s mother, said she had a bit of a cold. Anne had a runny nose and soar throat. Earlier she had been taken to the doctor, with her sister, who had strep throat. However, Anne just had a bit of a cold. 

She picked up a bag with a couple of binders and books, her homework and gave them to me. She turned and picked up a bag with her roller blades.  She hadn’t planned on bringing any clothes. She wore a pink pair of sweatpants and a purplish sweatshirt. She didn’t have her Maple Leafs hat. She hugged her mother and we left the front hall. Still talking to her mother, Anne turned to hug her again. 

Marie told me that she didn’t like to blow her nose as Anne sniffled. As we got into the car I asked her why? “Mommy buys Kleenex that hurts my nose.” I opened the little compartment between the seats and showed Anne that I had her preferred Kleenex. “I know” she said. 

I asked if Anne had eaten yet, as we drove down the highway. As usual, she hadn’t. I asked where she wanted to go. “Somewhere good,” she said. “Like what? Taco Bell, Harvey’s?” “McDonalds! We haven’t gone to McDonalds in a couple of weeks,” she told me. “Last week we went to Dairy Queen. The week before we went home.” Pat, Karen’s sister, and her kids Patty and Jay had been living with us since the beginning of September. We normally went home to see what they would be having. It was treat night on Friday. Patty and Jay got to choose what they ate on Friday, Anne had told me. I told Anne that I had already eaten, so I didn’t care where we went. 

We drove down to the McDonalds on Appleby Line. We got out of the car and walked to the restaurant. We held hands as we walked together. I would reach back with my hand and she would take it from behind. We started this a long time ago when she lived on #8 highway in Hamilton. I would park the car across the street from her apartment building. As we crossed from the building, we would silently take each other’s hand. I would wrap my baby finger around her wrist as we crossed the busy road. 

We entered the McDonalds as a man was leaving with his daughter. I stood behind another man, whose son came from the playroom without shoes. He asked where the boy’s shoes were and to go get them. I ordered. Cheeseburger Happy Meal and a Diet Coke — Anne’s staple diet on Fridays. They were using the new bags which pleased her. Just as we left, the boy came out with one shoe on and said he couldn’t put his shoes on. The man went to help him. We walked back to the car and I said, “Well you got your Happy Meal. Happy Now?”

Anne, reading from the bag, asked me, “How do you catch a squirrel?” I thought for a moment and then said, “I don’t know.” “You hang from a tree and act like a nut.” I thought about the implications of that. I don’t remember what else we talked about, but I did manage to get three of her fries. 

When we arrived at home, the kids told us that they were having pizza. I had gotten out of the car, Anne grabbed her Happy Meal, Coke and her roller blades. I asked her to bring in her homework. “Can you take it for me?” “Sure” I said, “along with all my stuff.” I had my suit, computer, etc.  As she turned the corner, she hollered, “Hello Patty. Hello Jay.” I followed Anne to her bedroom and handed the bag to her. 

The delivery man arrived with the pizza, but he didn’t know how much to charge. Joanne called the pizzeria. They had ordered pepperoni, cheese and olives. Anne loved olives. We all ate pizza in the kitchen. Joanne and I leaned against the counter and the kids ate at the table. I asked Joanne if Anne had eaten her Happy Meal. She had —  a first. 

I went to my room, and hooked up my PowerBook. I logged onto CompuServe. Jay came in and asked what I was doing. “Work stuff,” I told him. Anne came in. She asked me if I could take them to the roller gardens. I said, “We’ll see.” I thought about the logistics. “With who?” “With Patty and Jay.” That’s why she had brought her roller blades, I thought to myself. She got off the end of the bed and went in search of Jay. Perhaps to start working on his mother. 

They came back, a little while later. Anne picked up Karen’s silver tie. “This one is my favourite. See?” Jay looked at it closely. It’s covered with tiny Mickey Mouse icons. “Oh ya!”, he said. “Can you show me how to tie this?” she asked me. “You take the skinny side and wrap the fat side around, up and over the top, around the front, over the back and through.” Anne picked it right up. She went to look in the mirror. Jay asked if he could try one. “Take the Hermes one,” I said. “I’ll show you another way to tie it,” I told Anne. She picked that up as well. “I’ll show you what I used to do in high school. You loosen the tie and wear in to your head like a head band.” They ran around the house wearing the new head bands. 

I went outside to have a smoke. Joanne said I was nuts to let Jay run around with a hundred dollar tie on his head. I told her that Karen paid $5 for it at a garage sale. “Still!” she said. I went back to finish with my computer. Anne came in. I was looking for my hat, which sat on the top of my reading chair. Anne looked behind. Then I got up to look behind, she ran around me. I said, “Where is my hat?” and she said, ”you mean this one?” She was sitting in my place with my hat on. She asked if I was going to watch The X-Files with them? I asked what time it was on. “Soon.” “Go and put on your pajamas first.” 

When I came into the kitchen, Anne asked if she could have a Coke. “There’s a case of Diet Coke in the pantry.” She took one. “Do you want ice?” I asked. She did. I got a purple plastic cup down for her. As she poured her coke, I poppied in two cubes. I refilled the tray and put it back into the fridge, just as Joanne came back into the house. Joanne asked Anne if she was going to record the X-Files for Jen. “Ya, I already have a tape ready,” she said.

I came downstairs and sat next to Anne on the couch. She asked if she could have a blanket. I looked around and she said, “Over beside you.” I gave her the blanket and asked her not to put her drink on Jon’s footstool. “Well, what am I supposed to do with it?” “Put it on the floor in front of you,” I said. She stretched out on the couch and put her feet in my lap.“Rub!” she said. Rubbing her feet I thought about how they were starting to smell like mine. Joanne came and asked if Jay would like to have a snack. She asked if Anne would like one. Anne jumped over the couch, went upstairs and returned with a banana. 

I went outside for another cigarette, when the X-Files was over, which was about mutant fluke worms. Anne came out and asked if I would tuck her in. “I’ll be a minute,” I said. She was reading a book when I arrived. I kissed her good night and left her to read.

Later I wondered if I should put Anne in my bed, since my partner Karen was away and I slept pretty soundly. 

At 10 am Saturday morning, Anne woke me saying, “Daddy, I need my mask.” I looked up at her and could see she was definitely in trouble. Anne’s chest would rise and fall deeply, swiftly, and her stomach would go in and out. She looked like she was drowning, mouth open to pull in more air. I said, “Go and lie down.” I got out of bed and went to the kitchen. 

I called her mother at home hoping she wasn’t already in bed. She had just finished the night shift at the hospital. She was still awake. I asked her to could bring Anne’s compressor to me, because it would take too long to drive all the way to her house and back. I told Joanne that Anne was in trouble and went back to see Anne.

I found Anne in the bathroom. She had vomited up phlegm, clear and slightly yellow. I wiped Anne’s face with a damp facecloth. We both went to the kitchen to wait for Marie. While waiting, I got Anne’s meds out of the fridge and prepared 0.5 ml of Ventolin in 2 cc of saline as usual. Anne and I joked about using her toy airbrush paint toy to give her the meds. 

I met Marie at the door and took the bag with Anne’s compressor. I took the compressor to the kitchen and plugged it in. I told Marie that I had already prepared the Ventolin. She said, “Oh, you didn’t make it right. We’re using Atrovent with it, because Ventolin gives Anne the shakes real bad.” I said, “Since when?” “Oh, for about a year now.” I remember looking at Anne and we exchanged glances. This was news to me. Marie listened to Anne’ chest with her stethoscope.

Marie had brought Anne’s Prednesone and she decided to start her on 30 mg (6 tablets.) Marie asked Anne if she wanted to go home or stay with daddy? Anne said, “Stay here.” While Anne was having her mask, Marie and I stepped outside to smoke and talk. Marie suggested giving Anne a mask every four hours and wrote the instructions for the preparation on the bottom of the Kleenex box.

While outside Marie told me that they had lost a couple of people in the ER last night. I asked again about Catherine and Anne’s visit to the doctor yesterday. Catherine did have strep throat but not Anne.

After she was done her mask, Anne started back down the hall. Marie asked if she had taken her Prednisone. Anne stopped, turned, and put her hand out. Anne sat at the table, while I got her a glass of water. She took her meds, 2 tablets at a time. I asked Marie when the Prednisone would take effect. She said it would take about 6 hours before it would work. Anne then said she wanted to go downstairs to watch TV with Jay.

I watched Anne as she descended, one step at a time, holding on to the wall. Marie said, “When we have to carry her up and down the stairs we’re in trouble.” I went down to see that she had made it. She got onto the open sofa bed and got under the blanket.

I came back upstairs. I said goodbye and thanks to Marie. I went back down. Anne was having another mask. Joanne said, “Anne said it was OK that there was no meds in it.” I said, “No, that’s not true.”

Anne said she didn’t want to watch TV anymore. She wanted to go back upstairs. Joanne picked her up and I took the compressor. Anne told Joanne she wanted to go to my bed.

Privately I told Joanne that I hoped we wouldn’t have to go to the hospital. Joanne had never seen Anne like this. Joanne told me she was fine when she got up. She had some cereal and a popsicle. She said she didn’t eat her cereal as usual.

I found Anne huddled on the floor when I went back to her. She had vomited up again. Marie told me she was to have clear fluids, like Ginger Ale, or popsicles. When Anne was downstairs, she had half a popsicle. I had brought her one, she looked through the wrapper and told me, “You know I don’t like grape.” I went back to the freezer and found half a red one. Anne was trying not to get the red phlegm off of Karen’s carpet. I picked her up and carried her to the master bathroom. I got the face cloth, rinsed it and wiped her face. I asked if she was done. She said, “I need to wash my hands.” I stood up and took her to the sink. I washed her hands cupped in mine.

We went back to the bed and she asked for a wet face cloth. I went back to the bathroom, rinsed the face cloth and returned. “Where do you want it?” I asked. “On my head.” “Oh Anne,” I said, “I hope we don’t have to go to Mac.” Joanne came in. I told her about Anne’s vomiting. Joanne started to clean it up. She left and returned with some soapy water. I went downstairs to look the carpet cleaner.

I came back upstairs and Anne said she needed another mask. She hadn’t really improved from the first mask, like she often did. I went to the kitchen and mixed another in her nebulizer. I went back, plugged in her compressor and put the mask on her face. It was 11:45 AM – an hour since her first mask. I went back and told Anne I was going to take her to MacMaster Hospital. I asked her where her track pants were. She said in her bedroom. I looked around, then I went back and asked her where. She said by the red thing. At the foot of her bed is a small red topped end table. Her track pants were there. I picked up a pair white socks with red toes and her red coat. I returned and asked if the socks were hers or Patty’s. She said it did not matter.

I dressed her by putting on the socks and the track pants over her pajamas (a one piece). I put on her coat on and told her to wait. I went to the kitchen and pack up her medication. I picked the phone and called Marie. I told her we were going to Mac and I would call her from there. I went outside and opened the car. I put Anne’s meds, her school books, and a book for me to read. Opened the passenger door and reclined the seat slightly, so she would be more comfortable. I went back, stopped in the kitchen and write a note to Joanne. I went to the bedroom and got Anne’s compressor, and the small trashcan that Joanne has brought, in case Anne was sick again. I took them to the car. I picked up Anne and carried her into the car. She put her seatbelt on as soon as she got in. I pulled the seat forward, so the seatbelt would provide some protection. I got in and we drove to Mac.

When I got in the car, I tuned the radio to Y95, Anne’s favorite channel. We drove to Abbey Line, where Anne got sick again. I pulled the car over to comfort her. I wiped her face with the face cloth she had on her head. I asked her if “we could precede now?” and we continued on our way.

Sitting at the light on Main Street West was an eternity. I remember going quite fast to get to the front of the other cars and into the right lane. When we got to Mac, I pulled into the temporary lot near Emergency. I got out and went to Anne’s side of the car. I opened the door, lifted her out and asked her to stand, while I reached through the car to lock the doors. I closed the door and picked her up. She wrapped her legs around my waist.

When I got to the screening window at Emergency, the lady asked me what was wrong. I told her Anne had asthma. She asked if Anne had been here before. I said, “Yes, many times.” She told me to sit in the waiting room. A few minutes later a diminutive nurse came out calling Anne’s name. I said, “Right here!” She indicated, so I picked up Anne and followed her. We went in and turned left and went to a small room. She asked me to sit. I wasn’t sure if she wanted Anne on the bed. She indicated the chair.

She, Nurse Shirley, listened to Anne’s  chest and said, “Come with me.” We stood up and left the room. Shirley said to some others milling about, “This kid’s going into “Recus”.  I followed her into another larger room with three beds. Shirley indicated the center bed. She started Anne on oxygen with an adult mask. A doctor came in and started her on two Ventolin masks, one after the other. While Anne was having the first mask, I asked Shirley if I could go and move my car. She said it would be alright.

Shirley and the doctor asked what we had done so far. I told them we had given her two masks; 5ml Ventolin, 1ml Atrovent in 2cc of saline, an hour apart. The last was at noon. It was 1 o’clock when we arrived at Mac. I told them she had also had 30mg of prednisone at 10:45 am, but she had vomited, so I didn’t know if she had it anymore.

I parked my car underground, by the yellow elevators (serious parking.) I went up the elevator, asked someone  how to get to Emergency when I got to the main floor. I went up to the ER window, and told the lady I was going to be with Anne.

When I got back to the resuscitation room (Marie told me the name later.) There was a small 3″ blood stain by Anne’s right wrist. Shirley had put in the first IV. I asked Anne if this was still the first mask. She said, “what do you mean?” I asked if Shirley had changed it yet. She said no. Shirley confirmed it was the first.

Then Dr C and another heavier set lady doctor came in. They asked about Anne. I ran through the morning meds, etc. They asked if Anne had any allergies, we answered in unison, “no”. (Shirley had also asked when we arrived.) They asked what Anne normally took for her asthma. Did she have a cold, etc. I had told them (and Shirley earlier) that she had sniffles and complained of a sore throat. Her mother had taken her to the doctor yesterday, that her sister had strep throat but Anne did not.

The lady doctor, who was taking Anne’s pulse on her left wrist, said to Doctor C that they should start an “art-line”. (I think that’s what she said.) He grimaced and said, “No. I think we should see how she responds to this.” At about this time, Dr R came in, dressed in greens. He was introduced to me as the resident pediatrician from ICU. He listened to Anne. Nurse Shirley said he was here to see of Anne should go to the ICU. He asked if they had done a chest x-ray yet. No. “Then we’ll wait until we have a chest x-ray.”

A young boy was wheeled in bed with his mother and sister. An old man was brought in and put in the third bed. The nurse with the man drew the curtains around him, just as the portable x-ray arrived. I moved to get out of the way. Found a seat and the foot of the bed and sat down. The x-ray lady took Anne’s x-ray. I told her to smile. After the x-ray, Shirley and Dr R took Anne with her IV and oxygen tank. They said they were going to ICU and asked if I knew the way.

I went to the ER entrance, turned left toward the yellow elevators. I saw Anne go by with Dr C and the lady doctor in tow. I followed them, and went to the ICU waiting room. I picked up the phone and told the receptionist that I was Anne’s father. She said to wait. About 5 minutes later, she came and got me. She told me to go around to the other doors, as they were in the middle of a procedure of some type. It was around 2 o’clock.

Anne was in room #1. She was already hooked up to the cardioid monitor and had the thing on her left index finger that measures her O2 saturation levels. Dr R came in and asked about Anne’s regular meds. I said she takes Ventolin, when and if she needs it, and Pulmacort. He asked “what dosage?” Anne told him, “I have 200 and a 400.” I gave him the rundown on Anne today, and what we had tried. Nurse Karen and another nurse came in and asked how Anne was doing. The one nurse went and got Anne a “big girl gown.” Nurse Karen said that Anne had fooled her by wearing a one-piece. She took it off her, so she could “do Anne’s laundry.” She soaked Anne’s PJs in the sink to remove the blood.

She told us that Dr R was coming back to start a artline and did Anne have a preference. Anne said she’d like in her left arm because it was free. Anne asked me to rub her feet, so I got up, went to the end of her bed and rubbed her feet. Nurse Karen told me the art-line was so that they could measure “blood gases” and read her CO2 levels more accurately. They had also started on some type of steroid in her IV. Nurse Karen also told me that they were giving Anne Ventolin in the IV as well.

I then explained to Anne that she had two types of blood vessels. Her veins that went to her lungs and arteries which had the fresh blood for the rest of the body. Dr R came in and put some freezing on Anne’s left arm, after Nurse Karen told her about Anne’s preference. I told Anne that the arteries have nerves in them so she would have to be still. Nurse Karen was holding Anne’s right hand and told her to squeeze it. I held onto her feet and Dr R began to try the insertion. 

Anne grimaced with pain and said “Ow!” convincingly. She wasn’t very happy. Dr R looked at her feet and said he didn’t want to use her feet for the art-line. He got up and tried Anne’s right wrist without the freezing. Anne screamed “Ow!” and started to cry. Dr R said they should take some venous blood for the blood gases. He left. Nurse Karen took some blood from Anne’s IV. I told Anne I was going to call her mother and let her know how Anne was doing. Nurse Karen told me they were doing all they could and she seemed to be improving. Her blood pressure was better, heart rate high and her O2 saturation better.

At around three, I called Marie. Sorry that I had woken her up. I told her Anne was in ICU, that they had tried an art-line, her O2 Sat was in the high 90’s, and that they told me she seemed to be improving. Then I called home. Jonathan answered and asked how “the kid” was doing. I told him to tell Joanne that Anne was in ICU and was improving, and that he should check the air in his mother’s tires as he was driving to the cottage. (Before I left Anne, Nurse Karen asked if Anne threw up again to save the vomit. I told her had some in my car. She said, “No thanks.”)

When I got back to the ICU, Nurse Karen had hung Anne’s pyjamas from the IV hanger at the foot of Anne’s bed. She called it Anne’s laundry. She said that they were talking girl-talk while I was gone. She also said that now that Anne had my sympathy, that Anne should ask me for more allowance, and other good stuff.

I remember, Anne flashed me one of her “aren’t I cute” smiles through her mask, cocking her head to the side. Nurse Karen was fussing with a VCR that she had brought in for Anne. It would play but there was no sound. She asked if I would look at it, check the cables etc. I couldn’t find what was wrong. They had “Mrs. Doubtfire” in it, so I tried another movie. Anne was quite disappointed in me, and said, “Roll it over to me.”

She reached up and fiddled with the knobs even though she had her IVs etc still attached. I told her the VCR would not work and pointed out the sticker on the front. It said it was due for service in July of 1994. Anne called to Nurse Karen and told her it didn’t work and that it was past due for service. Another nurse came in, switched a knob on the back and we had sound.

Anne and I watched TV. We flipped through the channels and I found a Pink Floyd video, “Take It Back.” I told Anne what is was and she told me to leave it on.  Anne then asked me what time it was. 3:30, I told her. “Put it on YTV” she said. We tuned in YTV and we watched “Are You Afraid of the Dark?”

Anne asked me to rub her feet, and I did. Then she said her tummy hurt. I told her it was because she was breathing so hard. She also told me that her back hurt. Where, I asked? Behind her left shoulder. I rubbed her back a bit.

Marie arrived shortly after that. She had brought me some things. Anne’s Magic 8 Ball, and some snacks. We told her that Dr R had no ordered no food. So Marie put the food away. She left the 8 Ball at the foot of Anne’s bed. Marie asked if Anne need to pee. She said yes. Marie asked Nurse Karen if they wanted to measure it.

Marie lifted Anne and lay her over the bed pan. I asked if that angle would work. Marie said, “Don’t worry, it will go down.” I told Marie that was going to have a smoke and a coffee.

October 14, 1994. 

It’s been three weeks and details are starting to fade.

When Marie arrived, I remember asking her for details. “Go and look at her chart”, I said. Marie said that she wouldn’t. This was something new. Marie always looked at the chart.

I don’t remember what happened after I came back, but a short while later Marie left us. Dr R came back in to try Anne’s art line again. I remember that nurse Karen asked Anne what the 8 Ball was for. She picked it up and said, “Will Dr R find a good artery?” The 8 Ball responded that we shouldn’t count on it. He didn’t have any luck.

When Dr R was putting some clear gel on Anne’s arm, I asked one of the nurses what it was. She told me it was a local anesthetic — “freezing”. So that it wouldn’t hurt as much. I don’t think Anne agreed. I also remember as it started to drip, she said sarcastically, “Do you think you used enough?” She was obviously getting exasperated over the procedure. Anne cried again as he tried to get the art-line in her right arm.

Marie was back, I think, when Anne’s oxygen saturation had dropped to 90% from 99%. Anne began to yell to Nurse Karen the she needed another mask. Marie told me at about that time, that I should think about eating something as the cafeteria closed at 6:30. It was around 5:50pm. So I agreed and told Anne that I would be back.

I had Shepard’s Pie with corn, a Coke and a piece of Pecan pie.

After dinner I went back up. A little while later Marie went out. At 7:30, I had to leave as this was when the nurses have a shift change, when they compare notes. We were introduced to a nurse who would be with Anne overnight. Nurse Karen said that she would not be back Sunday night as she was off, but Nurse Karen would be back in the morning.

Marie and I both left. Saying our goodbyes to Anne. I told Anne I would be back after the shift change. That was the last time I would see her conscious.

Marie and I went outside to have a smoke. Among other things we talked about where we had parked. I told Marie about the nurse who cared for Anne. Marie knew her and she would go and thank her later.

When we returned to the ICU waiting room, Marie picked up the phone to ask if we could go in. Marie hung up the phone and said they weren’t ready for us yet. I turned on the TV and we watched Star Trek TNG, with close captioning. Dr R stuck his head around the corner and told Marie they were going to intubate Anne. Marie jumped and said she had to see Anne first. That would make it easier.

While Marie was gone, Dr R had successfully put the art line in Anne’s left arm. He had the blood gas back and Anne’s blood was very acidic.

Marie came out and sat back down. She said that Anne was not happy about this. “I want balloons for this,” she had told Marie. Marie said this is what she had been trying to avoid all these years and that it was risky.

She told me they would paralyze Anne and she would be put under anesthesia. This was the best form of bronchial dilators. They would put a tube down Anne’s larynx and into her bronchial tubes. She would then be put on a respirator which would do the breathing for Anne. She explained that they had to be careful with asthmatics because of the pressure on the lungs. Too much pressure would cause a pneumothorax (air in the chest from a hole in the lung). This was dangerous because air would get into the chest cavity and probably around the heart.

We got back into see Anne at 9:00pm. Dr L took us back in. I had been logically prepared for what I would see, but not emotionally.

Anne was lying flat with a 1/2” tube in her mouth. This was forcing her tongue out of her mouth. Her eyes were open. Her chest was rising and falling as a result of the machine. She was obviously doped and unconscious. They told me she couldn’t feel anything and they told me that she wouldn’t remember anything. I looked at the monitor to see that her heart was still beating. That the BP was Ok. The oxygen sensor was removed as the respirator monitored that. She also had a gastro intestinal tube to clear her stomach gasses. They had also put a catheter in her.

“Do robots dream of electric sheep?”, I wondered.

I said to Marie that we should  both go home as we were exhausted. She agreed. We each left our phone numbers with the nurse. They would call if anything changed. I leaned over to kiss Anne, “Nite nite sweetie pie. See you in the morning time.” I drove Marie to her car.

When I got home, Joanne was still up and was busy cleaning the kitchen.  I told Joanne what had happened. We talked about calling Karen, but she was planning on going to the ballet with her friend and with the time difference in Calgary she would still be out. We decided not to disturb her yet. She was to be in Calgary until next Friday. Anne and I were going to get her at the airport.

I went to bed.

At 7:00am, the phone was ringing. It was Marie. Anne had developed a pneumothorax in the night (1 am) They had put a chest tube in. Marie decided not to call me, to let me sleep. She asked when I was coming  to the hospital. I said I wanted to sleep some more, so in a while.

I closed my eyes. I couldn’t sleep now. I thought about the fact that Anne may never come home. I cried.

I could hear Joanne in the kitchen. I went out to talk to her.

She told me that Anne would be up a 7:30 on Saturday and she and Jay had gone downstairs to watch TV. At one point, Anne and Jay were sitting upside down on the couch watching TV. She had given them breakfast. Anne didn’t eat all of it, but when did she? A while later, Joanne had seen Anne in the bathroom with a cold wash cloth over her mouth. She had seen Anne do that before and didn’t think it was unusual. 

I went back to the bedroom and called my sister Louise. I wanted to tell her partner, that Anne was in the hospital. Louise, is an OT, offered to come to the hospital to with me. “You can’t do this alone,” she said. We agreed to meet there.

At 10 am, I called Karen in Calgary. I told her what had happened  and promised to keep her updated. I arrived at MacMaster at 11 am. I went to the ICU. I went in to see Anne. No one else was there. I spoke to the nurse, she told me that her mother had been there with her sister. 

I sat with Anne and stroked her head. I took her hand in mine.

A while later Marie came in. She told me that my sister was here. I left Marie with Anne and I went out to see Louise. Louise asked, “How is she?” I said, “My baby’s broken.” We hugged.

Louise and I went in. Louise told me about her past experiences with Charles in the ICU. At the same time, she told me where to find cream for Anne’s lips and face. To use corn starch for the crevices, under arms, chin and crotch, to keep them dry. She told me to rub the bony parts of Anne’s body, where they made contact with the bed. To straighten out the creases on the blankets, as Anne could not roll over to adjust herself. Also to continue to rub and move Anne. The longer she was bedridden, the more uncomfortable she would be. 

She also told me that Charles could remember being aware of who was in the room with he when he had been intubated. So it would be important to talk to Anne. We were getting prepared to spend a long vigil and that Marie and I could not do it alone.

So, I would spend the rest of the day talking to Anne, rubbing her, stroking her. I read “Childhood’s End” by Arthur C. Clark to her.

During the day, Louise and I went and had lunch with Catherine. Louise called our mother. She insisted that mom cancel her trip to Fredricton and come to the hospital. While Louise was on the phone, Marie came and said that Dr L wanted to have a family conference at 3pm.

Marie, Catherine, her grandomther, Louise and myself met Dr L at 3. Nurse Karen came as well.

Dr L said that they were surprised that Anne had lived trough the night and that Anne was the sickest patient in the hospital. Of the “ABC’s”, airways, breathing, circulation, we were in the “B’s”. They had collapsed Anne’s right lung in an effort to get the air out of her chest. They were doing everything they could and that she and another doctor were standing vigil over Anne.

This she said among other things, and answered our questions. I don’t think those are important now.

November 12, 1994

Yesterday was Remembrance Day, we attended the ceremony at CH Norton, Anne’s last school. They performed a song Anne was writing.

“I know a way that you can hold me,
I know a way to make me stay,
Sweetheart, baby,
Say my name.”

Back to our story…

After the conference with the doctor, we had reached the same level of concern. Louise had talked about how this would be unlike any other battle we had been through. Marie usually stood vigil with Anne and got sick from exhaustion. Louise said this would not do. We were at best looking at a long stay in the hospital. We would have to take shifts to support Anne.

Louise and I would stay. Marie would go home and get some sleep. My other sister, Lucy would come in as well if she was called.

I think it was about this time, 3:30pm, that I called Joanne to get Karen’s number in Calgary. Karen and I talked. She said she didn’t know if she should come home earlier than Friday, but she would call the airline and see.

I went back to be with Anne. I read to her from Childhood’s End, the only book I had. I read from one of those Walt Disney books. The respiration doctor came in with an Indian doctor and talked about the settings on the respirator. 

I rubbed Anne and eventually just sat and stroked her head. How warm she felt. Her chest rose and fell with the respirator in an unnatural way. Over the years, I had spent countless hours watching her breath. Listening to her snore and waiting for her coughs at midnight.

Louise and I went for dinner around six. We were back at the vigil shortly after. We spent more time with Anne. At twenty after seven, they came and asked us to leave, as there would be a shift change. Louise leaned over and kissed Anne. I did as well and said to Anne that I would be right back.

When we came out of the ICU, we met Lucy in the waiting room. She had gone to Subway to get dinner. She had said that she had been to see Anne while we were at dinner. She had spoken to mom and she was coming down.  I saw Nurse Karen leave for the night. We decided to leave the hospital and go to a cafe across the street.

We had cappuccino and desert and talked about Anne, her family et al.

We three returned around 8pm, went to the waiting area where I picked up the phone. I said, “This is Anne’s father. I would like to come in.”

“Oh,” the woman said. “You can’t come in. They’re working on Anne.” I put the phone down. “We can’t go in.” I told Louise and Lucy. “They are doing something.”

I turned to find the receptionist coming to greet me. “Are you Anne’s father?”, she said nervously. I looked at her and said, “Is she in arrest?”, I asked. “Yes,” she replied.

The door to the waiting room burst open and there was Marie. “What? Where?”, she stammered. “You can’t go in. They’re working on her.”, said an RN. “But I’m a nurse… I have to see her!” Marie burst past us. Louise and I tried to stop her. Louise held her against the wall and talked to her.

“I’ll get you in there but you have to calm down.” Louise and Marie both convinced the nurse to let them in. We walked to the back doors of the ICU. I was carrying Marie’s coat and purse.

Louise and Marie went in. The nurse turned to me and said, “Do you want to come?” I followed her in.

Fifteen feet inside the door on the right was Anne’s room. There was a nurse in the supply room just before. A table was outside the room with Anne’s chart on it.

The lights in Anne’s room were all fully on and there were around ten people in the room. They were talking about the defibrillator charging. A tall doctor was running it. It didn’t seem to be working. For a few seconds they stepped away and I could see Anne.

She lay, foreshortened from where I could see her feet, midsection and her arms. There were no tubes in her and she was bloody down her right side, from where the tubes were. I looked at the clock on the wall, 9:00 pm. The large doctor began CPR again. I watched them pump Anne twice. Dr L looked up and saw us. “What is the family doing here?” They closed the curtains. 

I turned and started to walk out of the ICU. I met Lucy on the other side. She asked if I was alright. Did I want her to stay will me. “No, I’m fine.”, I said. I stood against the door, dropped to a crouch and began to cry. Lucy came over to comfort me. I knew it was over before I heard Marie scream, “No!”

now

Timothy A. Mitra

iOS engineer, engineering manager, podcaster, x Evangelist, technical consultant, artist, lecturer, web developer, and technical writer.

I spoke at the first SwiftTO conference on August 13, 2019. Here’s a link to my talk. 5 Ways to Level Up Your Mobile Development. I gave a preview of the talk at TACOW on July 9, 2019.

For fifteen months starting in 2020, I was an Apple Evangelist writing articles for the Developer app. I wrote and edited technical articles  about engineering for iOS, macOS, tvOS and watchOS. That was a dream come true to actually have the title Evangelist. I’ve been evangelizing for Apple indirectly since the late 80’s.

In 2016, I was pleased to join TD Bank as a Senior iOS Developer  and subject matter expert, working on their mobile banking platform. I was promoted in 2017 to manager. I am currently a IT Development Manager (iOS) at TD. I got my first TD account in 1979 and I have been a TD Canada Trust client since the early 90’s. So it’s really cool to be working on the apps in at the TD Centre, which was created by one of my favorite architects, Mies Van Der Rohe.

I also host and produce the More Than Just Code podcast, which focuses on iOS development. It is a round table format including developers across North America. My current co-hosts are Jaime Lopez Jr, Mark Rubin,  sometimes Greg Heo and Tammy Coron. I also guest host on the RoundaboutFM podcast.  Aaron Vegh left the show in 2016.

Jaime Lopez Jr, Jonathan Kuehlien and I have been hosting a pop culture sci-fi podcast, Spockcast, centered around Star Trek: Picard, Star Trek: Discovery, Star Trek: Lower Decks and Star Trek Prodigy. We also cover sci-fi movies, TV shows, books and comic books.

I am still working on iOS apps. This involves updating apps that I have produced for 2 For Life Media, Son House Productions and my own company, iT Guy Technologies. These are some pretty diverse apps in life style, entertainment, productivity and of course games. Apps you can check out are 2life, 2life Baby2life Ultimate Wedding Plannerthe Strombo ShowDevice Tracker and Geese Squad to name a few.

Under the hood, for those who are interested, I work primarily in Xcode with Swift, SwiftUI and Objective-C. I spend a lot of time with UIKit, CoreData, NSURLSession, AVToolKit as well as Sprite Kit and the requisite frameworks needed to manage content in apps. I can also be found wielding design tools to create artwork  and wire frames. Soup to nuts I wrangle all parts to iOS and OS X app development. I also do a fair amount of web development, mostly custom WordPress and app APIs that support the mobile apps.

For more than five years, I have been a member of the RayWenderlich.com tutorial team. I have written a couple of tutorials but lately I have been part of the Articles Team. I recently was involved as Developmental Editor on The Swift Apprentice book which was published in October 2015. I am working on another new project headed up my Ray Wenderlich himself. Stay tuned.

2019 marked my 30th year of using Apple Macintosh computers. It was true turning point for me using Macs and computers in general. I started as one of a few people who worked full-time on a computer and now 30 years later we carry them in our pockets and wear them on our wrists. Access to information is taken for granted.

I am no longer able to teach iOS development outside of TD. My latest course is Swift 101, for persons interested in learning Swift for iOS and OS X. Ongoing courses are on iOS development introduction and advanced. I have also trained users on Objective-C, WordPress, and various Adobe titles for print & web.

During the week of Dec 14, 2015, I taught “Advanced iOS Development” online. We covered some advanced topics on iOS development and Swift.

I continue to provide consulting services in iOS development & IT and I am available for contract work.

Printrboard LCD

Posted on July 26, 2014 by Rick_S

Recently I purchased a Printrbot Simple Metal and have been learning the art of 3D printing.  One thing I realized up front was the benefit of having an LCD display on the printer to show status and allow for menu driven printer control w/o using a computer host.

At the time I purchased my printer, the Printrbot store was out of stock of the official LCD.  So I set off on my own to determine the pinout’s of the Printrboard (The official printer control board for a Printrbot) to find out where the LCD connected and what signals were available.

My 1st thought was to use one of the many inexpensive “Smart LCD Controllers” that are all over eBay for reprap machines.  At about $16 for the complete setup, this seemed like a good place to start.

After looking at the Printrbot installation instructions for the official LCD, I could see that their LCD assembly connected to the EXP2 connector on the Printrboard.  A few web searches later and I found the pinout for that connector to be as such:

shows EXP2 pinouts of Printerboard
Pinout of EXP2 on Printrboard

In the photo, you can see that Pin 1 is at the lower left of the connector as shown.

The pinout is as follows:

PrintrBoard 14 Pin EXP2
PIN1 – GNDPIN2 – 5V
PIN3 – N/CPIN4 – N/C
PIN5 – D7PIN6 – D6
PIN7 – D5PIN8 – D4
PIN9 – N/CPIN10 – E
PIN11 – RSPIN12 – ROT_ENC-A
PIN13 – ROT_ENC-BPIN14 – ROT_ENC-SWITCH

The pinout on the RepRap Smart LCD Controller is broken out in two 10 pin connectors.

Pin 1 of each connector is lower left in the photo

The pinout for connection to the Printrboard is as follows:

Smart LCD Controller 10 Pin EXP1
PIN-1 Not UsedPIN-2 ROT_ENC-SW
PIN-3 EPIN-4 RS
PIN-5 D4PIN-6 D5
PIN-7 D6PIN-8 D7
PIN-9 GNDPIN-10 5V (VCC)
Smart LCD Controller 10 Pin EXP2
PIN-1 Not UsedPIN-2 Not Used
PIN-3 ROT_ENC-BPIN-4 Not Used
PIN-5 ROT_ENC-APIN-6 Not Used
PIN-7 Not UsedPIN-8 Not Used
PIN-9 Not UsedPIN-10 Not Used

After making the appropriate connections with a custom cable I made…

Voila — Success.

Smart LCD Controller for RepRap

IMG_0326

The next step is creating my own board…

Adapter Board for Smart LCD Controller to Printrboard

Posted on July 27, 2014 by Rick_S

I did a quick design of an adapter board to take the 14 pin connector from the Printrboard to connect to the two 10 pin connectors on the RepRap Smart LCD Controller. This will give you the display and encoder functionality like in the official Printrbot LCD. The reset, buzzer, and SD Card will not function as those signals are not broken out on the Printrboard’s 14 Pin EXP2 Header.

The adapter board measures 3cm x 5cm and looks like this.

The Schematic is pretty simple, just three connectors and some mounting holes.

As with the Full controller, I’ve bundled the files needed for construction into a ZIP file for download.

You can get the files HERE

EDIT 5-29-2016:  The download file has been updated to include the board perimeter in a GKO file.  Hope that will help possible builders.

A case for the Subscription App Price Model

App development, like art, is an expense of creative energy and effort. Once published, maintenance and upkeep takes a considerable amount of time and skill. Keeping up with changes in technology that Apple and Android add complicate a developers life. Imagine having to update a painting or redo a sculpture in a new medium because the galleries change how your work is to be consumed.

In 2014, the kids decided to drive app prices down to the free model to generate downloads – commoditizing the app business and frankly taking the fun out of this creative outlet.

As a result, People just won’t pay what an app is truly worth. They expect apps to be free. Adding ads to apps is a futile effort as it requires tens of thousands of downloads and repeated use to make even a meager income. Pizza money is what most developers get.

Lately, developers and publishers have landed on the subscription model. If you’re app is compelling enough you can derive a better sustainable, recurring income over time. However, It takes a long time to reach an equilibrium.

You also have to factor in the market you are creating an app for. If the market is small, Eg. the Go life or death scenario app, then you need to charge more per month. The app you mentioned wants $13 per month and that may in fact be steep. How many people do you suppose would even download that app in the first place (Boomer)?

Photoshop on iPad can be had for around $20 per month minimum. Adobe is making a killing on their subscriptions. It used to cost $1,500 to upgrade annually. Subscription for the full adobe packed is around $49 – $50 per month – comes out to the same over a couple of years. Adobe also has a lot of mouths to feed. It’s a necessary evil and you’re hooked in. Imagine if your oil paints, canvases and brushes locked at the end of the month if you stopped paying?

Even successful app developers have gone out of business with the subscription model. It’s not a simple hobby and the work: code and design has value.

Bottom line: if you like an app and want to to be improved and maintained then pay your developers. Like any creative pursuit, funds are needed for the long haul.

Maybe $13/mo is too much. The developer may lower the price when no one subscribes. If they’re a smart marketer, they will try other ways to make an income. He’s bringing an incredible domain knowledge to the world of wannabe Go players.

Subscriptions are the model for the foreseeable future. Don’t be to hasty to deny the dev a living.

There ain’t no such thing as a free lunch. Pay your developers.

Copyright © 2000-2023 iT Guy Technologies, a division of 1654328 Ontario Ltd Proudly powered by WordPress
@timmitra on Mastodon