My First Year of 3D Printing

| Comments

I bought my 8” Prusa i3 printer almost a year ago. I had been interested in the idea of owning my own 3D printer ever since the first time I saw a video of the old MakerBot Cupcake in action. I thought it would be neat to be able to download designs from the Internet and print them in my own home, but I didn’t think that would be a good enough reason to own my own printer.

Since it has been almost a year, I thought it might be fun to talk about where I started, and just how far this journey has taken me. My goal was to be able to design and print my own objects, and I’ve definitely exceeded my expectations. It took roughly ten months to go from printing objects downloaded from Thingiverse to designing and printing my own parametric, articulated objects using OpenSCAD.

The first week of 3D printer ownership

The printer I bought was used, and it was already assembled when I picked it up. I was able to print things that I downloaded from Thingiverse on the first day. This was very exciting, but the print quality was quite low. I didn’t care! It was exciting just to see anything come out of the printer on my first day!

Glow In The Dark Space Invaders

The gentleman that assembled my Makerfarm Prusa i3 didn’t do a very good job. The belts were loose, and the bed eventually fell off during a print. The cabling job is also a complete mess. I corrected the first two problems early on, and my printing results improved dramatically, but the cabling is still a mess. Thankfully, the rat’s nest of cables is all off to one side, and it doesn’t cause any problems. I doubt that I’ll bother trying to clean that up until it starts causing trouble.

My printer was running almost nonstop during that first week. I was printing all sorts of random parts from Thingiverse, and I was printing lots of calibration objects in an attempt to improve my slicing settings.

The start of the second week – designing my first part with Blender

I’m very proud of the progress I made early on. I had my first custom part designed and ready to go within the first week, and I had the first prototype printed on my eighth day. That first part may have only been a platform on top of a simple cylinder, but I was ridiculously excited about it.

You can see all the newly beveled edges in Blender The front wall is thick, sturdy, and just tall enough The front overhang is a bit rough, but none of the filament was sagging!

This was the first time ever that I created something on a computer, and a real-life object slowly appeared next to me. And even more exciting to me, that object fit perfectly and snugly inside another real-world object that I already had in my possession.

This was the moment when I truly realized how revolutionary 3D printing is. With my extremely limited abilities, I was able to create a very precise object in the real world, and this was only the beginning!

The next eight months – More complex objects

I designed and printed quite a few objects over the next eight or nine months. All but one of those objects were designed using OpenSCAD. I’ve already written about most of these designs, so I’m only going to mention some of the highlights here.

The parts I designed range from small, simple parts like the keychain flash drive connector for my friend’s Keysmart keychain, to more complicated objects like the mount for my FiiO Andes USB DAC, to larger pieces like the cable cover for my monitor stand.

Monitor Stand Cover Animation

In the early days, it took many hours to design and perfect my tablet keyboard stand. These days, I can bang out a design for a simple camera mount in fifteen or twenty minutes. I’m very excited about how far I’ve come!

Ten months – Multipart articulated objects

During the first ten months or so, all of the objects that I designed were single, solid pieces. During that span of time, my friend Brian and I talked a lot about the possibility of designing car mounts for cell phones. He’s been using the excellent mounts from ProClip, and when Brian upgraded from the Nexus 5 to the Nexus 6, he needed a new mount.

He only needed to replace the piece of the mount that actually holds the cell phone, and I didn’t think it would be difficult to design it. I can’t recall exactly why, but we didn’t get around to printing one before he ordered one.

Then, not too long ago, I was toying with the idea of mounting one of my old Android phones on my 3D printer to broadcast live print jobs. There were some technical limitations preventing me from doing this, but I knew I’d need some sort of mechanism to aim the phone’s camera at the print.

Brian’s ProClip mounts have a neat little ball joint between the mount and the phone that allow it to tilt and swivel. I knew that I could manage to create something with similar flexibility, but I didn’t think it would be possible to print anything like that ball joint. The ProClip’s injection molded ball joint is quite small, very sturdy, and it moves smoothly.

Since I didn’t think the ball joint would be possible, I figured that the only option would be a simple swivel base attached to a single U joint.

The Tilt/Swivel Ball Joint

I decided to have a go at designing the ball joint, even though I didn’t think it would work. I was very wrong. It was simple to design, and works better than I ever imagined! The joint is made from three pieces of plastic connected together with a single M3 screw. The more torque you put on the screw, the harder it is to move the joint.

I had the first prototype designed in about 20 minutes, and I printed it the next day. It worked really well, but it was just the joint. It didn’t have any mounting points on the edges, and it didn’t have much extra room so that you could get your fingers on it to move it around, but it worked!

I went straight to work modifying the design. I made the “top” piece of the joint slightly taller, and I wrote some code to generate four mounting points. It was just another 20 minutes of work, and my new joint complete with mounting brackets was printing!

It isn’t as smooth as ProClip’s joint. Due to the nature of FDM 3D printing, there are small ridges circling around the parts of the joint. This means that it takes less force to swivel the joint than it does to tilt. It felt a bit crunchy at first, but a few seconds of sand-papering made it feel infinitely better.

Was the 3D printer worth the money and effort?

The Prusa i3 3D printer was worth every penny. I’ve had a lot of fun during the past twelve months, and I have learned a lot. I haven’t printed $600 worth of useful objects yet, and I don’t feel that I have to in order to justify the expense of owning the printer. I would enjoy someday reaching that point, because it would be fun to brag about, but I’m not in a hurry to get there.

I’d be very surprised if there is a faster way to get from thought to reality than owning a 3D printer. I recently came across the old hack of attaching a USB webcam to an inexpensive, articulated lamp from IKEA. I thought it was a great idea, but I wanted to improve on it. I wanted to attach the arm to the top of my monitor stand.

We stopped by the local IKEA before dinner, and we picked up a couple of IKEA’s TERTIAL lamps. We came home after dinner, and I unpacked the lamps and took a couple of quick measurements. It only took about 20 minutes of work in OpenSCAD to put together a usable mounting bracket for the arm. I fired up the printer the next morning, and I had a working part in my hand in about two hours.

Close up of the pieces The mounting bracket attached to the monitor stand The assembled webcam arm

The adapter that connects the monitor stand to the IKEA lamp is very simple. I probably could have made something that would do the same job by taking a drill and a saw to a large diameter dowel from Lowes, but I couldn’t have produced anything this clean by hand in the 20 minutes it took me to model the part I used. Maybe I could have made something decent by hand in the two hours my part took to print, but that would be cheating. I was working on other things while the printer was running!

Do you own a 3D printer? What do you use it for? Do you mostly print your own models, or do most of your prints come from a site like Thingiverse?

The Blu Studio 6.0 LTE Android Smartphone

| Comments

I’ve been contemplating the idea of making some changes in my portable and mobile worlds for quite some time. For a long time, I only had a laptop and a cell phone. Life was simple then, and there wasn’t much overlap between the two devices. Now I have a desktop computer, a giant 18.4” laptop, an 8.3” Android tablet, and a 4.7” Android phone.

There’s a lot of devices there with overlapping functionality. I’ve been thinking about replacing my tablet and smartphone with a single device ever since my friend Brian bought his Nexus 6. The trouble is the Nexus 6 isn’t much of an upgrade for me. It is a much better phone than my Nexus 4, but in all honesty, I barely use my phone unless I’m traveling.

Nexus 4 vs. Blu Studio 6.0 LTE vs. LG G Tab 8.3

It didn’t seem worth $460 to replace a device that I only use for about an hour each week. It also didn’t seem worth spending that same $460 to limit myself to a smaller tablet, especially since I use my tablet for an hour or two every day.

Sony Xperia Z Ultra — The wrong phone for me

I’ve had my eye on the 6.4” Sony Xperia for almost six months. Aside from the screen, it would have been a slight upgrade over my Nexus 4. The huge 6.4” screen is nearly as large as my old Nexus 7. I read plenty of books on my Nexus 7, so I’m pretty confident that I could use a 6.4” screen for just about anything.

