waiting for my iPhone SE

I will hopefully have my new iPhone SE tomorrow.

Figuring out the logistics of getting this phone has been a bit of a task. When I ordered it from Apple, in-store pickup would have been easiest for me, but wasn’t an option. Next-day shipping was free, but they didn’t say which carrier they’d use. It turns out they’re using UPS, which complicates things a bit for me.

There was an option (via Apple) to waive the signature requirement. If I did that, then UPS would probably have left the phone for me today, and I’d probably have it. But there would have been a non-trivial chance that someone would have stolen it, and waiving the signature requirement means Apple and UPS take no responsibility for that. So I kept the signature requirement.

Once I got the e-mail with the tracking number, I was hoping I could tell UPS to hold the package at their office in Bound Brook, so I could just pick it up. But you can’t do that with just a tracking #, unless you’re in their “My Choice” program. Which I can’t get into, since they think my address is commercial and not residential. I spent some time on the phone with them last year trying to straighten that out, but didn’t really get anywhere. And I checked last night, and the issue still hasn’t been fixed.

So I had to wait for them to make a delivery attempt and leave an info notice. Which they did today. With the info notice number, I can have them hold the package at their office. So I did that, and I can probably pick it up tomorrow. Of course, the office is only open from 8:30am to 6pm, so if I want to pick it up in the morning, I need to come into work late. And if I want to pick it up after work, I might not make it in time, if traffic is bad. Maybe I’ll go over on my lunch break. (And they’re not open on the weekend, so if I don’t get it tomorrow, I’ll have to wait until Monday.)

It’s kind of funny how many hoops I have to jump through just to get this package. But hopefully it’ll be worth it!

Podcasts

I listen to a lot of podcasts these days, and I’ve noticed that I’ve changed a few things up recently, so I thought I’d write up a blog post.

First, I’m still using Overcast. I switched to that, from Instacast, when that app/service shut down a while back. Marco Arment released a new version of Overcast just recently and wrote a blog post about it. He’s obviously the kind of guy that cares about what he’s doing, and it shows in the finished product. It’s easy to use and reliable. One of the interesting things he recently added to the app is the ability to upload files for personal use. This feature is only available to “patrons” who pay a modest recurring fee. I’m currently using Huffduffer to do something like this, so I don’t really need this feature, and I haven’t set myself up as a “patron” for Overcast, though I might do it at some point. (I had paid for Overcast back before he discontinued the paid version and made all features free, so I don’t feel like a freeloader or anything.)

In terms of podcasts I’m following regularly, I’ve added a few new ones recently, and also dropped a few. And I’m thinking about dropping some others.

For tech/programming podcasts, I still subscribe to .NET Rocks, Hanselminutes, and Mac Power Users. Hanselminutes is interesting most of the time, and is a weekly, 30-minute show, so it’s not hard to keep up with.

.NET Rocks (DNR) is about an hour long, and comes out three times a week now, so it’s a bit harder to keep up with. The way I have Overcast set up, I keep only the five most recent episodes of any podcast, and I’m often about three weeks behind, so this means that DNR episodes often drop off before I’ve listened to them. And if I didn’t cull some out, or rearrange them in my playlist occasionally, none of them would ever make it to the top of my playlist. Luckily, a lot of recent DNR episodes have been covering stuff that I’m not that interested in, so it’s easy to skip those. The “geek out” episodes that they do periodically, though, are really great, so I’d keep subscribing to DNR just for those, even if none of the other episodes were interesting to me. What I’ve been doing is occasionally deleting episodes that don’t look interesting, and/or rearranging my playlist to move the “geek out” episodes up.

Mac Power Users (MPU) is weekly, but is generally around 90 minutes long, so that one is also a bit hard to keep up with. I enjoy MPU, and have gotten a lot out of it, but I’m finding that, after listening to it for several months now, I’m not always getting a lot of new information from it. So this is another one where I’ll skip shows occasionally. I might even drop my subscription to it for awhile, then maybe come back and give it another try in six months.

Long ago, I used to listen to a number of music podcasts. Most of them went away some time ago, and I didn’t really replace them with any new ones, so I haven’t had many music podcasts to listen to lately, and I’m trying to address that.

