GitHub… I lost my repo Settings tab?

I recently had the need to invite a few people to a private GitHub repository of mine. No big deal, log in, go to my repositories, select the repo I want, and then click… on… wait a minute. Where is my Settings tab? It’s not there. What the hell?

I own the repo. It’s mine. But my Settings tab is missing.

I tried another browser – same thing. Cleared caches. Nothing. Then I did something so odd (that worked) that I feel like freaking McGyver.

In the URL for my repo, I appended a “/settings” and hit ENTER.

It worked, and now my Settings tab is back. Try this if you lose yours. I am still shaking my head.

Heilung – Ofnir for coding

Sometimes when coding, you need music to develop a rhythm that you can attach your mind to. The code flows easier, and you start thinking about connections that you need to wire up in your code to expose and procure functionality.

But if you listen to music that contains obvious lyrics, changing time signatures, etc. – that can ruin your coding flow. You need something that exists in the background and facilitates your ability to go from one thing to the next without distraction.

I have found such music. Norse authentic stuff.

Heilung is an experimental folk band made up of members from Denmark, Norway, and Germany. Their music is based on texts from artifacts of the Iron Age originated by the Northern European peoples of the Iron Age and Viking Age. They describe their music as “amplified history from early medieval northern Europe”. Much of their artistry is derived from Norse gods and goddesses. “Heilung” is a German word meaning “healing” in English.

The Viking Dragon

This kind of music has chanting, ancient instrumentation, etc. It fades and inspires like no other music I have come across. I feel like I am participating in something special. One that relaxes as well as stimulates. Which is an odd thing to say?

The instrumentation:

  • drums, including one with horse skin painted with human blood, two drums with deerskin and a drum with goatskin
  • bones, including a human forearm bone and deer bones
  • a buffalo horn rattle
  • a clay rattle with human ashes
  • a Hindu ritual bell
  • antiques from temples
  • a reconstructed silver cup from the Viking age
  • a ravanahatha (an ancient Indian instrument)
  • numerous other rattles, whistles, and percussive instruments

It’s weird – I know that. It’s unique. It’s based on history to some degree. Keeping old gods alive. And helping to keep the code flowing.

Pastis drinks

Pastis

Summer is about over, but your Pastis drinking doesn’t need to be. Here are some alternative Pastes-Related drinks to try before the leaves turn.

  • La Soleil (The sunshine) – with a dash of Lemon syrup
  • La Mazout (Fuel) – with, not even joking, coca-cola (normally asked for by Belgians) – be careful though, in Germany, a Mazout is beer mixed with coca-cola
  • Le Velo (Bicycle) – with a dash of Orange syrup
  • When you add Grenadine to a pastis, it is called a “Tomate” (tomatoe).
  • You can also add mint syrup ; it is called a “Perroquet” (a parrot).
  • You can add Orgeat syrup ; its name is the “Mauresque”

Henri Bardouin Pastis Inbound

Pastis
Enjoy a French-inspired summer.

I am an enthusiastic fan of a cocktail called Perroquet. Perroquet is a traditional French drink, which is very popular throughout France. Perroquet is a Pastis-based drink with peppermint syrup and water. I purchased a glacial mint French syrup instead as I find it a little less sweet than peppermint. It’s very refreshing, wonderful when not too cold – might not need any ice really – and even with its high alcohol content – doesn’t loop you out of reality quickly. Perhaps that’s just me and how my body reacts to it.

I normally have a bottle of Pernod in my cabinet, and usually, try to keep a bottle of Ricard instead. I find it better but it’s a little more difficult to acquire. A little more driving. I also purchased a bottle of Marsailles Pastis recently which is said to be on par with Ricard, but I have not opened that bottle yet.

Time and time again, however, I have read testimonials in regards to Henri Bardouin Pastis and how it is the gold standard in regards to French Pastis. I looked nearby and I could not locate a store that sold it. It’s not that different than the price of anything else, it’s just not very popular around me I suppose.

So I went online to absinthes dot com. Sure enough, it’s available and rated extremely well. So I ordered a bottle, unsure of where it would be sourced.

As it turns out, it’s being shipped to me from Spain. Unusual, but when that bottle arrives, I’m sure to give it a go. I’ll leave a comment or two here after that happens.

Tagged : /

Learn slowly to develop quickly.

Slow down

