Monday, May 13, 2013

Notes on installing IPython

Notes to self on installing IPython on Puppy Linux:

First: when the site says the QTconsole is "built on QT", that does in fact mean that QT has to be installed first.

Second: QT's "configure" script has to be called with the '-qt-xcb' option (which tells the compiler to use its own version of some library or other).

Third: 'make'ing QT takes a couple of hours. Thank Eris it compiled successfully, or else I'd have kicked something.

=====
Fourth: I spoke too soon. QT's 'make install' terminated with an error the first time I ran it. This is a rare but known bug, and it fixes itself magically by running 'make -j4 install' instead.

Fifth: After installing QT, figure out where the 'qmake' program lives. For me, it was /usr/local/Qt-X.Y.Z/bin. If you're like me and that's not on your path, you'll need that location later.

Sixth: Install SIP. Now, PIP/the PyPI knows about SIP, but can't install it automatically because it uses a weird build procedure. Instead of the usual
$python setup.py install
instead you do
$python configure.py --options
$make
$make install
after you've downloaded and unpacked the tarball.

Seventh: same for PySide. Oh, and don't waste time with PyQt5. Apparently IPython's QT stuff needs 4 anyway. As in, it's hard-coded in.

Sunday, May 12, 2013

Infamous Potato Salad

Infamous Potato Salad:

2 lb potatoes (I've used both red and russet potatoes for this, and both work well.)
12 oz bacon
1 onion
A few sprigs fresh cilantro (or parsley)
1 cup mayonnaise
1/4 cup mustard (yellow is fine, dijon or other tasty mustard even better)
1/4 cup ranch dressing
1 pinch salt
1 shake black pepper

Peel and cube potatoes, cover with water in a pot, and heat to a boil. Once boiling, cover and simmer 15 minutes until soft.

While potatoes are cooking, fry bacon. While bacon is frying, cut up onion and cilantro and set aside (separate). When bacon is crispy, remove it from the pan and set to drain on a wire rack.  Fry the chopped onion in the bacon grease: I like it to be black and crumbly.

When the potatoes are soft, drain the water. Cut or crumble up the bacon and add, with the cilantro and onion, to the potatoes. Whip together mayo, mustard, ranch, salt, and pepper and toss everything together until well coated and mixed.

Chill an hour and serve. Makes about 8 servings.

Monday, May 6, 2013

Monday crockery

So I have no idea how tonight's recipe will go... and since we've got a long rehearsal beforehand, the possibility of utter disaster will make success that much sweeter!

Ahem. Anyway:

Boneless Ribs a la Huckleberry
In a barrel of odds and ends it is different; things get mixed up, and the juice kind of swaps around, and the things go better.
1 pkg boneless pork ribs (~1.5 lb)
1 onion
radishes (maybe 10)
2 or more parsnips
1 clove garlic
1/2 cup dry sherry or madeira
1 tbsp capers

Lay the ribs at the bottom of the crock pot. Peel the parsnips and cut them into two-inch strips. Slice the radishes so that the slices are no more than 1 cm thick. Chop up the garlic. Add all the veggies to the pot on top of the ribs, and pour the sherry on top of it all. Cook on low 6-7 hours.

Pictures to follow.

Monday, April 29, 2013

In which we discover that gcc is not Latin

Had a very odd bug today while installing Prover9. Figured I'd record it for my (and maybe others') future reference. (The current version as of this writing is 2011-11A; at least one older version had the same behavior on my machine.)

Background: I'm messing around currently on a lightweight Linux called Puppy. Like most (all?) flavors of Linux, one is encouraged, when adding software, to compile it from source when possible. I've used gcc, the out-of-the-box GNU compiler, to compile a couple of little C++ exercises; but not until today had I decided to compile anything nontrivial.

Prover9 is designed to be downloaded as a tarball, unpacked, and then compiled without requiring any smarts on the part of the user. The unpacking was easy.

The process of compilation was supposed to be accomplished by simply giving the command
make all
to the shell. Now, keep in mind that at the start of this process I have only the slightest idea what is supposed to happen when I issue this command.

Much to my frustration, after a big bunch of output lines had scrolled across my terminal, make halted and caught fire. The topmost error in the stack, as much headscratching finally elucidated, was
undefined reference to round
while gcc was trying to compile one of the C sources.

Google sent me to this Stackoverflow question, which was thankfully not voted down (though a few people apparently tried). I still don't quite understand the details: basically, older versions of C core libraries don't come with certain obvious functions (in this case, round and ceil), and getting the compiler to pull in appropriate definitions for these functions requires issuing some extra instructions.

What's interesting is that the author of the compile (make) script issued (one version of) these extra instructions. If you unpack the archive and open up /path/to/archive/LADR-2009-11A/provers.src/Makefile, you will see at line 66
prover9: prover9.o $(OBJECTS)
    $(CC) $(CFLAGS) -lm -o prover9 prover9.o $(OBJECTS) ../ladr/libladr.a
The part that I'm interested in is the -lm instruction flag. It basically is needed in the course of linking libraries (like the math library containing round). However, my version of gcc wants this flag to be at the end of the line -- it complains (and more importantly, compilation halts and catches fire) with the flag in its current location.

The user can of course go into a text editor and manually edit Makefile so that -lm follows $(OBJECTS) (separated by a space on both sides). This worked for me: compilation completed successfully and all three included tests passed.