• Live Streamed iHog Development

    I live stream streamed iHog development. I’m trying to do one live stream a week. I will usually do it on Mondays, but some weeks life happens and pushes the live stream back a couple days. It happened this week!

    Go check out my live stream by clicking here!

    My Twitch can be found here!

  • That’s a lot of Command Keys.

  • Asking app developers what are your responses to not supporting a platform? I’m getting asked to support Android, but I have no interest in doing it. I don’t use Android, and as much as I would want to learn the platform it would require a lot more time than I have. I’d rather put that time towards making new features for iOS since that is where I’d use the app.

  • Day 3 📸 Reflect

    Vegas hotel rooms have lots of mirrors for lots of reflection.

    #mbfeb

  • Day 2 of 📸 challenge! Sight

    #mbfeb

  • Time for Day 1 of the photo challenge! Today’s theme is Open!

  • Installing Swift on Ubuntu 18.04 LTS 💻

    In this guide, I’m going to write the commands and steps needed to install Swift on Ubuntu 18.04 LTS. My server is going to be hosted by Linode, but it should work on any computer running Ubuntu 18.04 LTS. Since I’m doing this on Linode, all of the instructions will be how to install Swift using the command line.

    Let’s get started by accessing your Ubuntu 18.04 LTS instance. For me, this means using SSH to access my server.

    Note: When installing, I’m going to put sudo before my commands because we need root access to install into some of the directories. If you have root access, you should not need sudo.

    1. Install clang and libicu-dev

    Two packages need to be installed since they are dependencies. I want to explain what they are before actually installing them.

    clang

    clang provides tooling infrastructure for programming languages in the C programming languages. It acts as a compiler.

    libicu-dev

    libicu-dev provides full-featured Unicode and locale support. This allows for Unicode to be used in our code.

    How to install

    sudo apt-get install clang libicu-dev
    

    apt-get is a command line tool that handles packages. And other tools from the APT library.

    2. Download the Swift files

    Apple hosts the Swift files to download on Swift.org/downloads. You can go there to get the URL to download the latest release of Swift or the version that you need.

    Note: As of writing this guide, the latest release is 5.1.3 which is what I will use in the commands

    Navigate to the location where you want to download the binary of the Swift version you want to install. I keep mine in the src folder, so the command below will take me there.

    cd src
    

    Now, let’s download the binary files.

    wget [swift.org/builds/sw...](https://swift.org/builds/swift-5.1.3-release/ubuntu1804/swift-5.1.3-RELEASE/swift-5.1.3-RELEASE-ubuntu18.04.tar.gz)
    

    Let this command finish, and then continue to step 3.

    3. Extract the files

    tar -xvzf swift-5.1.3-RELEASE*
    

    The *, after swift-5.1.3-RELEASE, acts as a wild card so that tar -xvzf can find the file that starts with swift-5.1.3-RELEASE.

    This is going to extract the files and create a folder of the swift binary files named swift-X.X.X-RELEASE-ubuntu18.04. X.X.X will be the version number that you installed.

    4. Add this to the PATH

    We need to add the absolute path, the location where the binaries were extracted, of the binaries to the PATH variable that way we can actually use the swift command in the command line.

    Navigate to the location used in steps 2 and 3 and use the command pwd to see the full path to the binaries. Now to add that path to the PATH.

    export PATH=path_shown_using_pwd
    

    My command looks like this:

    export PATH=/home/mw/src/swift-5.1.3-RELEASE-ubuntu18.04
    

    5. Verify the Install

    Swift is now installed. Let’s verify that it works use the following.

    swift -version
    

    The terminal should show what version you are using. Mine shows Swift version 5.1.3 and some more things about the version, and that is it!


    If you enjoy my posts, please consider sharing it or supporting my writing using one of the ways below.

    Buy Me A Coffee

    ko-fi

    Become a Patron!

    Becoming a Patreon will give you some special insights to development that I don’t post here like videos that I’ve made of me developing apps and there are some special treats based on the tier you select.

  • New travel requirement. My hotel must have a water park in it. Bonus points if there is an arcade!

  • 🧭 Trip 2 of 2020

    I kicked off trip number 2 of 2020. It’s a 4 day long trip in Cape Cod.

    This has been a short travel day, but I still feel like it’s been long. This is probably due to the fact that I spent most of the day on a plane without a long layover. The flight into BOS was cool because the airport is right on the water, so as we landed we got really close to the water. It was really neat to watch.

    I’ve noticed while out and about, that I’d much rather pull my iPad out and use it like a lapto than my actual laptop. I’m not sure why exactly, but I love responding to emails on my iPad and doing other things to kill time. I can’t do any iOS development on it, so I still end up opening my laptop when I want to do that, but other than that I think the iPad is my main device especially when traveling.

  • How to call a function with a slider changes in SwiftUI

    There are times you might want to call a function when a slider changes in SwiftUI. I did this recently to send out the slider’s value to another device when the slider is moving. I couldn’t wait to send out the final value since that would be a delayed response for the user.

    After the code example, I’ll explain the three steps.

    import SwiftUI
    
    struct SliderExample: View {
    // 1. declare a state for the value of the slider
        @State private var value: Float = 0.0
        
    // 2. create a slider with a new Binding variable
        var body: some View {
            Slider(value: Binding(
                get: {
                    self.value
                },
                set: {(newValue) in
                      self.value = newVal
                      self.doSomething()
                }
            ))
        }
        
    // 3. create the function to call when the slider changes value    
        func doSomething(){
            print("\(value)")
        }
    }
    

    1. Declare a state variable for the value of the slider

    This is the variable that the slider is currently. It needs to be declared with a State property wrapper since the value is going to change. It also needs to have a Float type since a Slider needs a Binding<Float>.

    2. Create a slider with a new binding variable

    In this step, we are creating a Binding variable. A Binding variable is a computed property. By creating it as the value that the slider is using, we can utilize the setter to call the function every time the value is changing.

    3. Create the function to call when the slider changes value

    Make sure to make the function that you need to call when the slider changes values.


    If you enjoy my posts, please consider subscribing to my Patreon and checking out my other posts!

    If you don’t like having more subscriptions, consider buying me a coffee instead by clicking the image below! Buy Me A Coffee

  • Add itemized receipts with tip printed to things you didn’t know you wanted until you were #workTraveling 🧭

  • 2020 Travel!

    Today starts the 2020 travel.

    Based on what’s scheduled, I’ll probably hit Gold on @AmericanAir by segments, but the EQD will be hard to hit. I would love to have the free main cabin extra when checking in, so I’m hoping it happens.

    Here’s the gear I’m using when traveling:

    • Away Bigger Carry-On as my carry on luggage, which works for most trips
    • Synik 22 as my backpack
    • Bose QuietComfort 35s are used for 2hr and longer fights
    • AirPod Pros are used while in the airport and on short flights
    • iPad Pro 12.9” 3rd Gen for content consumption like NHL games, Netflix, and more
    • MacBook Pro 13” 2016 that I’m looking to upgrade once the hopefully 14” or new 13” with the keyboard of the 16” is shipping
    • Nintendo Switch
    • Various dongles and charging cables since I give presentations when I’m out and about
  • The best parts of working from home besides concentrating more

    • I get to be with the pets all day
    • I get to where sweatpants and not be judged by co-workers
    • NO TRAFFIC ON THE WAY HOME 🚙
  • 📱

    New App, iHog, Released!

    I made an iPad app. It controls Hog 4 lighting consoles through Open Sound Control. Check out the website for more info or download from the App Store.

  • New tech in my life

    I bought the new iPad Pro 12.9”. I’m very happy with this size. I chose not to get the smart folio keyboard case, since I had a Bluetooth keyboard. I’m also very happy with that decision. I’m not limited to having the screen right next to my keyboard. I can prop the screen somewhere else now and type with the keyboard wherever I want. I frequently do this when on the couch. The iPad sits on the table next to me and the keyboard is on my lap.

    I also received an iPhone Xr as my work device. It’s a lot heavier than my X and slightly bigger. I’m also not a fan of the lack of 3D touch. I grew used to it on my X, and not having it on the Xr is a bit frustrating.

  • iPhone X’s portrait mode makes it look like a real photographer took my picture #shotOniPhone #iPhoneX

  • New update to my app!

  • Working through a swift #inAppPurchase tutorial #iosDevelopment #apple #mac

  • Things I learned today: - How to change UI elements based on size class

    This is a big accomplishment for my app cause it can now look so much better on iPad and iPhones with screen sizes smaller than an iPhone 8.

  • I did it. I published am #iOSApp on the App Store. First app. If you run into bugs let me know!!

  • Went to Cali last week. Found a dinosaur. Found an Iron Man. Took some pictures. Went to Apple Park. Got a hat and a shirt. Saw some good friends. Good week.

  • I’ve played Catan 4 days in the past week. I’d say it’s a fun time!

  • I submitted an app to the iOS app store today. I also walked my mile at lunch today. #GoodDay

  • Didn’t walk today or workout at all. Gotta do better tomorrow. At least, I hit my move goal, right 🤔

  • I have a whole page worth of notes for #iOSdevelopment. I’m thoroughly enjoying it, but I still have a lot of concepts to go over. Like how do auto layouts work and what are all the ! and ? in #swift?

subscribe via RSS

Support Maegan