Visual Studio extensions and alternatives

Another (relatively) quick post for today: It just occurred to me that, since my work VM has been restored from an older backup, the changes I made to Visual Studio a week ago are all gone. And that’s fine. I wasn’t entirely convinced that CodeRush was something I wanted to stick with anyway.

Since my VM is a little messed up now, I’ve been thrashing around a bit the last few days trying alternate ways to test some stuff out. I have some PowerShell scripts that I usually run on my VM, and I thought it would be fairly easy to copy them over to my laptop or desktop and run them there. But the specific set of modules I need is apparently a little complicated, and I haven’t been able to exactly recreate my environment. I’m sure I could, given time, but oh well.

Then I came up with the idea of installing LINQPad on my desktop and running some stuff there. That wasn’t terribly hard to do, but I’m referencing some DLLs in those that aren’t on my desktop, and, again, recreating the specific environment I needed got a bit too complicated and I gave up. That did get me thinking about upgrading my Pro license to a Developer license, so I’d have nuget support. I might still do that, but not right away.

And, finally, I have been looking at JetBrains Rider a bit lately. I noticed last week that their prices have gone up. Rider is still pretty affordable though. The old price was $139 for the first year (for personal use); the new price is $149. As a subscription product, that’s still enough that it’s not an impulse buy for me. I’d have to know that I was actually going to use it consistently, outside work. But lately I’m not doing enough programming outside work to justify it.

Visual Studio extensions and tweaks

I’ve been spending some time at work recently messing around with my Visual Studio setup. I’ve been fine with my current setup for awhile, but I started getting restless recently. I guess it started when I started reading Clean Code, and watching the associated videos. That got me thinking about automated refactorings, which got me looking at JetBrains Rider and Resharper. And looking at Resharper reminded me of the existence of CodeRush.

I’ve occasionally thought about trying out something like Resharper or CodeRush, but I never got around to it. There are a number of reasons for that, mostly around the cost and the possible performance penalty. But I noticed recently that CodeRush is now available for free, so I figured I’d give it a shot. (And I think Roslyn made it easier for extensions like CodeRush to work without a big performance penalty.)

My normal VS setup, which I’ve stuck with for a while now, is pretty basic, with Mads Kristensen’s Web Essentials, and DPack Rx. I use DPack primarily for the numbered bookmarks, and Web Essentials for a number of random things. CodeRush includes numbered bookmarks, so I thought I’d try removing DPack, installing CodeRush, and seeing how that worked out. So far, I’ve found that CodeRush’s numbered bookmarks don’t work quite as well as DPack’s. There are a number of other interesting features in CodeRush, but I’m not sure if any of them are compelling enough for me to keep CodeRush installed.

I also briefly considered uninstalling Web Essentials, and then just reinstalling the specific extensions from that collection that I’m actually using. But I couldn’t quite talk myself into that, so I’ve still got the whole collection installed.

On a related subject, I recently listened to an episode of .NET Rocks with Mads Kristensen on VS 2022 extensions. And another one with Mark Miller (author of CodeRush). I’m not currently subscribed to .NET Rocks in my podcast client, but I do check in on it occasionally to see if there’s anything interesting.

Getting back to the general subject of VS extensions and setup, I also revisited my work setup and tried to decide if I could switch from VS 2019 to VS 2022. I do my VS development at work on a VM that’s running Windows Server 2012 R2. That probably seems weird, but it’s necessary for Dynamics AX development. And VS 2022 isn’t supported on Server 2012, though I could probably get it to work. So I’ve been going back and forth on whether or not I should try to install it on my current VM, or maybe ask my boss for a new Windows 10 VM to use for VS 2022. I’ve decided to stick with VS 2019 for now, but I may need to ask for a new VM at some point. In part because I have a .NET 5 project in VS 2019, and .NET 5 is no longer supported. And .NET 6 isn’t supported in VS 2019. So it’s all kind of complicated. Asking for a new VM shouldn’t be a big deal, but I’m a little nervous about it, since I just got a new boss, and I’m now in a different sub-division of the IT department, and the rules about this stuff might be a little different than they were under the old boss, so I want to feel things out a bit before I start asking for stuff.

I did install VS 2022 on my personal laptop back in May. I do like it, and would love to be able to switch over to it. (Unlike some previous versions of VS, they don’t seem to have made any really bad UI decisions that make me want to stick with the older version…)

