mixed feelings about Microsoft

I’ve been having a lot of mixed feelings about Microsoft lately, and I feel like I need to blog about this, so I can get some stuff straight in my head.

Overall, my feelings about Microsoft have gone back and forth, over the years. At one point, I thought of Bill Gates as being pretty darn evil. After his retirement, and his reinvention as a philanthropist, I softened up on him a bit. I never liked Steve Ballmer. And I liked Satya Nadella quite a lot, in the beginning, and even read his book, but I’m starting to have mixed feelings about him. So that’s the CEOs.

As for operating systems, I tolerated MS-DOS and Windows 3.1, and knew I had to learn and use them, but never much liked them. When Windows 95 came out, I was actually kind of excited about it, enrolled in the preview program, and installed it on my home machine, from floppy disks. My enthusiasm for later Windows versions has varied. I do mostly like Windows 10, which is what I’m running on my home desktop PC right now.

And as a programmer, I’ve also gone back and forth. I liked classic ASP when that was released. And I liked ASP.NET, and .NET in general, when that came out. I’ve been an enthusiastic .NET developer since 2002.

Microsoft Build was this week, and I (as usual) registered for the online component of the conference, and tried to watch some of the content. Honestly, I couldn’t find much of interest to me. They’re really pushing AI, and, while I’m not entirely against it, I’m also just not as enthusiastic about it as they’d probably want me to be.

Watching this week’s Windows Weekly reminded me of some of the issues I have with Microsoft right now. First, MS is having issues with employees protesting during events, mostly around Israel/Palestine, and I don’t think they’re handing that well. (And here’s something from Brian Eno about the issue.) Second, I don’t think the layoffs they did recently were necessary, or handled well. Third, they had Elon Musk on stage during the Build keynote. (I don’t think I need to say why that’s bad…) Overall, they’re doing what I guess I should expect a giant tech company to do, but, well, I was hoping for better.

So, where does that leave me? Well, I still need to use Microsoft products for work, and a big part of my job is supporting our relationship with Microsoft, so I still need to be invested in the ecosystem. I registered for the AZ-204 exam today, for the end of June. (I blogged about that recently here.) I still have a lot of studying to do, to prepare for that. So, in general, I’m still going to keep learning and trying to keep up with this stuff. I can’t give it up and switch to Linux.

On the home front, I’ve been thinking about what I should do about my ten-year old Windows 10 desktop PC. It’s still my main machine, and it still works fine. With Windows 10 reaching end of support in October, I need to do something, but I can’t decide what to do. I might decide to subscribe to a third-party update service for Windows 10. That’s probably a little risky, but might be my best choice.

I’ve also been playing around with the idea of switching the machine over to Linux. That’s probably a horrible idea, but I kind of want to do it. There’s a campaign going on to encourage switching from Win 10 to Linux, and that’s what put the idea into my head. I would really still need to run Windows, though, so I’d have to figure out if I could make do with using my Lenovo ThinkPad for all my Windows stuff, or if I could dual-boot the desktop machine, or run Windows in a VM, or something. Regardless, I would just be complicating things and making life harder for myself. (Which doesn’t usually stop me from doing something stupid, but…)

My other thought was getting a Mac Mini and trying to gradually move my home stuff off Windows and onto Mac. That’s a lot more doable. (I already have a MacBook and use it for a lot of stuff.)

Well, this post has been a mess, and I don’t think I’ve decided on anything. But maybe I’ve moved forward a bit with my thinking. I going to leave it there, and try not to worry about it too much right now.

Roland-Garros, YouTube TV, and other stuff

I’ve finally talked myself into cancelling YouTube TV. I had signed up for it about a year ago, after (finally) cancelling my cable TV service. So I’m slowly finding my way into the 21st century, at least with regard to video entertainment.

It’s going to be weird giving up the system I grew up with, with all the “OTA” TV channels I’m used to. But I’ll figure it out. My post-work weekday routine used to include watching a combination of live and DVR’d stuff from YouTube TV, generally the previous night’s Colbert from DVR, and the NJ PBS news either live or from DVR. This past week, I’ve been watching Colbert from Paramount+, which is arguably better than watching it via YTTV, since I don’t have to fast-forward through commercials. (I have ad-free Paramount+.) Watching the NJ PBS news is a little more difficult. It airs live at 5:30 PM, so I can watch it streaming via the PBS app, but if I miss it, the on-demand version isn’t available until a bit later in the evening. So I’ve been missing the NJ PBS news most nights. I may need to figure out a better way to watch news, overall.

Of course, right after I cancelled YTTV, I saw an article about the TV broadcast arrangements for this year’s Roland-Garros, which starts soon. Last year, it was on NBC and Peacock. This year, it’s moved to Max, and other WB/Discovery networks. It looks like they’ll be carrying matches on TNT and TruTV, so I’d be able to watch those if I still had YTTV. But I don’t, and Max is the one major streaming platform that I don’t subscribe to. So maybe I need to subscribe to Max if I want to watch Roland-Garros this year.

