30 April 2011

Silo now available on MacPorts

Scientific computing developers rejoice. If you want your code to output files readable by LLNL's VisIT, there's a good chance you use the Silo library to do it. Well, if you use MacPorts, you can now download and compile silo without hassle on a Mac. I submitted a port file for Silo this morning, and the great volunteers at MacPorts had it cleaned up and in their repository by the end of the day. Now all you need to do is sudo port selfupdate && sudo port install silo, and you're good to go.

23 April 2011

Research code is now open sourced

Well, after talking with a group of nuclear engineers who are interested in open sourcing their codes, and after being persuaded by my friend Mike that it was justifiable to return some of my tools to the taxpayers who've sponsored my education, I have decided to open up my research code. The project is called PyTRT, and it's available at GitHub under a Simplified BSD license. Documentation for PyTRT is available, but it is probably overwhelming. We'll see if this ever amounts to anything.

18 April 2011

Guest post: save on batteries with the Apple external track pad

Apple Magic Trackpad: Run It For "Free" and Do the Environment, and Your Wallet, a Favor.

Most of my AA powered toys and appliances demand a battery change before they are truly depleted. I can measure that there is residual charge and I can't bear to toss them in the trash so they just accumulate in my closet (not a good idea). Behold the Apple Magic Trackpad. It will use the old batteries down to their last Joule-drop and I can dispose of them with a clear conscience.

