May 11, 2011

Give your brain what it wants

Filed under: 20-minute,meta,skills — Mark Dalrymple @ 12:05 pm
Tags: , ,

Grumpy badger

You feed your body what it wants. You want to feed it what’s healthy. I know when I have a craving for something like broccoli, I treat myself to broccoli. There must be something in those wonderful tiny little trees that my metabolism is jonesing for.

The same thought applies your brain. Feed your brain what it wants. If you’re lucky, your brain will want what’s good for it. I know my head goes on kicks: “I want you to read as much about iPhone programming as you possibly can.” Reading programming books at this time is very pleasurable. I drop lots of money on books and end up reading all of them cover to cover, usually in my “leisure time”.

Later on brain says “OK, I want to learn as much about photography as you can.”. When that happens, I absorb photography books and websites. If I tried to feed my brain programming books now, it’ll balk, complaining like a 4 1/2 year old. “no no no no I want Photography NOW.” So I shelve the rapid learning of programming and dive into photography. Currently my brain is on a kick learning about the process of writing long-form fiction. I have no idea why my head wants that, but I’ve been having a great deal of fun reading about how to write mystery novels and NaNoWriMo.

I’m a huge fan of throwing lots of data at my brain, hoping some (or most) of it will stick, but I’ve learned that force-feeding my brain what it doesn’t want doesn’t always work well. Sometimes life interferes and I have to learn about Location Services or the MapKit when I’d rather be reading about f/stops and lighting ratios, but for the most part, I keep my discretionary reading time on stuff my brain wants.

I directly attribute my better-than-average skills in balloon twisting, programming, and photography to feeding my brain what it wants when it wants. All of these hobbies require direct physical application, but without that fundamental layer of information I build, I know I would have wasted a lot of time in the application and practicing phase of learning my crafts.

Just like you shouldn’t always feed your body pizza and delicious soft-serve non-dairy ice-cream-like cold sweet substances, you should be choosy what you throw at your head. An occasional snack of Jersey Shore or America’s Next Top Model won’t destroy your mental health, but you’ll want to consume higher quality materials for the sake of your brain.

May 7, 2011

Balloon Tools I Use

Filed under: 20-minute,balloons,skills — Mark Dalrymple @ 2:00 pm
Tags: , ,

Bloon bag

I don’t make balloon animals for a living, and I don’t consider myself a pro, but I do think I’m pretty good. Check out that look of joy on the frog picture at my getting started with animal balloons. It’s awesome being able to surprise and delight people.

Aside from the collection of balloons I use, I have a couple of tools that I use.

My favorite balloon accessory is my Twist-em-Up Busking Bag, seen up above here. You can hold several hundred balloons (maybe a thousand? I haven’t counted) in the middle. The 160s, 260s, and 350s live in the middle. There are four pockets around the perimeter that hold my specialty balloons. One pocket for geo blossoms, one for hearts, one for 321B bee bodies, and one for happy faces and aliens. I might have some white rounds for eyes, but typically I don’t carry a bunch of rounds. Each of the pockets have a couple of high bouncy balls.

The first tool in my arsenal is a small pump, a 160 Blaster that I keep in the middle of the bag. It fits perfectly in the space that doesn’t have any balloons in it. I can’t mount-inflate 160s, so I use this pump when I need to inflate a small balloon. It’ll inflate larger critters if my mouth is exhausted at the end of a long day.

Another is the T.Myers Ball Putter. This looks like a piece of wood with a nail in it, but it’s actually a piece of wood with a nail in it. You use this to put balls inside of balloons. Basically you stick the ball on the nail, shove the stick into the balloon, pull off the ball and pierce the skin of the balloon with the nail, and the ball falls into the balloon. Re-tie and twist your creature. Balls inside of balloons are very popular, because most folks have not seen balls inside of balloons, and wonder how they got in there. My friend Mr Kebbin drilled out the handle and attached a lanyard for me, which makes it easier to keep up with.

Speaking of stuff inside of balloons, the Magic Pipe is another tool. It’s a tube with a spike on the inside. Anything that fits in the pipe can be put in a balloon. Rings. Coins. Sugar. Water. Pushpins. I like making a clear dog with a sharp pushpin in the belly. Plus, this thing makes a really cool sound. You do need to be careful that someone doesn’t pop it – high velocity pushpins could be bad news. The magic pipe is even faster than the ball putter for putting stuff in the balloon, but unfortunately bouncy balls don’t work in the magic pipe.