There were two problems with the Z Ultra. It is an extremely tall phone at 6.9” high. I’m not so sure that would fit well in my pocket. It also doesn’t help that the price on the Xperia Z Ultra has gone up by about $80 since the last time I looked at it.

Blu Studio 6.0 LTE

I’m not entirely sure where I discovered Blu, but I’m glad that I did, even if their product names leave a lot to be desired. I zeroed right in on the Blu Studio 6.0 LTE. Don’t get it mixed up with the extremely underpowered Blu Studio 6.0 HD. The Studio 6.0 LTE has twice as much RAM, a higher resolution display, four times the flash, and an LTE radio.

I’ve spelled out the complete name of the Blu phone almost every time I’ve mentioned it in this post. I’m too worried that someone will mistake it for a different Blu phone!

The specs on the Blu Studio 6.0 LTE are quite reasonable. On paper, it is pretty much a Nexus 4 with a much bigger, higher resolution screen and a slower GPU. That isn’t exactly an upgrade for me, but I wouldn’t call it a downgrade, either. The Blu phone also has twice as much flash as my Nexus 4 and a MicroSD slot.

The Blu Studio 6.0 LTE only costs about $200 shipped. That’s less than half the price of the cheapest Nexus 6 I could find, so it was inexpensive enough that I didn’t have to hesitate. Even if I hated it, I could easily stomach the loss.

First impressions out of the box

I was more than a little worried when I pulled the Blu Studio 6.0 LTE out of the box. I always tell people that I don’t want my phone to be made of fancy, expensive materials like titanium or aluminum. I want my phone to be as light as possible. If a plastic phone is lighter, and it is still sturdy enough to survive living in my pocket, then a plastic phone is what I want.

The phone felt REALLY light. It ships without the battery installed, and it felt way too light and very oddly balanced. Also, the thin plastic cover on the back of the phone feels really flimsy without the battery.

The Blu Studio 6.0 LTE Battery is HUGE

Once I put the battery in, things improved dramatically. The phone is very well balanced, and it weighs about as much as any other phone with a 6” screen. The 3200 mAh battery in the Blu Studio 6.0 LTE is nearly as wide as the Nexus 4!

I’m a fan of the finish of the back cover. It has a slightly rubbery feel to it, so it doesn’t want to slide right out of your hand. It is the same sort of finish on the back cover of my old HTC Dream, the top of my wireless gaming mouse, or the Amazon Fire TV remote control. The glass on the back of my Nexus 4 might look better, but the Blu Studio 6.0 LTE feels much nicer in my hand.

The phone comes with a silicone case, but I never use cases, and I have absolutely no interest in making my giant phone any bigger.

It isn’t exactly a Nexus 6

The Blu phone isn’t a Nexus 6, and I didn’t expect it to be. I knew most of the shortcomings before even placing my order, but I wasn’t sure how much of an impact most of these shortcomings would have.

The Blu Studio 6.0 LTE has a lot going for it. It is a bit light, a few mm taller, and a couple mm narrower than the Nexus 6, and they both have 6” screens and a screen-to-body ratio of over 74%. In fact, the Studio 6.0 has a slightly better screen-to-body ratio, AND it has three physical buttons instead of software buttons like the Nexus 6. That buys the Blu over ¼” of extra screen real estate.

Blue Studio 6.0 LTE Bandwidth Test

The Blu Studio 6.0 LTE phone has a very limited number of LTE bands, but they happen to be the bands you need for T-Mobile. My friend Brian and I both use T-Mobile, and we did some random bandwidth tests the other day while driving around town. My Blu phone had comparable performance to his Nexus 6 each time we tested, and I usually even came out ahead by a couple of megabits per second.

It isn’t exactly a Nexus 4

I don’t want to say that the Blu Studio 6.0 LTE is slower than my Nexus 4. They feel pretty comparable most of the time. I can quickly flip between apps like Hangouts, Janetter, Feedly, and RedReader in a fraction of a second on either device, and scrolling around in those apps feels just fine.

Sometimes the slow GPU in the Blu Studio 6.0 LTE becomes noticeable. When moving bubbles around in Link Bubble, the frame rate can get pretty low. This doesn’t slow me down, but I can definitely see the bubble lagging behind my finger.

Blu Studio 6.0 LTE vs Nexus 4

The Blu Studio 6.0 LTE fared surprisingly well in an AnTuTu benchmark. It managed to outscore the Nexus 4 in every test except for the two GPU tests, and the Blu isn’t too far behind the Nexus 5. That slow GPU makes the UI a little less buttery, and it might keep me from playing some higher end games.

Luckily for me, the GPU is more than fast enough for the sort of games I play! At the moment, I’m addicted to You Must Build A Boat.

KitKat forever!

The Blu Studio 6.0 LTE ships with Android 4.4.2 KitKat. That’s not exactly cutting edge, and I don’t expect to ever see an update to Lollipop. For my own purposes, I’m not too concerned about this. I’ve been running KitKat on my Nexus 4 for ages. I am shackled pretty tightly to a couple of Xposed Framework modules, and they only recently started working with Lollipop.

I had some trouble rooting the phone. Towelroot just kept telling me that my device was unsupported. Lucky for me, once Blu’s small OTA firmware update was installed, Towelroot had no trouble rooting the phone.

I can’t say how well being stuck with KitKat will work out for you, but some Xposed Framework modules provide me with most of the Lollipop-related functionality that I would miss. For now, I will leave it at that. I think Xposed will need a blog post of its own.

GPS

I didn’t see any mention of the quality of the GPS in the Blu phones. I was bitten by a huge GPS downgrade a long time ago when I upgraded from the HTC G1 to a Samsung Galaxy S, so I was a little worried about this.

The first time I took the Blu Studio 6.0 LTE out of the house, I just couldn’t get a GPS lock. I checked the settings, and made sure all the GPS-related options were activated, and I rebooted the phone. As soon as I did that, Google Maps instantly made a lock, and it followed us perfectly to our destination.

I’ve navigated several times since then, and I haven’t had any more trouble. My little car icon does a very good job of following the road on the map. It hasn’t taken any weird journeys off on nearby roads, like my Samsung Galaxy S used to often do.

I’m pretty confident that the first failure was a fluke. I’ll be sure to report back here either way!

I really miss Gorilla Glass

As far as I know, none of the phones from Blu ship with anything like Gorilla Glass. They have regular glass, and my Studio 6.0 LTE came with a screen protector installed to cover the cheap glass. I hate it. I really, really hate it.

Your finger doesn’t slide as smoothly on a piece of plastic, and the plastic attracts all of the oils from your skin. I can use a device with Gorilla Glass for weeks and never notice how dirty the screen is, at least when looking directly at it. With the stupid screen protector, I could see a smudge the first time I touched the screen, and it just got worse from there.

I’m tempted to rip the screen protector off, but I know that I can’t apply the spare protector without ending up with bubbles and dust underneath.

Is 2 GB of RAM enough?

My short answer to this question is yes. If you trust me on this, you can skip this section of the post!

I could write an entire blog post on this topic, but I’ll do my best to summarize my thoughts. On my devices with 2 GB of RAM, Android is able to keep more than a dozen services running, and more than a dozen apps cached at any given time. I can easily flip between my half dozen most commonly used apps quickly and efficiently, even after I’ve been doing some heavy web browsing.

When you run out of RAM, Android starts kicking some of those cached apps out of RAM. Once those apps are shut down, you’ll have to wait for them to start back up the next time you want to use them. The less RAM you have, the more waiting you have to do.

You’re probably waiting around for apps to reload quite often if your device only has 1 GB of RAM. In my own experience, I don’t see this happen all that often on my 2 GB devices. I usually only notice it after playing a big, heavy game. Of course, your mileage may vary!

And the real question is

Is the Blu Studio 6.0 LTE worth $206?

In my opinion, the answer to that question is yes. It is most definitely worth $200. I could buy two of these phones instead of a single Nexus 6, give one to my wife, and still have $50 left over to go to dinner. If you want a giant clown phone, I doubt you can do much better than the Blu Studio 6.0 LTE without spending at least twice as much.