I’ve seen something happen many times during my longish tenure as a software developer being amidst to some others who are new to it. They seem to have a complete lack of wanting to understand something before tearing into it.

When someone comes to mobile development, and all they have under their belt is some solid web development using JavaScript/CSS/HTML, and maybe some PHP – they are used to manipulating a page’s DOM. And that’s cool. You can do a whole host of interesting things with that understanding and experience. However, they lack many basic concepts that are nearly required for mobile development. These aren’t trivial things you can get around knowing – they form the basis… the solid foundation of your endeavors moving forward.

I have experienced this in the past and I see it at times at work. Instead of owning up to some facts about a lack of understanding – they want to pump out some code and show everyone they are wizards. They got it.

Only wanting to break the finish line tape…

Then they ask for some working source code without worrying about how it actually works. They try to plug it into what they already cobbled together and have a hard time working with it – getting it to work. They don’t know about scope. They don’t know about classes, extensions, or how to best wire up various aspects of their UI.

They ask for completed code – but don’t typically search StackOverflow or even Google things. If they do, they don’t worry about what makes it work. In the event they do get something working, if they are asked to make tweaks or changes, they are screwed. Why? They don’t know how it works – or know enough to make the change easily.

They fight with code and concepts. They want to get to the finish line in whatever they are doing – by skipping the race. In the end, they may eventually get to what they are after. But they aren’t putting the work in, the investigation, the basics of design and development, and in the end, they are only slowing down their development.

Being a developer shouldn’t be about ego. If you don’t know something, don’t be embarrassed to ask teammates. Don’t downplay your struggles.

If you don’t understand something, take the time to learn about it. Create test projects or Swift Playgrounds and bang some code. Read articles and tutorials about making things. Try them for yourself. Once you have a solid foundation, you’ll be able to more easily approach challenges and deliver projects that you understand.

Use comments in your code – and place questions, TODO or FIXME, and MARKs there. This is especially handy if you’re working on something in source control with other team members. They have a chance to see your stuff and be able to offer up help. Don’t rely on this though.

//I don't understand this, can someone elaborate?
//TODO: Why is this not working? Need some help.
//FIXME: This isn't working, how come?
//MARK: — Section Marker

When you do this, you’ll see those called out in the source file you’re currently working in (except for comments – but still useful).

Explanation

Development shouldn’t be about wowing your co-workers. It’s about delivering great experiences in a timely manner, with the ability to iterate quickly along the way. Communicate your ideas and approaches. If you’re calling on others to help you bang things out – that’s good. But not in lieu of understanding what they are doing and why they are doing it.

If you are relying on others to do some pretty conceptually basic things over and over, they will become less likely to assist you in the future.

There is no escaping time and effort. They are no substitutes for trying things, learning things and failing at them. If you learn slowly, you’ll forget slowly. Spend time outside of projects to learn core concepts. Code, code, and code some more. Look at applications you like and think about how they might be composed (backend and frontend) – and then try to build that part yourself as a prototype.

Start simple… tables, collection views, loading assets, playing sounds, using gestural input, etc. Get those things nailed down. Then subclass some UI to do something special. Learn about delegation, Classes, extensions, etc. Grow slowly. Build upon past prototypes. You’ll have something to lean on moving forward. Every day will get better and better because of your efforts and you taking the time to learn how to develop for the platform.

Ask questions.

Read.

You’ll be much happier in the end. You’ll know more. You’ll be able to produce more. You’ll be able to iterate quicker. You’ll be a better teammate.

AVAudioPlayer setVolume with fading – properly

Swift

It’s been a while since Apple added Swift fading support to AVAudioPlayer. I can’t remember when exactly, but I think it might have been since iOS 10.0. I have not used it in quite some time and recently had the need. The API is pretty straight forward, but I wasn’t actually getting the fading to happen without the volume jumping straight to the destination volume. I thought it might be a bug.

musicPlayer.setVolume(to, fadeDuration: fadeTime)

After wondering what the hell was going on, I thought maybe it’s not rendering correctly because it’s blocked or something. This fixes it right up…

DispatchQueue.main.asyncAfter(deadline: .now() + 0.0) {
    self.musicPlayer.setVolume(to, fadeDuration: fadeTime)
}

I can now get the various players I’m using to perform their fading perfectly – with a very tiny delay – because the fading is happening on the main thread (async).