When I’m doing a job, like the First Lutheran easter egg hunt or a Take Your Offspring To Your Place Of Toil Day, I’ll be wearing my T’Snippet around my neck. This thing is a Canadian milk pouch slicer. It’s awesome for taking off unwanted nozzles or knots, as well as cutting off the end when I need to deflate the rest of the balloon.

My final tool is one that’s not available, because it was custom-made by a friend of mine. Mr Kebbin took some industrial-grade solder and made a shepherd’s crook kind of thing. This tool is great for double-stuffing balloons, as well as doing a deep tulip or hook twist. It fits in the middle of the busking bag with the 160 Blaster.

The tools have pretty specific purposes, but it’s great to have them when you need them.


May 6, 2011

Blast from the past : grpof

Filed under: history,programming,skills — Mark Dalrymple @ 1:48 pm
Tags: , ,

Dino rific

I stumbled across this little tutorial I wrote back in the mists of time, probably around 1996 or 1997.  And it was based on a tutorial I wrote at Visix, probably in 1993 during one of our Optimization Parties.  It describes how to read the output of gprof, a profiling tool available on most unix systems.  It’s even still there on Mac OS X.  So you kids with your fancy Shark and Instruments, here’s what some of your elders used.

gprof is not a GNU tool, even though it has the leading “g”.  That “g” probably stands for “call Graph” profiler. You’ll need to check your system’s documentation (e.g. man gprof) for exact instructions on getting gprof to work, but usually it just involves compiling and linking with -pg, running your program, and doing gprof gmon.out > oopack.

Here’s a 300K sample of output from gprof on the Dec Alpha if you want to take a look at it. This particular report is from a run of AOLServer 2.2.1 which involved fetching index.html 53,623 times.  The links that follow go to anchors in that 300K sample.  What was I wanting to profile?  I wanted a gut check to make sure that life in the server was sane, and if there were any obvious bottlenecks that maybe I could address if I had the time.  The test was to fetch index.html over and over again.

There’s 4 parts to gprof output:

  • Built-in documentation: Short form of everything here, and more.
  • Call-graph: Each function, who called it, whom it called, and how many times said calling happened.
  • Flat profile How many times each function got called, the total times involved, sorted by time consumed.
  • Index: Cross-reference of function names and gprof identification numbers numbers.

When I first start looking at gprof output, I go to the flat profile section. The big time consumers are usually pretty obvious. You’ll notice that each function has a [number] after it. You can search on that number throughout the file to see who called that function and what functions that function calls. Emacs incremental search is really nice for bouncing around the file like this.

Here you can see that DString is a big time gobbler:

  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 17.7       3.72     3.72 13786208     0.00     0.00  Ns_DStringNAppend [8]
  6.1       5.00     1.28   107276     0.01     0.03  MakePath [10]
  2.9       5.60     0.60  1555972     0.00     0.00  Ns_DStringFree [35]
  2.7       6.18     0.58  1555965     0.00     0.00  Ns_DStringInit [36]
  2.3       6.67     0.49  1507858     0.00     0.00  ns_realloc [40]

Out of 21.05 seconds of total clock time, Ns_DStringNAppend consumed about 4 seconds, or about 18% of the time in and of itself. It was called 13 million times.

MakePath consumed one and a half seconds itself, and its children consumed three and a half seconds. At least one individual call to this consumed 0.01, and at least one individual call took a total of 0.03 seconds in MakePath and its children.

Handy tip – the function numbers in brackets are approximately sorted by time consumption, so a function with a [low number] will generally be more interesting than one with a [high number].

Now that you know that Ns_DStringNAppend is called a bunch of times, this could be a useful target for optimization, I’d look at its entry in the call graph section.

Before doing that, just for illustration, take a look at AllocateCa [33] since it has all of the interesting pieces of the call graph in a more compact size:

                0.04        0.18   53622/160866      Ns_CacheNewEntry [62]
                0.04        0.18   53622/160866      Ns_CacheDoStat [58]
                0.04        0.18   53622/160866      Ns_CacheLockURL [64]
[33]     3.0    0.11        0.53  160866         AllocateCa [33]
                0.16        0.17  160866/321890      Ns_DStringVarAppend [30]
                0.06        0.00  160866/1555972     Ns_DStringFree [35]
                0.06        0.00  160866/1555965     Ns_DStringInit [36]
                0.04        0.00  160866/1341534     Ns_LockMutex [43]
                0.03        0.00  160866/1341534     Ns_UnlockMutex [53]

