moving and resizing windows in AutoHotKey

One of the minor little issues I’ve had since this whole “work from home” thing started is that I frequently need to switch back and forth between using my laptop on its own vs. remoting into it from my desktop PC. I always need to be connected to our work VPN, and we’re not allowed to install the VPN client on personal PCs. And I don’t have an easy way to connect my personal monitor, mouse, and keyboard to the laptop. (Yes, I know there are a bunch of reasonably easy ways to do that. I just haven’t made the effort.) So I spend most of the day remoted in to the laptop via RDP from my desktop PC. But I disconnect and use the laptop directly whenever I need to be in a meeting, so I can use the camera and microphone. (And, yes, there’s probably a way for me to use the camera and mic while remoted in, but I haven’t bothered to try figuring that out either.)

Anyway, the issue with all that is that the change in resolution between the laptop screen and my desktop monitor confuses things, so my window sizes and positions are generally all screwed up when I do that. So I wanted to write a little AutoHotKey script to automatically move and resize the windows for my most commonly-used programs. (In my case: Outlook, OneNote, and Firefox. I do my actual development work via RDP into a VM, not on my “real” computer, so it’s just the productivity stuff running on the laptop.)

Of course, given the way these things tend to go, I just lived with it until June, when I finally got around to writing the script. And, again, of course, I found issues with the script, but didn’t bother correcting them until… today. So here’s a script that looks at the current monitor’s resolution, then moves and resizes Outlook, OneNote, and Firefox so they’re tiled and just the right size for my preferences.

SysGet, Mon1, Monitor
;MsgBox, screen dimensions: %Mon1Right% x %Mon1Bottom%

X := 70
Y := 32
Width := Mon1Right - 240
Height := Mon1Bottom - 150
;MsgBox, X=%X%, Y=%Y%, Width=%Width%, Height=%Height%

WinRestore, ahk_exe OUTLOOK.EXE
WinMove, ahk_exe OUTLOOK.EXE,, X, Y, Width, Height
WinRestore, ahk_exe firefox.exe
WinMove, ahk_exe firefox.exe,, X*2, Y*2, Width, Height
WinRestore, ahk_exe ONENOTE.EXE
WinMove, ahk_exe ONENOTE.EXE,, X*3, Y*3, Width, Height

Nothing fancy, but it does what I need, and I thought it might be useful to post it here. It’s using the SysGet command to get the screen dimensions, and the WinMove command to move the windows.

I also considered using PowerShell with WASP for this, but I’m more familiar with AHK.

Comic-Con @ Home

Today, I went ahead with my plan to take a couple of days off from work for Comic-Con @ Home. (I put in for Thursday and Friday off.) They posted the Thursday schedule today, and it’s got some good stuff, including some old favorites like Scott Shaw’s Oddball Comics and Ric Meyers’ Kung Fu Extravaganza. I’ve managed to find stuff to keep me busy from 10 AM to 7 PM. That’s PDT of course, so that’s 1 PM to 10 PM my time. I guess I need to find something else to keep me busy on Thursday morning. (I’ll probably spend the morning reading comics!)

In other comics news, I enjoyed watching Mark Evanier’s talk with Peter David last night. I missed seeing it live on Tuesday, since it was on too late for me (10 PM). They talked about a lot of stuff, including memories of old San Diego cons, so that was fun. I know Mark will be doing some panels for Comic-Con @ Home, but I don’t see any on the Thursday schedule. He’s specifically said he’s not doing a Quick Draw panel, which is kind of a bummer, but I can understand why he’s not doing it. It would be technically difficult, and it wouldn’t be nearly as fun without a live audience.

In yet more comics news, this article at The Comics Journal site goes into even more detail on the CBLDF situation. I said previously that I wasn’t quite ready to burn my CBLDF t-shirts, but now maybe I am. I think it’s going to be some time before the CBLDF earns back anyone’s trust.

On a more positive note, this article about Carol Kalish has been getting a lot of attention. It’s good to read about somebody who was almost universally admired. (By the way, I’ve noticed that any article about comics that talks about somebody “you’ve never heard of” is always about somebody I’ve definitely heard of, and probably know a lot about. This is probably because I’m old, and I’m a nerd.)

