Getting Deeper into The Wheel of Time

I finished reading The Eye of the World yesterday. I liked it a lot, and got through it fairly quickly, considering the length of the book and how slowly I usually read. Here’s my Goodreads review.  I noticed yesterday that the books has almost half a million ratings and 20,000 reviews, so I’m pretty sure no one is ever going to stumble across mine on the site, so I might as well link it here.

Per my last post on WoT, this series has activated that part of my brain that likes to go down rabbit holes researching a thing, shopping for stuff, and spending more time on that than actually reading the books. But I did finish the first book, so I’m patting myself on the back for that! Meanwhile, Amazon sent me $5 off coupons for most of the series, so I went ahead and bought the Kindle versions of books one through eleven. I find it hard to imagine myself actually reading my way that far into the series, but, well, I’ve got them in my “official” Kindle library now, at least.

I also paid $7.50 for the “Audible narration” add-on for the first book, in case I want to re-read it at some point, in audiobook format. I assumed that would get me the newer Rosamund Pike version, but instead it got me the older Kate Reading and Michael Kramer version. (Which is fine, since that one is also supposed to be pretty good. Though Pike won an Audie for her version, so maybe I should pick up that version too, and listen to them both… You see how quickly I spiral out of control with these things?)

I may start reading the second book, The Great Hunt, today, since it looks to be a quiet Sunday, and I have nothing much else to do. And I’m interested to see where the story goes. As I’ve said before, I expect that I’ll lose interest in this stuff at some point, but I’m not there yet.

As I read the first book, I followed along with the Reading The Wheel of Time blog post series at tor.com. I’ll likely continue that habit with the next book. It’s fun to connect with other people’s opinions and enthusiasm for a series like this, and there’s quite a community around WoT.

And, as usual with these things, I’ve gotten side-tracked on a couple of fiddly little technical things. First, I started reading Eye of the World from the EPUB file that I got from Tor a long time ago (as mentioned in the previous post). But then I bought the “official” Kindle store version, and switched to that, at about the halfway point in the book. That got me thinking about whether or not I could transfer my highlights from the EPUB to the Kindle store version. Short answer: probably not. But I might hook my Kindle up to my PC via USB today and see if I can copy all of the highlights into a text file and then stick them in Evernote, just for yuks. I could go off on a tangent here about a couple of services I found that automate (or semi-automate) pulling your notes & highlights from the Kindle into other systems, but I’m going to avoid going down that hole right now.

Second, I’ve been thinking about better ways to deal with the tor.com blog post series. The first book had twenty posts, usually covering 2 or 3 chapters each. To read them, I was simply keeping a tab open in Firefox on my MacBook, and never closing Firefox. (That’s unusual for me. I always close Firefox when I’m done, and I don’t have it set to reopen previous tabs on launch.) Then, I would just go back and forth from the series page into the individual posts. And I was keeping a note in Drafts to keep track of how far I had to read in the book before reading the next post. So it was a workable system, but a little weird.

For the next book, I was thinking I could open all of the articles, send them all to Instapaper, in a new folder, and then read them from Instapaper, deleting them as I finished them. If I did that, I’d probably read them on my iPad, so I’d be switching back and forth between the Kindle and iPad. Or, there’s an RSS feed on the series page, so I could subscribe to that in my RSS service, The Old Reader, and then read them from Reeder on my iPad. Or, I could put the RSS feed into Calibre and send the articles from there directly to my Kindle. Or… there are a bunch of things I could screw around with here. You see where things start spiraling out of control for me when I go down these rabbit holes… But I guess it keeps me out of trouble, mostly.

getting authentication tokens from MSAL via PowerShell

I have a little PowerShell script that I can use to get tokens from MSAL, for an API project I maintain, and I could have sworn that I’d blogged about it at some point. But I can’t find a post mentioning it. So I guess it’s one of those things I meant to blog about, but never got around to it.

I just rewrote it for a new API project, so I thought I’d blog about that. And since I never actually blogged about the first version, I might as well include that too.