Pros:

  • Physical home, back, and menu buttons means more screen real estate
  • 2 GB of RAM
  • Fast enough (just barely!)
  • MicroSD support
  • 6” 1080p screen
  • Easy-to-open back cover with user replaceable battery
  • T-Mobile LTE bands

Cons:

  • No Gorilla Glass
  • Slow GPU
  • Only T-Mobile LTE bands
  • Mediocre camera
  • Stuck with KitKat
  • No wireless charging

At $200, there really isn’t much to complain about. The phone feels solid, and it doesn’t creak or squeak. It even has a user replaceable battery, and you don’t need a set of spudgers to get the case open. All you need is your fingernail! I’ve really missed phones that are this easy to take apart!

The Blu Studio 6.0 LTE seems to use the same chipset as the $179 Moto G from Motorola. The Blu has a bigger screen, twice as much RAM, and a larger battery than the Moto G. The extra $25 you have to pay for the Blu phone buys you a much more usable Android smartphone.

I’m much happier carrying a phone with a 6” screen, but I’m not yet entirely convinced that I won’t end up missing my LG G Pad 8.3. Only time will tell. I did have enough confidence in this plan of mine just two days after the new phone arrived. I’ve wiped my old phone and tablet, and I sent them to my parents.

Do you have a Blu Studio 6.0 LTE, or any other Blu phone? What do you think of yours? Did I leave anything important out of this post? What else would you like to know about the phone?

The E-Blue Mazer II Wireless Gaming Mouse

| Comments

I’ve been using wireless mice for most of the last ten years. During most of the time, I used my old Logitech MX900 Bluetooth mouse. The MX900 was a very power-hungry mouse; I had to make sure to put it in the dock every night, or else I had to swap the batteries every few days. Being power hungry was what made him suitable enough for playing first-person shooters.

I tried other wireless mice before buying the MX900, but they liked to take short naps fairly often. If I was playing a game, and waiting around a corner to ambush someone, the mouse might be asleep and cost me valuable seconds. The MX900 didn’t have that problem, so I was willing to put up with the need to keep a couple sets of Eneloop batteries around.

My Desk

By the time I replaced my laptop with a new desktop machine, the MX900 was really starting to feel old. The battery door was busted, the skates were starting to fall off, and an 800 DPI mouse starts to seem less smooth when gaming at 2560x1440 at 120 Hz. I figured it was time for an upgrade, so I picked out a random, inexpensive 1600 DPI wired mouse.

It was a fine mouse, but I had forgotten how annoying it is having a wire. If you just drop the wire behind your desk, gravity sometimes pulls at your mouse. If you drop it down the desk’s grommet, you’re sometimes fighting against the cable. In the end, I decided to velcro the mouse cable to my monitor stand. It worked well enough, but every so often I would run out of cable. I have a very smooth desk, and I don’t use a mousepad. With a wireless mouse, I can circle strafe in the same direction for a long time before running out of surface. Running out of cable was a different matter.

My friend Brian bought a fancy wireless mouse recently, and I was immediately jealous. I wanted a wireless mouse again, but the mouse he chose has one of the same failings as my old Logitech MX900: the batteries only last a couple of days. That was something I didn’t want to go back to, so I started doing some research.

The E-Blue Mazer II

The mouse I kept coming back to during my research was the E-Blue Mazer II wireless gaming mouse. It seems to be modeled to imitate the look of several of the mice that Razer makes, but it is sold for a fraction of the price. This alone was a bit worrisome, but optical mice are made from simple components that were already inexpensive a decade ago. There’s absolutely no reason that you can’t sell a quality wireless mouse today for $25, so I wasn’t going to use this as an excuse to cross this mouse off my list.

E-Blue Mazer On My Desk

The specifications and reviews led me to believe that the E-Blue Mazer II would fit all of my requirements. It is wireless, it can be set as high as 2500 DPI, and several reviews claimed that a single set of AA batteries would last from several months to almost an entire year.

I couldn’t see any reason not to pull the trigger on a mouse that costs less than $25. I opted to pay an entire extra dollar for the version that lights up. I don’t ever plan to use the lights, but I thought they’d make for better photographs!

First impressions

The E-Blue Mazer II comes in impressive packaging for a sub-$25 mouse. It comes in a solid, reusable plastic case. It is the sort of case that I would store a handful of Arduinos and related electronics components inside. When you open the box, you’ll see the mouse, AA batteries, and wireless USB dongle staring back at you. It is much nicer than the usual blister pack most inexpensive mice are packaged in.

E-Blue Mazer Packaging

There were a lot of reviews complaining that the E-Blue Mazer II is too large. I was happy to hear this, because I have fairly large hands. The one fact that I don’t recall reading is how short this mouse is. I bet it is nearly ¼” shorter than the average mouse. This was weird for the first few minutes, but I soon stopped noticing.

The range on the wireless dongle isn’t the best. I had the dongle directly into my desktop computer at first, and my computer is on the floor next to the desk. The mouse seemed to work fine at first, but then I picked it up and moved it. Whenever I did that, the mouse pointer would jump to the upper left corner of my screen. Relocating the dongle completely solved this problem for me.

This isn’t too surprising to me. My desk is made of heavy, thick MDF. I’ve had problems with various Bluetooth devices in the past. I just assume that 2.4 GHz doesn’t penetrate it very well.

Don’t forget to unwrap the skates

The mouse worked just fine out of the box, and I used it for almost two weeks before I noticed something very important. There is a thin layer of protective plastic over the mouse’s Teflon feet. The plastic was smooth enough that the E-Blue Mazer could slide across my desk just as nicely as any other mouse I’ve owned.

When the Teflon skates make contact with the desk, though, the mouse slides around with significantly less effort. So don’t forget to peel off those thin protective stickers!

One month of daily use

I have very little to complain about so far. I’ve probably played two dozen hours of Team Fortress 2, and the mouse has been working admirably. The mouse is comfortable, the buttons only require a soft touch to activate, and the weight is quite nice. Most of the weight is in the AA batteries, and they’re very low and directly below my knuckles. That’s probably about as close as a mouse can get to being “mid-engine.”

I’m still using the generic batteries that came with the mouse, and they’re still going strong. I popped one out and tested it with my multimeter, and it is still reading a little higher than 1.5 volts. The E-Blue Mazer II stays completely awake while you are using it, but it shuts itself off if you don’t touch it for about five minutes. After it shuts down, you have to hit a button to turn it back on.

This was annoying at first, but I realize this is how you make the batteries last several months. I’d much rather have to click my mouse when I sit down than have to swap batteries every few days. The mouse rarely falls asleep while I’m working, but I do occasionally spend more than five minutes writing without ever touching the mouse.

The verdict

I would definitely buy the E-Blue Mazer II again. In fact, I plan to order a second one to keep in my laptop bag since they are so inexpensive. The second mouse will most likely be the model that doesn’t light up

I will come back to this blog post when I have to replace the generic alkaline batteries with a set of Eneloops, but I don’t expect that to be any time soon.

Do you have a wireless gaming mouse? I’d love to hear what you think of your gaming mouse, or even your E-Blue Mazer II. Please feel free to leave a comment!

A 3D Printed Cable Cover For My Monitor Stand

| Comments

Immediately after installing my monitor stand, it was obvious that I needed a good way to hide the cables that were routed out the back. Most people that use these stands wouldn’t see the cables, because they’re sitting directly in front of the stand. I am sitting at an L-shaped corner desk, so I am seated in such a way that I can see around the back.

The untidy mass of cables My desk looks much cheaner now

This seemed like a perfect job for my 3D printer, so I fired up OpenSCAD, and I got to work designing something that would hide these pesky cables.

I had some problems tuning in the final version

I started designing this object back in November—nearly six months ago. I had the first test print finished in December, and it came out surprisingly well. That original test piece is currently attached to my friend Brian’s monitor stand, and it is working well enough. I wanted to improve on that design, though.

I ran into some trouble, because I left town for almost six weeks. By the time I returned home, none of this was fresh in my memory. I didn’t remember the precise changes that I wanted to make, and being away from the code for so long made it harder to spot a major mistake.