It’s a small thing, but it’s not mentioned in the documentation that I could quickly see.

Below does essentially the same thing as the code above (no delay). This is because the call on the main thread is called asynchronously. Due to the async dispatch, the code in the closure will not be executed immediately, only on the next runloop of main, which could result in a measurable delay .

DispatchQueue.main.async {
    self.musicPlayer.setVolume(to, fadeDuration: fadeTime)
}
Tagged : /

The dumbing down of screen content?

It used to be that the main screen in homes sat in a corner of a living or room in wooden appliance. The television. After time passed and technology grew at a larger scale, some homes would have perhaps two or three – in thinned down versions without things like vacuum tubes.

everywhere

Then eventually came along Apple and the iPhone, iPad, and the iPod Touch. Then Google and Android. Screens proliferated and soon even young children had them and were using them.

Screens now have become nearly expected in some of the world – and some of those televisions have begun to feel neglected. They now have menu systems of their own, but they play second fiddle to those pocketable and easily transportable mini-computers.

It used to be that a smaller selection of the user base used the technology. They were more… tech savvy. They thought more like engineers than consumers.

With a huge population using these devices as now de facto communication devices and having been weened on multi-touch… it seems like user interface design and experience now requires easier to use content. Less-rich interfaces. Boil things down.

To me, this is fine. The ultimate goal for everything should be user experience. If you’re not serving what they need, you’re wasting a lot of your time and energy on the wrong things.

Even typography is trending towards very simple, less of it, and in larger sizes. Screen resolution might have something to do with the size, but it’s probably for young users and those who are on the older spectrum of life as well. Make it consumable for the greatest number of people. Make it easy, glanceable, and poignant. The days of fluff content for the sake of interactive content has waned in my opinion.

When Flash ruled the web during its run, the web was a very creative place. Much more than I feel it is now. I was caught up in that Macromedia, then Adobe groundswell of design and development. It gave me a job for many years. I owe a lot to that technology. So far nothing has replaced it.

I understand why it died for mobile (a no-brainer really). But I miss it.

Mobile Safari and page background images…

I have yet found a satisfactory way to apply a fixed background image to a page for mobile. For some performance reason, as I understand it, a fixed image for mobile is a dancing unicorn. Which has so far eluded me.

I’d like to implement it to match the desktop, but I’m not going to jump through brittle hoops to achieve it. Something will change in the technology landscape that renders the hack moot.

I even considered page scroll position changing. Probably the ultimate hack. But I dislike hacks and also magic numbers.

If anyone has decent solutions, it’s like to see them. Without too much nesting or JavaScript.

Pruning, shearing, and producing

Goofy 2

I’ve owned this domain since 2001-03-09. I’ve had all sorts of stuff hosted and served from it. A lot of that junk is still mildewing on this platter located somewhere out there. If I want the domain ericd dot com, it would cost me a cool $6,195.00. No thanks 🙂

Anyway, I’ve had to FTP in for a few certain things lately… and I had a slow look around. So much old stuff. So much old and bad code. So I thought that I should spend some time pruning old projects – archiving them to my local web server for safe keeping. You know, as jump-starts to something that might be related down life’s timeline. Shearing a lot of large assets that haven’t been touched for over a decade. Or more. I won’t even archive that stuff, it’s just complete garbage.

I need to overhaul some of the sub-domains that I have here. Everything except this blog is pretty old. Even this blog could use some love.

dustee (no, not Dinkleman)

Anyway, I popped in here to see what plugin updates there were, etc. and thought I would post about some future plans. I need to take this web stuff a little more seriously moving forward.

I am doing some pretty interesting things at work and as experiments, so I should use some of the results and learnings and represent myself with them.

Tagged : /

AirPods 2. Even better.

Airpods 2

My AirPods Series 2 arrived today. Engraved on the front of the case… “Five Ohhh…” I got them as part of my turning fifty years-old. I already have a pair of the series 1, but the upgrades seemed quite interesting. I have piles of better sounding options at my disposal, but in terms of convenience and pocket-ability, AirPods have almost no equal.

I opened the case beside my phone and I connected them. It took all of about three seconds. And now each device I use has them in their pairing list. Pairing and connecting is lightning quick. That includes my Mac as well as iPhone. I use ToothFairy on the Mac to put a quick connect menu item up top. It’s a little too old for other solutions. It works a treat.

