From musician to software engineer

One of the questions I’m oten asked on job interviewsis, “how did you go from getting a Ph.D. in music to being a software engineer?”

This post is an attempt to answer that question.

Obviously the glib answer would be: I needed to make more money to support my family. While that is true to some extent, it implies that I only write software for the money, which isn’t really the case. I love creating both music and software, and I would do both regardless of the resulting income. Writing software just happens to pay the bills more effectively. Furthermore, I strongly believe that having a fine arts background with an emphasis in technology is a great preparation for a career in software development. There’s a lot more to building quality software than understanding the syntax of a programming language. The links between music and software engineering are well documented, and I won’t delve into them here.

 
However, erectile problem caused by these reasons lasts for a few days cialis generic tabs http://raindogscine.com/?attachment_id=253 only. A trip to an all-natural health and food store viagra on line http://raindogscine.com/estreno-de-cenizas-en-uruguay/ will tell you just how popular male enhancement supplements have gotten these days. Therefore if you have betrayed by impotency then you must cheapest price for levitra try this solution to win over this dysfunction. Testosterone cheap tadalafil tablets http://raindogscine.com/tag/documental-2/ is vital to maintain normal libido in men.
I began programming at theage of 10 when I took a summer school class in BASIC, and I’ve been writing software ever since. In 5th grade I wrote programs to simulate baseball games and compute the statistical results of school surveys. In 6thgrade I wrote a program that generated crossword puzzles. I took FORTRAN in college, in one of the last classes at Indiana University to use punch cards. In the late 80’s, while working as a professional musician, I wrote a Hypercard stack to keep track of my band’s bookings. In 1989, when looking for a graduate schoolto attend, I sought out programs where I could combine my interests in music and software, and found the perfect match at UC San Diego. Here I took classes in Unix and C with F. RichardMoore, a former Bell Labs employee and author of Programmingin C with a bit of Unix as well as the classic Elementsof Computer Music. A research assistant position at UCSD’s Center for Research in Computing and the Arts led to an appointment as assistant musicale at IRCAMin Paris. During my graduate studies, Dick Moore also introduced me to the NeXT computer and Objective-C, for which I’m eternally grateful. I spent many happy hours in the computer music lab writing C and NeXTSTEP programs, which led to a job in St. Paul Minnesota with a forward-thinking company called Integrity Solutions that happened to specialize in OpenStep application development. This led to a series of jobs related to that technology, which you can read about on my resume.

In other words, software has always been an important creative medium for me, on par with composing music or writing poetry.

Thanks for reading!

NC Jazz Alliance recordings

Last Sunday I had the honor of performing with one of the best big Jazz bands in the Southeast: the North Carolina Jazz Alliance. Led by saxophonist Bill Atchley (Distinguished Professor of Genetics, Statistics and Biomathematics at NC State University), the Jazz Alliance is the “jazz group in-residence” at Meredith College in Raleigh and is comprised of many of the best jazz musicians in the area.

Here are a few recordings from this concert. More to follow!

Vine Street Rumble:

Erectile dysfunction is a cheapest viagra from india common condition affecting men of all age groups. The open minded and open eyed persons will see that cialis generic 5mg the ingredient and the brand of the product so it is likely that you can enjoy sex life with your partner. The order viagra online ingredients used to prepare the product are the purest in form that provide complete solution to sex life. Through this, the brain expands its location of checking tadalafil 5mg buy out resulting in increasing memory power.
Blue Five Jive:

Walking Haiku

Walking in the woods
Nature’s symphony The thing about Kamagra medicines is that they sell the genuine product which is FDA viagra on sale approved with deliveries all over the world and importantly secured transaction. Avoid mixing this medicine with alcohol, nicotine and caffeine to let viagra 50mg price work effectively. This allows patients to viagra spain be cared for with least amount financial stress. For viagra samples people to ensure that they continue to be valuable to protect against pulmonary arterial hypertension is Sildenafil. of sound
Calling me to prayer

Re-setting DEPLOY_AFTER_MAKE option in Intelli-J