So the first API is an older .NET Framework project. In the Visual Studio solution, I have both the API and a console program that can be used to run some simple tests against it. The console program, of course, uses MSAL.NET to authenticate. (I blogged about that in 2021.) I also like to do little ad-hoc tests of the API with Fiddler, using the Composer tab. But I need to get a bearer token to do that. There are a bunch of ways to do that, but I wanted a simple PowerShell script that I could run at the command line and that would automatically save the token to the clipboard, so I could paste it into Fiddler. I also wanted the PowerShell script to read the client ID and secret (and other parameters) from the same config file that was used for the console program. The script shown below does that, reading parameters from the console program’s app.config file, and pulling the actual client ID and secret from environment variables. (All of this is, of course, to avoid storing secrets in any text files that might get accidentally checked in to source control…)

# get-auth-hdr-0.ps1
# https://gist.github.com/andyhuey/68bade6eceaff64454eaeabae2351552
# Get the auth hdr and send it to the clipboard.
# ajh 2022-08-29: rewrite to use MSAL.PS.
# ajh 2022-11-23: read secret from env vars.

#Requires -Version 5.1
#Requires -Modules @{ ModuleName="MSAL.PS"; ModuleVersion="4.0" }

# force TLS 1.2
$TLS12Protocol = [System.Net.SecurityProtocolType] 'Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $TLS12Protocol

echo $null | clip	# clear the clipboard.

# read the settings file.
$configFilePath = ".\App.config"
$configXML = Get-Content $configFilePath
$configXML.configuration.appSettings.add | foreach {
	$add = $_
	switch($add.key) {
		"ida:Authority" 		{$authority = $add.value; break}
		"xyz:ServiceResourceId"	{$svcResourceId = $add.value; break}
		"env:ClientId"			{$client_id_var = $add.value; break}
		"env:ClientSecret" 		{$client_secret_var = $add.value; break}
	}
}
if (!$client_id_var -or !$client_secret_var -or !$authority -or !$svcResourceId) {
	Write-Error "One or more settings are missing from $configFilePath."
	return
}

# and the env vars.
$client_id = [Environment]::GetEnvironmentVariable($client_id_var, 'Machine')
$client_secret = [Environment]::GetEnvironmentVariable($client_secret_var, 'Machine')
if (!$client_id -or !$client_secret) {
	Write-Error "One or more env vars are missing."
	return
}

$scope = $svcResourceId + "/.default"
$secSecret = ConvertTo-SecureString $client_secret -AsPlainText -Force

$msalToken = Get-MsalToken -ClientId $client_id -ClientSecret $secSecret -Scope $scope -Authority $authority
$authHdr = $msalToken.CreateAuthorizationHeader()
$fullAuthHdr = "Authorization: $($authHdr)"
$fullAuthHdr | clip
"auth header has been copied to the clipboard."

For my new project, I needed to create a new version of this script, since the new project is in .NET Core, using an appsettings.json file rather than the old XML format app.config file. I’m also now using the Secret Manager to store the client ID and secret.

# get-auth-hdr-1.ps1
# https://gist.github.com/andyhuey/de85972ec0f6268034e5ce46b0278a07
# Get the auth hdr and send it to the clipboard.
# ajh 2023-04-06: new. 

#Requires -Version 7
#Requires -Modules @{ ModuleName="MSAL.PS"; ModuleVersion="4.0" }

# force TLS 1.2
$TLS12Protocol = [System.Net.SecurityProtocolType] 'Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $TLS12Protocol

echo $null | clip	# clear the clipboard.

$secrets = dotnet user-secrets list --json | ConvertFrom-Json
$clientId = $secrets.'AuthConfig:ClientId'
$clientSecret = $secrets.'AuthConfig:ClientSecret'
$secSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force

$appSettings = Get-Content appsettings.json | ConvertFrom-Json
$scope = $appSettings.AuthConfig.ResourceId
$authority = $appSettings.AuthConfig.Instance -f $appSettings.AuthConfig.TenantId

$msalToken = Get-MsalToken -ClientId $clientId -ClientSecret $secSecret -Scope $scope -Authority $authority
$authHdr = $msalToken.CreateAuthorizationHeader()
$fullAuthHdr = "Authorization: $($authHdr)"
$fullAuthHdr | clip
"auth header has been copied to the clipboard."

So this one is calling “dotnet user-secrets list” to get the secrets. And it’s using “ConvertFrom-Json” for both that and the appsecrets.json file.

Both scripts are using MSAL.PS for the MSAL call.