I also spent a little time messing with the default font in VS on Friday. I’ve stuck with Consolas for quite some time now. But  I was watching a LinkedIn Learning video on Friday where the teacher’s setup was using Cascadia Code, and it looked kind of nice. I’d read about Cascadia Code when it came out, but I never got around to trying it. So I switched over to it for a little while, but then decided to switch back to Consolas. The whole code ligature thing is interesting, but Consolas just seems to work better for me.

All of this fiddling around made me think about the balance between sharpening the saw and… pointless procrastination. (It’s bothering me that I know that there’s a clever metaphor similar to “sharpening the saw” that basically means “pointless procrastination”, but I can’t remember what it is.)

Well, I’ve now killed a bunch of time on a hot Saturday morning, drinking iced coffee, waiting on my grocery delivery, and writing a rambling blog post. My plan for the rest of the day revolves mostly around watching the last two episodes of Stranger Things on Netflix. Life is good, I guess.

Clean Code, Visual Studio, Windows 11, and a bit more on ebooks

I wanted to add some more notes about the whole Kindle, EPUB, MOBI, etc. thing that I’ve been blogging about in my last few posts. As I mentioned a few posts back, I’ve been working my way through the Clean Code learning path in O’Reilly. Since I’m probably going to lose access to O’Reilly before I’m done with that, I thought I’d buy a copy of the Clean Code book, so I could finish reading it at my leisure, and to have it for later reference. With tech books, I usually like buying a DRM-free ebook directly from the publisher, when possible. In this case, I initially had some trouble finding that, but eventually figured out that it’s purchasable through the InformIT site. I bought the Robert C. Martin Clean Code Collection ebook, which contains both Clean Code and The Clean Coder. I had a discount code, so it was about $40 total.

I copied the EPUB, MOBI, and PDF files for the book to OneDrive. There are a number of ways I can read an ebook on my iPad, if it’s DRM-free and available in multiple formats. For this one, I wound up sending it from OneDrive into my Kindle app, as a MOBI file. That method still doesn’t support EPUBs. And it will copy the file up into my Kindle library, which is nice. I don’t think I’d ever copied anything into the Kindle library that way before, but it worked fine. I also copied the PDF into GoodReader. The code listings in the MOBI version look a little weird, which is a common problem with tech ebooks, so it’s nice to have the PDF handy as an alternative.

Clean Code has some example refactorings that are fairly interesting. They’re all in Java, but I thought it might be interesting to take the original Java code for one of the examples, convert it to C#, get it working, then work through some refactoring that’s similar to what Uncle Bob does in the book/videos. I found some of the code for the examples in GitHub under the Clean Code Kata user account. (I’m not sure if that’s an “official” account for Bob Martin or his organization, but either way, the code is there.)

This idea to convert some of the examples to C# and work through them was prompted in part by a desire to set up a .NET dev environment of some sort on one of my personal machines, and to maybe experiment a bit with some of the more recent .NET stuff, like .NET 6 and VS 2022. I realized that I don’t currently have any dev stuff at all set up on my desktop PC, my MacBook, or my Lenovo laptop. The MacBook is new, so I just haven’t set any dev stuff up yet. The Lenovo was bought in 2020, and I haven’t gotten much use out of it at all. And I’ve been trying to keep the desktop PC free of any heavyweight dev tools, since I just want to keep it clean for personal productivity stuff. After going back and forth on a few possible setups, I decided to install Visual Studio 2022 (Community edition) on my Lenovo laptop. I considered just installing the .NET 6 SDK and Visual Studio Code, which would have been much more lightweight, but I’m used to using the full VS product, and I can’t see a reason not to use it. And the Lenovo is the best place to install it, since I can wipe out that machine entirely and start fresh if things get too messed up. I’ve also recently upgraded that laptop to Windows 11, so this was also an opportunity to (finally) give that a try.

Of course, I’ve had other things to do this weekend too, so I’ve only gotten as far as installing Visual Studio and git, and tweaking some settings. Maybe I’ll actually do some programming next weekend. (Or maybe I’ll get distracted by something else, and the whole thing will fall by the wayside.)

iOS notification issues and MS Authenticator issues

This is going to be a bit of a gripe post, but there might be some useful stuff in it. Or not. But it’s one of those things where writing it up might help me feel better about it, and might also come in handy later if someone has a similar problem. (Or if I have the same problem again and can’t remember some details.)