The entries above AllocateCa [33] are the functions that call AllocateCa. The entries below that are the functions that AllocateCa calls. There are two numbers separated by a slash: the first number is the number of calls that the function has made, while the second number is the total number of invocations of that function.

In other words, for 160866/321890 Ns_DStringVarAppend [30], AllocateCa called Ns_DStringVarAppend 160866 times. Across all of AOLServer, Ns_DStringVarAppend was called 321890 times.

Similarly, for 53622/160866 Ns_CacheNewEntry [62], means that Ns_CacheNewEntry called AllocateCa 53622 times, and AllocateCa was called 160866 times total.

So, just by looking at this snippet, you know that the three Ns_Cache functions each call AllocateCa about once per serving of index.html, and that AllocateCa makes a single call to Ns_DStringVarAppend, Ns_DStringFree, etc… each time. What’s also interesting to note is that someone is calling Ns_DStringFree more than Ns_DStringInit. This may be (or may not) be a bug in AOLServer. You can go see Ns_DStringInit and Ns_DStringFree yourself and track down who the culprit is.

The floating “3.0” on the left is the percent of total time that the function consumed. The two columns of numbers are the amount of time (in seconds) that the function consumed itself (AllocateCa took 0.11 seconds of time total to run its own code) and the amount of time in the function’s children (0.53 seconds were spent in its children)

Getting back to real analysis of DStringNAppend, you can see that MakePath made 50% of the Ns_DStringNAppend calls. Since you know that there were 53623 fetches of index.html, that means that for each page, MakePath was called twice, and for each call to MakePath, Ns_DStringNAppend was called 64 times.

If one call to MakePath could be elided (since it’s getting called twice), or if fewer than 64 Ns_DStringNAppends could be done per call, we could see a performance boost.

Just browsing the gprof output can be an illuminating exercise. If you have a gut feeling that a particular function is a hot spot (say, Ns_LockMutex [43]), you can see the call graph for that function, see if it’s consuming lots of time, or if it’s being called a whole bunch.  Here it was called 1,341,534 times, or about 25 times per page serve. Maybe that’s high.  Maybe that’s right.  Sometimes a suspected culprit isn’t there, or you find a surprising time waster.

Because this sample gprof output was done on a Dec Alpha system, there was some suckage involved, such as no explicit time recorded for system calls. So we don’t know if, for example, select() blocked for a long time on each call.

(slightly edited and re-posted over at the miniblog)


May 5, 2011

How to Sight Read

Filed under: 20-minute,music,skills — Mark Dalrymple @ 10:56 am
Tags: , ,

Banned music

I’m a pretty good sight-reader, and I’ve written about that before. Put most (reasonable) pieces of music in front of me and I’ll be able to play them. Over the years I’ve built a system where I can get a feel for a piece before playing the first note. I’m usually in an ensemble situation, being in a band or orchestra or a quintet, where you have a little bit of time between getting your part and when you have to start playing.

I look for places where things change. Those places will be where you have the highest probability of messing up during playing. It’s easy to get lulled into nap-land with a long string of whole notes only to discover that you have a run of sixteenths after the page turn.

First, I glance down the part from beginning to end. I look for keys. What’s the opening key? Are there any key changes in the middle? Are the key changes related? Going from C to C minor is pretty easy for my brain to handle. Going from Db major to E major, not quite so easy. Does the key change often, or is it fairly stable?

Next I glance at the tempo markings. Is it something slow? I like slow. Slow makes easy to get the notes in. Look for tempo changes throughout. Does it go from Gravé to Presto?  That’ll probably be a tough spot.

Next up is the road map. It’s embarrassing to be the only one who takes a repeat. You might be lucky enough to have a group that reacts consistently when faced with repeats in a new piece, but this would be a good question to ask otherwise. A simple “are we taking repeats?” takes away some of the stress. Don’t forget in some situations you don’t take repeats on a D.C. Be aware of the rules different styles of music have. Also be aware that some pieces naturally have complicated road maps. Waltzes, minuets, and polkas tend to be the worst. Concert band marches tend to be the most predictable.