One thing that might not be obvious in the second script is that the “Instance” value is formatted like this: “”https://login.microsoftonline.com/{0}” so we’re using the “-f” string format function to pop the tenant ID into that {0} placeholder. (I took that functionality from an online sample I found somewhere, but I may change that around, since I think it just confuses things.) Also, in the first example, I added “/.default” to the $scope variable in the script, while the new version already has that in the config file.

I’m not sure if any of this will ever be useful to anyone but me, but it seems like something that might help someone else out there on the internet somewhere, at some point.

Wheel of Time

My Pathfinder fixation is on hold for now. I haven’t quite given up on it, but my brother still hasn’t started our campaign up, and I’m a bit tired of reading the rulebook. So now I’m on a Wheel of Time kick. It started out as an offshoot of the Pathfinder kick. You see, I’d read the Pathfinder comics that I had in my collection, and that led me to reading the Wheel of Time comics I had, since both were published by Dynamite and part of the same Humble bundle from a long time ago.

And now I’ve finished reading those, which serve as an adaptation of the first Wheel of Time novel, The Eye of the World. Then, I remembered that Amazon has a Wheel of Time TV show that I hadn’t watched yet. So I watched that.

And then I remembered that I have an ebook for the first novel that tor.com gave away for free some years ago. So now I’m reading that. It’s not a short book, and will likely take me a while to finish.

I also have an ebook of the complete Wheel of Time series, all fifteen books, that I got as part of the Hugo packet from 2014. I’m not sure if it’s morally OK for me to read that now, though. The purpose of it was to let Hugo voters read all the nominated works, and I didn’t get around to reading it then. So, if I want to read it all now, I should probably buy the books.

There’s a Complete Wheel of Time ebook available for the Kindle, but it costs $163, which is more than buying the 15 books separately, so that’s kind of weird. Well, it’s going to take me a while to read the first one, and I don’t know if I’ll really want to keep going, so best not to worry about that until I’ve finished the first book. I think a lot of the ebooks are available from my library, so I can always go that route.

I’ve also been enjoying dipping my feet into some of the nerdery surrounding the Wheel of Time. There’s a ton of stuff at the Tor site about it, including this series from someone who is reading the series for the first time, and this series from a different writer, who did a re-read of all the books. I’ve also listened to a number of episodes from the Dragonmount podcast, which were fun.

I’m not sure why it took me so long to give this series a try. I guess I used to be more of a snob about certain kinds of books, particularly “epic fantasy” books. But I’m kind of OK with this stuff now. I enjoyed the comics and the TV show, and I’m liking what I’ve read of the first book so far.

Speaking of snobbery about epic fantasy, Wired published a profile of Brandon Sanderson recently, and it’s gotten a lot of negative feedback from Sanderson fans. (Sanderson wrote the last few Wheel of Time books, after Robert Jordan died.) I’m not sure how I feel about Sanderson, since I haven’t read anything from him, and don’t know much about him, but the profile makes it seem like he’s a pretty decent, down to earth, guy. (Which seemed to be a problem for the guy who wrote the profile…) Sanderson responded to the kerfuffle on Reddit, and his response reinforces my impression that he’s probably a decent guy. I don’t know if I’ll ever make it far enough into the Wheel of Time series to read that ones that Sanderson co-wrote, but I’m curious.

more on Microsoft certification

Since this post from earlier this month, I asked my boss about whether or not the company would pay for a cert exam for me, and I got back not just a “yes” but an exam voucher code, and a code for a free MeasureUp practice exam! Which is great, but now I guess I have to take the exam.

I just noticed this post in my “on this day” sidebar, with a nice photo of the three giant books I bought to study for the three cert exams I was going to take for ASP.NET certification, back in 2010. I only ever took the first exam, then I got too busy with work to study for and take the other two.

I feel like I’m in a similar situation now, except that I’m not even going to find time to study for and take the first exam. I used the MeasureUp code, and got access to the practice test for PL-900. It seems to be identical to the MeasureUp test that I previously got for free through ESI. I took it again, and got less than 60% on it, which is definitely not a passing grade. If I want to pass, I think I need to study up on some areas I didn’t do well in, which are basically the areas that I’m not interested in and that aren’t relevant to my job right now. But if I want to pass the test, I guess I need to learn them. Sigh.