My favorite music podcast, from way back, was Insomnia Radio (IR). This was a great show that stopped releasing new episodes several years ago. The main show spawned several spin-off shows, but I never followed any of those. I recently visited the old IR website, to see what was up, and was pleasantly surprised to see that the IR UK show was still up and running. But it doesn’t seem to be releasing on a terribly regular schedule. I added a subscription to it in Overcast, so it’ll be there whenever it does update. And the main IR show has been resurrected, though there’s only been one new show, posted in February, and nothing since, so who knows if Jason will do any more, but I’m definitely hoping that he will. IR also does a “daily dose” show that’s just a single song. I don’t currently subscribe to that, but I should add it, since that feed is still pretty active.

I’m also still subscribing to Warren Ellis’ SPEKTRMODULE, which is released only sporadically. (Only one show has been released in 2016 so far.) But it’s a cool podcast, though infrequent.

And I subscribe to The Many Moods of Ben Vaughn, which still comes out weekly, and is always worth listening to.

For humor podcasts, I subscribe to Judge John Hodgman, which is great. It comes out pretty consistently, once a week, and is always fun to listen to. I also subscribe to The Bugle, but that podcast went on hiatus a while back. They did a new one recently, and will hopefully do them more regularly this year, but who knows. I think they’re shooting for one a month.

For “miscellaneous” podcasts, I’m still subscribed to StarTalk with Neil deGrasse Tyson. That’s still a lot of fun, but many of the episodes recently have just been the audio portion of the National Geographic TV show, so I generally delete them, since I’ve already seen the show on TV. And a lot of them are rebroadcasts of old shows, so I will often delete those too, if I’ve already heard them.

I’ve recently added a number of NPR podcasts. Note To Self is a pretty good one. It’s usually weekly, and 15 minutes long, so it’s easy to keep up with. It’s a tech podcast, but with a different angle than most other tech podcasts.

I’m also listening to Planet Money now. This one is also really good. Most shows are about a half-hour long, and are very well-researched, well-written, and well-produced. They generally do a deep dive into an obscure financial topic that illuminates something that’s important, but maybe not well-understood.

And I just added Pop Culture Happy Hour. I haven’t actually listened to any of those yet, but it looks interesting. So that’s enough NPR stuff that I’ve grouped them all into an NPR playlist in Overcast.

So I guess now I have a nice broad selection of interesting podcasts to listen to, whenever I’m in the car, or looking to listen to something before bed, or whenever. And I have separate playlists for tech, music, humor, and NPR podcasts set up, so I can switch between them depending on my mood.

Kurosawa on TCM

Earlier this week, TCM had a little marathon of Akira Kurosawa movies. I caught them all with a WishList search that I set up when I first got my TiVo Bolt. I’m still really liking the Bolt. I don’t think I could go back to the cable company DVR, and I hope I don’t ever have to. TiVo might get acquired by another company soon. If they do, hopefully they’ll keep making new hardware and supporting their existing hardware.

iPhone SE

I ordered myself an iPhone SE today to replace my old iPhone 5S. I ordered it from Apple (rather than Verizon), for no particular reason other than that the Apple Store website is nicer than Verizon’s.

It should show up at my home on 3/31, but it might turn into one of those things where the FedEx or UPS guy won’t leave it without a signature, and I have to go pick it up, in which case I probably won’t get it until 4/2. (I was hoping I could choose in-store pickup, but that’s not available yet.)

The iPhone SE is pretty much exactly what I want: a new phone that’s exactly like my old phone, only with a new battery, more memory (64GB instead of 32GB), Apple Pay, and a few other minor bells and whistles. I don’t want a bigger screen or that fancy 3D touch stuff. Heck, it should even fit in my old case (though I might buy a new case anyway.) And it’s been getting good reviews.

I’m planning on trading in my old iPhone, but I’m not sure whether I’ll go with Gazelle or Apple. It looks like Gazelle will give me $85 for it, while Apple might give me $150. Either of which is pretty good. (Verizon was only going to give me $15.)

I’m paying for the new phone at full price ($500), which is the first time I’ve done that, I think. Buying it on contract is apparently still an option for me. It would have cost only $50 that way, but my monthly bill would have gone up $20, so doing the math on that over two years, it would be slightly more expensive than buying the phone outright.

I keep thinking about leaving Verizon for another carrier, but I decided against that. My only real complaint about Verizon right now is that I’d like more than 3GB of data per month, or at least to be able to roll over unused data. But with more memory on the new phone, I can download more music to it, so maybe I won’t feel as tempted to use up all my data on streaming music, which is my usual problem.

Ken Butler

Yesterday, I went down to Whiting to visit my friend Gloria and celebrate my birthday. Since it was a nice day out, and I got an early start, I decided to stop by the cemetery and visit my parent’s grave.