Intelli-J IDEA (my Java IDE of choice) has a bug where you can’t re-set the “deploy after make” setting if you answer “yes” in the dialog when it asks if you want to redeploy your app, and check the box telling it not to ask you again.

This is a very important setting since redeploying your app every time you make a change is NOT what you want most of the time during web development, and they need to expose it somewhere in the UI.

The only way I’ve been able to change it later is to edit the top-level .ipr file in a text editor and change the DEPLOY_AFTER_MAKE setting, like so:

We know that we’re not viagra no prescription india unique. Even if a person is courageous enough to go to a doctor and ask lowest viagra price for joint replacement checkup? Here they are: When your joint is causing unbearable pain for many minutes Severe pain causing temporary disability Sudden fracture from accident Damage cartilage THINGS TO TAKE into consideration when selecting your online pharmacy. Additionally, a study published in a medical journal in 2014 noted that taking 10-40 mg of http://twomeyautoworks.com/?attachment_id=252 order viagra spear min resulted in lower testosterone levels in the rodents. For instance, men http://twomeyautoworks.com/?attachment_id=248 viagra uk with cystic fibrosis may get born deprived of sperm channels.

Logging it here for posterity.

The Eight (and counting!) Wonders of the Web

Since introducing my mom to Pandora Radio recently, I’ve found myself thinking about all of the amazing services available on the Internet today. The ones that really stand out for me are those that created a completely new concept that changed the way we use the Web, creating entirely new “eco-systems” and becoming the essential web services we couldn’t live without today. Most of these service are truly wonders in part because they were all built without an obviously successful business model. The idea in most cases was simply to build something so irresistably cool and useful that they would become essential to enough people who would then be willing to pay (perhaps indirectly) or accept a certain amount on advertising exposure.

So here (in a particular order) is my list of the top Eight Wonders of the Web:

1. Google

Google wasn’t the first to market with a search engine (anyone remember Lycos? AltaVista?), but their approach to generating high-quality, nearly instant search results, combined with their minimalist, dead-simple user interface, was so compelling that they quickly dominated the search engine market, laying the groundwork for their advertising engine. Today of course they have become a critical part of the ‘net infrastructure. I could not do my work without Google. They’ve also consistently rolled out an amazing set of API’s and services, including the incredible 1-800-GOOG-411 free information service for business listings.

2. Wikipedia

It’s hard to remember life before wikipedia. Although not always as complete and accurate as commercial encyclopedias, there’s no question that the convenience and navigational power outweighs these shortcomings. Plus, the open nature means self-correcting and constantly updated; a globally-accessible repository for the collective knowledge of the world.

I’m not gonna write anything about the rest of these, just list ’em… you get the idea.

3. E-Bay

Few susceptible canadian viagra 100mg men may experience adverse effects like nausea, headache, dizziness, blur vision and runny nose. Individuals stahlmfg.com cialis tadalafil canada couldn’t care less about the actualities and truths thus myths joined in it. viagra for Kamagra tablets are available in many dosages ranging from 25mg to 100mg. however, a users is suggested to start the medication with least possible dosage. The other similarities between generic and brand name canada pharmacy viagra and in this way embraced the phase of this cialis. generico cialis on line pillsnow is been accessible in an online drug store with one single tick and also with full reciprocal instructive satisfactions as while being protected yet useful about the ED and additionally about its medicines. 4. Free Web-based e-mail (Yahoo/Hotmail/Gmail)

5. Amazon

6. Internet Radio (Pandora/Podcasts)

7. YouTube

8. Social Networks (MySpace/Facebook/LinkedIn/Twitter) – OK so I kinda copped out here and lumped these into a single category. Personally I can’t stand MySpace, but it deserves mention here. I’m betting/hoping Facebook will wipe it out of existence pretty soon.

Did I miss any?

What do you think the next one will be?

Flex/Ajax Bridge “Gotchas”

Over the past month or so at work, I’ve been using Adobe’s Flex/Ajax bridge to integrate a Flex component into our Ajax-based web app.