So this all started, I think, after I spent some time messing around with the new iOS 15 focus modes. I’d played around with them a bit when iOS 15 first came out, but something made me decide to mess around with them some more. To make a long story short, I tried out the “sleep” focus mode for a day or two, then decided that it wasn’t for me and went back to just using the “do not disturb” mode, scheduled to turn on at 10 PM and off at 5 AM every day.

After that, some of my notifications stopped working. I’m not sure that messing with focus is what broke notifications, but I’ve read up on the issue a bit, and it seems like that’s the most likely culprit. It seems like there’s a bug in iOS 15.2 that messes up notifications in some cases, often after you’ve messed with the focus setup. I’m pretty sure these were all notifications that would fall under the “push” category. So I wasn’t getting notifications on new emails from my Fastmail app, which was annoying but not a big deal. But I also wasn’t getting notifications on MS Authenticator, which is kind of a big problem for me.

I have more than a dozen accounts set up in MS Authenticator, mostly for CSP-related accounts. They all require MFA, so when I log into one of those accounts, it sends a push notification to my phone that I need to approve. And that wasn’t working. There’s a fallback, where I can get a six-digit code from the app and type that into the web browser. That’s what I’d been doing for a few days, but I really wanted to fix that.

I’d seen some advice online about fixing the notification issue by removing any app that wasn’t working, and reinstalling it. That worked for the Fastmail app, so I thought I’d try it for the Authenticator app too. Now, the Authenticator app has an option to back up its configuration to iCloud. And I had that turned on, so I thought I would safely be able to pull it back in after reinstalling the app. Well, it turns out that it’s not that simple. I did manage to pull in the backup, but for most accounts, you have to go back and redo the setup on the account anyway. You’re just pulling in a placeholder from iCloud. That was a pain, but not a huge problem, for accounts where I had my cell phone number set up as a backup. But for some of the oldest accounts, I either don’t have a backup, or I have my work desk phone set as the back up. And I’m working from home and don’t have a way to get to my desk phone. So that’s a problem.

Tomorrow, I’m going to try to find someone else with admin rights who can go in to Azure AD and set my cell phone # as my backup auth method so I can finish the setup on these accounts. I’m a little worried that I may have to bug someone at a fairly high level to do this, which could be a little embarrassing. But hey, we all screw up now and then. And this is more Apple and Microsoft’s fault than mine. (Apple’s fault for screwing up notifications in iOS 15.2, and Microsoft’s for not making it clear that the MS Authenticator iCloud backup isn’t really much of a backup.)

So the lesson here is that, before wiping out MS Authenticator, go into all of your accounts and make sure you have a good phone # and/or email address set under your backup authentication methods.

Once this is all straightened out, I need to write up a good procedure for transferring my MS Authenticator setup from one phone to another. My current iPhone just hit its three-year anniversary, so it’s time for me to start thinking about a new one. Setting up a new iPhone generally isn’t that hard these days, since you can just restore from an iCloud backup and most of your stuff will work. But there’s always some odd bits, like MS Authenticator, that trip you up. Even with all of my accounts set up correctly with backup auth methods, it’ll still take me an hour to get them all done. For each one, I basically need to open a new private browsing window, log in (using the SMS message backup option), then go to my account profile, delete the old MS Auth setup, add a new one, scan the QR code, wait for it to send a test push notification, approve that, and then finish the setup. That can take five minutes per account. I’m wondering if there’s a better way to handle this. Probably not. Most people don’t have Azure AD accounts in a dozen different domains, all requiring MFA, so my situation is not exactly a common use case that MS would have designed for.

Online Learning Resources

I have a bunch of topics I’ve been meaning to blog about this year, and just haven’t had the time to get to too many of them. A lot of my blogging recently has been more “getting stuff off my chest” blogging or “clearing out my head” blogging. But I have a few topics to cover that might be mildly useful to other people. Today’s topic is going to be an overview of online learning resources. I had to write up some notes of this stuff for work recently, since we’re doing a review of the training resources we make available in the IT department. So this post is basically repurposed from an email I sent to my boss.

I get a fair amount of use out of Pluralsight. I have my own subscription, but we also have a department subscription at work. Pluralsight is really good for .NET stuff and other Microsoft-specific programming topics. It does cover topics outside of the Microsoft ecosystem, but not as well. It’s all video training (no books).