And in one bit of COVID-19 news, the company I work for has pushed back our “return to office” date from early August to early September. I was starting to worry about that August date, given how things have been going in NJ and across the country. (I kind of doubt that things will be much better in September, but here’s hoping. And if things aren’t better by then, maybe they’ll give up and just let us work from home for the rest of the year.)

physical media and lockdown anxiety

I’ve now reached the stage of the lockdown where spending $100 for four Avengers movies on Blu-ray seemed like a good idea. (I already have the first one on Blu-ray, but none of the others.) I’d been keeping an eye on iTunes and Vudu to see if maybe the digital versions would go on sale for $10 each or something like that, but yesterday, I decided that it was OK to just go ahead and get the fancy SteelBook box set.

I go back and forth with my thinking on digital vs physical media. On the one hand, my cable & internet went out last night, while I was watching a Blu-ray, so I patted myself on the back for still holding onto physical media there. On the other hand, I accidentally knocked over a big stack of DVDs this morning and had to pick them all up and get them back in order. You can’t knock over digital video. I guess I’ll still keep going back and forth on this for the foreseeable future. There’s an argument to made on both sides.

I have been feeling lately like the lockdown is starting to get to me. I’ve seen some articles about post-lockdown anxiety recently. I think my main problem is that I’m pretty sure we shouldn’t be talking about “post-lockdown” yet at all. I see a lot of people without masks wandering around downtown these days, and I keep reading about the pressure to open stuff back up. I think we need to be real careful about that, and I think we at least need to be wearing masks more often. As of today, NJ is requiring people to wear masks outdoors, so that’s good, though there’s really no enforcement mechanism for this.

And I’m pretty steamed about movie theater chains suing NJ. This really seems like the last thing they should be spending time and money on right now. I’m fairly sure I won’t be entering a theater any time before the end of this year. And I probably won’t want to go into one until next summer, at least. (Assuming there’s a vaccine and/or treatment for COVID-19 by then.)

Some of my anxiety and restlessness is no doubt coming from the simple fact that it’s summer, and I really can’t do most of the things I like to do in the summer. Like going out to see a movie. Or going into NYC and visiting the Met and MoMA. Or going to a comic con. To address that last one, I’m thinking about taking a few days off for Comic-Con@Home later this month. Just sitting around in my apartment and watching panels online won’t come near the experience of actually being in San Diego for the con, but at least it’ll get me away from work for a few days and maybe let me recharge my batteries a bit (so to speak).

They have the Wednesday panel schedule up now, and it’s mostly not that interesting to me. It’s mostly serious stuff related to education. Which is fine. I assume the nerdier fan stuff will be Thursday through Sunday. So maybe I’ll take Thursday and Friday off from work and just chill and watch panels and read comics for a couple of days. I’ve been thinking about other things I could do to make the experience feel more like actually being at the con. I could skip my usual meal habits and get take-out on those days. Maybe I could even find some local take-out that reminds me of the kind of stuff I like to eat in San Diego, like fish tacos. I could sleep a little late and stay up a little late. (Or I could even try to switch to PDT for a few days.) Maybe I could try to ignore “regular” news for a few days and just read con-related news only. (That might be kind of hard to manage.) I guess that’s about it though. I can’t dress any more casually than I’m already dressing. I can do an excessive amount of walking, I guess, but just wandering around Somerville isn’t the same as wandering around downtown San Diego and the convention center.

still learning React

I’m still trying to learn React, and a bunch of the stuff that goes along with it. I’m almost done with the Learning React book that I’ve been reading. It’s been helpful, but there are still a bunch of things I need to work on.