Get Back to Work

From Tom Tomorrow, via The Nib: Meet the Old Boss. This is from 2021, but I stumbled across it again today, and thought I’d link to it here, just for yuks. I guess the deluge of “work from home” vs. “return to office” articles that I saw in the news back in 2021 and 2022 has mostly died out. I don’t recall seeing much about it lately, but I’ve been thinking about it, since we just hit the three-year mark on the start of the pandemic WFH period.

I’m still on a hybrid schedule, two days in the office and three days from home, and I hope I get to stay that way. Today was a work from home day, and I had no meetings today and no tech support emergencies, so I actually got a lot done! And I can stop working and go straight into cooking dinner right at 5 PM!

See also: work from wherever, from 2022.

 

well-being day

I’ve had a few things on my mind this week that I wanted to blog about, but I just haven’t had the time and/or energy. I think I’ve finally gotten to a point now where I can sit down and ruminate a bit. It’s Saturday, and my chores are all done, and I’m not so tired that I need a nap yet.

Last Sunday was the Somerville St. Patrick’s Day parade. A lot of people came out for it. I watched parts of it out of my window, but I didn’t really pay too much attention. I spent most of the day reading comics and watching TV.

And Monday was my birthday. It was definitely a low-key birthday. I got a lot of “happy birthday” messages on Facebook, as usual, but I didn’t do anything to celebrate. It was a normal work day. I’ve realized that I’m now closer to 60 than 50, which is a bit alarming, but I guess it’s OK.

Friday was St. Patrick’s Day, and I took that day off as a “well-being” day. That’s a new thing we have at work this year. We can take two days off as well-being days. There’s a whole different workflow for requesting a well-being day, vs a regular vacation or sick day, for some reason. We’re supposed to use these days for “mental health” or charity/volunteering work. And we have to select which one we’re using it for. I put down “mental health.” I had some ideas about stuff I could do with the day, but most of those got tossed out the window. I got up late. I walked to the mall, ordered a new pair of glasses at LensCrafters, and walked back. That pretty much killed the morning. All I did in the afternoon was watch TV and take a nap. I guess that qualifies as useful to my mental health.

Ordering new glasses turned out to be surprisingly difficult. For the frames, I just asked LensCrafters to get me the same ones I have now. I’m not sure if we found the exact same frames, but they’re close enough. But the salesperson couldn’t figure out how to order my prescription in those frames. It kept coming back as impossible. Now, my new prescription isn’t that different from my previous one. But I guess it was different enough to cause a problem. So, after nearly an hour of futzing around, involving both the salesperson and an optician, we settled on plastic lenses that are cheaper than the ones we were trying to order, which were the same material as I have now. I’m honestly not sure if they’ll be better or worse than my current glasses, but there’s a 30-day guarantee, so I guess I can return them if they’re no good.

I’ve been getting increasingly frustrated with my vision lately. I guess I’m still not anywhere near the “legally blind” stage, but I’m definitely having some problems. The next thing to tackle is my hearing. I’m overdue for another visit to the audiologist. I last went in March 2021, and should have gone again in March 2022, but never got around to it. So now it’s two years, and I should really get back there, and see about maybe finally getting a hearing aid.

Another topic I wanted to mention in passing is the third anniversary of the start of the pandemic. My company is still letting us work from home three days a week, which is good, but there’s some talk that they might want to get people to come back into the office more often. I’m honestly having some trouble with the current schedule, mostly because I don’t always have enough energy to deal with commuting and working in a cubicle anymore. By the time I get home after a day in the office, I’m often quite exhausted. I’m not sure how I used to commute into the office five days a week. And I’m not sure if something is wrong with me, or if this is just how I’m supposed to feel at 56 years old.

Anyway, at least I appear to have gotten through the last three years without contracting COVID at any point. (Or, if I did, it was post-vaccination and mild enough that I assumed it was a cold.) I’m still masking up at the grocery store. And I still wear a mask at work, but only when I’m moving around the office. I’m one of only a few folks who still do that. I’ve slacked off a lot with regard to masking when I’m going out to pick up take-out food or coffee. I used to wear a mask all the time for that, but now I’ll skip it sometimes, if I know I’m going into a place that won’t be crowded, and where I know I’ll be in and out quickly. I actually haven’t gotten sick in a while, at least by my standards, so that’s good. (I was a bit sick on Presidents Day, so it’s been almost a month. And I wasn’t that sick, then.)