We also have a Percipio account at work, and I’ve poked around in it a bit, but haven’t gotten much out of it. There are a lot of books and videos available, and it covers a much wider set of subjects than Pluralsight. There’s probably a lot of useful stuff in there, but it’s not that useful for me. (Percipio seems to be a rebranding of Skillsoft, which I also have access to via my ACM membership.)

I’ve also tried out LinkedIn Learning, which we have access to at work. This platform has a much wider breadth of material than Pluralsight or Percipio, and includes a lot of non-IT oriented stuff. I’m looking at the home page now, and I’m seeing stuff like “Life Mastery: Achieving Happiness and Success”. Basically, a lot of “soft skill” stuff. There’s plenty of content for programmers too though. Like Pluralsight, it’s all video (no books). From what I’ve watched, I’d say that the quality of stuff on this platform is pretty mixed. Some of it is really good, and some of it is more on the level of what you’d get from random YouTube videos. (And LinkedIn Learning is a rebranding of Lynda, which I still (I think) have access to via the Somerset County Library.)

Through my membership in ACM, I have access to the O’Reilly learning platform (formerly Safari), which is, I think, the best one out there for programming topics. They have basically every programming-related book that gets published by any of the major publishers (and some minor ones). It used to be just an ebook platform, but they’ve adding a lot of video content too. And the ACM access used to be to just a subset of the full Safari library, but it’s now the full library, which is awesome. (See previous mention here.)

Outside of paid learning platforms, there’s a lot of free stuff out there now. Microsoft has a lot of stuff at Microsoft Learn and Channel 9. And all of their conferences went virtual (and free) in 2020. Both Build and Ignite had some good content last year. Ignite is already scheduled for March 2-4 this year, and will be free and virtual.

In terms of my own current online learning, I’m trying to finish a course on ASP.NET Core Fundamentals on Pluralsight. I’ve been really busy at work though, and haven’t watched any of it in more than a week. (And yes, I know, I could watch it at night or on the weekend, but I’ve been either tired and/or busy on weeknights and weekends lately too. But that’s a subject for an entirely different blog post.)

managing long-term reminders, take three

Back in November, I had a problem at work, where all of my long-term reminders in Outlook were unexpectedly deleted. The details on that can be found here, with some follow-up here. I’d managed to move all of the tasks to Planner, but I wasn’t really happy with it. At the beginning of this year, I revisited things and decided to delete them from Planner and re-create them in To Do. I still wasn’t 100% happy, but To Do was close enough that it would be workable.

Well, today, I launched To Do and got a message saying “Your account is incompatible with To Do”. Apparently, Microsoft has decided to no longer support using To Do in an environment with on-premises Exchange. Some detail on that can be found here. So I had to print my To Do list to PDF, then re-enter it back into Planner. I’m not real happy about that, and I still don’t really like Planner.

I’d like to switch to Todoist, but that’s now officially on the forbidden list at my company, for some reason. Trello is allowed, but that’s not quite what I’m looking for. Remember The Milk isn’t on either the approved or forbidden lists, so maybe I could try that?

I generally resist combining personal and work stuff into a single account/system, but maybe for this I should consider it. I won’t be storing any proprietary or sensitive data in my reminders system, just basic notes like “renew this SSL cert by this date.” I use Evernote for all of my personal reminders, and that’s probably good enough for the work stuff too, though I’m not really comfortable with the idea. Oh well. I’ve spent too much time on this stuff today, so I should really just stop. Planner is good enough for now, even if I don’t really like it.

 

new Lenovo laptop

The new laptop that I ordered on Sunday showed up today. It’s a Lenovo Flex 5, from Costco. I don’t have much to say about it yet. It’s about what I expected. It seems to be pretty solid, but it’s definitely from Lenovo’s consumer side rather than their business side. It’s got a touchscreen, and it can be folded all the way back so it can be used as a tablet. It didn’t come with a pen, but it appears to support pen input. I don’t know much about Windows 10’s pen support, but I might look into it, just out of curiosity.

The keyboard is okay, but not great. And the layout is sensible, but of course it’s at least slightly different from my other two current laptops (my personal MacBook Air and my work HP laptop), so I’m going to be stumbling on key locations, but that’s life. The camera works, but apparently can’t be used with Windows Hello. (That’s fine. I don’t really need that.) It’s also got a fingerprint reader that I haven’t tried to set up yet.