Look at the page turns. Is there evil lurking just over the fold? Jot down a little note or a big “V.S.” to know there’s no prep time after you turn the page. You may have been given a photocopied part that’s offset by one page, so the nice page turn rests the composer gave you are now in the wrong place, and your page turns happen in the middle of a phrase. You’ll need to figure out now how you’ll handle that. Can you play this phrase with one hand while turning with another? Can you mentally grab a couple of notes and turn before it’s time?

Next I look for big blobs of scary notes. What are they made of? Is it a bunch of scales and arpeggios? If so, I can handle that. I might pencil in the name of the scale as a reminder. If not, this will be the parts that I silent practice until it is time to start.

Dynamics! Most avocational musicians are terrible about dynamics, especially quiet dynamics. Look for the ff and pp passages so you know what part of the dynamic range of your instrument you are aiming for.

Look at the last measure, especially if it is a march. Most marches have a stinger at the end. But many do not.  You do not want to be the only one to play a stinger at the end of a march that doesn’t have one.

Finally, it’s good to be very aware of what’s going on around you. A section that looks scary might be a unison part everyone is playing. It’s OK if you grab a quick glance at the part of the player next to you and see if everyone is flurrying at the same time. The page turn that’s in the middle of a phrase might be a whole-band unison, in which case you can probably drop out and turn the page.

The worst thing you can do before sight-reading is to ignore the part, and just try playing it from top to bottom. A two minute glance through the part can show you where the hard parts are likely to be, and what parts are going to be easy. You can mentally recover during the easy parts so you can tackle the hard parts you know are coming up.

May 4, 2011

Logs is Logs

Filed under: 20-minute,skills — Mark Dalrymple @ 1:00 pm
Tags: , ,

B3K5149 pshop

Sometimes the simplest suggestions become the most powerful. Back in my first job, my VP of Engineering (Jeff Barr, now über-evangelist at Amazon) told me that he kept a simple text file of what he did over the course of a day. It’s just a quick activity log, without a lot of extra hooplah and gadgetry. I gave a try, and sure enough it’s proven to be a hugely powerful tool.

I have a file called “borklog.txt” that’s always open in my emacs session. This is the same emacs session I do all of my code editing and AMOSXP DocBook editing in, so it’s very quick to bop over to my log and jot down what I’m doing (C-X b bo-TAB RET). Keep adding little notes every day and you will build a detailed account of what you’ve done with your life. “Gee, December was a productivity nightmare” “oh that’s because I was doing an emergency backport for this programming book, and I played 37 concerts.”

The format is very simple. At the top of the file, I have any random must-do TO-DOs because I know I look at this file every day, and then there’s the daily logs. The date, a line separator, and unstructured notes about what I did.  Sometimes there’s asides when something was surprisingly hard or easy.

friday march 18, 2011
landed profile stuff.
tried to do auido routing stuff, but looks like the 
MPMusicPlayerController is too high level

update play/pause button in media breakout box at updateUI time, 
so it catches pausing by unplugging headphones.

AMSOXP : move shark to a supplement. Start Instruments research.
lldb crew says it's too soon to write about. bummer

thursday march 17, 2011
Got the profile layout looking good.

wednesday march 16, 2011
get the 15-second ease-in/out for zones. this is surprisingly hard
added Xs on profile to show where the cues actually are. can 
tap on the profile to toggle between ease-in or not.
Input gino's "Stand and Deliver" class into the ipad

These are some Actual Notes from my Actual Work Log. If I wanted to see where I was looking at lldb for AMOSXP, I use the emacs incremental search to look for ‘lldb’ or ‘AMOSXP’. I have what I’ve done when I construct my weekly progress reports. Back at Google when I did my quarterly OKR writeups, or my annual Perf Review, I frequently discovered stuff I had forgotten I had actually done. That let me pad my review (er, be more accurate). After four and a half years, my google-log.txt was over a megabyte of info. I could easily find when pushed a new release of a product to production, or when I was working on specific features for another team.

I usually transcribe meeting notes into my log. That way I can see what day a meeting happened and what was said. I can type fast enough I can usually label who said what. This is very handy for conference calls, especially after the fact. “Uh, I remember you saying that we were not going to be doing the snoozlebarf feature now, instead that’ll be folded into the next version of Google Desktop.”

When I was a contractor and billing hourly, I’d add the start and stop times for work I did. At the end of the day I’d compute my hours-per-billable-bucket, and at the end of the week, I’d accumulate those values. Kind of manual, but it never took more than five minutes if I kept on top of it.