The cemetery was nice and quiet, and it was a good visit. They seem to have finished the construction that they were doing, so the main entrance is open again, which is good. (But the bad news is that they still don’t seem to have any restrooms open on the weekend.)

I had a good dinner with Gloria and a couple of other friends. But, during dessert, Gloria got a call to let her know that our friend Ken Butler had passed away. He had been having a lot of medical issues lately, and Gloria had told me earlier that he was under hospice care, so it wasn’t entirely unexpected, but he’d only recently been moved to hospice, so we assumed he’d have more time. (Coincidentally, his birthday was right after mine, and Gloria had been planning to visit him at the hospital for his birthday.)

Ken was a good friend to my parents, and to Gloria. He had done a number of odd jobs around the house for my parents, and was pretty handy with that stuff, which my Dad admired. (These were the kind of jobs that my Dad would have done himself, before his eyesight got too bad.) And he was a driver for Meals on Wheels when my parents were getting meals through that program.

In recent years, he’d had to stop driving, but he had an old bicycle that he’d ride around on. I’d see him at Gloria’s house often, when I was down there visiting. He’d come by almost every day for a game of dominoes with Gloria, and he was always joking around and making her laugh.

I last saw him only about a month ago, and he seemed to be in good spirits despite his medical issues. He’ll be missed.

The Care Package – by Jack Ohman

The Care Package is a short comic series that was posted to the PBS NewsHour web site last year. It was a really well-done series about the author’s father’s final years and death. I had read one part of it, and bookmarked it, but never got around to sitting down and reading the whole thing until yesterday. It’s quite touching, and reminds me of some of the stuff that happened in my own parents’ final years. (Stuff like spending so much time in the hospital that you know where all the good vending machines are. And dealing with c. diff.)

Here’s are links to all five parts:

Long-term care is a tough problem. My Dad spent a lot of time thinking about it, and weighing options, and in the end, for him, he didn’t need it; he went from home to the hospital, and died there. My Mom was another matter, though also, in the end, she didn’t really need long-term care. She went from home to assisted living, but died after only a few months there, and was in and out of the hospital that whole time. But I learned a lot about long-term care in that time, since I did a lot of legwork and research in trying to find a place that was a good fit for my Mom.

Populating fields in SharePoint / InfoPath from query string parameters

As a follow-up to my previous blog post about hosting a web browser control in Dynamics AX, here’s a write-up on how I fudged a SharePoint page / InfoPath form to accept multiple field values from a query string parameter. To reiterate some of the background, the idea here was to be able to open up a new request in SharePoint, from Dynamics AX, with a few fields on the form pre-filled, so that the user wouldn’t have to copy & paste a bunch of stuff from AX into SharePoint.

My idea was to pass those values on the query string, which seemed pretty reasonable. I found some information on doing that with a bit of JavaScript, but that didn’t look like it would work well, for a form that had been created in InfoPath. So then I looked to the “query string URL filter web part”. This web part can be added to a SharePoint page, and allows you to pass a single query string parameter to a field on a SharePoint/InfoPath form. The big issue here is that it only supports a single parameter, so my plan to do something normal, like “?SO=S1234&PO=P1234&item=123456…” wasn’t going to work. After reading this blog post, and some other related posts, I came up with a plan to encode all of the values I needed to pass into a single parameter, of a form like this: “?param=SO:S1234|PO:P1234|IT:123456|…”. Not very pretty, but it would get the job done.

I mapped that one parameter to a hidden field on my InfoPath form, then added a bunch of rules to that field to break down the value and save the parts out to the desired form fields. There aren’t a lot of string-handling functions in InfoPath, but I found that substring-before and substring-after were enough for what I needed to do. A formula like this:

substring-before(substring-after(URL parameters, "PO:"), "|")

can be used to extract the PO # “P1234” given an example like the one in the previous paragraph. This works, but it’s a little tenuous. If I had too much data to cram into the parameter, that would be a problem. Or if I had to worry about having special characters (like the colon or vertical bar characters) in the data fields, then that could confuse things quite a bit. But for my use, it works out pretty well.

I don’t actually do much SharePoint / InfoPath work. Every time I do, I feel like I’ve travelled back in time, to an era when InfoPath seemed like a good idea. (Though I’m not sure it was ever a good idea…) It doesn’t seem to have much of a future, though Microsoft will support InfoPath 2013 until 2023.

Flickr changes