Sound quality? It might be a little better. It’s difficult to say – but I have always thought that their audio quality was good enough for most things.

The fit is the same – which for me is great. They never come close to falling out of my ears, and they are so light I forget I’m wearing them.

“Hey Siri” is a wonderful addition and it works as well as advertised. This frees up an AirPod for a different function. I have play/pause assigned to my left bud, and next track on the right one. Siri is good enough to basically run all through desired commands through it. For double taps, I tap my earlobe and that is enough to trigger the assigned command.

I haven’t gotten to wireless Qi charging yet, but that will come later on after I’ve completed a healthy does of music listening. My MOS 6581 station. Yummy.

So, in short, AirPods 2 are quite wonderful and a excellent upgrade of my first generation pair. Which my son would like to have now. Keep those grades up, my son, and we’ll see about that.

Aqua di Parma Colonia Quercia Review

Aqua Di Parma Quercia

I am fascinated by great scents. I don’t know why, it’s probably not that common amongst developers, but I am always on the trek to find a signature scent.

When we travelled to Nassau, I went into a boutique and immediately tried out this scent. I was amazed at the strength, the quality, and the staying power of it. I asked how much it cost, and was told $251.00. Yikes. I sprayed myself and we left to our activities.

Each day I walked into that boutique and sprayed myself. I took a photo to make sure I knew what it was called and checked on Amazon. $100.00. How is that for a Bahamas mark-up? I ordered a bottle, and it would be delivered on the day after our home return.

For the months outside of summer, Quercia will be my go-to scent. Aqua di Parma in the standard yellow bottle will be my summer scent. It’s simply lovely stuff.

Tagged : / /

Swift delegation

Swift Delegation

There are times when you have Class objects that you need to communicate back to some part of your application. With delegation, it’s a 1-to-1 relationship. Generally where the object(s) are instantiated is where you’d like to gain insight upon an event or events.

Notifications can handle 1-to-n types of relationships. That’s not what we’re doing here.

So, for this example, we have a Class object we’ll call blob. After it’s created, we want to know when a button within the object is selected. It’s within the object itself, so it’s out of scope in our ViewController. There is where delegation comes into play. Here is the class object in question.

protocol BlobDelegate {
    func blobPressed(index: Int)
}

import UIKit

class Blob: UIView {

    var delegate: BlobDelegate?
    var button: UIButton!
    