So why not buy or write a fancy notes taking app? What I have works for me, is always available since I’m always inside of emacs, or just a window and a couple of keystrokes away. Text files are easy to back up. I can put my notes file up on my Slice and keep an emacs running in screen there, making it easy to get to from any machine. No need to worry about safely syncing a proprietary file format for an app. It’s easy to sync text.

So if you’re longing for a quick and dirty, yet effective method for keeping tabs on your life, I recommend the simple tools: a text file and your favorite decent editor.


April 24, 2011

Marking up Musicals

Filed under: 20-minute,music,skills — Mark Dalrymple @ 8:35 pm
Tags: , ,

The sound of music

I like to play musicals. There’s just something fun about learning a show, performing it a bunch of times in quick succession, and then being done with it. I usually play high school musicals, sometimes in a pit with students, or sometimes just a bunch of Old Folks. The shows chosen in high school are usually popular and fun, and frequently challenging. West Side Story kicked my butt the first time I played it, and Singing in the Rain has brutal brass parts. “You mean I only have two beats to yank the mute out of my horn?” Plus you get to meet and bond with a wide spectrum of other musicians. Nothing like 20 minutes of scene-change music to give you a topic of conversation later.

I’ve played 29 shows over the last 25 years or so. In that time, I’ve developed a method for marking my book that makes end-of-show time easier. Ideally you erase your book when you’re done. Take out any cuts, markings, cheats, or changed vocal cues so that the next user of your book doesn’t have to wade through a lot of junk. Supposedly the publisher will fine you if you leave your book marked up, but that never seems to happen given the number of pre-scribbled books I’ve encountered. Still, I don’t like leaving a mess for others to clean up, whether it’s the next dude with the Reed 4 book or a high schooler who’s being forced to erase my book by their band director.

Every show is going to have cuts, that is, sections of songs or dances that are removed. Maybe the song is too long. Maybe the music is too hard. Maybe it’s in the wrong key for the singer. You can always spot a first timer when they make huge pencil markings on the music to indicate a cut. “CUT TO 87” with a huge arrow scribbling over the intervening measures.

There are two problems with this technique: you have to erase a whole hell of a lot more. Also, cuts change. If the cut is made to measure 45 instead of 87, you have to erase 43 bars of scribbles. If the cut is removed (perhaps Little Johnny finally learned to mambo), you’re faced with a lot of erasing.

I use Post-It® notes, in particular the skinny brightly-colored flag-like “page marker” ones. They’re the perfect size for covering up part of a staff of music, say to change the count of a rest, or to block out a part that’s covered elsewhere in the group but is confusing you for a solo entrance. The bright colors make it easy to spot during performance.

The big thing is that they can be picked up and moved easily. Cut’s been changed to bar 43? Just pick up the flag that has the destination arrow on it and put it onto bar 43. The vamp is going to be repeated 8 times? Put a little “8x” on a note. The vamp is out? Just take off the note. The repeat is no good? Tear two skinny notes and hide the repeat bars.

You can make the flags stick out of your book too, making “flip back three pages for the reprise” situations easy. Just put a couple of flags on the page you need to flip back to and have them peek out the side. Easy to grab and turn. I also use the full-sized notes to write “SUCKS”, and put it in my part with “SUCKS” sticking out the top. I can see exactly where I clobbered an entrance or a solo the night before, and can look at it before the next show.

You can also get rolls of Post-It tape. I use that if I re-write a chunk of music and want to attach it to the book. Regular scotch tape will ruin the paper, but Post-It tape lets me easily take it off once the show’s done.

I used to use a fancy system with different colors for different actions – green for cuts, purple for vamps, red for repeats, but that was too complicated. If I see “Cut to 45”, I know what that means. So the colors are just a nice visual side effect.

Next time you play a show, give the Post-It flags a try. I’m all for less erasing and having a flexible system to adapt during changes in the show, which you know will happen.


Getting Started with Animal Balloons

Filed under: 20-minute,balloons,skills — Mark Dalrymple @ 3:59 am
Tags: , ,

Poodle of light

Today I did my annual “make balloon animals at the First Lutheran Easter Egg Hunt”, which of course was fun. After posting a quick “did this. I’m tired. Nap time” status to facebook I got a message from one of my good friends from high school: “You HAVE to teach me how to do balloon animals. How did you get started doing this? Do you have an air pump? Where do you get your supplies?”