Monitor Stand Animation

I had accidentally used the poleDiameter variable where I should have used the baseToBack variable. These two variables represent two very real world dimensions, but they were close enough that they didn’t throw the printed part too far out of whack.

I changed the baseToBack value at least three times before realizing that it wasn’t having the intended effect. Remember to always pay close attention to the variables you’re using!

You can download the OpenSCAD source code for this part at GitHub.

Designing to integrate with a real world object

Creating a 3D printed part that snaps into an existing, real-world part can sometimes be quite an easy task. All you have to do is create a model of important parts of the exiting object, and use your modeling tools to remove the difference of the real object from your new 3D printed part.

In the case of the monitor stand, this was mostly very simple, since it is simply an easily measured cylinder perpendicular to a flat, square bracket.

There was one aspect of my design that involved some guesswork. I wanted to 3D print some teeth that would grab on to the inside of the opening where the cables flow out. Measuring the width of the opening was easy. Guessing how much wider I needed to make the teeth for a reasonable friction fit seemed harder. Too tight, and the clips would break off. Too loose, and the cover wouldn’t stay in place.

Variables used in the examples

There’s a whole slew of variables defined at the beginning of the full OpenSCAD source code of this object. I’ve left those variables out of the example code snippets, but you’ll need to add those variable definitions to your OpenSCAD source file if you want to follow along.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$fn=100;  // Increase resolution of curves
poleDiameter=48.3;  // 1.9"

baseWidth=100.6;    // 3.960"
baseToBack=57.3;

centerToBack=poleDiameter/2+baseToBack;

cablePass=19;
cablePassHeight=40;

holeWidth=28; // 1.130"
dooberHeight=25;
heightToHole=60; // guesstimate

snapHeight=1.4; //guesstimate
snapWidth=1.4;

thickness=3;
height=124; // 5.0"

If you paste this code into the top of your OpenSCAD source, then you should be able to paste in any of my example code snippets and see exactly what I do.

Step 1: I had to start somewhere

Step 1 - I Had To Start Somewhere

1
2
3
cylinder(r=poleDiameter/2, h=height);
translate([0,baseToBack,thickness/2])
cube([poleDiameter+thickness*2, cablePass, thickness], center=true );

I wanted to create a smooth shape that would start above the wire opening, and stretch down to the back of the stand, and cover the wires until they were hiding neatly behind the desk.

I created a cylinder to match the vertical part of the stand, and I placed a small rectangular box to represent the base at the rear of my new cable cover. These were the starting points needed to be connected together.

Step 2: Creating a hull

Step 2 - Using a Hull

1
2
3
4
5
hull() {
    cylinder(r=poleDiameter/2, h=height);
    translate([0,baseToBack,thickness/2])
    cube([poleDiameter+thickness*2, cablePass, thickness], center=true );
}

I’m not sure what a hull actually is in the mathematical sense, but I can tell you what it seems to be in a practical sense. It is somewhat like throwing a sheet over a set of 3D objects, and then pulling that sheet tight.

Using the hull function wrapped a skin around our two placeholder objects.

Step 3: Extending below the desk

Step 3 - Extending Below The Desk

1
2
3
4
5
6
7
8
9
union() {
    hull() {
        cylinder(r=poleDiameter/2, h=height);
        translate([0,baseToBack,thickness/2])
        cube([poleDiameter+thickness*2, cablePass, thickness], center=true);
    }
     translate([0, baseToBack, -cablePassHeight/2])
    cube([poleDiameter+thickness*2, cablePass, cablePassHeight], center=true);
}

This is a pretty simple step. I need the cover to hide the cables as they go below the surface of the desk. All we need to do is add one of OpenSCAD’s “cube” shapes below the back of the object. That will give the cables somewhere to hide until they drop out of sight.

Step 4: Making room for the pole

Step 4 - Making Room For The Pole

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module solidCover() {
    difference() {
        union() {
            hull() {
                cylinder(r=poleDiameter/2, h=height);
                translate([0,baseToBack,thickness/2])
                cube([poleDiameter+thickness*2, cablePass, thickness], center=true );
            }

            translate([0, baseToBack, -cablePassHeight/2])
            cube([poleDiameter+thickness*2, cablePass, cablePassHeight], center=true);
        }
    
        translate([0,0,-2])
        cylinder(r=poleDiameter/2, h=height*2);
    }
}

solidCover();

We have everything needed to hide the power and video cables that are coming out of the stand by the end of step 3, but it is just a big, solid object. There’s no room for the monitor stand or cables. We’ll use the OpenSCAD difference function to carve the monitor stand’s cylinder shape right out of our solid object.

Step 5: Hollowing it out

Step 5 - Hollowing It Out

1
2
3
4
5
6
7
8
module hollowCover() {
    difference() {
        solidCover();
        scale([0.85, 0.92, 0.85]) translate([0, 0, -12]) solidCover();
    }
}

hollowCover();

Now we need to make room for the cables. This is the first time that I’d needed to hollow out the inside of a complex shape. I decided that the easiest way to accomplish this would be to scale down a copy of the solid cover object, and then subtract the smaller object from the larger object.

Deciding how much to scale the object down takes a bit of guesswork and tinkering. I think I did a reasonable job. The finished part is thick enough to be quite sturdy, but still thin enough that I didn’t waste too much time and material on the print.

Step 6: Creating the snap fitting

Step 6 - Creating The Snap Fitting

1
2
translate([-holeWidth/2, 0, heightToHole])
cube([holeWidth, 40, dooberHeight]);

This is the part of the project that I am the most excited about. We need a way to hold the cover in place. My idea was to create a ribbed bracket that would snap into place in the oval-shaped opening on the back of the monitor stand. The hope being that the ribs would hold the part in place.

To get started, we just need to create a cube shape and move it in the correct location with the translate function.

Choosing a size for the cube and a height for the ridges was a bit of a guessing game. Measuring the width of the hole with a caliper was easy. Figuring out how much bigger the “arms” needed to be in order to apply enough grip was guesswork.

Step 7: Adding the ridges

Step 7 - Adding The Ridges

1
2
3
4
5
6
7
8
9
10
translate([-holeWidth/2, 0, heightToHole])
union() {
    cube([holeWidth, 40, dooberHeight]);

    translate([0, -snapWidth*2, 0])
    for (i = [0 : 7]) {
        translate([-snapHeight, i *2 + snapWidth , 0])
        cube([holeWidth+snapHeight*2, snapWidth, dooberHeight]);
    }
}

The ridges are just a series of flat “cubes” that are even so slightly wider than the central cube. We can use an OpenSCAD for loop to place a number of equally spaced ridge cubes.

Step 8: Making the snap fitting more flexible

Step 8 - Making The Snap Fitting More Flexible

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module snapDoober() {
    translate([-holeWidth/2, 0, heightToHole])
    difference()
    {
        union() {
            cube([holeWidth, 40, dooberHeight]);

            translate([0, -snapWidth*2, 0])
            for (i = [0 : 7]) {
                translate([-snapHeight, i *2 + snapWidth , 0])
                cube([holeWidth+snapHeight*2, snapWidth, dooberHeight]);
            }
        }

        translate([4, -2, 0])
        cube([holeWidth-8, 25, dooberHeight+2]);
    }
}

snapDoober();

That solid cube with the ridges on the sides would probably be too rigid to fit into the monitor stand. I figured that we could carve out the center, leaving behind a pair of slightly flexible arms. How thick do those arms need to be? I have absolutely no idea. I just took a guess, and it worked well enough. They’re flexible enough that I can still remove the cover, but it is quite an effort to get it to come off. I haven’t broken the arms in my removal attempts, so I guess I didn’t choose too poorly!

Step 9: Putting the pieces together

Step 9 - Putting The Pieces Together

1
2
3
4
union() {
    hollowCover();
    snapDoober();
}

Now we can bring the hollowed-out cover back and join it to our new snap piece. They fit together pretty well, except for that little piece of the snap cube sticking out the back.

Step 10: Trimming the excess from the snap fitting