New batteries, equivalent to what Apple includes, last me about eight weeks. Before they quit I get a battery warning and two weeks later they totally die. Nicely, one can go to the System Preferences>Trackpad and at the bottom left and read "Trackpad battery level" in percent. (If the trackpad batteries are completely dead you won't see this as there is no signal that the Trackpad even exists.) Once the batteries are dead replace them with used batteries and note the starting level. I have had previously used batteries read as high as 95% potency. These used batteries won't last as long as new ones but it is not a chore to keep them handy and replace them a bit more often.

A few sensible words of caution. Use only two of the same kind of batteries (don't mix lithium and alkaline). Check them to make sure they are not swollen, misshapen or leaking (leaking chemicals can be poisonous or corrosive and will mess up your battery compartment). If possible use two old batteries from the same source, starting off at the same charge is better. Don't put them in backwards. A good way to remember is the flat side is negative and goes up against the battery door which has slot in it that looks remarkably like a "negative" sign (another intuitive apple UI). I keep one of the dimes I saved to open the battery compartment. Oh, and don't over tighten it, just a slight snug will do.

Finally, if you ruin your nice Trackpad, it is not my fault. I haven't saved so many dimes that I can send you and your attorney on a South Sea vacation.

—Doug Johnson

04 April 2011

Red hell and death and taxes

Well, I broke down and spent the morning investigating my tax situation, which was rather confused at the end of last year. After some burrowing, I found that TurboTax was surprisingly right after all. Scholarships and fellowships that are reported on Form 1098-T rather than Form W-2 count neither for "earned income credit" (on Schedule M) nor for IRA purposes.

As regards Schedule M, which covered 2009's "Making Work Pay" credit, the "Earned Income Worksheet" line 4a specifically subtracts scholarship income: so people who rely solely on fellowships for their income are not eligible for earned income credits.

Finding out eligibility for Roth IRAs took considerably more digging, because on some portions of the 1040A instruction sheet, it says that scholarships count as "earned income." If you look at Publication 590, it says under "What is compensation?" that "Scholarship and fellowship payments are compensation for IRA purposes only if shown in box 1 of Form W-2." You can only contribute to an IRA if you have a non-zero "compensation."

So there you have it. This is not official tax advice, but you should look at the linked forms and draw the same conclusions that both TurboTax and I did. I'm glad the situation is clearer now, though of course I wish our tax system weren't such a mess.

15 March 2011

Commenting multiple photos in iPhoto ’11

When the App Store for Mac came out, I was excited at the chance to buy iPhoto without paying for the other apps that I didn't need. My excitement quickly turned to remorse as I encountered bug after bug after bug. Additionally, iPhoto removed useful functionality like the ability to use command shortcuts to switch between photos in "View" mode: in iPhoto it is now impossible to add comments to a number of photos in succession without a lot of mousing around.

I wrote an Applescript to partially overcome this limitation. It takes the selection and gives a dialog box for commenting each one. If the selection is contiguous it will properly display the photos in full screen mode as you comment them.

(*
Quickly comment the selected photos in iPhoto '11, viewing them in full screen if the selection is contiguous. Authored by Seth R Johnson, licensed under Simplified BSD.
*)
tell application "iPhoto"
 activate
 -- this works best with contiguous photos
 set sel_photos to selection
 if number of sel_photos is 0 or (class of item 1 of sel_photos is not photo) then
  error "Please make sure photos are selected."
 end if
 -- press the space bar to make the photos full screen
 tell application "System Events" to keystroke " "
 repeat with this_photo in sel_photos
  tell this_photo
   set c to comment of this_photo
   display dialog "Enter the comment for photo '" & (title of this_photo) & "':" default answer c buttons {"Cancel", "Apply"} default button 2
   set new_comment to text returned of result
   if c is not new_comment then
    set the comment of this_photo to new_comment
   end if
  end tell
  -- Press the right arrow key to advance to the next photos in the album
  tell application "System Events" to keystroke (ASCII character 29)
 end repeat
end tell

02 March 2011

Sharing research code

The more I work on my research code, PyTRT (a research code with several dozen transport methods—diffusion, Monte Carlo, P1, SN, IMC, etc.—implemented in 1D and 2D), the more I'm convinced this could be a useful tool to many people in methods development. I'm forced to ask myself what I should do with it after I graduate. It's entirely likely that I will continue to use it in my next career, but should I release it to the public, or to my department, or to whom? Should I try to sell it?

It was developed using funds from an NSF GRF, which "encourages Fellows to share software and inventions, once appropriate protection for them has been secured, and otherwise act to make the innovations they embody widely useful and usable," and from an NEUP fellowship, under which the "DOE claims no rights to any inventions or writings that might result from its fellowship awards." That seems to leave me all the flexibility I need.

Does anyone have an opinion to offer?

23 February 2011

Particle tracking bugs

Tracking Monte Carlo particles (or in this case, ray traces) through a geometry can be tricky because of the subtlety of edge cases. Today I discovered that my tracking routine failed when given a direction of −0.0 . I never imagined that the existence of signed zeroes in IEEE floating point arithmetic could ever bite me.

21 February 2011

Starting Terminal.app with multiple tabs in multiple directories

Almost every time I open up Terminal, I've wanted three tabs open with three particular directories. That means using Cmd-Tab a lot and tab completion to change the directory. I finally got fed up with that and invented a solution to take care of that automatically.

The first step is creating a "Window group" in the terminal. Go to the menu item "Windows < Save Windows as Group…", make up a name, and make sure "use this group at startup" is checked.

The second step is to edit your ~/.bash_profile and add something like this, where each "if" statement gets a different command. This is adaptable to changing the base directory, sshing, etc.

# change PWD to python by default
function change_default_directory() {
 TTYN=$(tty | sed -e 's/.*ttys\([0-9]*\)/\1/')
 if [[ $TTYN == 000  ]]; then
  cd ~/_code/pytrt/
 elif [[ $TTYN == 001  ]]; then
  cd ~/_code/_build/pytrt/
 elif [[ $TTYN == 002  ]]; then
  cd ~/_code/_build/pytrtDEBUG/
 elif [[ $TTYN == 003  ]]; then
  cd ~/_research/current/
 fi
}

if [ -n "$PS1" ]; then
 change_default_directory;
fi

Add more elif blocks if you open five windows, take away more if you open fewer. Enjoy!

12 February 2011

Reflecting on the hard work I've put into my research code

I am still proud of my code to get the angle in a quadrature set reflected across an axis. It's a little crazy.

const AngleT& getReflectedAngle(const AngleT& a, unsigned int axis ) const {
    return angles_[ (a.getOctantIndex() ^ (1 + ( axis << 1)) + 1) * numAnglesPerOctant_ - 1 - a.getSubIndex() ];
}

This section of code is copyright © 2011 Seth R Johnson, All rights reserved.

09 December 2010

Tradeoffs everywhere

Among the benefits of being a grad student is the ability to do literature review in one's hot tub.

Among the drawbacks of being in Ann Arbor is waking up to find the ambient temperature outside to be 5 °F.