Back in the mists of time (1985 I think) I had picked up one of the Aaron Hsu-Flanders books from a local bookstore. It had 20 balloons, a little “ear squirter” pump that took at least 20 squeezes to inflate one balloon, and a Garfield-sized book of grainy black and white photos for making various creatures, starting with a dog and ending with a teddy bear. There were only about ten critters you could make from the book, but I was hooked. I found a place in town that sold the higher-quality balloons. Oddly enough, it was an oxygen supplier. I learned to mouth-inflate because I got very tired of the squeezy pump that came with the book. Since then I have acquired books, VHS tapes, DVDs, attended conferences, and generally had a good time making my little inflatable rubber friends. There are few hobbies that can elicit expressions of pure joy like this:


I get all my stuff from T.Myers Magic, at Good gear, good prices, good people. Check out TJam on the Road for their road show. If one comes close to you, go to it!

Avoid the kits you see in bookstores or from Wal-Mart. The balloons tend to be terrible and the instruction books only slightly less so. T.Myers has a starter kit of a pump, a basic intro book, and 100 “Qualatex 260Q” balloons which you should try first. 260 is the technical term for the common animal balloon, and Qualatex is the main brand. These babies are silky smooth and feel like professional tools, vs the junk you get at big box stores. These balloons can withstand a massive amount of abuse before going BOOM.

Even though I mouth inflate, I recommend starting with a good hand pump like the 260 Blaster that comes with the T.Myers intro kit. Two or three pumps will get you a full balloon. Otherwise you’ll incite carpal tunnel with the lame pumps. You can also get floor pumps that’ll inflate a balloon in one gesture, as well as electric dealies. Mouth-inflating is physically demanding and could lead to mouth or eye injuries. My years as a bass trombone player have given me chops of steel, so be smart and be careful.

Once you use up the 100 balloons in the starter kit and decide you’re having fun, the next thing is to acquire is Captain Visual’s Big Book of Balloon Art. This is an incredible compendium of single-balloon figures, as well as some multiple-balloon creations like a giant octopus, a little red wagon, and a number of cartoon characters. I find the diagrams to be very easy to read, although some friends found them less easy to follow. You can build quite a repertoire from this book.

If you’re into videos, the ones by David Bartlett, a.k.a. Mister Raiinbow, are exceptionally good. Twisted: A Balloonamentary is a documentary of some characters in the balloon twister community. You’ll laugh, cry, and have your faith in humanity restored. I’ve met, and learned at the feet of, about half the folks in this film.

If you’re into GodStuff, Ralph Dewey has a huge line of books for “Gospel Twisting.” John Holmes has an incredible “Christ on the Cross” figure as well. Even if you’re not into that kind of stuff, you can learn a huge amount of technique from Ralph and John.

BalloonHQ is the place for balloon twister and balloon decorator (a.k.a. “stacker”) discussion, and the site has a huge Guide to Ballooning. You can get lost in there for days on end.

Balloon twisting can be a slippery slope. Soon you’ll be getting more books and DVDs. Then getting balloons in single colors so you always have the perfect shade of blue available. There are special bags and aprons you can get for carrying them around. Smiley faces. Alien Faces. 260s. 160s. 350s. 321Bs, and on and on and on. Don’t say I didn’t warn you!

If you decide to start making balloons for other people, like at church, the flea market, Take Your Kid To Work Day, be sure to join the World Clown Association and get the Entertainer’s liability insurance. You don’t want to get financially wiped out if some kid chomps a poodle and gets injured or chokes to death.

If you take my Advanced Mac OS X Bootcamp from the Big Nerd Ranch, one of our mid-week activities is learning about balloons, as well as making your own. It has no relationship at all to programming, but a nice breather during an intense week of teaching and learning.

D31 2985


April 22, 2011

More Air!

Filed under: 20-minute,bassoon,Mark Norman,music,skills — Mark Dalrymple @ 6:35 pm
Tags: , , , ,

Halloween tree

Another one of Mark Norman’s favorite phrases back when I played in his bands was “More Air!”. Playing a wind or brass instrument requires air. Many amateur musicians don’t Play Out enough. This can be linked back to not using enough air. Hence, When in Doubt Playing Out requires More Air!

Mark used to work with the Music and Arts chain of music stores in Northern Virginia. For whatever insane reason, they let him make a radio commercial. It of course featured tuba, since Mark is a tuba player. The commercial was a “lesson” with Dr. Adidibandyopatai (or something like that), with a hilariously terrible Indian accent, repeating “Morrre Aiirrrrr!  Morrre Aiirrrrr!” to his struggling tuba student. Over this tableaux Mr. Norman intoned the availability of private lessons at Music and Arts. It was probably the most surreal commercial on the local radio at the time.