Maybe I should cancel my Disney+/Hulu/ESPN+ bundle and replace it with the Disney+/Hulu/Max bundle. Why did we let this stuff get so convoluted and expensive? Maybe I should just read more books and watch less TV!

Programming for Dynamics AX 2012 in 2025

Yes, it’s 2025 and I’m still writing X++ code for Dynamics AX 2012. Sometimes, there are hurdles when you have to write code in an almost dead language for an almost dead product, and you’re trying to get information from the internet. I thought I would take a quick break and write a blog post about that.

First, the state of internet search, in general, is kind of rotten right now. That’s well-documented. And when you’re searching for information about an almost-dead product, it gets harder.

In terms of search engines: at work, I can generally use Bing, Google, and DuckDuckGo. None of those is blocked, though I can only log in to a Microsoft account, not a Google account. So whatever advantage there is to having your search history saved, I can only get that with Bing.

(At home, I’ve been experimenting with Kagi. That’s blocked at work, so I can’t use it there. I may be writing up a blog post on Kagi soon, but that’s for another day.)

I haven’t seen any advantage to using one search engine over another when searching for Dynamics AX content. I think Google is probably the best, to be honest.

A few general observations:

    • Microsoft documentation for AX and X++ is usually still out there, somewhere, on Microsoft’s site, but it doesn’t always surface near the top of any given search. A good starting point for that might be here.
    • AX lives on as “Dynamics 365 Finance and Operations”, or… something like that. Some of the documentation for FinOps also applies to AX 2012. A good starting point for that is here.
    • Axaptapedia used to be a good resource for AX info, but it seems to be gone. It does occasionally still show up in search results. You may be able to find it on archive.org. (Though that’s another thing that’s blocked at work. Sigh.)
    • There are a lot of AX-related blogs out there. Most of them are dead at this point, but still up on the web. And many of them were never really much good. Some were just cash grabs, scraping info from other blogs and sticking Google ads on them and hoping to make some money (presumably). Some were well-intentioned, but provided questionable advice. You can still find some useful blog posts out there, but you need to sift through some dross to get to the useful stuff.

Aside from using search engines, you can also try to get useful information about AX and X++ from LLMs, like ChatGPT and Copilot. I’ve had some success with that, but I’ve found that LLMs are prone to a lot of hallucination when it comes to X++ code. (Again, there are limits to the LLMs I’m allowed to use at work. I’m basically limited to Copilot and our internal LLM chatbot.)

I’ve recently been working on a problem, trying to optimize some fairly complex X++ code. I got some fairly useful advice and assistance out of our chatbot, but also some entirely wrong information. For instance, I needed to review some stuff about X++ collection classes. Our LLM hallucinated a few functions which would be great, if they existed, but they don’t. One was “Global::conSort()” which was supposed to sort a container, and “Set::toContainer()” which was supposed to convert a set to a container. Alas, neither of those exists!

It also gave me some incorrect information about sets. It told me that using a SetEnumerator does not necessarily guarantee that the set will be returned in a sorted, or even predictable, order. But I’m pretty sure that it does always return the set in sorted order. I haven’t found a definitive answer for that anywhere, but here’s a blog post that indicates that sets are returned sorted. And Axaptapedia seems to agree. (And all my testing supports that.)

And here’s one more blog post that has what I think is a pretty good answer:

No matter what order elements are added to a set or keys are added to a map, when using an enumerator to traverse the set or map, the elements are in a sorted order (for string and numeric types). However, the MSDN documentation for the set class states that elements are stored in a set “in a way that facilitates efficient lookup of the elements.” It might not be safe, therefore, to rely on this sorting behavior as it might possibly change in the future.

Good enough for me, for now. So maybe the LLM wasn’t entirely wrong on this, but for my purposes, I’m fine assuming that the output of a SetEnumerator is sorted.

maybe working on the AZ-204 exam

After passing the AZ-900 exam a few weeks ago, I decided to get back to working towards the AZ-204 exam. (TL;DR: I may have overestimated my readiness for that one.)

For the AZ-900, I’d paid for it myself, using a 50% discount from the ESI program, and then got work to reimburse me for it, after passing. That was somewhat useful, since it gave me an excuse to get set up in our expense system, so now I have that ready if I ever need to submit any more expenses.

For the AZ-204, I decided to reach out to the person at work who got me a free voucher when I took the PL-900 in 2023. I wasn’t expecting much, but I figured it would be OK to ask. Well, it turns out that she did have some vouchers, and she gave me one, but they expire on June 30, so I need to use it before then. That’s actually not a bad thing; having a deadline will make me a bit more likely to apply myself, and either commit, or give up and move on to something else.