Step 10 - Trimming The Excess From The Snap Fitting

1
2
3
4
5
6
7
8
9
10
11
union() {
    hollowCover();

    difference() {
        snapDoober();

        for (i = [1 : 5]) {
            translate([0, i*2, 0]) hollowCover();
        }
    }
}

There is probably a better way to remove the extraneous piece of the snap that is sticking out of the back, but we’re going to use the simple, brute-force method. We’ll just repeatedly subtract the hollowCover from the snapDoober while moving the cover backwards a couple mm each time.

At this point, we have a workable cover to hide those pesky cables. There are still some minor adjustments that we can make to improve our 3D print.

Step 11: Cleaning up the edges

Step 11 - Cleaning Up The Edges

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
module fullCover() {
    difference() {
        union() {
            difference() {
                hollowCover();

                // Take a few mm off the front
                translate([-450,-13,-450])
                cube([900,20,900]);
            }

            difference() {
                snapDoober();

                for (i = [1 : 5]) {
                    translate([0, i*2, 0]) hollowCover();
                }
            }
        }

        // Take a few mm off the top
        translate([-100,0,120])
        cube([200,200,20]);
    }
}

I also shaved a few mm off the top.  The top finished in a very thin edge, and thin edges at the top don't usually print well for me.  Trimming off the very top gives me a slightly thicker edge, and those print quite nicely for me.

fullCover();

This may be due to my printer not being calibrated perfectly, but I was unhappy with my first test print. The edges where the cover meets the vertical pole of the monitor stand come to a very narrow point. I wasn’t very pleased with how that edge looked, so I added some code to shave a few mm off that front of the cover. That turns those points into a slightly squared-off edge.

Test fitting the print

Test 3D Print of the Monitor Stand Cover

1
2
3
4
5
6
7
8
9
10
11
12
13
module testSlice() {
  difference() {
    fullCover();
    
    translate([-50,-50,5])
      cube([300,200,300]);
    
    translate([-50,-50,-308])
      cube([300,200,300]);
  }
}

testSlice();

Printing the entire cover just to test it out would be wasteful. It would eat up a whole lot of plastic, and the entire print job takes something like five hours to run. Instead, I wrote some OpenSCAD code to carve a slice right out of the middle.

The final print

The final cover with support material still attached The support material was large, but very light! Close up of the snap-in piece

I’m very pleased with how the cover came out. It isn’t perfect, and there were a couple of failed prints, but it is doing a great job of tidying up my desk. In retrospect, I’m not certain why I decided that the part that drops down behind the desk had to be a cube. It would have looked much nicer if I made the hull using half of a cylinder in the back instead.

I didn’t realize this until I was already printing test pieces, and I didn’t want to go back and risk goofing up a measurement. The cover is still doing its job splendidly, and I learned a lot about OpenSCAD in the process.

What’s next?

You can probably see the gaping hole in my desk where the grommet is supposed to go. I used to have a hacked together grommet with AC power outlets and USB ports. I had to move it out of the way when my monitor stand arrived, and I was temporarily using that hole as a better location for the stand. I’ve since moved the monitor stand, but I haven’t put the grommet back. It is just too ugly.

I’d like to print a replacement, but I haven’t decided exactly what ports and adapters I’d like to fit in there. A couple of AC outlets are a must. They come in handy when I need to plug in a soldering iron, or I need to work on a random laptop. Speaking of laptops, an RJ-45 jack connected to my switch would be very handy as well.

The USB ports will need to be upgraded to USB 3, and I’ll want at least one 2 amp USB charging port. I’m definitely open to suggestions as to which other kinds of ports I should attempt to squeeze into this new grommet!

Texas Pinball Festival 2015

| Comments

We almost didn’t make it to the Texas Pinball Festival, even though it isn’t much more than 15 miles from here. Do you know why we almost missed it? We didn’t know it existed until the day before the festival began! I noticed a tweet from Ben Heckendorn go by mentioning that he had landed in Dallas. I just assumed it was a layover, but a few hours later he tweeted about the Texas Pinball Festival.

Since I now knew that there was a pinball festival, and I knew how close it was, I immediately informed my friend Brian that we needed to attend. Neither of us have played much pinball, but we do happen to be arcade enthusiasts. We figured that there must be something there for us to see!

Texas Pinball Festival Texas Pinball Festival

It was an impressive sight to see. I’ve never seen so many pinball machines in one room. They were all lit up, and most of them were being played. It was much like the familiar sounds of the arcades that I grew up in, but it was even louder, and it seemed like you could walk forever and not escape those wonderful noises.

I am not much of a pinball player. I mostly ignored the pinball machines when I was a kid, and I gravitated towards the video games at the arcade. This wasn’t much different. All the games were free to play, and I only played one round of pinball. Just like when I was a kid, I spent a lot more time playing Joust at the Texas Pinball Festival than I did playing pinball machines!

That doesn’t matter, though, because there were a lot of interesting things to see!

Lt. Worf with googly eyes

One of the first things we noticed after walking in the door was a Star Trek The Next Generation pinball machine, but something about this pinball machine was a little off.

Texas Pinball Festival

Someone had placed googly eyes over the eyes of the crew of the starship Enterprise! It was well executed, and I particularly enjoyed the look on Lt. Worf’s face.

Star Trek: The Mirror Universe

There were a pair of Star Trek pinball machines almost hiding in a corner. One was obviously in better condition, and the artwork was much more detailed. We snapped a few pictures, and I read the sign above one of the machines talking about some of the upgrades he’d made to the nicer looking machine.

Texas Pinball Festival

I was a bit slow on the uptake. I didn’t realize until I got home that the pinball machine on the right wasn’t an official Star Trek pinball machine. The artwork was modified with the characters from Star Trek’s evil mirror universe! You’d think I would have figured it out when I noticed that the layout of the pinball machine was the exact opposite of the other one. Slow on the uptake. That’s me.

Unfortunately, these machines weren’t powered up while we were there. The mirror universe machine was upgraded with a Nixie tube score board, and I would have really enjoyed seeing that lit up!

The Acrylic Pinball Project

This is another one of those times where you notice just how unobservant we are. This was one of the most beautiful machines at the festival, and it was one of the first pinball machines you see when you walk in the door. We managed to walk straight past it to look at the Star Trek machine with the googly eyes. In fact, we didn’t notice the machine until our third lap around the room.

Texas Pinball Festival Texas Pinball Festival Texas Pinball Festival

This was an amazing machine. It is an old-school electromechanical pinball machine, but all the opaque panels have been replaced with clear acrylic. I thought modern pinball machines had a lot of machinery inside, but they don’t hold a candle to these old-school machines. I was surprised at just how much equipment there is inside a machine like this, even though they have much simpler play fields than newer machines.

All the original artwork was reproduced and sand blasted onto the acrylic panels, and the whole thing is lit with color-changing LEDs. This is a really impressive build, because I know first-hand how fragile acrylic panels can be. I can’t even imagine how difficult it must have been to drill all those holes to attach the bumpers, flippers, and other bits!

Roads? Where we’re going we don’t need roads!

It was hard to miss the iconic DeLorean parked in the back corner of the room. Unsurprisingly, it was parked next to a Back to the Future pinball machine.

Texas Pinball Festival

I don’t have a lot to say about this, but it is always fun to see a DeLorean. Especially one that is in good condition, like this one. I usually only run into the beat-up specimens.

Virtual pinball machines

There was a display with about half a dozen virtual pinball machines. Virtual machines are like MAME for pinball. Instead of a physical play field, there is a 21:9 LCD panel. The more expensive models had a second screen in place of a score board, so that the virtual artwork could match the game. There were also models with force feedback motors to make the game feel more real.

The idea seems appealing. If you’re going to use up some of the limited space in your home, why not have a pinball machine that can play more than one game? I tried one out, and I didn’t like it at all. The response time of the 21:9 monitors used in these machines is too slow. The ball looks absolutely terrible while quickly shooting around the play field.