To this day, Sharlotte and I still say “Morrre Aiirrrrr!” to each other.

I myself have had a More Air moment. I’ve always had pretty good technique on trombone and bassoon, but kind of a fuzzy, weak sound. I had one or two lessons with Mark, and we did the usual exercises of using wind power to keep a piece of paper pinned to the wall as long as possible, and blowing into weird torture devices to suspend a ping pong ball in a column of air. But the advice of, “dude, just use more air. Fill those lungs and blow” is what did it for me.

Pushing More Air through your horn leads to other improvements in your playing. You need to collect a large lungful of air in the first place (unless you’re an oboe player, of course). You can’t collect a good quantity of air if your posture is bad. Sitting up straight, on the edge of your chair lets you inhale more deeply. Poof. More Air!

You also have to learn more control over your instrument. Sure you could force a lungful of air through your trombone at mach 3, but it’ll last five seconds and sound terrible. You need to learn control over your air. By making your More Air last longer, you’ll get better tone, a better dynamic range, plus be able to sustain longer phrases. More Air in the lungs let you keep a constant column of air going into your horn for a longer period of time. A consistent air column means you have less work to and fewer adjustments to make from moment to moment.

Maybe you’ll need a different reed or mouthpiece to support putting More Air through your horn. That’s one reason why I like the David Brundage bassoon reeds: you can push a huge amount of air through them before the sound starts distorting. If you have to fill a church sanctuary with sound during a solo piece, you need to have the volume and projection that come from moving More Air through the horn.

It’s amazing, but that two word piece of advice was the start of a chain reaction that has drastically improved my playing over the 15-some-odd years since I first heard it.


Certifications as a Learning Tool

Filed under: 20-minute,programming,skills — Mark Dalrymple @ 1:18 am
Tags: , ,

Shoktar devourer of worlds

Matt Kloskowski had a posting on his Lightroom Killer Tips blog about LightRoom 3 ACE (Adobe Certified Expert) certification test prep materials becoming available. Then there were a couple of paragraphs defending the whole certification process: basically, if you’re looking for a career that is based on Lightroom or Photoshop, having the ACE sticker on your resumé is a good thing. It shows potential employers that you have a certain base-level of knowledge, and the sitck-withitedness to see the ACE through to its completion.

Possessing a certification doesn’t mean you’re good, of course. I’ve worked with Certified Oracle DBAs that were freaking amazing. (xux, I’m looking at you), and others that barely knew how to analyze a table. Both were certified Oracle DBAs. Both had passed the tests. But quite a difference in knowledge, ability, and work ethic.

That being said, I kind of like certification tests. Even if you don’t need the certification and don’t intend on taking the tests, they certification test contents provide a curriculum you can use to learn stuff.

I rarely admit it, but I have an Oracle 8i DBA certification. I took the five tests, passed them on the first try, and got my little certificate and card. Did I want to be a DBA? Hell no. Good DBAs live a high-stress life keeping twitchy and cranky systems up and running. But I wanted to be a better developer. I like being self-sufficient. If I could set up my own Oracle instance I could do local experiments and not rely on the remote systems. If I knew how all the different moving parts interact I can design the physical layout of my schemas so that disk I/O is somewhat optimized. If I knew how the profiling tools work I can rapidly tune queries, or at least figure out what tradeoffs I need to make to achieve adequate performance. If I knew how backups worked I would know the difference between a good backup scheme and one that’ll bite us in the ass if the DB turns toes-up. I could also restore to a test cluster to run tests against “production data” that wouldn’t actually affect the production site.

Oracle’s exams were broken into five tests. I used Oracle’s training materials as well as the “Exam Cram” series of books to steep myself in the material for each test. I could have skipped taking the test of course, but the company was willing to pay the $100 or so for each one, so it was a no-brainer to take. That little certificate might have come in handy later on. (It didn’t)

After my Oracle work, I was needing to learn Java quickly for a contracting gig. At everyone’s recommendation I tried working through Bruce Eckel’s introductary book Thinking in Java. Unfortunately, it’s what I call a “loops are cool!” book. As a developer with fifteen years of experience under my belt, I just couldn’t fathom slogging through beginner programmer material.