As previously mentioned, I’ve set up my MacBook for React development, by installing Node.js via Homebrew, with VS Code as my editor/IDE. I still haven’t gotten around to setting up a dev environment on my new Lenovo laptop. I did, though, decide today to take a shot at setting up my work laptop for some minimal development. I wouldn’t ever do “real” production development on my work laptop; we have dev VMs for that, and I’ve got a dev VM that will work for React dev. But it’s useful to have some dev tools on the laptop, just to work through sample projects and stuff like that. I can’t go too far with dev stuff on the laptop, since, from a security standpoint, it’s basically an “end-user” machine and a lot of software installs are blocked. But I thought I’d try to install a few mostly harmless tools. So I managed to get VS Code installed, no problem, and Git. Then I tried to install Node, via the standard Windows installer. That worked fine, up to the point of installing node-gyp which seems to have failed. I don’t think that I actually need that, so I’m probably fine. But that was a reminder of how these things can get confusing when you’re trying to install dev tools on a locked-down laptop. (If I want to install Node on my personal Windows laptop, I should probably look at this MS doc that walks you through installing nvm first.)

In reading about React stuff, I’m hitting a lot of issues with figuring out what’s current and what’s out of date. And also in figuring out how to do stuff in TypeScript (vs. “plain” JS). There are a lot of blog posts, and Medium articles, and videos, all showing you how to build a basic React app. But most of them are a little messy. I keep hitting stuff that doesn’t seem to work, either because React (or some dependency thereof) has changed since the article was written, or because the article was poorly edited and the code in the article doesn’t really work. And even when the code does work, sometimes it’s not being done in the “right way,” given current standards. So I guess I’m stumbling my way into becoming a semi-competent React / TypeScript developer.

more odds and ends

I’m kind of exhausted now, and I kind of want 2020 to just be over. But it’s not. I’m doing my best to stay positive and keep working and exercising and eating right (and I am doing all that), but I’m getting a little frayed around the edges. Anyway, here’s another round-up of (mostly) bad news. Writing helps me process things and clear my head. I don’t necessarily expect anything here to be useful to anyone else, but writing it down helps me.

More #MeToo

Well, the #MeToo stuff in comics is really starting to snowball. After Cam Stewart, Warren Ellis, and Charles Brownstein, now it’s Scott Allie’s turn. Allie was an editor and writer at Dark Horse. He was the editor on all the Hellboy and Hellboy-related books for a long time. And he’s written a few also. I’ve been a Hellboy and BPRD fan since Hellboy #1 from back in the 90s. I didn’t really know anything about Allie, other than just knowing his name from the credits and letter columns. So I can’t say much about him. I don’t think there’s any indication that Mike Mignola knew anything about this, so that at least is something. I’d hate to have to lose my respect for Mignola. (And I do have a good bit of respect for him.)

And back to Brownstein: He was apparently involved in another incident, about ten years ago, involving a CBLDF employee, who was then essentially forced to sign an NDA. So things are looking worse for them. I’m not quite ready to burn my CBLDF t-shirts, but I’m not going to be wearing them in public anytime soon either.

New Toys

I don’t think I’ve even turned on my new laptop yet this week. I’ve been doing a bunch of React stuff on my MacBook, and all of my actual work on my work machines, of course. So I haven’t had time to do any setup on the Lenovo.

I have had time to mess around with my Echo Dot a bit though. I’ve discovered that it’s pretty good as a speaker (given it’s small size), but not if you’re using it via Bluetooth. So if you’re playing stuff over it via the usual Alexa route, it sounds pretty good. But it’s not really worth trying to use it as a Bluetooth speaker. So I’ll yell “Alexa, play WQXR” if I want to hear some classical music while I’m working and that works out fine.

React

Speaking of React, I’ve been reading the second edition of Learning React via my ACM O’Reilly subscription. It’s an “early release” version, so it’s a little rough, but it’s more up-to-date than any other book on React that I’ve seen. I’m at a point now where I’m not sure if I should keep working my way through books and videos or if I should stop reading/watching and start actually working on a project. I think I might need to finish the Learning React book at least. I’m still having trouble getting at the big picture with React. I’m learning little bits and pieces, but they don’t all fit together in my head yet.

Reopening NJ

Somerville is really hopping this week, and I’m not sure how I feel about that. Mostly nervous, I guess. All the restaurants are doing outdoor dining, which means that they’ve annexed about 90% of the sidewalks. So a walk down Main St right now is kind of an obstacle course. And the obstacles are people sitting at outdoor tables, talking, eating, and not wearing masks. My early morning walks are still OK, since there are only one or two places open that early. But I’ve been avoiding Main St on my afternoon walks. Still, though, it’s kind of fun to see the outdoor dining. And it’s nice to hear people talking and laughing and all that. I just wish I could shake the idea that one of them is going to spray COVID-19 all over me.