I’d like to try one of these pinball games on the 120 Hz LCD panels on my desktop PC. I think it would look a lot better, but I’m not convinced that 120 Hz would be fast enough, because a pinball moves across the board at quite a high speed. Unfortunately, the Pinball FX game they were running at the Texas Pinball Festival isn’t available for Linux, so I won’t be trying it any time soon.

A cocktail arcade cabinet for ants

There weren’t as many arcade cabinets as there were pinball machines, but there were still quite a few. There were even a handful of cocktail cabinets. I always stop to look at cocktail machines, because I built my own adult-sized cocktail arcade cabinet. I knew my cabinet was tall—it is almost waist high at 34”. Brian just had to snap a photo of me standing next to an authentic cocktail cabinet.

Texas Pinball Festival - A Cocktail Cabinet for Ants

I didn’t remember just how child sized real cocktail cabinets are. Those little cabinets barely come up to my knees! I’m so glad I didn’t built a life-size cocktail cabinet. My back would be so angry!

Conclusion

We had a lot of fun at the Texas Pinball Festival. We may not have played many games, but we saw a lot of interesting things. If we were more sociable, I bet we would have met a lot of interesting people, too!

If they do this again next year, I definitely look forward to attending. I wonder if they’d let me bring my custom arcade cabinet to show off!

Craft Coffee - Revisting The French Press And Moka Express Pot

| Comments

I made a terrible mistake last month. I adjusted my Craft Coffee subscription to an even lighter roast setting, and this was just too light for my espresso machine. One of the three coffees, the one from Quasar Coffee, was only just barely dark enough and oily enough to work, and I failed as often as I succeeded with it. When I did succeed, though, it was delicious!

The other two were just too light and too dry. No matter how hard I would tamp, no matter how fine I would grind, and no matter how much I’d overfill the basket, it just wouldn’t work out. Most of the water would just work its way around the puck, leaving it dry in the center.

My mistake did make for an interesting couple of weeks, because I got to make use of some of my old, disused coffee brewing equipment—my Moka Express pot and my French press!

Old equipment with a new grinder

My old coffee equipment has been sitting in a cabinet for years. I’ve never had the opportunity to use quality beans with this gear, and I most certainly didn’t have a quality grinder while I was still using the French press and Moka Express pot.

They say that the grinder is the most important piece of equipment you can buy. My Baratza Preciso has a microadjustment dial that comes in handy for making espresso, but I recall reading that it is still a good grinder even way up at the extremely coarse French press range.

All three of my Moka Express pots and my French press came from a store called Brandsmart USA. They were impulse purchases, and they were all ridiculously inexpensive—I haven’t seen them priced that low anywhere else.

The French press

The French press and I have never gotten along very well. I just can’t ever manage to get the right ratios of cream and sugar no matter how hard I try. Things worked out a little better for me this time.

I knew that the correct grind for the French press is very coarse, but I didn’t realize just how coarse. My research suggested that I start at a setting of 32 on my Baratza Preciso grinder. I can tell you that I’ve never before ground coffee anywhere near this coarse.

For the sake of science, I followed Inteligentsia’s instructions to the letter. Everything went surprisingly well, and I actually enjoyed the coffee. The early attempts were a bit sour, but moving the grinder up to a setting of 34 seemed to correct that quite well.

The Moka Express latte

We really used to enjoy our Moka Express pots. We mostly used it to make iced and frozen drinks in an attempt to create something akin to a Starbucks Frappucino. I never managed to make a hot coffee beverage with the Moka pot using the cheap beans we used to buy. Everything came out tasting bitter and burnt.

My first attempt at an imitation latte using the Craft Coffee beans in the Moka Express pot was almost a success. It was definitely a passable latte, but it tasted a little off. My research suggested that I should start at a setting of about 14 on the Baratza Preciso, and my first instinct was to turn that up a notch or two. That would have been a rookie mistake.

As it turns out, the inside of my Moka Express pot was quite dirty inside—especially deep in those hard-to-reach places. I broke open my bottle of Caveza, took apart the Moka Express pot, and soaked everything for a few hours. When I was done, it looked new and shiny.

I was absolutely amazed with the results. My Rancilio Silvia may have me spoiled, and the latte-like beverages that I made with the Moka Express pot weren’t up to that high standard, but they were much better than anything I ever managed to make in the past. I have much more respect for the Moka Express pot than I did just a few weeks ago.

I was definitely cheating. I used the Rancilio Silvia to steam the milk. In the old days, we had some cheap contraptions for frothing milk, but they didn’t work nearly as well as Miss Silvia.

The Verdict

I really did miss the lattes from my Rancilio Silvia. You could buy twenty Moka Express pots for the price of a Rancilio Silvia, and you will be able to make a tasty, latte-like beverage, but it just isn’t the same. I was so excited when I was notified that my next box of Craft Coffee was on its way.

It was so nice to get back to making real lattes again. It was fun to see how much better the Moka Express experience is when using good beans and a proper grinder, but I’m glad this experiment is finally over.

Use my referral code “pat1245” and you’ll get 15% off

If you use my referral code (pat1245) when checking out at Craft Coffee, you will get a 15% discount. Not only will you save money, but they tell me I’ll get a free month of coffee with every order. That sounds like a good deal for both of us!

Bioshock Infinite Workaround For Linux With AMD Processors

| Comments

I’m late to the “Bioshock Infinite is now available on Linux” party. I didn’t notice it until a few days ago when Steam popped up a message telling me that 2K Games was having a big sale. I looked at the list, and there was Bioshock Infinite. Not only was it available for Linux, but it was also 75% off. I decided to grab the “Season Pass Bundle” and give the game a try.

I had to wait almost an hour for the 42-GB game to download. Things went just fine for a while, but the game froze up on me before even getting out of the rowboat. I figured that it might have been a fluke, so I tried again. I believe I made it off the rowboat on my third attempt, but I didn’t get much farther than that.

I tried tweaking all sorts of things. One red herring I encountered was when I switched from my custom 3.19-pf2 kernel to the stock Ubuntu kernel. I probably played that time for nearly an hour. I made it far enough to pick up a gun, then the game froze up again. No matter what I did at this point, I was consistently freezing up near the start of the first gun battle.

When it freezes up like this, the video stops but the music just keeps on playing. I end up having to kill the bioshock.i386 process.

I asked Google, but Google didn’t know

The Internet wasn’t terribly insightful this time. I did get a small clue while browsing r/linuxgaming on Reddit. In the comments on one of the handful of Bioshock Infinite posts, there were three people with a similar problem replying to one another. They all had various multicore AMD processors. My FX-8350 is a Piledriver CPU, and I’ve found forum responses from people with Bulldozer and Phenom chips.

This was enough of a lead to help narrow my search considerably. I found a Steam forum post with a considerable number of people in the same boat. The consensus seemed to be that using taskset to limit Bioshock Infinite to fewer cores either completely works around the problem, or at least reduces the incidence of crashing quite significantly.

I tried using taskset to limit the game to just one core, but the intro videos couldn’t even play smoothly. I ended up limiting the game to two cores, and this seems to be working quite well. My frame rates are a little lower, but the game is definitely playable. I haven’t crashed again, but I haven’t played much more yet, either.

A better fix than taskset. I hope!

I installed the amd64-microcode Ubuntu package last night. This package puts CPU microcode patches into your initrd, and these are loaded into the CPU on boot. I was too busy to reboot last night, but I gave it a shot today. I rebooted, removed all the taskset nonsense from Bioshock Infinite’s launched options, and then played some Bioshock.

The game now runs better than ever. It feels smoother—enabling all eight cores made the game really choppy the last time I tried, and I was able to make it through two checkpoints without any problems. This seems like a much better fix than using taskset.

If you’re running Ubuntu or Debian, all you have to do is run the command sudo apt-get install amd64-microcode and then reboot. If you’re having trouble and using an Intel processor, there is also an intel-microcode package. Installing that and rebooting may be helpful, but I can’t test that.

I’ll keep playing, and I’ll report back here if this continues to be successful.

Update on the better fix

