Category: Tech

Throw away your mask

Just kidding, don’t do that yet. Interesting but also not surprising that masks and staying remote has led to me not getting sick at all this year. Even with CDC guidance pointing in the other direction, I’m not entirely sure I’ll fully ditch masks; at least, not on public transit or around people who have kids.

I picked up one of the new iMacs yesterday. It’s very blue. At least, the back of it is. The front of it is more of a pastel blue with a white bezel, which has a completely different vibe. I don’t hate it, but if there was an option for a darker blue all the way around, I might go with that next time.

I went for the mid-range configuration, as I usually do. Go for the spec boosts from additional GPU, RAM, and IO, but leave the storage upgrades behind. Those tend to be expensive for what you get, and I simply don’t use bulk storage locally anymore.

Early impression is that the system is quite capable at doing what I need it to do. The speakers sound pretty good, considering the entire thing is as thin as it is. Better than what you get on an iPad or on most laptops. The screen’s nice, as they usually are. I don’t frequently use Windows 10 with a display larger than 1080p, but my experience has been that MacOS handles 4K-and-higher displays much more uniformly. (That’s to say nothing of the absolute circus that Windows 10 itself is; why, after six years, are some settings still in the Control Panel and others in the Settings app?)

Included in the box were a keyboard and mouse that matched the color of the computer itself. I can take or leave a Magic Mouse – I don’t particularly get a lot of use out of the touch-sensitive surface, and having the charging port underneath the mouse so you can’t charge it and use it as the same time is a pants-on-head-stupid idea that I wish Apple would fix. But the keyboard is nice; it’s comfortable to type on, and it includes a Touch ID button for faster authentication. One of these years, Apple will ship Macs with FaceID to bring MacOS to parity with Windows Hello, but it doesn’t seem like it’s high on their list of priorities.

The translation layer Apple provides to support x86 applications on the new M1 chip is actually pretty crazy. When you try to run an x86 app for the first time, MacOS downloads Rosetta and then uses that to recompile the x86 app to run on the M1 chip. Considering this was a wholesale CPU architecture change, I expected there to be hiccups among the stuff I use, but there simply haven’t been.

As I mentioned in a previous post, I occasionally play Rocksmith. The Mac build distributed via Steam works perfectly fine on M1, and although I’m usually focusing on other things when I’m playing (like staring at the fretboard of my bass), I’m hard-pressed to notice performance issues with the graphics, stuttering audio, etc. – the game simply runs as if it was targeted for the new platform to begin with.

I haven’t tried any other games yet. I’d expect the Good Old Games distro of SimCity 2000 that I still occasionally play to work fine. Supposedly Final Fantasy 14 is serviceable as well. However, I’m currently struggling to come up with a reason to play that on the Mac when the PS5 is in the same room, giving me much better hardware and a much larger screen to play on.

Long story short, Apple did a good job with building a complete package that serves the purposes they think they need to serve, and it seems clear to me that the tight integration and focused set of use cases are things that will be to their advantage for quite some time.

Windows (and Linux, to be sure) are designed to play to broader sets of hardware configs based on general-purpose components. Fifteen years ago, I would have identified the lack of AAA-level PC gaming as a weakness for the Mac platform; but then again, if I’m doing all my gaming on consoles and not even maintaining a PC for PC gaming, do I care? Probably not, right? Eliminating that checkbox from the list of things I need a computer I buy to support means I can look at other options that can potentially serve other purposes even more effectively.

And the bonus is I don’t have to subject myself to the vagaries of the interplay between an operating system I don’t particularly like and the sheer number of hardware configurations it needs to support.

If only 2003 me could see me today…

Leave a Comment

Development Diaries – Entry 1

A lot has changed in web development in the last twenty years. Prepackaged goodies like jQuery and Bootstrap speed development of the look and feel of your website. The HTML standard has evolved over the years, allowing webpages to serve vastly different kinds of content that years ago would have been impossible without plugins. And then there are content management systems, which do what they say on the tin.

Some things stay the same though, like the need to timestamp your stuff. Every Facebook post, every Tweet, every article on your favorite news site, they all have the date and time on them so you have an idea of how fresh the content is. And so did every one of my web pages back then. The implementation was certainly different – whereas now everything’s a record or a document in a database that has a timestamp associated with it, back then I was working with static HTML files with no content management. So if I wanted to say when a file had been updated, I had to do it manually. That’s assuming I even remembered to do it at all.

Rather than do it the analog way, I looked at alternatives. Javascript was the first attempt:

document.write(document.lastModified);

But this presented a problem – technically, writing the last modified date to the document is itself a modification of the document, so the result is always the date and time that the browser renders the page. Useful, but not informative.

Then I looked at server-side ideas, specifically CGI scripting. It isn’t terribly complex, and writing a program in C to power a website in 2017 would be a pretty hilarious thing to do:

void getFileCreationTime(char *path) {
    struct stat attr;
    stat(path, &attr);
    printf("Last modified time: %s", ctime(&attr.st_mtime));
}
            

