MakerBot Replicator Fifth Generation Printing Tips

Still learning my way around the Rep5, I’ve come across two problems: Print adhesion (or lack of) on larger prints, and oozy strings on everything, especially at high resolution.

I print on blue tape in MakerBot PLA, and on a 6×6 square, started getting nasty corner lifting. I solved this by scrubbing the tape’s upper surface lightly with alcohol (with the print surface out of the bed bracket). My next print adhered so well the tape came away with it…which was a pain, but there you are.

At MakerBot support’s suggestion, I also lowered my print temp from 230° to 220°. The stringiness I’d been seeing instantly went from “OMG a spider lives here!” to almost nothing.

Advertisements

Installing and Packaging Circos on Mavericks (OS X 10.9)

Revised and updated from last year’s version.

Circos is a software package for visualizing data and information. It visualizes data in a circular layout — this makes Circos ideal for exploring relationships between objects or positions. There are other reasons why a circular layout is advantageous, not the least being the fact that it is attractive.

What is less immediately apparent until you start digging into the documentation is that actually making Circos run is a bit of a trick. I needed it not only running, but packaged for DeployStudio and Casper distribution. The documentation has improved since 2013, but is still maddeningly vague in places. Here’s how I did things. A general familiarity with the command line is assumed, and use of a VM is recommended..

Gather Your Materials

Other instructions provide direct links to files. Those links go stale quickly, so I’ve linked to source directories where possible. Use the most current versions.

  • Circos
  • MacPorts
  • GD perl module
  • Xcode
  • JAMF Composer (or packaging tool of your choice, but I highly recommend something capable of snapshot comparisons…I won’t cover packaging this manually, as the tree just becomes needlessly complex)

Set Up Your Environment

Standard packaging rules: Clean system with no other apps running. I set mine up in a Mavericks VM and it worked a treat.

  • Install MacPorts
  • Install Xcode
    • Launch Xcode and accept the license agreement and device support install
    • Quit Xcode
    • Open Terminal and issue the following command (this will invoke an installer…allow it to run to completion):
      xcode-select --install.
  • Configure and update cpan
    • Open Terminal and issue the following commands (accepting the defaults as prompted)
    • sudo cpan
    • install CPAN <- Case sensitive, and take the defaults unless you know what you’re doing otherwise.
    • reload cpan

Take Your Snapshot

At this point you’re ready to start installing the modules required to run Circos, so take your starting snapshot. This will be a simple, standard package. Snapshotting the VM wouldn’t be a bad idea, either.

Install and Test Circos

Decompress the Circos download, and put the resulting directory where ever you want to run Circos. For simplicity’s sake, I placed it at /Applications/circos-0.66/. Circos comes with its own module tester, so let’s use it. Open Terminal, and

cd /Applications/circos-0.63-4/
./test.modules

This should return a list of installed and missing modules needed to run Circos. On a vanilla 10.9 install, that’ll look about like this:

ok Carp
ok Clone
fail Config::General is not usable (it or a sub-module is missing)
ok Cwd
ok Data::Dumper
ok Digest::MD5
ok File::Basename
ok File::Spec::Functions
ok File::Temp
ok FindBin
fail Font::TTF::Font is not usable (it or a sub-module is missing)
fail GD is not usable (it or a sub-module is missing)
fail GD::Image is not usable (it or a sub-module is missing)
ok Getopt::Long
ok IO::File
ok List::MoreUtils
ok List::Util
ok Math::Round
fail Math::VecStat is not usable (it or a sub-module is missing)
ok Memoize
ok POSIX
ok Params::Validate
ok Pod::Usage
fail Readonly is not usable (it or a sub-module is missing)
ok Regexp::Common
ok Storable
ok Sys::Hostname
ok Text::Balanced
fail Text::Format is not usable (it or a sub-module is missing)
ok Time::HiRes

Install items required by Circos