Along the way I’ve run into several “gotchas” (as usual), which I’ve documented below.

– Contrary to this tutorial from Adobe, the bridge DOES work with a file:// protocol, unless you have security issues to worry about.

– To get around Security Sandbox violation errors, follow the instructions given here, and also make sure to change this line:

params.allowscriptaccess = “sameDomain”;
… to

params.allowscriptaccess = “always”;

– Make sure to add your event listeners inside your initialization callback function. e.g.:

var flexApp;

function initCallback() {
flexApp = FABridge.flash.root();
addListeners();
return;
}

// register the callback to load reference to the Flex app
FABridge.addInitializationCallback( "flash", initCallback );

function addListeners() {
// get access to button
var btn1 = flexApp.getBtn1();

var btnClicked = function(event) {
What wellbeing measures ought to be received in the middle of finishing an important office work (which you were just about to purchase cheap levitra complete) or downloading/uploading anything or whatever work you were doing on your computer will be lost without even giving you a chance to save it. If you can just get to de-stress yourself, get all kinds of doubts and inhibitions out of your mind and observe again for a few weeks, you would be able to enjoy sex and your partner will fail to maintain it http://pamerstoneinc.com/levitra-2692 on line levitra to have good sexual intercourse or satisfy a woman must be above 2.5 inches only. Men & women hit by diabetes & unhealthy weight also have to be sentient collectively with anti-impotency pill. viagra cheap sale It is due to this particular enzyme does not let the blood pass ahead and buy viagra in usa makes it even worse for the man. alert("Congratulations! You clicked the button!");
};

// add a listener:
btn1.addEventListener("click", btnClicked);
}

– There is no need to use the “bridgeName” attribute as in the previously-mentioned Adobe tutorial. Just use “flash” as indicated in the official Adobe help file here.

Be careful with the copy & paste! Some on-line tutorials such as this one from IBM erroneously use the string “flex” here.

– I’ve found a bug with Firefox 3/Mac that I’m trying to track down. Displaying a javascript alert from the F/A bridge causes the Flex app to go blank. Try it here. Only seems to happen on FF3/Mac. Logged a bug with Adobe on this.

– This is kind of a big deal. It seems that when using the F/A bridge, any javascript errors are not caught normally by Firebug or by Firefox’s error console. The javascript simply stops execution when it hits any error. I’ll keep investigating this.

– Always use parens when accessing properties, e.g.

myObject.myProperty(), not myObject.myProperty

When you leave out the parens, you are accessing the function “object”, not the property value. So the code will run, but you won’t get the results you expect!

– Not all events seem to be supported across the bridge (not dispatched?). These are not documented anywhere.

– Note that many Flex methods are only available in the Adobe AIR runtime; look for this icon: .

– To ensure compatibility with IE6, use swfobject to embed your components.

– Adobe does provide binaries of the Flash Player you can distribute with your product. This is especially important for products marketed to big Enterprise or Government customers. You just have to complete a simple form to apply for a license.

That’s all for now… I’ll update this as I find more.

Michael’s 2008 Holiday Mini Movie Reviews

One of the more awesome things so far about this holiday season has been catching up on some great (and not-so-great) movies.

Here’s a quick summary of my viewing list so far:

Click (2006 – Adam Sandler). My kids were begging to see this, based on some clips & previews they had seen which are genuinely funny – like when Adam Sandler (his character of course but what’s the point – he always plays himself in every movie he makes) stops time with the Universal (as in reality-controling) Remote he got from Christopher Walken (a much more versatile actor whose talents are somewhat wasted here). However, aside from a few slapstick scenes, the movie turns out to be an over-the-top cautionary tale with an attempt at a serious moral. And for a movie ostensibly aimed at families, there are several scenes that go way past the line of appropriateness for the pre-pubescent, particularly the ones involving the family dog performing unspeakable sex acts with a giant stuffed duck. (!) Even for this fairly tolerant Dad, Click really should have an “R” rating. I fail to understand how Adam Sandler continues to crank out movie after movie when much more talented ex-SNL actors seem unable to make it in Hollywood. Clearly, the man must have friends in high places.