Reading this post back, it sounds a bit bleak. But I didn’t intend it to sound that way, and I’m actually doing pretty good, all things considered. Maybe I should write another post later, talking about all the cool stuff I’ve been reading, listening to, and watching. Oh, and I have another post to write about Microsoft certification, and probably some other tech stuff, so that’ll be more fun than this one.

Microsoft certification

I’ve been trying to learn a lot of new stuff lately, including Power Platform, which I’ve mentioned a few times recently. And I’ve been thinking about taking the certification exam for that, PL-900. My company has access to something called ESI from Microsoft, which used to allow us to take MS exams for free. Well, I guess I waited too long on the PL-900 exam, since they changed ESI so it now only provides a 50% discount. And the ESI site used to allow us to take MeasureUp practice exams, but now it just shows us simpler Microsoft-provided practice tests. I’ve seen some talk about both of these changes on reddit, here and here.

Well, at 50% off, the test is only $50, which I can, of course, afford. Thirty days of access to the MeasureUp practice exam is $99, though they’ve got a 30% off sale going on right now. That might be worth it, but maybe not. I haven’t tried the new Microsoft practice test yet, though it seems to be less full-featured than the MeasureUp one.

Anyway, my last Microsoft cert exam was in 2010. It’s so hard to keep up with all this stuff. I’ve been busy enough this week that I haven’t gotten back to any of my “spare time” learning work. If I really want to take (and pass) that PL-900 exam, I need to brush up on a few things first.

PDF software and related rabbit holes

The Pathfinder stuff that I’ve been blogging about so much lately sent me down a couple of rabbit holes related to PDF software, so I thought I’d write that up here, for my own reference, if for no other reason.

First rabbit hole: form-fillable PDFs. The Pathfinder character sheet is a PDF file with fields you can fill in. Then you can save it and/or print it out. My initial attempt to fill it out was on my PC, using the software I’ve been using as my default PDF reader for the last few years, Sumatra PDF. Sumatra is a great lightweight PDF reader, but it doesn’t handle PDF forms. To make a long story short, I gave in and installed Acrobat Reader. I’ve been using it as my default PDF reader on my PC for a few weeks now, and I’m still not a fan. After installing it, I figured out that the PDF reader built into Firefox handles PDF forms reasonably well, so I could have skipped Acrobat Reader and just used Firefox, but I guess I’ll keep Reader installed for now.

I also found out that Reader won’t let me fill in a couple of the fields on the character sheet, but Firefox has no problem with them, so that’s weird, and another reason to give up on Reader, maybe.

On the Mac side, I’ve been using PDF Expert as my default PDF reader for several years. I bought a license for it some years back. But it’s now subscription-based, so my license doesn’t let me use the full feature set of the current version. Specifically, it apparently won’t let me edit the character sheet.

Preview on macOS is actually a pretty full-featured PDF viewer, and includes the ability to fill out forms. So I’m thinking about giving up on PDF Expert, since Preview seems to do everything I need.

On the iOS / iPadOS side of things, I’ve been using GoodReader as my PDF viewer for years, and I’m still sticking with it. I paid for it a long time ago, and it still works fine for me. I’ve experimented with some other options, but GoodReader always seems better.

On a related rabbit hole, I bought an Elfquest Humble Bundle today. I’ve been a fan of Elfquest since the original series was published, back in the 80s. I stopped following it at some point in the 90s, when they were publishing a bunch of stuff that wasn’t actually written/drawn by the original creators, Wendy and Richard Pini. I’m aware that, at some point, Dark Horse got the rights to reprint the older stuff, and that they were printing some new stuff too, but I didn’t pick up any of it. So this Humble Bundle was a chance to get DRM-free copies of all the older stuff, and get the newer stuff too. As with all this Humble stuff, I’m not sure when/if I’ll get around to reading any of it. But I have all the PDFs on my hard drive, for whenever I’m ready.