    override init(frame: CGRect) {
        super.init(frame:frame)
        button = UIButton(frame: frame)
        button.backgroundColor = UIColor.red.withAlphaComponent(0.2)
        button.addTarget(self, action: #selector(clicked), for: .touchUpInside)
        self.addSubview(button)
    }
    
    @objc func clicked() {
        delegate?.blobPressed(index: 2)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

The top bit of code is the protocol – which is our delegate. When our button is pressed, it calls the function in the delegate – and passes an Int as the argument. For now it’s just a simple hard-coded number to show it working.

All one need to do now is to assign the delegate when creating the Class object from outside the class (instantiation) while conforming to the protocol.

import UIKit

class ViewController: UIViewController, BlogDelegate
{
    var blob: Blob!
    
    override func viewDidLoad()
    {
        blob = Blob(frame: CGRect(x:0, y:0, width: 100; height: 100))
        self.view.addSubview(blob)
        blob.delegate = self
    }

    // Method from the delegate.
    func blobPressed(index: Int) {
        print("From blob: \(index)")
    }
}

My Atlantis Bahamas Review: The Reef

Before we departed for our Atlantis vacation, I spent far too much time watching YouTube reviews and reading packing lists. I wanted to know what to expect. The most prevalent thing I noticed people talked about was the price of food. That, the fact that 15% tip is worked into everything already, and that there is also a 12% VAT on everything.

People discussed packing a separate piece of luggage that contained nothing but foodstuff and snacks. I think if you go into the experience knowing that you’re going to be spending 200 – 300% more for meals than you’re probably used to, you’ll be alright. Know what? Everyone is right about the pricing. A bottle of water will cost you anywhere from $5 – $12, depending on the size. You can make do with simple tap water and your own bottle systems, but the tap water is quite soft and it could upset your belly a bit.

The food

Food and basically anything else is expensive. The quality, for the most part, is good. We had several buffet breakfasts which were passable, a few buffet dinners which seemed better, we tried the pizza place by the marina (very expensive and we couldn’t find a table outside so we had to eat in a lobby which I disliked). We tried Olives and felt that the food was overpriced for what we paid for it. Lovely view though.

After the first day, we just went into eating with the attitude that it was going to spend a lot of money. We did try Starbucks (which I loathe) to get coffee and some bread-based food – long lines but only slightly less expensive than the buffet. Yes. Food is going to cost you a lot of money.

Also – if you want to try any restaurants, try to book in advance (before leaving for Atlantis). We tried this and most things were already booked already. So we went to the concierge right away and were booked into a few places. We had a $300+ Chinese meal we wish we hadn’t gone to though. Don’t go to the Bahamas and have something you can get for $60 back at home. Try to eat some local cuisine if you can.

Tried conch with pepper. I’ll let you judge the dish.

The people

Everyone we met was extremely nice. Given that Nassau lives on the tourist trade (resorts and cruise ships), they need to be. But to be honest, I felt it was all quite genuine. From our taxi drivers to waitresses and waiters, to the resort staff members, to people downtown Nassau and the Straw Market. Honestly everyone.

That said, visitors were sometimes pushy. If you are queued in a line, they don’t care. They will cut in front of you. Buffet line, at a store, at a water slider, at a concession area, etc. It will happen. I don’t know if it’s because these people come from all over the world or since they spent a lot of money, they feel like they should be able to do whatever they’d like.

The Rapid River danger is real

The Rapid River can be quite dangerous. I went on with my son and daughter without incident a few times. The last time, our raft was slightly deflated. I was in the back, which meant a little more weight was on the back with me, pitched backward a little more than normal. My daughter was in front. We just entered the slippery rock section under a footbridge – the guy directing traffic into the chute warned me to watch my head. I leaned forward a little to avoid a skull collision and the raft shot out from under us – just as we entered the rapids. It was all I could do to try hanging onto the raft – but I couldn’t. My daughter and I were tossed through the boulders, trying to keep our heads above water.

We emerged at the end – and a worker had jumped into the water trying to help us. That was great. My daughter was on the side of the wall crying hysterically. She got a few little scraps on her leg – I think she was more frightened about the entire experience.

Then I looked at my leg, and it was pretty awful. I hadn’t noticed at all until my daughter was patched up and not crying anymore.

I had many deep cuts and scrapes on my right knee. Some cuts on my right ankle. I was wearing water shoes that ended up fairly ripped up. Thank goodness I was wearing them, or my feet would have been in pain for the rest of our vacation. Atlantis is huge, so there is usually a lot of walking to be done.

I received band-aids and some minor medical attention. It’s been a week since we’ve returned and my knee and ankle are still sore from the thing. The ride was awesome–until it wasn’t. Be careful. It’s a lot of fun, but you have to watch yourself and your positioning in the quicker sections of the ride.

The beach

The water was slightly colder than the pools (we went mid-February). To me, this was perfect. I like spending a lot of time in the ocean compared to the time spent in a pool. There are plenty of rock formations in the ocean near the beach. I was wearing water shoes, so I was fine and had an easier time of it than my family who went barefoot. The sand is wonderful and there are fish that come quite close to the shore.

Compared to the beaches around Cancun – they are much more kid-friendly. The waves around Cancun will kick your ass until you relent. Then kick your ass on the way out too. At Atlantis, there are almost no waves to speak of. Which is great for relaxing and not getting worn out.

The views

The elevators are very, very fast – so get a room/suite up as high as you dare. We had a view of the pools and beach on the 14th floor (there was no 13th floor). Obviously, the higher you go, the better your view. We couldn’t see the sunset from our room – that could be seen on the other side of the resort. I suppose it all depends on what you’re after.∑

Tagged :

Adafruit Feather 32u4 communicating to iOS

Adafruit Feather 32u4

I recently had a project request to allow a user to experience different rotary encoders and how they might react with digital LEDs. In short, getting encoders wired to a board to directly control the UI in an iOS application. This saved me from having to alter soldered LED counts and allowed logic and animation to take place in easier to update software.

Since the Adafruit Feather 32u4 has onboard BLE, this alleviated the need to use a shield for BLE communication between the board and my iOS application. It wasn’t quite as straightforward as some online documentation would have you believe.

My final prototype was the 32u4 board, two encoders, a rechargeable battery for the 32u4, my phone, and my Swift iOS application. My communication was uni-directional from the board to the iOS application. It’s easily possible to have the iOS talk back to the board, but was unnecessary for my prototype.

If anyone wants my Sketch and source for the iOS application, I can make a stripped down version of those available if anyone is interested. Leave a comment – and if I get enough requests, I’ll take the time to release those – as well as insights gained during the development process.

It has been quite some time since I’ve last posted.

I have been quite busy with any number of interesting things. 

Thomas Moore

I recently found and purchased a most excellent medieval hat at King Richard’s Faire in Carver, Massachusettes. I wore it while there, and since I love it so much, I’ve been wearing it at home and in the car.

Think Thomas Moore.

The hat is quite simple and yet it’s also quite warm. I also started to acquire authentic medieval clothing and online cookbooks (from pre-1430). Sleeping in some authentic garb was interesting – but probably too different for me to say I’d enjoy it on a regular basis.

I have also been busy at work – concentrating efforts on a large project and a few smaller ones which are no less important. I spent weeks in Sketch and Illustrator thinking through design problems… working with a team of developers soaking this stuff up to turn it into markup.

I fired up Xcode again and I am coding the smaller projects while interacting directly with some hardware. Testing new experiences and interactions. I always love coming back to coding after a hiatus… no matter how long the separation was.

I’ve tried reading The Fall of Gondolin a few times since receiving it. However the days darken quickly and by the time I have an opening, it’s usually too late to get to. My chances come in digital format more often than not. I may have to just realize that my consumption of the material will have to come while in bed before slumber with my face emblazoned by artificial light and pixel pages.

Thanksgiving was a humdinger! We hosted and my wife knocked the culinary world on its collective ear. The turkey was purchased from Whole Foods… and while it cost the GDP of some smaller countries, it was stuffed with fruit and herbs. Balanced atop our roaster, we basted it every 30 minutes and it came out splendidly moist. We had the usual, but one thing we added was real cranberry sauce. It made an enormous difference, to be honest. It was easy to make as well. We had fifteen at the house and everyone had plenty of room. We set up a table in our garage that keep all the drinks in order, easily available on demand, and chilled as well. 

I missed seeing Martin Barre in Natick – I had front row center seating too. I had a terrible cold and wasn’t feeling up to it. I didn’t want to get anyone in the band sick either, as I would have hung out at the end with them and a guy named Charlie. That’s a great story for another time. 

I vowed to never see a band at the Xfinity Center in Mansfield, MA again – the last time I saw Iron Maiden (it was about 100°F) and it took me four hours to get to the highway afterward. Horrible. Well… Maiden is coming back and I could have gotten General Admission Pit again (the only way to see them really), and I waited too long. I should have just purchased a ticket and dealt with the traffic. But now tickets are ridiculously expensive and I will pass on the whole thing. 

Verifying assets with the iTunes Store… solved

Verifying

Your mileage may vary with this post, but in my case, I was chasing my tail for some time while finally coming to a solution.

At work, I generally author all kinds of prototypes. Sometimes I use Xcode and author iOS applications with interesting levels of interaction and communication. In these cases, I often need to share my work with a designer who lives several time zones away from me. Instead of him installing Xcode and building to his own devices while utilizing source control, I can swing a binary his way using TestFlight. This works pretty well. Until recently.

I would archive my project and attempt to upload it to App Store Connect so I could assign it to the designer and they would be able to install directly from TestFlight on their device.

This time the upload stuck at “Verifying assets with the iTunes Store…”

Googling for answers, I came across a lot of chatter about getting off a corporate network because of potential port blockage that would allow the upload to complete. That did not work for me. I tethered to my iPhone X, public Wi-Fi outside my work LAN, etc. Those did not work. My upload remained stalled at the same place each and every time. I restarted my laptop. No difference.

I then did the following which actually told me what was going on:

  1. Create an Archive in Xcode of my project.
  2. Export the archive to my desktop instead of uploading to the iTunes Store. Saved to my desktop.
  3. From Xcode, I launched the Application Loader. Selected the .ipa generated in step 2 above.
  4. After getting stuck during the same activity, AL actually gave me a bunch of error feedback. I forgot to apply artwork for all of my application’s icons. Oops. Without using AL, I never would have known this.
  5. I assigned all the icon images in the project – then tried to upload a new archive from Xcode.
  6. It was stuck yet again. No idea why.
  7. I took that new archive, exported again to my desktop. Used AL to upload the newly created .ipa to the iTunes Store.
  8. This worked quickly and just fine!

I had become so used to authoring my own prototypes (apps) without worrying about icons for TestFlight that I simply didn’t include them. I spent a few hours trying to solve the problem. It seems there is still some sort of thing preventing me from uploading an archive directly through Xcode – I still needed to use Application Loader. However, I was able to get the binary uploaded, and after about 10 minutes it was processed and ready for TestFlight activity.

A funny trip to the Apple Store

I purchased the iPhone X when it first came out and I’ve been loving it. I had a screen protector applied at the store as well as a silicone case. I’ve since dropped the phone many times – even on a stone tiled bathroom floor. No issues at all, which amazed me. Yes, I have Apple Care+ on it, so I am not as careful as I should be.

About a month ago we were getting out of the car, and I had my phone in my lap. I swung to the side, extended my legs, and got out of the car. My phone went flying and landed in the parking lot that was full of gravel. My phone had seen much worse, so I was surprised when I picked it up that the bottom left corner of the phone had shattered a bit. A few spider lines reached across the display to the right.

Crap.

I booked an appointment at the nearest Apple Store (from which I just returned) and figured I would be out a few hours while it was replaced. When I arrived, I was quickly told that this was my lucky day. The Apple guy peeled my protector off, and all the cracks were in it. My screen was pristine.

I forgot that the protector was Belkin InvisiGlass. I had it replaced with the new 0.29mm version. The previous was 0.21mm. It had served it’s purpose, but this new one is supposed to be much nicer.

Whew. I was relieved but also a little embarrassed. 🙂

Sublime Text 3, Ito En, and Carbon Based Lifeforms

Tea

What do these three things have in common? They are awesome. And they go together seamlessly.

I have recently taken up a quick project where I need to communicate with a collection of addressable LED bulbs in a custom lighting system. Pretty easy coding, but I wanted it to be able to run in a browser – using a cheap tablet and laptop to control equally. So I needed to snag a decent editor for Javascript, HTML, and CSS. I already had Sublime Text 2 and I enjoyed it in the past. I discovered that Sublime Text 3 had been released, and decided to use the better bits. It makes my development so much smoother. I used to use BBEdit, but I prefer how flexible ST2/3 really are.

ST3 Iced Coffee Script

So I currently have ST3 running. On top of that, I have iTunes pumping sweet Carbon Based Lifeforms (artist) into my Bose QuietComfort 35 Series II headphones. Joy. The current album is entitled “Derelicts”. It’s ambient enough to allow me to concentrate quite well, but it does not drone with a whimper. It must be scientifically formulated to stimulate just the right neurons for the type of work that I do. I float along and my fingers tap out the source code to the patterned beats.

Beside me stands a bottle of Ito En: Oi Ocha Unsweetened Green Tea With Roasted Rice. There is something magical about it. The first few sips taste like the bottom of a stagnant puddle but then the flavor slowly turns to a nice flavor. It feels tied to the earth in some unexplainable way. Honest.

伊藤園:お米焼き菓子

It’s a great way to spend an afternoon. Now, if I only had a window in this office. I’ll get a screensaver going on the Apple TV I guess.

 

1949 Doxa in rotation

My Doxa

In my wristwatch rotation is a newly acquired 1949 Doxa (Swiss Made of course) with a sub seconds complication.

Think about that. The watch is a mechanical wind that is 69 years old. It keeps incredible time for such an old piece that hasn’t been serviced since I don’t know when. The accuracy is probably up there with my Rolex from the 90s. The power reserve is about 50 hours. Think about that too. This thing is a delicate, beautiful little dynamo!

It’s on the small side for my wrist, but I love it all the same. It remains on the braided brown leather band that it came with, but I’ll be swapping that out for another soon. I initially ordered some 18mm Nato straps, but now that the piece is in my possession, I don’t think a Nato strap will work. The dial and it’s markers and hands are simply too delicate in my opinion. Once the straps arrive, I’ll be able to better assess once they arrive.

Video

 

Tagged : / / /