Updating the microcode is definitely working better than limiting the game to just two cores using taskset, but it isn’t perfect. The game froze up again after another hour or two of playing. This time, though, it froze up and wouldn’t come back. There were no NVRM errors this time, though!

I’m currently running with both the AMD microcode update installed, and with taskset -c 0,4 set in my launch options. I added the taskset back after freezing up several times in a row. and the game hasn’t frozen up since. We’ll see if the combination keeps working well. I’m not sure if taskset is helping, or if dumb luck was keeping it from locking up on me.

How to use taskset

Using taskset with a Steam game is pretty easy. Open up Steam, and find Bioshock Infinite in your list of games. Right click on Bioshock Infinite and choose “properties.” That will open another window which should contain a button labeled “Set launch options.”

tasket for Bioshock Infinite

When you click that button you will be presented with a small dialog box that contains a single text field. In that field enter taskset -c 0,1 %command%.

Update 1:

On my FX-8350, cores 0 and 1 are completely different cores. I’ve had more luck using a sibling cores instead with taskset -c 0,4. Cores 4 through 7 are siblings of cores 0 through 3. Sibling cores each have their own integer processing units, but they share a floating point unit and cache.

After upgrading to the new 349.12 beta Nvidia driver, I decided to take a shot at running Bioshock without using taskset to restrict it to two cores. It didn’t go very well. It froze up pretty quickly, and the mouse felt terrible again.

At this point, I can usually play for a couple of hours at a time without any problems. I’m usually the one that decides it is time to stop playing instead of the game deciding for me, which I think is a big improvement.

The game is still very fragile, though. I’ve noticed that if I “alt-tab” out of the game, it will very likely freeze up on my in the next minute or so. This isn’t as bad as the “multicore freeze.” The game will eventually start moving again, but it will keep freezing at regular intervals.

Unfortunately, the autosave points are way too far apart for this to be of any use.

Update 2:

Sometimes Bioshock Infinite for Linux runs great, and sometimes it doesn’t. Last night, things were going well for 15 minutes before it started freezing up every three or four minutes. This was the less catastrophic sort of freezing, and I was able to make my way to the next save point. I restarted the game several times, but the situation didn’t improve at all.

I figured that I’d have to reboot or restart my X server to improve the situation. I didn’t think it was worth that kind of effort, so I just played Team Fortress 2 instead.

I decided to fire up Bioshock Infinite again today, and I played for over an hour with no problems. There were no reboots involved. It just happened to work. I can’t tell you anything that was different. I didn’t imagine it could really be the problem, but I was even keeping an eye on CPU and GPU temperatures. The temperatures weren’t any higher

Errors to watch out for

When the game freezes up, there are usually some NVRM errors in the dmesg output. I don’t see these when I play any other game. I did see some similar errors in Borderlands 2 when using the first beta driver that supported my GTX 970 video card, though.

1
2
3
NVRM: Xid (PCI:0000:01:00): 69, Class Error: ChId 0004, Class 0000b197, Offset 00002044, Data 0000000f, ErrorCode 00000004
NVRM: Xid (PCI:0000:01:00): 31, Ch 0000002e, engmask 00000111, intr 10000000
NVRM: Xid (PCI:0000:01:00): 12, COCOD 00000026 beed9097 0000b197 00000e0c 0b970283

I did experience some particularly annoying NVRM errors with an Xid of 50. Every time one of these errors showed up in dmesg, the “performance level” of my GTX 970 would drop by one level.

1
2
NVRM: Xid (PCI:0000:01:00): 50,  L2 -> L1
NVRM: Xid (PCI:0000:01:00): 50,  L1 -> L0

The first time the error shows up, the “performance level” drops from 3 to 2. Once this happens, I didn’t see the “graphics clock” go above about 700 Mhz. If I kept playing in this crippled state, it would eventually drop to “performance level” 1.

I have not had this problem since using the taskset workaround.

Nvidia Control Panel Performance Level

Every time this happened, I had to reboot to get back to normal. Restarting the X server may be enough to correct the problem, but it doesn’t take much longer to just reboot.

Bioshock Infinite for Linux keeps a log file at ~/.local/share/irrationalgames/bioshockinfinite/eon.txt. Every time I freeze up, I’ll find a line in that log file that starts with “Skipping draw call,” and then a bunch of lines saying “Ignoring motion.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[thread 00000001][I][12207]: Ignoring motion
[thread 00000024][W][13336]: Skipping draw call because the draw wouldn't have any effect on any render target, depth stencil or unordered access view, and no occlusion query is being performed.
[thread 00000004][W][20886]: eON_LoadLibraryEx() couldn't load 'atiadlxx.dll', returning NULL!
[thread 00000004][W][20886]: eON_LoadLibraryEx() couldn't load 'atiadlxy.dll', returning NULL!
[thread 00000004][W][20886]: eON_LoadLibraryEx() couldn't load 'atiadlxx.dll', returning NULL!
[thread 00000004][W][20886]: eON_LoadLibraryEx() couldn't load 'atiadlxy.dll', returning NULL!
[thread 00000001][I][21078]: Ignoring motion
[thread 00000001][I][21089]: Ignoring motion
[thread 00000001][I][21102]: Ignoring motion
[thread 00000001][I][21102]: Ignoring motion
[thread 00000001][I][21113]: Ignoring motion
[thread 00000001][I][21124]: Ignoring motion
[thread 00000001][I][21135]: Ignoring motion
[thread 00000001][I][21145]: Ignoring motion
[thread 00000001][I][21176]: Ignoring motion
[thread 00000001][I][21187]: Ignoring motion
[thread 00000001][I][21198]: Ignoring motion
[thread 00000001][I][21208]: Ignoring motion

How is the Bioshock Infinite port?

Aside from the crashing, it seems pretty good. The graphics look great, and my GTX 970 card seems to be able to maintain better than 90 frames per second at 2560x1440 with pretty reasonable settings. I’ll have to go back and tweak those settings now that the game isn’t freezing up on me constantly. I made lots of seemingly random changes just trying to make the game stable!

The controls feel absolutely awful. I seem to have the mouse sensitivity set to about the same speed as I am used to in Team Fortress 2, but it doesn’t feel smooth like Team Fortress 2. A small move of the mouse results in very jarring movements. Bioshock Infinite uses the same engine as Borderlands 2, and I didn’t have this problem there. Hopefully I can steal the relevant bits from my Borderlands configuration files to make myself feel more at home!

Improving the mouse situation

Bioshock Infinite seems to be a little fragile. My mouse didn’t feel smooth because I have the polling frequency set to 1000 Hz. Lowering it to 250 Hz has made a huge improvement. It doesn’t feel like Team Fortress 2, but it feels pretty good now.

I also pilfered my MouseSensitivity setting from my Borderlands 2 configuration files. The mouse sensitivity slider in Bioshock Infinite isn’t very granular. One tiny click of the slider makes my mouse either much too sensitive or not nearly sensitive enough. Copying the setting from another Unreal Engine 3 game neatly sidestepped this particular annoyance.

I hope this information helps you with your problems. If it does, I would definitely like to hear about it. If it doesn’t, I’d like to hear about that, too! Please feel free to leave a comment. Maybe I can try to point you in the right direction!

Craft Coffee - Quasar Coffee

| Comments

I had some trouble this month. I adjusted the roast level of my Craft Coffee subscription down one notch from “Medium-Light Roast” to “Light Roast,” and this is pushing things a bit too far for espresso. I still enjoyed some amazing lattes using the beans from Quasar Coffee this month, but it was a lot more work than it should be, and I pulled a lot of terrible shots.

Craft Coffee - Quasar Coffee

I’ve corrected my mistake and switched my subscription back to “Medium-Light Roast.” Things should be back to normal next month. I am using the other two bags of beans to experiment with other brewing methods that I abandoned long ago—the french press and the Moka Express pot.

Quasar Coffee Roasters, Chicago, IL
Producer Chania Estate
Origin Thika, Kenya
Variety SL28, SL34
Elevation 1,500 Meters
Process Washed
Tart pomegranate acidity and pronounced ruby red grapefruit flavor reveal a lingering vanilla bean essence.