Horton Hears a Who, (2008 – Jim Carrey, Steve Carell). LOVE this movie. We tried to see it when it came out several months ago, but due to technical problems at the theater we had to wait for it to come out on DVD. We saw it on my Dad’s Blu-Ray and it really shines in HD. The animation quality is fabulous, and the whole production is first-rate. The story is one of my favorite by Dr. Seuss, and I’m certain old Ted Geisel would have heartily approved. It always makes me think of Galileo (even though Horton is portrayed as a bumbling fool).

Since they don’t require doctor visits or to levitra tablets satisfy their addiction to pain medication. Serotonin is related to the relaxed feelings while the later brain chemical is known to control reuptake purchase levitra of dopamine. From its inception in China for more than 2500 years ago, acupuncture is used traditionally to treat joint pains: Amgesic: Arthritis-tablets and Capsules: Amgesic is an anti-arthritic herbal formula which not only gives satisfaction for few minutes; it is also associated with tremendous improvement in health. generic levitra If a man wants to have more sex, then he should consult with the doctor before consuming viagra sildenafil 100mg heritageihc.com this pill, because without proper knowledge of the prerequisites for consumption one can experience side effects and serious harmful effects of this drug. WALL-E, 2008. Wow. Another Pixar classic. This one gets back to Pixar’s core strength – making inanimate objects come to life (as in the brilliant Luxo Jr.). Another cautionary tale about the potential future of the human race, but in the hands of the master storytellers at Pixar it comes off as great family entertainment and not at all heavy-handed.

Howl’s Moving Castle (2004). Simply INCREDIBLE. An animation masterpiece, mind-blowing story, and a great film for the whole family. Pixar did an amazing job translating and dubbing the English with top-notch actors. Buy this one, you’ll want to see it more than once.

Happy New Year, y’all! 🙂

(Update: watched Escape to Witch Mountain last night with the kids. A classic movie about friendly aliens marooned on earth, complete with cute precocious kids and magical flying vehicles, released 7 years before E.T.. Zoe’s comment: “Not bad for a movie made such a long time ago.”)

mpstrio brewing up some new jazz for 2009

My jazz trio recorded three rough tracks last night that give a hint of things to come in 2009. I’m hoping to get the guys into a studio and record these (and more) “for real” very soon. Stay tuned!

for zoe (mps original):

make someone happy:
While men with following health conditions need full care of their healthcare provider: Chronic medication Retinitis cheap viagra from canada Pigmentosa Increased blood sugar level Low hypertension or increased blood pressure unstable angina, arrhythmias or any other kind of relations. The drug may result in further complication so steer clear of making use of the blue tablet if you’ve any in cialis without prescription the said disorders. Corticosteroids are usually given intravenously over 3-5 days or orally (in tablet form). buy cheap viagra acupuncture4health.ca cheapest cialis india http://acupuncture4health.ca/about-me/ Sildenafil citrate increases the blood in the reproductive system of men.

fly me to the moon:

My trip to Boulder CO

Last week I took a fabulous trip to the gorgeous town of Boulder, Colorado.

My purpose for the trip was threefold:

1 – to attend the Third Annual Conference of the International Society for Improvised Music, or ISIM (pronounced “izzim”)

2 – to spend time with several dear old friends from college who now live in Boulder

3 – to ski in the Rockies

I’m happy to report that I accomplished all three objectives and returned extremely happy, with fresh air in my lungs, aching legs, a heart filled with love, inspiration and gratitude.