It’s those “fail” entries we’re concerned with, of course. So at a bare minimum, we need to install:

Config::General
Font::TTF::Font
GD
GD::Image
Math::VecStat
Readonly
Text::Format

We’ll do this using a mix of CPAN, build from source, and MacPorts. Since the GD2 library is available via MacPorts, let’s start there. Happily, letting MacPorts install the fontconfig dependency no longer seems to hard-hang the process. So:

sudo port install gd2

My advice is to go get lunch.

Now, crank up CPAN, and let’s get started on the perl modules. Note that CPAN commands are case sensitive.

sudo cpan
install Config::General
install Font::TTF::Font
install Math::VecStat
install Readonly
install Text::Format
exit

If you run the test.module script at this point, you’ll get a new list of failures.

ok Carp
fail Clone is not usable (it or a sub-module is missing)
ok Config::General
ok Cwd
ok Data::Dumper
ok Digest::MD5
ok File::Basename
ok File::Spec::Functions
ok File::Temp
ok FindBin
ok Font::TTF::Font
fail GD is not usable (it or a sub-module is missing)
fail GD::Image is not usable (it or a sub-module is missing)
ok Getopt::Long
ok IO::File
fail List::MoreUtils is not usable (it or a sub-module is missing)
ok List::Util
fail Math::Round is not usable (it or a sub-module is missing)
ok Math::VecStat
ok Memoize
ok POSIX
fail Params::Validate is not usable (it or a sub-module is missing)
ok Pod::Usage
ok Readonly
fail Regexp::Common is not usable (it or a sub-module is missing)
ok Storable
ok Sys::Hostname
ok Text::Balanced
ok Text::Format
ok Time::HiRes

So:

install Clone
install List::MoreUtils
install Math::Round
install Params::Validate
install Regexp::Common

Exit CPAN and run test.modules again. Everything but GD should now pass. It should be installable by CPAN, but that never works for me…it needs a compile from source. Let’s take care of that. In the Finder, locate your GD download and decompress it. In Terminal, move to the directory you just decompressed, and issue the following commands:

perl Makefile.PL
make
sudo make install

When that’s done, cd back to Circos’ bin directory and re-run test.modules. Everything should now register okay. Then:

sudo ln -s /usr/bin/env /bin/env

This symlinks env to /bin. Circos is picky about finding it there. You could also add it to your path. At this point, Circos should be ready to rock.

cd /Applications/circos-0.63-4/example
./run
ls  -lah

You should see a directory etc, containing circos.png and circos.svg with a creation date/time of…well, now. Unfortunately, what you like get is run.out indicating that Math::Bezier failed. Install it via CPAN. While you’re at it, go ahead and install Set::IntSpan. When you’re finished, re-execute run and check etc/ again. You should now be good to go!

Take your finished snapshot

All that remains is to finish your snapshot and package Circos! Use your standard procedure…no tweaking of permissions is required.

NetBoot with JAMF’s NetSUS Vmware Appliance

My regular NetBoot server is bumping up against a bug in Server 10.8 whereby tftpd errors out after about 10 clients boot, so yesterday we stood up a copy of JAMF’s free-to-use NetSUS appliance. Everything has been smooth (except a DNS hiccup) until we actually attempted to boot a client this morning, and the process crashed.

Turns out DeployStudio assistant builds NBIs with a sparseimage for the boot disk. Following up on this tip from Chris George, I converted that sparseimage to a standard compressed DMG, et voilá! Successful boot, and two processes (NetBoot and Apple SUS) that I can remove from my aging Xserve.

Determining the OS X version on a nonbooted-but-bootable disk

Happens every time: Client comes in with a nonbooting Mac that turns out to need an OS reinstall, but they don’t have their installer media. It’s less of an issue with recovery partitions and Internet Recovery, but it happens often enough to be annoying. Here’s how to find the installed OS version.

  • Start the problem machine in target disk mode and connect it to a functional box.
  • On the working machine, open Terminal and enter
