Monday, November 30, 2015

3rd Annual Fairfield County Beer Advent Calendar (2015)

This year with Bill Farrell and Steve Spanos.

We have a few extras this year:
Friday, December 26, 2015: Evil Cousin - Heretic Brewing Company
Saturday, December 27, 2015: TrIPL - Jack's Abby Brewing
Sunday, December 27, 2015: Doubletyme DIPA - Crop Bistro & Brewery

Thursday, May 7, 2015

I Just Want to Run my Watch App in the Simulator!

I spent the better part of a day and a half trying to add a Watch app to an existing iOS 7 project and run it in the simulator, but ran into two primary problems. First, the repeated appearance of the SPErrorInvalidBundleNoGizmoBinaryMessage error and second, the “Waiting to attach” message in the Xcode Debug Navigator. This seems to be happening to lots of others as well. Let me outline what worked for me in the hopes that it saves you from spending as much time as I did on this.

Note that this pertains to using Xcode 6.3 with an iOS project having a deployment target of iOS 7.0. If your situation is different, this may not help you at all.
  1. Select the project target of your iOS app. Go to the General tab. Make note of the version and build values there.  Select your WatchKit Extension target and your WatchKit App target and set them to be the exact same values as the iOS app. If the version is 1.2, set the version for all three targets to be 1.2, If the build is 32, set the build for all three targets to be 32.
  2. Select the project target of your iOS app. Go to the General tab. Make note of the team setting. Select your WatchKit Extension target and your WatchKit App target and set them to be the exact same value as the iOS app.
  3. Select the project target of your WatchKit App – NOT the iOS app, NOT the WatchKit Extension. Got to the Build Settings tab. Find the iOS Deployment Target setting. Set that to be iOS 8.2. I’m not clear on the reasons, but it CANNOT be iOS 8.3. The extension can be set to 8.3, but not the app.
  4. Select the project target of your WatchKit Extension and then your WatchKit App. Both of mine showed warnings for my provisioning profile. In my previous attempts to get to this point, I had created new App IDs using the bundle identifiers Xcode created in the Member Center. Xcode then created provisioning profiles on its own. I would suggest you create the App IDs, got to the Build Settings tab and set your Provisioning Profile to be Automatic, quit Xcode, re-launch Xcode, open the project, build, and hope that this voodoo dance gets you what you need. You may need to refresh provisioning profiles Xcode has, but I did not. 
Now, at this point I could run the iPhone 6 8.3 simulator and see the time and charging icon in the top-right corner of the Watch simulator. BUT, if I switched to one of the 8.2 simulators, specifically the iPhone5s 8.2 simulator in my case, THEN I started to see the “Waiting to attach” message in the Xcode Debug Navigator, where it sits indefinitely.

To recover from this problem, sometimes I had to reset the simulator and do a deep clean (Cmd + Shift + Option + K) and sometimes I just needed to switch back to the iPhone 6 8.3 simulator.

I honestly don’t know what new issues will come up as I try to test on a real device, but this at least got me to the simulator.

Wednesday, November 26, 2014

2nd Annual Fairfield County Beer Advent Calendar (2014)

Sunday November 30: Narragansett Bohemian Pilsner
Monday December 1: Heavy Seas Peg Leg Imperial Stout
Tuesday December 2:  Evil Twin Low Life
Wednesday December 3: Two Roads Road 2 Ruin Double IPA
Thursday December 4: Gasthaus & Gosebrauerei Berliner Style Weisse
Friday December 5: Otter Creek Wolaver's Oatmeal Stout
Saturday December 6: Dixie Blackened Voodoo Lager

Sunday December 7: Victory Golden Monkey
Monday December 8: Traveler Illusive Traveler Shandy
Tuesday December 9: Samuel Smith's Imperial Stout
Wednesday December 10: Kcco Black Lager
Thursday December 11: Saint Arnold Santo
Friday December 12: Rogue Hazelnut Brown Nectar
Saturday December 13: Shipyard Blue Fin Stout

Sunday December 14: Flying Dog Old Scratch Amber Lager
Monday December 15: Geary's Hampshire Special Ale
Tuesday December 16: Harpoon White Unfiltered Wheat Beer
Wednesday December 17: Thornbridge Saint Petersburg Imperial Russian Stout
Thursday December 18: Schneider Weisse Aventinus Wheat Doppelbock
Friday December 19: Ayinger Brauweisse
Saturday December 20: Two Roads Unorthodox Russian Imperial Stout

Sunday December 21: Ballast Point Sculpin IPA
Monday December 22: Maine Beer Company King Titus Porter
Tuesday December 23: North Coast Brother Thelonious
Wednesday December 24: Samuel Adams Thirteenth Hour Stout

This year with Bill Farrell!

Source: Total Wine of Norwalk, CT, Whole Foods of Fairfield, CT, and Mo's Wine & Spirits of Fairfield, CT

Tuesday, October 28, 2014

The Order of Adapters in Lawnchair

If you are using Lawnchair and you want to explicitly define the order in which adapters are used, then you must open the unminified file and make sure they appear IN REVERSE ORDER THAT YOU WANT THEM in the source.

I have no idea if this is a bug new to version 0.6.1, but you can inspect Lawnchair.adapters in your dev tools of choice to see the order and run tests to confirm they are what you expect -- and I strongly recommend you do this.

For me, I have them pasted in my Lawnchair file as window name, Web SQL (a separate download on the site), then Local Storage, which puts them in the order for actual use: Local Storage, Web SQL, then window name.

Saturday, June 7, 2014

jQuery show() and hide() Don't Seem to Work with jQuery Mobile

That's not entirely true. Chances are you're running into this type of situation.

I was trying to hide a set of ui-block-* elements in a JQM grid when the user tapped a button. On the same set of ui-block-* elements, my media query for an iPhone was setting display: block !important. When the user would tap the button the elements would animate to hide but then suddenly re-appear.

This was not a problem on an iPad or in a desktop version of Chrome. But on the iPhone (iOS 6 and 7 at least), the !important directive was winning -- was dictating the final display.

That !important directive was unnecessary in my case, so when I removed it the calls to hide() and show() began working as expected.