I made some pretty amazing lattes using the beans from Quasar Coffee Roasters, but it did like to get away from me and pull way too fast sometimes. Even the fast shots were still pretty good, though.

I’ve never been able to enjoy grapefruit, but I do have a very distinct and negative memory regarding grapefruit juice. I can’t tell you for certain that this pronounced flavor is indeed similar to a “ruby red grapefruit,” but this Kenyan coffee from Quasar Coffee Roasters has a hint of something that brings back memories of that bottle of grapefruit juice.

The vanilla taste is easy to pick out as well, and it is very nice.

I really enjoyed this coffee, but it was pretty difficult for me to pull a consistent double shot of espresso. The margin of error between a near perfect shot and a 12-second waterfall was really narrow with these beans, but some of those faster pulls of the Quasar Coffee still made some delicious lattes. With most beans, a pull that fast results in a pretty sour latte.

Use my referral code “pat1245” and you’ll get 15% off

If you use my referral code (pat1245) when checking out at Craft Coffee, you will get a 15% discount. Not only will you save money, but they tell me I’ll get a free month of coffee with every order. That sounds like a good deal for both of us!

Repairing an Old, Sagging Recliner

| Comments

For years, I had been saying that I wanted some sort of relaxing, comfortable chair for the corner of my home office. I kept saying that it should be a “reading chair.” I’m not entirely sure what that should be, but I quickly figured out that it would need to be a recliner of some sort.

Lane Recliner

I’ve been shopping around for several years. Yes, years. Nothing I found seemed worth the time, the effort, or the money. I didn’t expect to sit in it very often. I just wanted a place to occasionally read, and I wanted something to point at the television connected to the arcade cabinet. I couldn’t justify the money to buy a quality recliner, and all the cheap recliners I tried were rather uncomfortable.

Craigslist is a lot of work

Late last year, I pulled the back seats out of the minivan and started searching Craigslist for a suitable recliner. I don’t like using Craigslist. Finding what I want isn’t always easy, and communicating with the sellers is often strange or confusing. After two months of on and off searching, I finally saw something I wanted.

The Tag From The Lane Recliner

It was an older Lane recliner listed for $100. It is a big, brown “leather” rocking recliner that was manufactured in 2007. I’ve since learned that they still sell this model. It is part of Lane’s Summerlin line of furniture, and I have seen it listed for $900, but I assume you can haggle on that price.

Amazon seems to have an absolutely gigantic version of my recliner, the Snuggler Recliner by Lane. My tape measure says that that monstrosity is 12 inches wider than my old Lane Recliner. I doubt that it could fit in my already cramped office!

The Lane recliner isn’t perfect

It appears to be in pretty good condition, but the couple that sold it to me were very insistent about me sitting in the chair before I paid for it. It was obvious that the seat cushion was sagging quite a bit, but I told them this was fine. I didn’t expect to sit in it very often.

I was wrong about that. I sat in the chair every single day, and the sagging was starting to bother me. It was alright when I first sat down, but if you wiggled around a bit you’d end up with a 2x4 bumping against your back. I decided to flip the chair over to investigate.

One of the five springs was gone

The missing spring was very obvious when I flipped the chair over. Once I saw the problem, it also became obvious that the sagging seat was leaning to one side. This ended up being really easy to fix. I was able to buy a replacement spring from Amazon for around $13.

Putting the spring in place was slightly more difficult than I had anticipated. The hooks were still in place on the chair, but stretching the spring was a more complicated endeavor than you would expect.

I have no idea what I’m doing

The first thing I tried to do was muscle the spring into place with my bare hands. I thought I was doing a pretty good job at first, but once the spring was stretched to within about ¼” of the hooks the chair started lifting off of the ground! I tried holding the chair down with my foot, but it was no use. I just couldn’t get the spring into place.

I ended up using a pry bar to stretch the spring into place. Then it was just a matter of using my other hand do guide the end of the spring over the hook.

One Of These Springs Is Not Like The Other

The new spring was a HUGE improvement. It made it feel like a completely different chair. This created a new problem, though. The new spring is stiffer than the four old springs. The difference wasn’t as drastic as having a missing spring, but I knew it was there.

It was Christmas time at this point, so I decided that I would wait until after the holidays to order another spring. I thought about replacing all the springs, and I still might, but the two outer springs seem to have a kind of curve to them. I’m not entirely sure if replacing them would work out well.

I need more patience

I got bored one night during the holidays, and the uneven springs were bothering me. I didn’t have another replacement spring, and they aren’t available with Amazon Prime shipping. I did have an idea, though, and I thought it was a good one.

The springs follow a repeating S-shape, and I decided to try stretching the opposite spring tighter by one notch. It worked surprisingly well. The seat feels very evened out now!

A flaw in my repairs

At this point, I flew up to my home-town. I bragged to all my friends about what an amazing job I did fixing up this recliner, and I told them about all the things I learned in the process.

A couple weeks after all this bragging, I flew back here and returned to my home office. After a few days of sitting in my chair, I noticed that it wasn’t as comfortable as I thought it should be. The back edge of the seat was sagging a bit, and it was getting stuck under the frame of the seat back.

If I pull the back of the seat cushion up and out from under the back, then everything is fine. At least until you sit in the chair three or four more times. Then you have to repeat it.

This was easy enough to fix. All I did was pull the remaining springs one notch tighter. I don’t know if it is perfect, but it is working out quite nicely.

The Springs In The Seat Back Of The Recliner

There are similar, but weaker springs in the seat back. I also ended up pulling one of those springs tighter by one notch. That made the lumbar support a bit more stout, and now my lower back never ends up sagging into the frame.

Was it worth the effort?

I think it was definitely worth the effort. At the very least, I saved a couple of hundred dollars compared to the brand-new chairs I was looking at, and this chair is much better for me. Most of the new chairs that I looked at were too small for me.

With this Lane recliner, I don’t have to slouch to lean on the armrests, like I do with many recliners. The arms are also far enough apart that I can easily fit my elbows in between them, which is much more comfortable when using my laptop.

I am surprised how often I actually use the recliner here in my home office. Had I known that, and had I known how much I like this particular model, I would have gladly paid the $900 for a brand-new Lane recliner. I would have never figured this out, though, if I hadn’t bought this used model, so I think I made the right choice.

The repairs were easy enough, but I did spend a lot more time that I should have tinkering with the various springs. That is partly because I enjoy tinkering, and partly because I wanted to make sure I had accurate enough information for this blog post.

If your recliner is sagging like this, I’d definitely say that it is worth flipping it over and taking a look at the springs!

Craft Coffee - Rising Star Coffee

| Comments

I received a box from Craft Coffee about a month ago, and I already wrote about two of the coffees in that box. One of those three coffees was Ethiopian, so I decided to save that bag for last.

Craft Coffee - Rising Star Coffee

I don’t think I’ve ever met an Ethiopian coffee that I didn’t enjoy, and this bag of coffee from Rising Star Coffee is no exception. This Ethiopian Sidama might be every bit as delicious as the Ethiopian Yirgacheffe I had from modcup last year.

Rising Star Coffee, Cleveland, OH
Producer Korate
Origin Sidama, Ethiopia
Variety Various Varietals
Elevation 1,600-2,000 Meters
Process Washed
With notes of blueberry and sweet spices, this coffee has citrusy qualities and an awesome layer of chocolaty flavors.

This coffee from Rising Star Coffee is excellent. I had my double shots of espresso tuned in pretty quickly, and I have been making some lattes that rival the very best that I’ve ever made.

It has that fruity flavor that I’ve come to expect from Ethiopian coffees, and it is very smooth and delicious. If the shot pulls even just a little too fast, I am left with a bitter aftertaste. It has been better if I err on the slow side, though, because even the slowest shots that I’ve pulled have been delicious—not even the least bit sour.

Use my referral code “pat1245” and you’ll get 15% off

If you use my referral code (pat1245) when checking out at Craft Coffee, you will get a 15% discount. Not only will you save money, but they tell me I’ll get a free month of coffee with every order. That sounds like a good deal for both of us!