I’ve had a Flickr account for over ten years now, and I’ve paid for Flickr Pro for the last five years or so. There have been some ups and downs, but I still think it’s a good service. They’re making some changes to Flickr Pro, the main one being that the desktop Auto-Uploadr will be a pro-only feature. I’ve never used the new uploader, and I don’t ever want anything automatically uploaded, so it’s no big deal for me either way. But they’ve been getting some negative press on this, including this article at Wired that I think is a bit of an overreaction.

I still think that Flickr is a good service, both for casual and more serious users. I have a little over 2600 photos in my account, so switching to anything else would be a big hassle. So I’m hoping it continues to be a reasonably good service and I don’t have to worry about it.

Metropolitan Museum admission

From Metropolitan Museum of Art Reaches Settlement on Admissions Policy:

The Metropolitan Museum of Art reached a settlement Friday in part of a long-running legal challenge to its admissions policy, conceding a semantic point and agreeing to change the wording on its signs to say that its $25 dollar full-admission charge is “suggested” instead of “recommended.”

This is such a weird little semantic issue, but I find myself somewhat amused by it. Is “recommended” misleading? I don’t know. “Suggested” does sound less judgemental to me, at least, but not by much. And why would The Met waste time and money battling this in court?

Some history on this here and here.

I’m a member, so I don’t pay for admission, but I’ve always been curious about how many visitors actually pay the suggested admission, how many pay nothing, and how many pay something in between zero and the suggested price. I like the idea of “pay what you want” transactions, whether it be Humble Bundle sales, They Might Be Giants albums, or museum admission. And I like the idea of places like The Met (or AMNH) being open to everyone, regardless of their ability to pay a $25 admission fee.

Hosting a web browser on a Dynamics AX form

I’m working on an interesting little project at work right now. We use SharePoint to facilitate some workflow around our sales orders and purchase orders. But there’s currently no link between AX and SharePoint, so the sales and purchasing reps have to copy & paste information from AX to SharePoint forms. Not a huge deal, but a bit of a waste of time for everyone. So the idea was to add buttons to various forms in AX that would open a new SharePoint form, with certain fields pre-populated. I might write up some stuff on the SharePoint side of this later, but this post is going to be about the AX side.

The first (obvious) idea was just to launch an URL in the default web browser. And that works fine. Except that everyone is accessing AX through terminal servers. And, while IE is installed on those servers, the internet connection on those servers isn’t filtered the same way it is on end-user machines. So clever users could launch IE from AX, then navigate to restricted sites and possibly infect the terminal servers with malware. Which would be very bad.

My first thought was that there ought to be a way to launch IE on the end-user’s actual PC from the terminal server, but if there’s a way to do that, I can’t figure it out. (And it makes sense that there isn’t, really.) So my next thought was to launch the SharePoint site in a web browser control hosted in an AX form, with no address bar and no way to navigate away from that SharePoint site. Simple enough, right?

After a bit of web searching, I found this article on hosting an instance of System.Windows.Forms.WebBrowser in an AX form. I got pretty far with that, including preventing new windows from opening (which would allow them to break out of the control and into IE), and also preventing them from following links to other sites. But there was one key issue I couldn’t get past: the tab key and control keys wouldn’t work in the control. So the user wouldn’t be able to tab from field to field, or copy & paste information with Ctrl-C and Ctrl-V. I found a few references to this issue on StackOverflow and elsewhere, but no solutions that would have worked easily in Dynamics AX. (They mostly relied on doing things that would work in a real Window Forms app, in C++ or C#, but that I wasn’t going to be able to do in AX.)

So I punted on that, and decided to try just adding the ActiveX web browser control to the form. I’d never actually added an ActiveX control to a form; there’s a good overview about how to do that here. The most important thing I picked up from that is the “ActiveX Explorer” function that can be accessed form the context menu after you add an ActiveX control to a form. That’s how you hook into control events.

I managed to do everything I needed with the control:

  1. Set it to suppress JavaScript errors, via the silent flag. (Our SharePoint site has some messy JavaScript on it, that doesn’t cause any issues, but throws up some errors, if you don’t suppress them.)
  2. Prevent navigation outside the SharePoint site, which I can do by setting a cancel flag in the BeforeNavigate2 event handler.
  3. Prevent opening new windows, which I can do by setting a cancel flag in the NewWindow2 event handler.

And it handles the tab key and control keys normally, without any workarounds.

So that’s about it. ActiveX is a twenty-year-old technology, but it still works. As much as I would have liked to do something fancier, I can’t complain!