Humble is sometimes weird about the quality and size of the files they distribute. All of the Elfquest files are PDFs. Some of them are reasonably-sized, but there’s one 4 GB file and one 5 GB file. I’m pretty sure that both could be much smaller, so that sent me off down another rabbit hole, trying to figure out a good way to shrink them. Acrobat Reader won’t let you shrink PDFs without subscribing to Acrobat Pro for $20/month, so I’m not doing that. Ditto for PDF Expert on the Mac side. I’d need a subscription to compress a PDF.

Preview on macOS does allow you to compress PDFs, and I ran it on the 4 GB one and that got it down to 400 MB. But the image qualify went down noticeably. So I’ve been looking around at other options. ACBR Comic Book Reader for Windows lets you convert PDFs to CBR/CBZ files and (probably) compress them. But it choked on the 4 GB PDF and wouldn’t open it.

I thought maybe I’d look at PDFpen for Mac. That’s now owned by Nitro. You can buy it for $130, as a one-time purchase, no subscription. That’s not bad, I guess, but I don’t really know if I need it, or if it would do better at compressing the PDF than Preview did. Maybe I’ll download a trial, if I get bored/curious.

Nitro is also included in SetApp, which is a multi-app subscription for the Mac, for $10/month. I’ve thought about getting SetApp before, but there was never enough in it to entice me. I might be tempted, if there was something in there that could replace Evernote for me. And it looks like there might be, though neither option (NotePlan or Ulysses) has a Windows client. I’ve been thinking about getting off Evernote, since I’m not sure how much I trust their new owner. They just laid off more than 100 people. Anyway, the Evernote thing is yet another rabbit hole, and I probably shouldn’t go too far down that one yet. My Evernote subscription renewed in January, so I don’t need to worry about it again this year, really.

Back to the PDF thing: I still haven’t found a good way to compress those giant Elfquest PDFs, but I’m probably not going to try to read them any time soon, so I don’t necessarily have to worry about it right now. (And the need to compress them at all is based on a guess that GoodReader on my iPad would choke on a 4 GB PDF, but maybe it wouldn’t.)

making fun of Dilbert

All the nonsense with Scott Adams (mentioned in my last post) has resulted in a bunch of anti-Dilbert editorial cartoons, of varying funniness. I thought I’d link to a few good ones here.

And The Daily Cartoonist site has a post titled Dancing on Dilbert’s Grave, which includes a few more examples, and some random thoughts about the issue.

I guess I’ve got this all out of my system now, so this should be my last Dilbert-related post.

Horribleness

Every once in a while, I think I need to write a post, commenting on some random internet horribleness. Usually I resist the urge. But sometimes I give in. And there have been a few semi-linked bits of horribleness I tripped over recently, so I’m just going to point a few out.

First, Scott Adams has (finally?) gone a bit too far, apparently. I stopped reading Dilbert a long time ago, and I pretty much gave up on Adams in 2016, when he was supporting you-know-who for president. GoComics still, technically, carries Dilbert, but they posted a tweet today that makes it look like maybe they’ll finally drop it. (Or not. It’s a pretty weak statement.) Maybe it’s time for me to throw out my Dilbert books and toys. I know I have a few of them around here somwhere.

And of course there’s an Elon Musk angle to the Dilbert story. I’d already made my mind up about Musk too, so that doesn’t surprise me. I haven’t totally dropped off of Twitter, but I don’t check it too often these days. Mastodon has mostly replaced Twitter for me, but there are a lot of folks and organizations that are still only on Twitter.

Speaking of Mastodon and Twitter, I stumbled across a reference to the Pinboard guy on Mastodon yesterday. He had dropped off Twitter in 2022, and I hadn’t noticed that he came back this year. I guess that’s mostly because I’m using Twitter less. Anyway, one of his recent tweets is problematic. I really don’t want to wade into that stuff, but, for now, I’m going to keep using Pinboard (and continue being a Harry Potter fan), but I’m not sure how I feel about any of it.

Along those lines, I followed the news about the open letter to the NY Times last week too. I’d really like the Times to course-correct on this stuff, but I haven’t gone as far as cancelling my subscription. Overall, I don’t feel qualified to express too much of an opinion about some of this stuff, but I do feel like some folks are likely on the wrong side of things, even if their intentions are good.

Anyway, all of this horribleness is probably why I’m spending so much of my spare time reading Pathfinder manuals these days. (And, for what it’s worth, Pathfinder seems to have a reputation as a very inclusive RPG. So that’s good…)