Meanwhile, the Bridgewater Commons is going to reopen on Monday. I don’t think I’ll be going back there any time soon though. Maybe I’d risk a trip to the Apple Store if I really needed something, but only as a last resort. I just ordered two new pairs of shorts from the Macy’s web site, and I think that’s all the new clothes I’ll need between now and the end of the year. Macy’s and the Apple Store are really the only places at the mall that I frequent, so I don’t think I’ll be tempted to go over there.

And Yestercades is reopening too, on July 2. This seems like an even worse idea that reopening the mall. There’s no way they can keep all those arcade machines clean. And that place is really too cramped for social distancing. I don’t know, maybe they’ve figured out a way to make it work. I can definitely say that I’m not going back in there anytime soon either.

I may be more stressed now than when I started writing this post, which is not how I wanted this to turn out. Maybe I should spend the next hour listening to this public domain recording of the Goldberg Variations. That’ll help me calm down.

 

CBLDF

I’ve been a supporter of the CBLDF for years. I haven’t kept my official membership up to date at all times, but I’ve signed up for membership on multiple occasions, in addition to some random donations, and have a collection of t-shirts, pins, and other bric-a-brac to prove it. I let my membership lapse again a few months back and have had renewing it on my to-do list since then, but I haven’t gotten around to it. Now I guess that might be a good thing. After last week’s #MeToo moments for Cam Stewart and Warren Ellis, it seems that now it’s Charles Brownstein’s turn. Brownstein was the executive director of the CBLDF for years. He resigned yesterday after some old sexual assault allegations against him from 2006 resurfaced.

I never really knew much about Brownstein. I was aware of his role at CBLDF, but didn’t really know anything at all about him personally. But I don’t recall ever having heard anything bad about him. Oh well. The statement from CBLDF on this is short and doesn’t come anywhere close to addressing the issue of how it took so long to get to this point, given that these allegations were apparently well-known among comics creators, several of whom had stopped supporting CBLDF over this some time ago.

While I didn’t know much about Brownstein, some of the folks on the CBLDF board (and advisory board) are people I have a lot of admiration for, including Paul Levitz and Neil Gaiman. I guess I’m a little disappointed in them, if they knew about this and didn’t push for Brownstein’s removal. I don’t really know what the situation was there, so I’m going to assume they either didn’t know or were convinced that Brownstein hadn’t done anything wrong.

Either way, I guess maybe I won’t be renewing my CBLDF membership this year. I can revisit it next year, and see how they’re doing. There are plenty of other worthy causes out there to support right now. A number of folks on Twitter mentioned Hero Initiative as a comics-related organization that’s worthy of support, so that’s something to consider.

odds and ends

OK, after this morning’s depressing Warren Ellis post, here’s some lighter stuff. Just a mix of stuff I’ve been meaning to mention, for one reason or another.

Google AdSense

I added Google AdSense to my blog back in 2010 and removed it in 2016. But I never closed out my account. So I did that this week. Now, I can finally get the $15 that Google owes me. (Normally, they don’t pay out until you hit $100, but if you close your account, they’ll pay out any balance, if it’s over $10.) I wonder how many small bloggers like me are still bothering with AdSense. For a while, a lot of people thought they could make good money by running a blog and putting AdSense on it. I’m wondering if any of them really did.

New Toys

I haven’t made much more progress in setting up my new laptop. I was too busy yesterday to even turn it on. Hopefully, I’ll have time to do some stuff with it this weekend. I did also just get a new Amazon Echo Dot (with clock). I don’t really have a good excuse for buying it. I had an old iHome alarm clock / iPhone dock on my nightstand that I couldn’t really use anymore, since it doesn’t fit the newer iPhones. And that was fine, really, since I don’t really need a clock on my nightstand. These days, I just plug my iPhone in, and use Sleep Cycle as my alarm clock. But, I don’t know, I guess I just wanted a small clock there that could play music or NPR or whatever. And it was only $35. I already have some experience with Alexa, since it’s supported on my Sonos speakers, but I turned off the mics on those, since it was getting accidentally triggered too often, and I didn’t really find it that useful. I’m going to play around with it some more on the Echo and see if there’s anything fun or useful that I can do with it.