Then I found the Java2 Exam Cram books. I really should have looked for those first. They were geared, of course, to giving you the info to pass Sun’s Java certification tests. This was perfect for an experienced developer. The books were a distillation of all that was different with Java from other languages, as well as a discussion of any truly peculiar portions of the language. A week of reading a couple of these books prepared me for kicking butt on-site.

So, looping back to Lightroom, will I take the Lightroom 3 ACE test? Nope. But I’ll probably pick up some of the educational materials so I can find out more about the software product I use after every photo shoot I do. I’ve already spent a couple hundred dollars on software, and hundreds of hours of my life learning bits and pieces of it, and I know I’ve really only scratched the surface of what it can do. So I believe in the long run it’ll be money well spent.


April 19, 2011

Learning iPhone Programming

Filed under: 20-minute,cocoaheads,programming,skills — Mark Dalrymple @ 5:15 pm
Tags: , , ,


D31 2840 1

This last weekend I taught an Objective-C and iOS bootcamp to a group of students and faculty at WVU down in Morgantown WV. They have a cool “AppLaunch” project going on, to inspire students to write real applications on iDevices and encourage an entrepreneurial spirit, and they invited me down to kick off the technical portion.

A common question I got beforehand is “what’s the best way to get up to speed on this stuff?” That’s kind of like asking “what’s the best kind of pizza”, it all depends on where you’re coming from, where you want to go, and how fast.

If money is no object, take a Big Nerd Ranch class. In addition to teaching there, I have taken a number of Ranch classes from a bunch of different instructors, and they are all top-notch. The Ranch has a way of doing things that ends up with a really high quality product, enjoyable to both instructor and student. This will cost you a couple thousand dollars and take a week of your life, but you will be well on your way to iPhone programming studliness. Check out AnneKate Halsall’s Taming the Wild Dogcow tumblog for impressions and ah-has during the course of a class.

There are a number of video courses available. Stanford CS 193P iPhone Application Development is online. I had come across another one that was really awesome, but I’ve lost the link :-( . I’ll update this posting if I come across it.

The next level down is books. I love books. I learned to program from books and magazines. Old folks may remember back in the day when computer magazines had pages of BASIC program listings. Keying those in and debugging the inevitable typos is how I learned to program. There are two books I really like for iOS programming: the Apress Beginning iPhone 4 Development: Exploring the iOS SDK by Dave Mark, Jack Nutting, and Jeff LaMarche; and the Big Nerd Ranch iPhone Programming, the Big Nerd Ranch Guide by Aaron Hillegass and Joe Conway. I recommend people read both of them. If one book glosses over a topic the other covers in depth. Disclaimer: I’ve been the technical reviewer for the Apress Beginning iPhone books since the first edition.

What order to read them? If you’re strapped for time, read the Ranch one first. It’s short and to the point. Dedicate a weekend or a couple of evenings and type in everything. Then start working through the Apress book at your leisure.

If you’ve got more time, or you’re working over a longer period of time with other people, such as the Pittsburgh CocoaHeads Learn iPhone project, use the Apress book. It’s longer and wordier (380 vs 630 pages), but goes into topics in more detail. Some of the code is repetitious so you might not want to type in everything.

You’ll want some introductory books if you’ve never programmed before. Stephen Kochan’s Objective-C 2.0 programming Language good. I’m partial to the Apress Learn C on the Mac by Dave Mark, followed by Learn Objective-C on the Mac the latter written by me and my hero Scott Knaster. This pair was designed to take you from “loops are cool!” up through Categories, Properties, and Predicates. If you already know C you can go straight into Learn Objective-C. If you already know how to program in something else and just want a quick brush-up on what’s peculiar to C, I’ve broken out the first two chapters of the first edition of ore Mac OS X Programming into a C Refresher. Learn Objective-C has an appendix on what weirdnesses to expect if you’re coming from other languages like VB or Java. I know I get frustrated when I have to wade through “loops are cool!” when picking up a new language, so it’s nice having different places you can catch the train.

Finally, take a look around your community. You may have an active CocoaHeads or an NSCoderNight chapter, or perhaps an iPhone programming MeetUp. If there’s not one now, start one! There’s nothing like having living breathing people to ask questions of, and to generally hang around with. You might discover one-off classes like what I did at WVU, or longer-term learning projects like what we’re doing at our local CocoaHeads.

(slightly edited and re-posted over at the miniblog)

Next Page »

Blog at