strings /path/to/mach_kernel | grep 'Darwin'
  • The path to the mach_kernel will be /Volumes/drivename/mach_kernel.
  • The returned data should look something like this
Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64
Darwin
  • grepping ‘Darwin Kernel Version’ returns marginally cleaner results, but requires too much typing.
  • Anyway, now cross reference your kernel version with Wikipedia’s Darwin release history tableet voíla, your installed system version.

Sometimes, it’s the little things. Hat tip to Mac Help for the right command.

Installing and Packaging Circos on OS X 10.8

Circos is a software package for visualizing data and information. It visualizes data in a circular layout — this makes Circos ideal for exploring relationships between objects or positions. There are other reasons why a circular layout is advantageous, not the least being the fact that it is attractive.

What is less immediately apparent until you start digging into the documentation is that actually making Circos run is a bit of a trick. I needed it not only running, but packaged for InstaDMG and Casper distribution. The documentation links to a variety of sources that are a confusing mash of helpful, slightly outdated, now-wrong and missing. To keep myself sane, I decided to document my own process, thus this post.

Easily the best starting point is Paulo Nuin’s excellent and clearly-written install procedure. Unfortunately, even at 10 months old, it’s slipping slightly out of date, and packages available from MacPorts enable skipping a few steps. Here’s how I did things.. A general familiarity with the command line is assumed.

Gather Your Materials

Other instructions provide direct links to files. Those links go stale quickly, so I’ve linked to source directories where possible.

  • Circos (currently at 0.63-4)
  • MacPorts
  • GD perl module (I have elected to use 2.49 rather than the current version, for reasons I shall explain shortly)
  • Xcode
  • JAMF Composer (or packaging tool of your choice, but I highly recommend something capable of snapshot comparisons…I won’t cover packaging this manually, as the tree just becomes needlessly complex)

Set Up Your Environment

Standard packaging rules: Clean system with no other apps running. I set mine up in a Mountain Lion VM and it worked a treat.

  • Install MacPorts
  • Install Xcode
    • Launch Xcode and accept the license agreement and device support install
    • Open Preferences > Downloads and install the Command Line Tools
    • Quit Xcode
  • Configure and update cpan
    • Open Terminal and issue the following commands (accepting the defaults as prompted)
    • sudo cpan
    • install CPAN <- Case sensitive
    • reload cpan

Take Your Snapshot

At this point you’re ready to start installing the modules required to run Circos, so take your starting snapshot. This will be a simple, standard package.

Install and Test Circos

Decompress the Circos download, and put the resulting directory where ever you want to run Circos for simplicity’s sake, I followed Paulo’s suggestion and placed it at /Applications/circos-0.63-4/. Circos comes with its own module tester, so let’s use it. Open Terminal, and

cd /Applications/circos-0.63-4/
./test.modules

This should return a list of installed and missing modules needed to run Circos. On a vanilla 10.8 install, that’ll look about like this:

ok Carp
ok Clone
fail Config::General is not usable (it or a sub-module is missing)
ok Cwd
ok Data::Dumper
ok Digest::MD5
ok File::Basename
ok File::Spec::Functions
ok File::Temp
ok FindBin
fail Font::TTF::Font is not usable (it or a sub-module is missing)
fail GD is not usable (it or a sub-module is missing)
fail GD::Image is not usable (it or a sub-module is missing)
fail GD::Polyline is not usable (it or a sub-module is missing)
ok Getopt::Long
ok IO::File
ok List::MoreUtils
ok List::Util
fail Math::Bezier is not usable (it or a sub-module is missing)
ok Math::BigFloat
ok Math::Round
fail Math::VecStat is not usable (it or a sub-module is missing)
ok Memoize
ok POSIX
ok Params::Validate
ok Pod::Usage
fail Readonly is not usable (it or a sub-module is missing)
ok Regexp::Common
fail Set::IntSpan is not usable (it or a sub-module is missing)
ok Storable
ok Sys::Hostname
ok Text::Balanced
fail Text::Format is not usable (it or a sub-module is missing)
ok Time::HiRes