But it’s overkill, and I also don’t know C well enough to go down that path without spending a bunch of time looking for help online.

So, I found another option that gives me the server-side capability without writing and maintaining code: server side includes!

<!--#echo var="LAST_MODIFIED" -->

It’s a single tag, it does exactly what I want it to… but with one hitch: the date is reported in a time zone local to the server, and I’d reeeeeeally rather it report the time in GMT instead. Just a preference of mine. SSI tags don’t give me that option out of the box, but I can go back to my first attempt: Javascript can read the output from the SSI tag, parse the date, and spit it back out the way I want it to!

function lastUpdate(dateTime)
    {
        var updated = new Date(dateTime);
        return "Last updated: " + updated.toUTCString();
    }

document.write(lastUpdate('<!--#echo var="LAST_MODIFIED" -->'));
            

The result is what I want, a timestamp that automatically updates itself when I make a change to an HTML file, and reports the time in the time zone I want it reported in. Not bad!

[Historical note 2021-03-31: Publish date approximated]

Leave a Comment

New Build (Part Deux)

Not “tomorrow” anymore, but here’s more.

The power supply – a beast by yesterday’s standards, but these days 750 watts seems almost ordinary. Nice thing about it is that it’s modular. Power supplies used to have a mess of cables coming out the back, and if you didn’t use them all you’d have to bundle the remainder up or find some place for them to go. Now, you use only what you need and store the rest in the box for later.

Incidentally, here is the bag all the cables came in.

The power supply, mounted in the bottom of the case. Another sign of the times – power supplies used to be mounted on top. The way air flows through a case, by the time it reaches the top-mounted power supply, it’s already fairly well-heated, and power supplies generate a fair amount of heat themselves. Now when warm air rises, it simply exhausts out the back.

Speaking of airflow and temperatures, why did I remove this massive fan from the top of the case? We’ll see in awhile.

ASUS P8Z68-V PRO motherboard. More than adequate for folks who don’t classify as extremely high-end, but not bargain barrel stuff either.

Serial ATA ports. This board supports adding eight hard drives (or seven hard drives and a DVD burner, or some other combination of the two), so it’s good for some of the more exotic configurations such as RAID.

The CPU socket (center) and RAM slots (lower-right).

The input and output ports that will be exposed on the back of the case. With onboard video, audio, networking, USB, and even bluetooth, it’s possible to run the entire setup just through the board without any extras. But where’s the fun in that?

The CPU socket, exposed and ready for installation. The gate folds back down and secures the CPU in place. One interesting thing about this particular socket is the pins. Normally the pins protrude from the bottom of the CPU and meet contacts in the socket, but here the pins come up from out of the socket and meet contacts on the CPU.

The underside of the CPU. This is an Intel Core i5-2500K. Like the motherboard, satisfactory for most folks who don’t need to be on the bleeding edge (and don’t mind cutting $100 here and there off of the price of their new computer).

The heat spreaders on these sticks of memory are entirely too aggressive-looking for a part that will never be seen while it’s in use. This is 16GB of memory. Quite a lot, if you think about it. It wasn’t that long ago that you couldn’t even find hard drives this big.

The CPU and memory are installed and ready to work.

This is a Corsair H100 CPU cooler. CPUs generate heat, and liquid cools better than air, which makes this a very interesting idea. The block sits above the CPU, transporting heat to the radiator, which is then blown off – through the top of the case – by a pair of fans. After a few days in service, I can say this thing does a really fantastic job of keeping the CPU cool when I put it through the paces.

The H100, installed.

The video card is installed. In the lower right (almost cut off) you can see the hard drives mounted in the bottom cage. I had three total – a solid state drive for Windows and some bare essentials, and two traditional drives for bulk storage. The SSD’s advantage is that it is much faster and much quieter than its elder siblings, but the drawback is that it’s significantly more expensive. As technology continues to advance, the older drives will probably no longer be needed by regular folks.

Here’s a shot of the computer, finally on its feet, with all the components installed and cabling run. The nice thing about this case is that the cutouts to the right and underneath the motherboard allow you to run cabling in such a way that it only exposes itself right in front of where you need to plug it in. This allows air to move through the case with fewer obstructions.

For reference, this is how the inside of my old computer looked. The case is much smaller and didn’t have many of the same amenities as the newer one does, so cabling kind of had to go wherever you could put it. That’s not to say the computer didn’t work, it was just a real pain to service and clean.

Leave a Comment

New Build (Part 1 of several)

It’s been two and a half years since I last built a new PC. At the time I speculated that, having beefed up quite a bit on the components, I could get three years out of it. Turns out I was half-right – it’s still in service now and would easily make it to the three-year mark, but it’ll probably blow right past that. It handled Deus Ex: Human Revolution and a couple of other newer games this year without too much trouble, and handles the demands I put on it for work just fine as well.

