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 : /

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 : /

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 : /

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)")
    }
}

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. 

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.

 

Incoming: iPhone X

iPhone X

My go-to phone has been the iPhone 6 Plus. With the onset of iOS 11, I’ve had some issues. Wi-Fi misbehaving. Stuttering performance. Notification rendering issues. Battery consumption at an elevated rate.

So I started looking at phones. I was due anyway for a new model. I don’t even have force touch or live photos.

iOS 11.2 beta 3 had seems to have fixed everything my current phone suffers from. After I ordered my iPhone X. I need a new one anyway. I ordered the X because it would have been nearly the same getting a jacked iPhone 8.

A couple weeks and I’ll be future enabled. With wireless charging.

Update: Tue Nov 28.

Ashland, MA, United States11/30/20179:03 AMOut For Delivery Today
11/30/20178:28 AMDestination Scan
East Boston, MA, United States11/30/20177:57 AMDeparture Scan
11/30/20177:03 AMArrival Scan
Louisville, KY, United States11/30/20174:57 AMDeparture Scan
11/30/20173:36 AMImport Scan
11/30/20172:36 AMArrival Scan
11/29/201710:06 PMThe package is awaiting clearing agency review. / Your package was released by the clearing agency.
Anchorage, AK, United States11/29/20175:11 PMDeparture Scan
11/29/201712:43 PMArrival Scan
Incheon, Korea, Republic of11/30/201712:54 AMDeparture Scan
11/29/20177:08 PMArrival Scan
ZhengZhou, China11/29/20175:00 PMDeparture Scan
ZhengZhou, China11/28/20171:26 AMYour package is in transit. We're updating plans to schedule your delivery.
ZhengZhou, China11/23/201711:30 PMArrival Scan
11/23/201711:00 PMDeparture Scan
11/23/20179:49 AMThe package is awaiting clearing agency review. / The package is at the clearing agency awaiting final release.
ZhengZhou, China11/23/20175:49 PMOrigin Scan
China11/23/20177:57 AM (ET)Order Processed: Ready for UPS

My brush with greatness

Joe Simpson

I have long admired the grit and determination of Joe Simpson. From Wikipedia:

Joe Simpson (born 1960) is an English mountaineer, author and motivational speaker. He is best known for his book Touching the Void and the 2003 film adaptation of his book.

In 1985, Simpson and climbing partner Simon Yates made a first-ascent of the previously unclimbed West Face of Siula Grande (6,344m) in the Cordillera Huayhuash in the Peruvian Andes. On the descent, Simpson broke his right leg and during the subsequent self-rescue in a storm, the two became separated. The climb was nearly fatal for both climbers and, upon returning to Britain, a misleading article in a national newspaper led to Yates being criticised for cutting a rope keeping himself and Simpson together.[5] Simpson published an article in the climbing press shortly afterwards,[6] and later wrote Touching the Void. There was also a documentary made called “Touching the Void” based on the book.

Simpson underwent six surgical operations as a result of the leg injuries sustained on Siula Grande. The doctors told him he would never climb again and that he would have trouble walking for the rest of his life. After two years of rehabilitation, however, he returned to mountain climbing.

Given my ambitions to hike to Mount Everest Base Camp, I naturally bumped into this climbing legend. Eventually. I watched the movie on that fateful Siula Grande climb and I was dumbfounded. The will to live was on full display. There is something so smooth and friendly in the way Joe speaks. After some time reading books that he’s read and watching interviews, I decided to reach out. Why not?

I got in touch with Joe on Twitter and he couldn’t have been friendlier.

I cannot share the tweets that we have exchanged out of a respect for privacy, but he’s a wonderful person with wonderful manners and outlook on life. He has a wonderful sense of humor as well.

The events that transpired that changed his life happened quite a number of years ago. A tale he’s told too many times. But we connected a little bit. For me, to have someone of his character reply to me at all is a bit of joy. I’m some stranger in a strange land. Yet we’ve gotten on a minuscule bit. His status increased in my opinion.

He’s since told me that I owe him a stack of beers for a favor that he promised for me. I hope that someday I can sit down in some dusty wooden teahouse somewhere and supply him with a stack of beers.

I hope that someday I can sit down with Joe on squeaky stools in some dusty wooden teahouse and supply him with his desired stack of beers.

 

Tagged : /

Bose SoundTouch 300 Soundbar

Vaulted Ceiling

When we moved, I already had a Bose Lifestyle 5.1 system including bass box. However, our new living room has a vaulted ceiling (not too much unlike the image above). We have even more angles, however. And a taller ceiling. The previous system sounded muddy, even after calibration. It just couldn’t fill that space appropriately. We needed something else.

Enter the Bose SoundTouch 300 and the Acoustimass 300 bass box. Not only does it completely fill our touch living room, it booms and provides enough simulated surround sound. The quality is amazing – movies, sports, music, or whatever else you need. The 4K passthrough will come in handy when we upgrade our set. So it’s futureproofed for us. The fact that when calibrated, it smokes my previous true 5.1 system, is amazing.

I am a SoundTouch user – I have several SoundTouch speakers sprinkled around the house in various rooms. The soundbar supports direct SoundTouch capability as it jumps on your Wi-Fi. Perfection.

If you have an oddly shaped (i.e. challenging) room, the SoundTouch 300 is definitely for you. Adding the wireless bass module puts even more icing on the already iced cake. It’s superb.

Tagged :

The Saga Continues

Adrift on a glistening sea of sweet Ambronite, I think fondly to the cup of tea I have my hand wrapped around.

Another expedited meal of absolute known caloric intake that does not disappoint. Rather makes relaxation a bit easier to acquire on a weekend morning.

Please do try it for yourself. The apple ginger is superior to the berry for me. And banana is too sweet.

After all these many meals I do still prefer Huel in texture and in taste. Ambronite makes me feel a little better. The cost being the only prohibitive factor.

Ambronite Banana

Banana

A quick review of the Banana flavor of Ambronite. It’s less sweet than Berries. In a very good way. Now that I have been updated with the correct amount of Ambronite to add, the texture is pretty much spot on. The flavor is slight, the same with the smell.

I made the unfortunate error of placing my green shaker into the dishwasher and the bottle opening is now slightly warped. I have another on order. It leaks a tiny bit at times.

Kudos to Ambronite for addressing the flavor. Huel I still prefer, but I don’t need to choke this stuff down like I did a year or two ago with their previous formulation.

PRW Grail it’s here

I’ve long loved my PRW 1300t-7v. It’s gorgeous but it lacks the version 3 sensor cluster. My 3100 has that but it’s a negative display and basically everything on it is black. The band is comfortable but it’s not metal. I like metal.

Best of both worlds… the PRW 3500t-7v. Looks a bit like my 1300 but with the vastly improved sensors. Sunset and sunrise a plus. Welcome home friend.