Install items required by Circos

It’s those “fail” entries we’re concerned with, of course. So at a bare minimum, we need to install:

Config::General
Font::TTF::Font
GD
GD::Image
GD::Polyline
Math::Bezier
Math::VecStat
Readonly
Set::IntSpan
Text::Format

We’ll do this using a mix of CPAN, build from source, and MacPorts. Since GD2 is available via MacPorts, let’s start there. The trick to know is that as of the 2.0.35 build of GD2, letting MacPorts install the fontconfig dependency seems to hard-hang the process. So:

sudo port install fontconfig
sudo port install gd2

Now, crank up CPAN, and let’s get started on the perl modules. Note that CPAN commands are case sensitive.

sudo cpan
install Config::General
install Font::TTF::Font
install Math::Bezier
install Math::VecStat
install Readonly
install Set::IntSpan
install Text::Format
exit

If you run the test.module script at this point, everything should pass but the GD modules. Let’s take care of that. (A word about versions: There is a newer version of GD available from the BitBucket repo Paulo mentions, but they’ve changed compilation methods and I can’t for the life of me get it to build. If you can, I’d appreciate a how-to!) In the Finder, locate your GD-2.49 download and decompress it. In Terminal, move to the GD-2.49 directory you just decompressed, and issue the following commands:

perl Makefile.PL
make
sudo make install

When that’s done, cd back to Circos’ bin directory and re-run test.modules. Everything should now register okay. Then:

sudo ln -s /usr/bin/env /bin/env

This symlinks env to /bin. Circos is picky about finding it there. You could also add it to your path. At this point, Circos should be ready to rock.

cd /Applications/circos-0.63-4/example
./run
ls  -lah

You should see circos.png and circos.svg with a creation date/time of…well, now.

Take your finished snapshot

All that remains is to finish your snapshot and package Circos! Use your standard procedure…no tweaking of permissions is required. But be sure to remove the extraneous junk that CPAN, et. al. leave strewn around your home directory!

What to do when OS X asks for a username and password (authentication) when deleting files

A client recently presented with an oddity: Every time he tried to delete a file from his Desktop directory, the OS queried for authentication. He stated that the problem began immediately after he upgraded to OS X 10.7, and that it only affected his Desktop folder.

This case, in retrospect, serves as a reminder of three things:

  1. Never take the client’s word that they have tested the situation to your satisfaction. In this instance, I asked if it was just the Desktop, and the client said yes. Turns out it affected all source directories.
  2. Never succumb to age-old temptation to conflate “last action taken” with “source of current problem”. I spent a while down the rabbit hole of errors in the Lion installer (and to be fair, that may have been it, but it unnecessarily restricted my search criteria).
  3. Occam’s Razor: Always check both ends of a transaction before running off looking for more complicated solutions.

I looked for known Lion installer problems. Nothing. I briefly suspected the all deny delete ACL on ~/Desktop, until I remembered that this was normal for Lion. I ran a permissions repair, thinking that perhaps some odd inheritance was going on. This was actually good, as it fixed a metric ton of other, unrelated problems, but was otherwise unhelpful. I looked into the console for indications of trouble, found an out-of-place entry for something called Safe Connect, and spent a while running that down. No dice.

The problem here is that I kept looking for problems with the source directory: ~/Desktop. I eventually broadened my search criteria a bit and found this post, which nailed the problem squarely. The problem was that ownership of the target directory — ~/.Trash — had been changed to root. Had I checked the two ends of the delete transaction to start with, I could’ve saved myself a whole lot of trouble and my client a lot of time.

I still have no idea what actually caused the problem. It’s not unreasonable to suspect the Lion installer. But the source of the problem is less important than finding a solution for it.