Still, I’m in a position to be able to upgrade and can conceivably play the “graduation/Christmas present to myself” card right now, so here we are. The first shipment showed up in the mail over the weekend, with the remainder on its way in tomorrow. So here are a few pictures of the case to start.

A look at the front and left panel of the case. I picked this one because it’s one of the few cases left in the world that doesn’t look like a UFO just landed. No multicolored lights, no weird designs. Just solid black with straight edges. It’s also lighter than I expected, too – much more so than the Antec Sonata 550 I used in 2009. The Sonata itself was also pretty understated – solid colors, nothing flashy – but it’s also not big enough on the inside for the newer full-sized graphics cards.

The right panel and rear. Not a huge fan of the window in the side of the case, but it’s not that big of a deal. Notice the latches on the top of the panel. The case uses a latching system to keep the panels on, rather than screws. That makes it a lot easier to get in for maintenance. On the rear are a couple holes for water cooling systems, a hole in the top-left for running USB 3.0 cables out of (in case you can’t plug some front-panel USB 3.0 ports directly in on the board), and the power supply is mounted at the bottom for better control over the heat.

Here’s the case with the panel pulled off. There is an insane amount of room in here, so everything will go in comfortably. There is a generous-sized cutout for backplates in case someone plans to install a heftier heatsink-fan over the CPU, along with a number of circular rubber cutouts used for threading cabling out of the way of airflow. (In other words, the cable from the hard drive to the motherboard would disappear behind the panel and pop up in the cutout closest to where it would go on the board.)

A closeup on the cutouts. Some of them will only be available when you use smaller motherboards (notice the posts sticking up in the middle, that’s where the board would be mounted), but there are still plenty to go around for the larger varieties.

A closeup on the 3.5″ drive bays. Each tray is flexible and snaps around the drive, then slides and locks into the bay. Between this and the latches on the outside, Corsair did a really nice job of making most builds with this case a screwless effort. Having said that, for 2.5″ drives, particularly solid state drives, there are a couple of screw holes that you must use to secure them. The top cage can be relocated in case you need the extra clearance for a really long expansion card.

The front and top panels. The front panel flips down to reveal a reset switch, firewire, two USB 2.0 ports, headphone and microphone jacks, and two USB 3.0 ports. The cabling behind the USB 3.0 ports is long enough to go out the back of the case (through that hole in the upper-left) to be plugged into the rear USB 3.0 ports on the motherboards in the event that the board doesn’t have a lead you can plug directly into. The top panel slides back to reveal SATA connectivity. You can either plug a 2.5″ drive in, or the notch on the left side pushes down to support a 3.5″ drive as well. This may come in handy as a dock.

More to come tomorrow.

Leave a Comment

Running out of gas

I’m so awake that Benadryl couldn’t put me down. That’s sad.

Halfway through the second round of tests for this semester. Had a Japanese test last Thursday which I did pretty good on, an east Asian civ. test on Monday which I did pretty good on, and still to come are a Chinese history test in a couple hours, a music history test on Friday, and a comp sci test next Wednesday. The Chinese history test has eaten up the lion’s share of study time as I had to read two pretty good-sized books cover to cover. I guess I’m ready for the test, but I’m not quite sure what the outcome will be just yet. As for the remaining two tests, I’m not worried about them, but I’m not overlooking them either. Beyond that, I have three papers to write this month, one of which is a Japanese research paper and an accompanying oral report. All are due in about four weeks, then it’ll be about time for the last round of tests. I think I can get out of here in December with decent grades, although I suspect there will be a slight drop from last spring.

Last week I had to go ahead and get signed up for spring classes in Lincoln. Even though I’m still planning to study abroad, the application process is taking long enough that we won’t have the final yes or no from the other school until well after registration here has opened. Next time around (and forever onward, I suppose) I’ll be taking a lighter class load. Studying for five tests has cut far enough into my schedule that while it’s technically still possible for me to work, the coursework leaves me not wanting to waste the spare time I do have on further activities which require actual thinking. This a problem considering I need the money to keep going to school, and my overall GPA isn’t quite high enough yet to apply for the upperclass scholarship. At this point it’s almost worth it more to take the path of least resistance and risk setting graduation back a semester rather than drive myself broke (already done) and insane (getting there) just to finish school.

One thing I will be doing starting next spring (or this fall if I somehow end up not studying abroad) is getting an apartment off campus. The convenience factor is starting to lose ground to the desire for things like my own shower and the ability to eat breakfast before 1030 on weekends.

Also, I would like to add that Windows 7 is excellent. Probably even more excellent is the fact that I bought it for $17 at the school bookstore. That’s how you stop software piracy on a college campus – make the product so cheap there’s no reason not to buy it. Too bad the CDs are the bookstore are still way too expensive. I was around here when Napster was a big thing, and if you’re still selling music at the same jacked up prices now as you were ten years ago, even if those prices are technically cheaper due to a decade of inflation (how the hell does a Snickers bar cost a dollar?), you’re pretty much begging for people to not buy CDs you paid money to be able to stock.

Leave a Comment