Learning New Stuff

I finished the SharePoint Framework course that I was working through. That’s given me a good start, but there’s still a lot I need to figure out. I’m almost done with the React course on SharePoint that I’ve been watching and working through. Most of that course uses an online JavaScript environment, found at jscomplete.com, so you don’t need to set up your own dev environment. But I’m now at the point where I really do need to set up a dev environment to get any further. I considered a lot of options, but settled on using Homebrew on my Mac to set up Node.js. And I’m using Visual Studio Code as my text editor. So that’s good enough for now.

I may need to play with Node Version Manager at some point, but for now, I think that would be an unnecessary complication. And, on Windows, I want to look into setting something up under WSL2 at some point. Microsoft, helpfully, has a guide on how to do that. But, again, I’m probably not ready to dive into that just yet.

So that’s my “odds and ends” post for today. I could write up a bunch of other stuff, but it’s probably best if I stop for now and go eat some lunch. Then maybe take a nap.

Warren Ellis

I have a few things I want to blog about this weekend, but I guess I might as well get this one out of the way first: Warren Ellis has been accused of multiple instances of “sexual misconduct.” I started seeing stuff about this popping up in my Twitter feed earlier this week. It was all a bit confusing. He’s released a statement addressing the allegations, and The Beat has a write-up on that. There’s also an article on Bleeding Cool. And I see that a short story of his that was supposed to be in an upcoming Batman one-shot has been pulled. I am in no way qualified to evaluate and/or judge any of this mess. All I can say is that I’m really disappointed.

I’ve been a really big fan of Ellis for a while now. Searching for his name on my blog, I found 38 mentions, going back to 2005. I’ve been subscribing to his weekly newsletter since 2016, and I’ve really gotten a lot out of it. (He’s ended the newsletter now, of course.) Selfishly, I’m wondering if the rest of Batman’s Grave is going to be published. I haven’t started reading it yet, but the reviews have been good.

It’s weird to say that I looked up to him, but I guess I kind of did? He seemed to be a successful guy who’d figured out how to deal with things and get a lot of good work done despite a number of obstacles. He was always self-deprecating in his newsletter and recommended a lot of good work from other writers, artists, and musicians. And he had a lot of good general life advice in there too. I don’t really know where all of this is going to go. And I don’t really know how to feel about it. But I thought I should at least acknowledge it here.

Hey, and Fastmail, and the app store

Okay, here’s my second blog post for today, this time about email (mostly). The guys who make Basecamp introduced a new email product, called Hey, about a week ago. I was kind of curious about it, since I like the Basecamp guys, generally speaking, and have used their products before. (I was a big user of their Backpack product for several years.) Anyway, it’s interesting, but not for me. It’s $99 a year and really wouldn’t be as good for me as Fastmail is, and that only costs $50/year.

But then there was a big kerfuffle when they tried to release a new version of their iOS client to the app store. Apple rejected it, for reasons explained here. Basically, Apple wants them to add an in-app purchase for subscriptions, thereby giving Apple a cut of their subscription revenue. Which they don’t want to do. DHH went on a bit of a Twitter rant over this. I think that he’s mostly right, though it’s not as simple an issue as some people would make it out to be.

This whole thing got me worried that, if Apple is going to go after Hey for subscription revenue, they might go after Fastmail too. I haven’t seen any indication that they’ve done that yet, but I’m concerned that, if they do, Fastmail will have to increase prices to take Apple’s cut into account. Or they could just discontinue their iOS client. Either way, it wouldn’t be good for me.

So that got me to go over to Fastmail’s blog and see if they had weighed in on it. They haven’t, but I did notice a blog post announcing their support for labels. So that’s cool. I had used labels in Gmail, and having to switch to folders was kind of a bummer for me. So if you’ve been thinking about migrating from Gmail to Fastmail, that’s one less thing to worry about. I can’t decide if I want to switch back to labels now that I’ve got everything working with folders, but I’m considering it. Fastmail has also revamped their rules system recently, and I’m liking that too.

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.