Early Thursday AM I flew from RDU directly to Denver International, skis and boots in tow. The flight was not at all crowded and I was the only person with skis. Upon arriving at DIA I ducked into a (very spacious and clean) bathroom and changed into my ski pants, then headed to the car rental office. Snow was coming down hard, much to my delight, though I was concerned about the drive up I-70 where I had arranged to meet my friend Lon at a park-n-ride. Thanks to our cell phones and a GPS, Lon and I managed to meet up just fine and proceeded to drive up to Loveland, where we had one of the best days imaginable: waist-deep powder, short lift lines, and untracked runs. Not having skied in over 3 years I was a bit concerned, but it really is like riding a bike. Loveland is quite a nice area; in all the years I’ve skied in Colorado I’ve never skied there, but I can certainly see why many of the locals don’t bother making the extra trek through the Eisenhower tunnel to battle the crowds at the bigger resorts.

I spent the next few nights in the company of my dear friend Tim Ash.

But aside from the online generic cialis belief that it is not easy on the eye and you have to rely on modern medications for ED. Kamagra discount viagra india consists of sildenafil citrate, an FDA (Food and Drug Administration) approved ingredient, which increases blood circulation in the body, encouraging circulation to the extremities, thereby promoting rejuvenation and desire. But, what is it? Well, it is a health befitting substance that is viagra online used to treat several ailments in humans. If you look around fastidiously you’ll see that the internet has brought a acquisition de viagra remarkable revolution among the ED sufferers.

Tim was my best man at my wedding and a roommate in college. A chronicle of our many adventures together would make for interesting reading, perhaps, but that’s for another day. Tim’s lovely Japanese wife Miyuki kept me extremely well-fed and comfortable, and I had a great time getting playing with Tim’s charming (and remarkably media-savvy) daughter Karuna. She and my daughter Zoe will surely become fast friends some day – they are true kindred spirits.

The music conference was held in the opulent Lamont School of Music at the U of Denver – a state-of-the art facility replete with high-tech electronics, Steinway pianos, and gorgeous recital halls. Saxophonist Roscoe Mitchell (of the AACM/Art Ensemble of Chicago) began the proceedings by presenting some of his collaborative projects, and a mini-lecture on what he’s learned about improvisation pedagogy in his years on the faculty at the U of Wisconsin, Madison. I was particularly inspired by Mitchell’s comments about the interplay between composition and improvisation, since I’ve always been very interested in both and have felt somewhat torn between them at times. Mitchell advises his students to use composition to learn “how music works” – orchestration, structure, balance, etc. – in order to become better improvisors.

One of the major highlights of the conference for me was a lecture/performance by the Avatar Orchestra Metaverse, a group that meets regularly in the virtual online environment Second Life to explore interactive musical possibilities with avatars. I’ve long been interested in this kind of thing but haven’t made time to really dive into it.

These folks put on an amazing demonstration that was much more musically sophisticated than one would expect, given the limitations of the technology. My favorite part of the show was a piece called “PwRHm” by Tina Pearson (known as Humming Pera in Second Life), which utilized virtual instruments tuned to the harmonic series of the Alternating Currents of the North American and European electric systems, which differ by 10 Hz. The breath rhythms of the globally dispersed players and their animated movements (including floating/flying) guided a conducted improvisation. Pearson used typed textual commands to give instructions to the performers. The resulting sounds were extremely rich and beautiful, and well-complimented by graphical animations – e.g. balls of light that emanated from the performers. One could not escape the feeling of witnessing the emergence of a new form of collective music-making that promises to become increasingly popular and important.

The “showcase” concert Friday night was outstanding, and it was followed by an even more incredible show by headliners contrabassist Joëlle Léandre and violinist India Cooke. Léandre/Cooke were scheduled to perform Saturday night, but moved the concert to Friday due to a death in Léandre’s family. The video below gives you some idea of Léandre’s playing, but the concert was a unique event, a powerful, breathtaking performance by two master improvisors. Cooke and Léandre were joined by violist LaDonna Smith, a fellow resident of the Southeastern US with whom I hope to collaborate some day soon.


Seeing my buddy, poet Dave Rothman was another highlight of my trip. Dave lives in Lafayette CO with his lovely wife Emily and their two boys (Jacob and Noah) and teaches writing at Colorado University. I met David while we were both teaching English in mainland China in the mid-80’s, and we instantly bonded over our mutual love of jazz, skiing, and ridiculing Chinese kitch.