Just to see how close I was to being ready, I took the Microsoft practice exam this week. I scored only 60% on it, so I’m not nearly ready for the real exam. And some of the questions on the MS practice exam go deeper than a lot of the prep material I’m working through does. I may actually have to learn all of this stuff to pass the exam, not just watch a bunch of videos and take notes.

So the question arises: Is it worth doing the work, just to pass an exam and have a certification on my resume? And the answer is, of course, that we need to determine if the prep work has value, in and of itself. Would it be good if I knew more about, for instance, Docker? Yes. Would it be good if I knew more about a lot of these other Azure services? Probably. So if “doing the work” is fun and useful, it’s worth doing. If I pass the test, great. If I don’t, at least I learned some new stuff. (Maybe I’ll forget it all in a year, but maybe some of it will stick and/or be useful in the future.)

Kindle, Kobo, DRM, and general book thoughts

I last blogged about Kindle and Kobo and DRM in February. Since then, I’ve figured out how to strip DRM from Kindle books again. Short version: you need both the DeDRM and KFX plugins for Calibre, and you need to copy the books directly from your Kindle into Calibre. For a longer version, see this video.

So that feels good, though I’m really at the point where I’m fine reading Kindle books on my Kindle Colorsoft and Kobo books on my Kobo Libra Colour. It’s nice to know I have backups though, if something happens.

I don’t know if I’ve mentioned this on the blog before, but I’ve hit a tipping point recently, in terms of my vision. I’m now finding that many of the print books I have in my TBR pile have print too small for me to comfortably read. So I’m going through a process where I’m trying to replace those with Kindle or Kobo versions. In some cases, I’ve found the books via OverDrive, and I can borrow them from the library. In other cases, I’ve added them to my Kindle wish list, and will buy them if I see them on sale cheap. Either way, I’m taking the print books and donating them. So this will eventually help me clear out some of the clutter in my apartment too. I hope to eventually zero out my hard copy TBR pile entirely.

On a related topic, I signed up for BookBub recently. I’m using that to keep an eye out for sales on these old print books that I want to replace with ebooks. And of course, the BookBub emails have caused me to purchase some books I wasn’t actually looking out for, so my Kindle library continues to grow, much faster than I can actually read through it. But too many books is much better than not enough books, so that’s fine.

my hearing aid

I last posted about my hearing aid about a month ago, so it’s time for a follow-up post. Since then, I have actually picked up my hearing aid and used it for awhile. I even went back for a follow-up and changed something. So I’ve got some stuff to blog about.

When I first got the hearing aid, they gave me a small dome. That seemed fine to me, though I was getting a little feedback from time to time. When I went back for my follow-up visit, they switched me to a large dome. That solved the feedback problem, but I’m not sure I’m comfortable with the large dome. I might see if I can try out the medium size. (Here’s a page with some info about domes.) I’ve figured out that I can order domes from Amazon, or I can just stop by the hearing aid center at Costco and get them to give me one for free. So I may do one or the other of those things.

In terms of overall performance of the hearing aid, I’m pretty happy. Short version: It helps me hear better. (Duh.) Longer version: It doesn’t solve all of my problems. I still have issues with speech comprehension in noisy environments. Maybe that’ll get better as I get used to the thing. I sometimes feel like my brain is still catching up and isn’t used to it yet.

And in terms of how it’s fitting in to my life, and how convenient / inconvenient it is:

  • With the small dome, I was getting to the point where I didn’t notice it was there, and it wasn’t causing any irritation. With the large dome, I find myself fiddling with it a bit, and trying to push it into my ear so it’ll stay in place. (Hence, I think I need to try the medium dome.)
  • While I can pipe audio to it from my iPhone, that doesn’t work really well. So when I want to listen to music or podcasts, I’m always swapping out the hearing aid and swapping in the AirPods. That’s a bit annoying, but it’s not that bad. I’ll get used to it.
  • At work, I use a regular old USB headset for Teams calls. I can use that with my hearing aid still in, but it’s not a great experience. The big issue is that the mic for the hearing aid is behind my ear, so outside the headphone cup. But the speaker of course is in my ear, so I’m getting the outside sound amplified and the sound from the headset blocked by the hearing aid dome. So I generally have to pull out my hearing aid when I’m in a Teams meeting or on a call. I might look into getting a fancier headset where the ear cup fits over the whole ear, so the mic and speaker are both under the cup. But I don’t know if that’s a good idea. For now, I’m just going to be taking the hearing aid in and out for calls.
  • It turns out that I now have too many things behind my left ear. At nearly all times, I have my glasses on and my hearing aid in, so that’s two things fighting for space back there. And I’m still one of those weirdos who is wearing a mask in certain places. So then I have the mask string back there too. And that tends to get tangled up with the hearing aid wire. And I’ve found this week that adding a baseball cap to the mix makes things even more complicated. So I’m getting used to all that and figuring it out.

Overall, the small annoyances aren’t enough to get me to give up on it and demand a refund. I’ll get used to it, I think.