The laptop didn’t have too much bloatware on it. During setup, Lenovo gives you the option to install a few things that you really don’t need, so I appreciated the opportunity to decline those. I did have to uninstall two separate McAfee products though. I got a few essentials installed on it today (Evernote, 1Password, Firefox, Notepad++, and a few other things). And I got it updated to Windows 10 Pro (from Home). I’ll probably install some dev tools on it tomorrow and/or over the weekend. And maybe Steam too, so I can play some games.

I have a couple of other topics I wanted to blog about too, but they’re totally unrelated to this, so I may write them up separately later or over the weekend.

SharePoint, React, Laptops, and so on

I mentioned a while back that I’m trying to learn about the (relatively) new SharePoint Framework (SPFx), for a project at work. I’ve made some progress with that, but I still have a way to go. I’ve done 5 of the 8 modules in this course from Microsoft. And I’ve watched a couple of Pluralsight videos, one from Sahil Malik and one from Danny Jessee. I’ve been doing that mostly on work time, since it’s specific to a work project.

SPFx relies on a number of related technologies, some of which I know and some of which I don’t. (And the ones I know, I don’t necessarily know that well.) So I decided to start digging into some related stuff, on my own time. I know pretty much nothing about React, and it looked interesting, so I decided to start learning that. I’ve watched one short Pluralsight video, that just gives an overview without getting into specifics. And now I’m working through a four-hour video course that goes into a little more detail. There’s a whole skill path for React on Pluralsight that would take about 40 hours to watch, if you went through it all. (And of course it would be much longer than that, if you actually followed along and worked through projects on your own.)

I got side-tracked off of React at one point when I was watching one of the Pluralsight videos on my old ThinkPad, and the battery suddenly died. I’ve had that laptop since 2011, and it’s starting to show its age. I’d only been watching the video for about 30 minutes, and the battery should have had a full charge when I started. So I started thinking about either replacing the battery on it, or just getting a new laptop. Replacing the battery on that particular model is really easy. And there were a bunch of options for a replacement battery on Amazon (though most of them looked kind of sketchy). But I started thinking about how old the laptop was, and how iffy off-brand replacement batteries can be. And I also started wondering if that laptop was going to be able to handle some the stuff I’m going to want to try out soon, like WSL 2. I’ve been hearing about that for a while, and it’s now been released as part of the Windows 10 2004 update. The old ThinkPad, surprisingly, has been able to keep current with Windows 10 updates so far, up to version 1909. But I have my doubts about whether or not it’s going to be able to deal with 2004. So, reluctantly, I started shopping for a new laptop.

This is a pretty common thing with me: I start trying to learn a new technology, and I get side-tracked shopping for a new laptop, or some new piece of software, or something. Anyway, I spent way too much time on that yesterday. This morning, I finally settled on the Lenovo Flex from Costco, for $750. It’s a bit of a compromise, since I’ll need to upgrade it to Windows 10 Pro, but I can still do that for $40 with my Microsoft company store access, which should still be good for the next week or two. Also, it’s a 2-in-1, which I don’t really need or want, but most Windows laptops seem to be touchscreen 2-in-1 models now, so I’ll give it a try. On the positive side, it’s got 16 GB of RAM, a 512 GB SSD, and an AMD Ryzen 7 CPU. (I haven’t really been keeping up with CPU news lately, but it looks like the AMD Ryzen 7 4700U is pretty good.) So I think it should be able to handle my fairly modest needs. I always feel a little guilty when I spend money on new hardware, but I’m trying to remember that, this year, I’ve spent nothing at all on travel, and I’m not likely to. If I’d gone to WonderCon this year, that would have cost me well over $1000, for hotel and airfare alone.

I was going to remark that I’d made it through a whole post without referencing COVID-19, but the travel comment above kind of does reference our current situation, so I guess that’s not true. COVID-19 definitely did affect my laptop shopping. In normal times, I probably would have gone out to Costco yesterday to see what laptop models they had on display. And I might have taken a trip to Best Buy too. Costco is still open, but I don’t really want to go there unless I have to. And Best Buy of course is still closed. So I settled on a mail-order laptop from Costco. They have a good return policy, if I need it.

SharePoint, Somerville, and so on

A little follow-up on some subjects from yesterday’s post:

I complained a bit yesterday about the “hundreds of files” pulled in on a new “Hello World” SharePoint Framework project. I checked today, and it’s actually more than 50,000 files, totaling up to about 500 MB. Scary. I’ve also been a little worried about all the security warnings issued by npm when scaffolding a SPFx project. Apparently that’s all fine though and I should just ignore them, according to this blog post. I guess none of the stuff that npm is checking is actually ever deployed to SharePoint, so it’s fine.

NJTV News tonight had a segment on restaurant and retail reopenings that spent some time talking about Somerville. I guess we’re likely to go ahead with the plan to close down Main Street to car traffic a few nights a week that I mentioned yesterday. I’ve still got some reservations about that, but nobody asked my opinion. (Yeah, I know, I could start attending town meetings. They’re virtual now, so I don’t even need to leave my couch. I’m still probably not going to do it though.)

One other benefit of having “attended” Microsoft Build this year: They’re letting attendees buy some stuff from the Microsoft company store. They’re only allowing purchases of digital goods, so no discounts on Surface hardware or anything like that. But I did pick up a few things at bargain prices. I got a Windows 10 Pro license for $40, and used it to upgrade my desktop PC from Home to Pro. And I got a one-year extension on my Microsoft 365 Family account for only $20. (That’s usually $100/year. I get the Home Use Program discount, which makes it $70/year. So $20 is really low.) And I got a two-year Xbox Live Gold sub for $50. (That’s usually $10/month or $60/year.)

I don’t know if I’ll actually get much use out of the Xbox Live Gold account. As I mentioned recently, I’ve had the Xbox for a year now, and I barely use it, except as a DVD/Blu-ray player. I’ll have to keep an eye on the Games with Gold stuff and see if they have anything I’m interested in. I really want to start playing video games again, but there’s so much other stuff to do too.

Xbox follow-up

Now that I’ve had my Xbox for a few weeks, I thought I should post a follow-up. I’m mostly using it to play Bejeweled, to be honest. I played Mass Effect for about a half-hour, and haven’t gotten back to it. Ditto for Stardew Valley. I want to get back to both of those, but right now, War and Peace is more of a draw for me. It helps that I can read War and Peace outside, or at work, or on the train. It’s been nice out the last few weekends, so I’ve been sitting outside on Division Street and reading a lot. (Can’t do that with an Xbox.) I’m about 25% of the way through War and Peace.

It’s funny, if you look at a site like How Long To Beat, a lot of modern video games take about as long to complete as it takes to read War and Peace. (According to my Kindle, it’s maybe a 40-50 hour book.) I won’t look down on or argue with anyone who chooses to play the Mass Effect trilogy over reading War and Peace, but I think I’ve turned into more of a War and Peace kind of guy as I’ve gotten older.

And since E3 is done, maybe I should take a moment to review the Xbox news out of that show.

  • Everybody continues to push into subscriptions, including Microsoft, with the new Xbox Game Pass Ultimate, for $15/month. I guess that’s great if you play a ton of games, but it’s definitely not for me.
  • The next gen Xbox looks interesting, and should be out near the end of 2020. Given that I seem to gravitate towards games like Bejeweled and Stardew Valley, that don’t exactly push the current gen hardware, I’m not likely to jump on the next gen bandwagon any time soon.
  • I’m glad to see that the next gen Xbox will continue to support backwards compatibility with older games, from the original Xbox, Xbox 360, and Xbox One. The headline in the linked article says “Microsoft ends Xbox backward compatibility,”  but that’s a little misleading. The article itself says that “Microsoft is winding down new additions to its Xbox backward compatibility catalog,” and “Microsoft is now committing to get every Xbox One game running on Scarlett, alongside games from all four generations of Xbox.” So that should be cool, and a good reason to (eventually) buy a next gen Xbox.

On a somewhat related topic, I enjoyed this article on the “slow death of the strategy guide”. It’s an excerpt from this book, which is currently just $3.82 for the Kindle version, so might be worth picking up. I’ve got strategy guides for a bunch of games, including several that I never got around to playing. Some of them are pretty cool, with lots of art and screenshots. Some people consider using strategy guides as cheating, but I always found that they added to my enjoyment of a game, making it easier for me to keep track of where I was, how the game worked, and whether or not I was on the right track. Generally, they helped me manage the more annoying stuff without getting in the way of the fun stuff. Since most games don’t even come with an instruction manual anymore, I wish more of them had good official (or unofficial) hard-copy strategy guides available. But I guess there’s not much of a market for that anymore.