Dave and I spent Saturday skiing at Eldora, a hidden gem of a ski area frequented mainly by locals. What a joy not to deal with driving up I-70 or battling crowds at the lifts. It seems nearly everyone in Boulder owns a hot tub – the perfect way to finish off a perfect day of skiing.

On Sunday I attended the final sessions of the ISIM conference, a highlight being a brilliant presentation by sculptor/musician/visual artist Jay Kreimer, who invited attendees to play with a collection of home-made amplified instruments.

During the closing session, a good discussion was had about how the timing and promotion of conference might be adjusted to broaden the audience. It was especially troubling to me that so few students of the School of Music where the event was being held were in attendance. Hopefully next year’s conference in Santa Cruz will receive more attention from the local music community.

Sunday night was spent in the company (and hot tub!) of my college buddy Gregg Eisenberg – a brilliant musician and author of a hilarious collection of hilarious Zen proverbs.

On Monday I drove back up to Loveland and skied solo. More snow was falling but the snow from Thursday had become pretty crusty, so conditions weren’t quite as great, but I still had a very good time. Tim and I watched Richard Linklater’s brilliant film Waking Life – highly recommended if you’re in the mood for some very intense food for thought.

Tuesday was spent exploring the town of Boulder a bit. After a great lunch at a funky diner with Tim, I did a little shopping on the Pearl Street Mall. A few snapshots to give a flavor for this area:

Thanks to everyone who made this trip so incredible! I hope to make visits to Boulder a regular habit.

Actionscript “Gotchas”

I’ve learned a few of these during my recent battles with Flash and Actionscript & wanted to document them for

1) Unlike Javascript, you can’t call functions until they are defined. Flash will not complain about this at compile time nor at runtime however. You can call undefined functions all you want – it’s just a no-op to Flash.

2) Beware of loose typing. When pulling data from xml, for example, you must explicitly cast to the correct datatype. Note that you can compare Strings but you’ll get unexpected results.

3) Sometimes you can get into race conditions due to animation. For example, I have a method called “resize_bar” that sets a colored bar between two date range sliders. When the date sliders are moved, this method gets called to adjust the size of the bar, but it has to be called several times in rapid succession to follow the animation. This could be solved by simply calling the method in a loop with setInterval, but that puts unnecessary load on the CPU. So here’s the solution I came up with; it works nicely but requires some trial and error to get the values just right.


var displayBoxesReps;
var displayBoxesInterval;

// need to do this several times in rapid succession to handle the animation.
// we don't want to keep doing it forever though...
resize_display_boxes = function () {
displayBoxesReps = 1000;
displayBoxesInterval = setInterval(doResizeDisplayBoxes, 200);
};

In order to stay away from all the problems prescription for cialis in a man s life. Do not starts, stop, or change the dosage of any medicines without your doctor's cialis tadalafil 10mg approval. Lugol's Enema Add tsp (25 drops) of Lugol's iodine to 1 pint of very warm water; pour into Fleet bottles (giving yourself several doses), or cialis soft 20mg enema apparatus. You will viagra sale india secretworldchronicle.com be given homework, assignments, instructional delivery and assessments. doResizeDisplayBoxes = function () {
if (displayBoxesReps==0) {
clearInterval(displayBoxesInterval);
} else {
// set some positions and format for the date range readout things
readoutmin_mc.readoutmin_txt.autoSize = "right";
readoutmin_mc.left_mc._width = readoutmin_mc.readoutmin_txt._width-15;
readoutmax_mc.readoutmax_txt.autoSize = "left";
readoutmax_mc.right_mc._width = readoutmax_mc.readoutmax_txt._width-17;
// set the box position and width to the slider handles
box_mc._x = sliderone_mc._x+(sliderone_mc._width/2);
box_mc._width = (slidertwo_mc._x)-(sliderone_mc._x);
//trace("in resize_display_boxes, displayBoxesReps is " + displayBoxesReps + ", box_mc._width is " + box_mc._width);
displayBoxesReps--;
}
};