<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Ellen Beldner</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/" />
    <link rel="self" type="application/atom+xml" href="http://www.ellenbeldner.info/atom.xml" />
   <id>tag:www.ellenbeldner.info,2010://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1" title="Ellen Beldner" />
    <updated>2010-03-03T01:47:59Z</updated>
    <subtitle>User-centered interaction design since 1995 (sort of).</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.01</generator>
 

<entry>
    <title>formatting datetime in jinja / django / python</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2010/03/formatting_datetime_in_jinja_d.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=115" title="formatting datetime in jinja / django / python" />
    <id>tag:www.ellenbeldner.info,2010://1.115</id>
    
    <published>2010-03-03T01:27:37Z</published>
    <updated>2010-03-03T01:47:59Z</updated>
    
    <summary>vendor.modification_time.strftime(&apos;%H:%M / %d %b %Y&apos;) so that vaguely works, but i&apos;ve been unable to find a decent list of all the possible formatting characters that work in whatever frankenstein jinja-django-python monster we&apos;ve got running on the site. Not all of...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p><code>vendor.modification_time.strftime('%H:%M / %d %b %Y')</code></p>

<p>so that vaguely works, but i've been unable to find a decent list of all the possible formatting characters that work in whatever frankenstein jinja-django-python monster we've got running on the site.  Not all of the django ones work (<a href="http://docs.djangoproject.com/en/dev/ref/templates/builtins/">http://docs.djangoproject.com/en/dev/ref/templates/builtins/</a>).</p>

<ul>
<li>%a -- 3-char week abbr</li>
<li>%A -- Full day of week</li>
<li>%b  -- 3-char month abbr</li>
<li>%B -- full month name</li>
<li>%c -- Thu Feb 18 08:56:31 2010</li>
<li>%C -- this outputs "20" for every line on the page, no idea </li>
<li>%d -- day of month </li>
</ul>

<p>Pattern matching seems to indicate that you can format jinja datetime / timestamps using <a href="http://docs.python.org/library/time.html">python date formatting</a> ...</p>]]>
        
    </content>
</entry>

<entry>
    <title>Customer support is part of user experience...</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2010/02/customer_support_is_part_of_us.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=111" title="Customer support is part of user experience..." />
    <id>tag:www.ellenbeldner.info,2010://1.111</id>
    
    <published>2010-02-06T01:03:22Z</published>
    <updated>2010-02-06T11:40:32Z</updated>
    
    <summary>UPDATE: I have found where the nerds have discussed such things: StackOverflow which I --- Which is why at work I&apos;m taking on the (currently not-unmanageable) job of responding to customer support requests. However, I&apos;m finding that gmail (we use...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="product design" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>UPDATE:  I have found where the nerds have discussed such things: <a href="http://stackoverflow.com/questions/450204/free-crm-for-my-website/450216#450216">StackOverflow</a> which I <3. </p>

<p>---</p>

<p>Which is why at work I'm taking on the (currently not-unmanageable) job of responding to customer support requests.</p>

<p>However, I'm finding that gmail (we use google apps) is not really a good interface for doing this quickly. I want to be able to do things like bulk respond to a set of emails with the same message... Gmail has the canned responses plugin, but that doesn't cut it -- it's too slow to use. </p>

<p>So I just hooked Thunderbird into our support queue, and now I'm trying to figure out how to configure or optimize it for processing customer support emails.  I'd also love it if it automatically kept stats or some how output to a CSV file on the number of emails processed through canned responses. </p>

<p>Or maybe I just need some lightweight CRM software. Hmm...<a href="http://www.choicevendor.com/search?terms=CRM&service_location=Anywhere&category=it-internet-helpdesk&sort=relevance"> I wonder what the best CRM solutions are for a small business? and how much can I expect to pay?</a>  If only there were a website with some reviews and a listing of top providers that would give me a sense of what to expect... (Okay, this is a shameless plug, since that's what ChoiceVendor does.)</p>

<ul>
	<li><a href="http://www.officeinteractive.com/">Office Interactive:</a> "All you need to run your business using one system". That scares me; I don't want to run my whole business on this. NEXT. </li>
	<li><a href="http://www.batchblue.com/">BatchBook:</a> "Your Social CRM". I don't really want my CRM to be social. I want it to be efficient. This seems to be about within-company contact management, not CRM (remember, that would be CUSTOMER relationship management).</li>
	<li><a href="http://www.relenta.com/">Relenta:</a> "Can your email do this?" Again, seems more salesforce / lead tracking-focused.</li>
</ul>

<p><br />
 Let's try investigating "<a href="http://www.google.com/search?q=customer+support+software+for+small+business&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official">Customer Support Software for small business</a>".</p>

<ul>
	<li>Business.com -- ooh, that looks promising, they have a result in Google for "Small Business CRM Software: Customer Service Solutions | Business.com" (and I'm not going to link to it because I don't want to make them even more credible for their stupid site). Oh right. <a href="http://www.business.com/directory/computers_and_software/software_applications/customer_relationship_management_crm/">Business.com is a crappy AdWords linkfarm</a>. </li>
	<li><a href="http://www.worketc.com/features/help_desk_software">WorkEtc:</a> Okay, again they want to manage my entire company. First, dont' want that, second, not authorized to make that decision, third, we're generally pretty happy with Google Apps. (Most of us worked at Google after all, and we're pretty used to their stuff.) However, maybe their Help Desk Software is what I want. </li>
</ul>

<p>Why are there SO MANY crappy sites for small businesses, by the way? </p>

<p>Okay, now I'm back to <a href="http://www.salesforce.com/crm/customer-service-support/">Salesforce Service Cloud 2</a>. I can't really see if it does what I need since I have to register to walk through their product demo. Annoying. I'm pretty sure I even have an account with them already, but I'm not going to bother to look it up just to see if they even remotely have what I need.</p>

<p><a href="http://www.opensourcehelpdesklist.com/">Open source help ticket system</a>:</p>

<p>Kill me now. I don't want this attached to our bug tracking and I care about the interface and how fast it'll let me get through the emails in our queue. I don't want to have to install anything anywhere, either. Back to paid / hosted services.... </p>

<p>Searching through the Thunderbird extensions for business, CRM, helpdesk, and related keywords yielded no results. </p>

<p>Okay, I'm hosed; I've now spent about 2 hours researching this and haven't come up with a satisfactory discussion or solution, so it's time for me to ditch the effort and just process the emails manually. </p>

<p>Le sigh.</p>]]>
        
    </content>
</entry>

<entry>
    <title>In search of books on mobile usability &amp; UI...</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2010/01/in_search_of_books_on_mobile_u.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=110" title="In search of books on mobile usability &amp; UI..." />
    <id>tag:www.ellenbeldner.info,2010://1.110</id>
    
    <published>2010-01-28T01:17:56Z</published>
    <updated>2010-02-06T00:39:40Z</updated>
    
    <summary>Recalling CMU intro HCI course whose capstone project was UI improvements for the PalmOS.... Here&apos;s the question on Quora, but haven&apos;t yet gotten much of a response: http://www.quora.com/q/What_are_the_best_fresh_up_to_date_academic_type_resources_for_mobile_UI_UX_design...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="design" />
    
        <category term="interaction design" />
    
        <category term="product design" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Recalling CMU intro HCI course whose capstone project was UI improvements for the PalmOS....</p>

<p>Here's the question on Quora, but haven't yet gotten much of a response:<br />
<a href="http://www.quora.com/q/What_are_the_best_fresh_up_to_date_academic_type_resources_for_mobile_UI_UX_design">http://www.quora.com/q/What_are_the_best_fresh_up_to_date_academic_type_resources_for_mobile_UI_UX_design</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Donations to Reps &amp; Senators from the healthcare industry</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/07/donations_to_reps_senators_fro.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=109" title="Donations to Reps &amp; Senators from the healthcare industry" />
    <id>tag:www.ellenbeldner.info,2009://1.109</id>
    
    <published>2009-07-29T02:10:43Z</published>
    <updated>2009-07-29T02:18:30Z</updated>
    
    <summary>Data credits: Open Secrets and Wikipedia entry for Blue Dog Democrats...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Data credits: <a href="http://www.opensecrets.org/news/2009/06/-name-office-party-health.html">Open Secrets</a> and Wikipedia entry for Blue Dog Democrats</p>

<p><a href="http://www.ellenbeldner.info/img/stats.html" onclick="window.open('http://www.ellenbeldner.info/img/stats.html','popup','width=1118,height=244,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img alt="stats.png" src="http://www.ellenbeldner.info/img/stats.png" width="559" height="122" />
</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Launched! ChoiceVendor.com</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/07/launched_choicevendorcom.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=108" title="Launched! ChoiceVendor.com" />
    <id>tag:www.ellenbeldner.info,2009://1.108</id>
    
    <published>2009-07-07T19:13:27Z</published>
    <updated>2009-07-07T19:28:15Z</updated>
    
    <summary>Last November, I left Google / YouTube to join a startup, ChoiceVendor.com. Today we launched our Private Beta release. We&apos;ve still got a long ways to go -- On to usability testing! www.choicevendor.com...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Last November, I left Google / YouTube to join a startup, ChoiceVendor.com.</p>

<p>Today we launched our Private Beta release. We've still got a long ways to go -- On to usability testing!</p>

<p><a href="http://www.choicevendor.com/">www.choicevendor.com</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Apple: Dual-Link fail; Store product review fail.</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/06/apple_duallink_fail_store_prod.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=107" title="Apple: Dual-Link fail; Store product review fail." />
    <id>tag:www.ellenbeldner.info,2009://1.107</id>
    
    <published>2009-06-25T20:11:43Z</published>
    <updated>2009-06-25T20:36:34Z</updated>
    
    <summary>At our company almost everyone uses a MacBook Pro with a 30&quot; Dell monitor. We all frequently have the DVI distortion issues that Gizmodo reported. (I&apos;ve had my display fritz out twice in the past hour, for example.) Apple has...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="tech industry" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>At our company almost everyone uses a MacBook Pro with a 30" Dell monitor. We all frequently have the <a href="http://gizmodo.com/5301308/apples-latest-macbooks-still-have-mini-displayport-dual+link-dvi-distortion-issues">DVI distortion issues that Gizmodo reported</a>. (I've had my display fritz out twice in the past hour, for example.) Apple has been totally unhelpful and basically refuse to admit that they have a problem. Perhaps they're afraid of another <a href="http://blogs.zdnet.com/Apple/?p=189">product recall</a> or <a href="http://www.appleinsider.com/articles/05/08/26/judge_approves_settlement_in_ipod_class_action_suit.html">class action lawsuit</a>? And thus are not doing the best customer support thing, which is: acknowledge the problem, apologize, and promise a fix as soon as it's available.</p>

<p>Anyway, I wanted to leave a review on the product page in the Apple store. I can't figure out how to post my review:</p>

<p><img alt="AppleNoPublish.png" src="http://www.ellenbeldner.info/img/AppleNoPublish.png" width="757" height="737" style="border:1px solid #e0e0e0" /></p>

<p>"Some words in your review cannot be published. Please revise your review." Huh?</p>

<p>Their guidelines state "avoid comments about... service and support", but how the hell are you supposed to review a product that doesn't work if you can't describe anything about the customer service response to the issue? I've tried about 8 versions of text for this review, and I have no idea why they won't let me publish this. </p>

<p>So on my own blog I'll say it:</p>

<p>Fuckers.<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Dear Pandora: Popup FAIL</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/05/dear_pandora_popup_fail.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=106" title="Dear Pandora: Popup FAIL" />
    <id>tag:www.ellenbeldner.info,2009://1.106</id>
    
    <published>2009-05-07T01:06:52Z</published>
    <updated>2009-06-25T20:30:13Z</updated>
    
    <summary>I was tuning up a new station and all of a sudden, something clicked -- you started playing music I wanted to hear. I wanted to buy a couple of albums with songs you had played. So I clicked in...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="tech industry" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>I was tuning up a new station and all of a sudden, something clicked -- you started playing music I wanted to hear. I wanted to buy a couple of albums with songs you had played. So I clicked in your interface: "Buy MP3 from Amazon.com".  The click failed because, like any sane human being, I have popups blocked by my browser. Your solution: You want me to disable popup blocking?</p>

<p><img src="http://www.ellenbeldner.info/img/dear_pandora_popup_fail/pandora.png" style="border:1px solid #ccc;" /></p>

<p>Love, <br />
Ellen</p>

<p>The Church - A Box of Birds; Snow Patrol - Eyes Open</p>]]>
        
    </content>
</entry>

<entry>
    <title>Out of control outgoing links</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/04/out_of_control_outgoing_links.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=105" title="Out of control outgoing links" />
    <id>tag:www.ellenbeldner.info,2009://1.105</id>
    
    <published>2009-04-09T20:19:24Z</published>
    <updated>2009-06-25T20:30:50Z</updated>
    
    <summary>Okay, I already knew that I hate and detest the new-ish Facebook practice in which you don&apos;t just navigate to outgoing links; you get taken to a Facebook page with the site you were trying to visit loaded into a...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="consumer ui" />
    
        <category term="interaction design" />
    
        <category term="tech industry" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Okay, I already knew that I hate and detest the new-ish Facebook practice in which you don't just navigate to outgoing links; you get taken to a Facebook page with the site you were trying to visit loaded into a frame, and with a Facebook toolbar at the top of the page. </p>

<p>And now, not only does Digg do it too, but the sites are so dumb that they're double stacking these stupid toolbars.</p>

<p><span class="thumb"><a href="http://www.ellenbeldner.info/img/outofcontrol.html" onclick="window.open('http://www.ellenbeldner.info/img/outofcontrol.html', 'popup', 'width=1243,height=154,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false"><img src="http://www.ellenbeldner.info/img/outofcontrol-thumb.png" width="400" height="49" alt="outofcontrol.png"/></a></span></p>

<p>This is crap primarily because it breaks basic web behavior: the URL on your web browser no longer represents the page you're viewing, or trying to view. Big juju nono. <a href="http://www.useit.com/alertbox/9612.html" target="_new">We've known this since <b>1996</b>, people!</a> </p>

<p>Also, I don't want to send someone to http://www.facebook.com/ext/share.php?sid=89405539347&h=1e79i&u=2fnBr&ref=nf. I want to send them the link that's www.youtube.com so they know where they're going and what they're going to get. </p>

<p>The one case where Google does something like this -- a frame with another site inside its toolbar -- is when a user clicks on <a href="http://images.google.com/imgres?imgurl=http://www.torreymaobengals.co.nz/images/bengal_kittens.jpg&imgrefurl=http://www.torreymaobengals.co.nz/kittens.htm&usg=__fTjAaAOlrCLHZx_iDcCx7UDpi-s=&h=439&w=340&sz=32&hl=en&start=17&sig2=ToB9JNkJeikDIMbYs6napA&tbnid=3cvKBVL1lTTRDM:&tbnh=127&tbnw=98&prev=/images%3Fq%3Dkittens%26gbv%3D2%26hl%3Den%26sa%3DG&ei=7F3eSferD4HI-Abijd22Cw" target="_new">an image search result</a>. That frame bothers a lot of site owners that Google links to, but it was a necessary tradeoff because image search is kind of sketchy and occasionally unreliable. Users click on an image result and get taken to pages that no longer have the image they were looking for, and the toolbar exists to help them identify the image they wanted -- NOT as a marketing-sticky thing for Google.  And even though it's often beneficial, it still confuses a lot of users.</p>

<p>Note that mismatched content and URLs is a usability problem for Google Maps. The URL that many users copy from their browser address bar usually doesn't correctly represent the state that the user's in due to the way the site's AJAX works. AJAX or FRAME, it's the same problem.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Really annoying Fireworks CS4 bug with &quot;large nudge&quot; command</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2009/01/really_annoying_fireworks_cs4.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=104" title="Really annoying Fireworks CS4 bug with &quot;large nudge&quot; command" />
    <id>tag:www.ellenbeldner.info,2009://1.104</id>
    
    <published>2009-01-29T05:18:42Z</published>
    <updated>2009-06-25T20:31:11Z</updated>
    
    <summary></summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="tech industry" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p><a href="http://www.ellenbeldner.info/img/01.html" onclick="window.open('http://www.ellenbeldner.info/img/01.html', 'popup', 'width=310,height=143,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false"><img src="http://www.ellenbeldner.info/img/01-thumb.png" width="400" height="185" alt="01.png"/></a></p>

<p><a href="http://www.ellenbeldner.info/img/02.html" onclick="window.open('http://www.ellenbeldner.info/img/02.html', 'popup', 'width=264,height=183,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false"><img src="http://www.ellenbeldner.info/img/02-thumb.png" width="400" height="277" alt="02.png"/></a></p>]]>
        
    </content>
</entry>

<entry>
    <title>The Dinner Program: Ambidextrous Mag (2007)</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2008/04/the_dinner_program_ambidextrou.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=99" title="The Dinner Program: Ambidextrous Mag (2007)" />
    <id>tag:www.ellenbeldner.info,2008://1.99</id>
    
    <published>2008-04-23T18:35:58Z</published>
    <updated>2008-04-23T18:45:20Z</updated>
    
    <summary>I contributed an article to the food issue of Ambidextrous, the design magazine of Stanford University. The assignment was to write an article about the intersection of food and design. I&apos;ve always thought about throwing dinner parties as a design...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="essay" />
    
        <category term="journalism" />
    
        <category term="writing" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>I contributed an article to the food issue of Ambidextrous, the design magazine of Stanford University. The assignment was to write an article about the intersection of food and design. I've always thought about throwing dinner parties as a design task, so I explained planning a dinner party in terms of the way you plan the design of a product.</p>

<blockquote>
Over the years, I’ve learned the following heuristics about my typical user base. With 14 dinner guests, only 11 will require chicken-of-doom. In Northern California, one person ends up vegan, and two vegetarian. Two are Jewish (no shellfish or pork), and one, despite mild alcoholism, is nominally Muslim and doesn’t eat pork either, so that rules out the bacon wrapping on the steaks. Once in a while, I have a guest who is severely allergic to eggs, gluten, and/or nuts, just to keep life interesting. Killing your guests is the opposite of  entertaining, unless you happen to be Hannibal Lecter, so when in doubt about allergens, stick to tofu. Oh wait! people can be allergic to soy, too...
</blockquote>

<p><a href="http://ambidextrousmag.org/issues/07/pdf/i7p30_32.pdf" target="_new">The Dinner Program: Throwing a dinner party with one knife, 11 militant chickens, and your design degree [PDF]</a>. <i>Ambidextrous</i>, <a href="http://ambidextrousmag.org/issues/07/">Summer 2007</a>.<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Applescript: Converting metadata of symphonic tracks in iTunes</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2008/04/applescript_converting_metadat.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=98" title="Applescript: Converting metadata of symphonic tracks in iTunes" />
    <id>tag:www.ellenbeldner.info,2008://1.98</id>
    
    <published>2008-04-05T22:24:47Z</published>
    <updated>2008-04-05T22:42:42Z</updated>
    
    <summary>iTunesSymphonicMetadata.scpt I listen to a fair amount of symphonic music. I think of symphonic music first in terms of the composer (e.g. Bartok, Beethoven), then the work (5th Piano Concerto in E Flat Major), and then, in the cases where...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="implementation" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p><a href="http://www.ellenbeldner.info/iTunesSymphonicMetadata.scpt">iTunesSymphonicMetadata.scpt</a></p>

<p>I listen to a fair amount of symphonic music.  </p>

<p>I think of symphonic music first in terms of the composer (e.g. Bartok, Beethoven), then the work (5th Piano Concerto in E Flat Major), and then, in the cases where I have multiple performances of the same work, the conductor & performing orchestra (Julius Katchen & London Symphony Orchestra; Hélène Grimaud, Staatskapelle Dresden & Wladimir Jurowski). </p>

<p>However, music metadata format lists the conductor and symphony in the "artist" field on CDDB / iTunes. This is moderately annoying to deal with in the iTunes interface (I have to display and then sort by the correct columns of metadata) but absolutely intolerable on my iPod. Trying to listen to Smetana's <i>Ma Vlast</i> means that I have to remember the name of the composer and orchestra? Oh come on.</p>

<p>So I wrote an Applescript to fix the metadata on my symphonic catalog. It searches my library for all tracks whose genre is "symphonic" and swaps around some of the field values. I still retain the performance info, but as "album artist" instead of "artist". </p>

<p>(It similarly annoys me when other albums list both performers of a one-off song (e.g. Madonna and Justin Timberlake), which breaks that one song apart from the rest of the album when I sort by artist. In these cases I manually reset the "artist" field.)</p>

<p>* What people generally call "classical," but I refer to it as "symphonic" because of a snobby old habit of mine: "classical" refers to a specific period / style of symphonic music in the Western canon, e.g. Haydn and Mozart, so I use the more general "symphonic". I guess "orchestral" might be more appropriate... anyway, the organizing genre in my iTunes library is "symphonic".</p>]]>
        
    </content>
</entry>

<entry>
    <title>Newbie Ruby on Rails with Locomotive, Part 2</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2007/10/newbie_ruby_on_rails_with_loco.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=97" title="Newbie Ruby on Rails with Locomotive, Part 2" />
    <id>tag:www.ellenbeldner.info,2007://1.97</id>
    
    <published>2007-10-06T00:03:21Z</published>
    <updated>2007-10-09T04:20:59Z</updated>
    
    <summary>Thanks to http://safari.oreilly.com and the O&apos;Reilly Rails Cookbook, I have learned the answer to my burning question: Yes, I *do* need to create join tables in my database migration definition files. It wasn&apos;t clear to me at first, but now...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="implementation" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Thanks to http://safari.oreilly.com and the O'Reilly <i>Rails Cookbook</i>, I have learned the answer to my burning question:</p>

<p><b>Yes, I *do* need to create join tables in my database migration definition files. </b><br />
It wasn't clear to me at first, but now what I'm realizing -- and hopefully this is correct -- is that the rails migration schema file is really just an abstracted way of writing a database setup script. Rails can translate its file into the setup script for whatever database you're using, but you still have to specify all the joins, defaults, etc. just as you would if you were setting up the database in its native language. Check and check.</p>

<p><b>I do use the scaffolding command to create multiple model-controller relationships.</b> (See <a href="http://www.onlamp.com/pub/a/onlamp/2006/12/14/revisiting-ruby-on-rails-revisited.html?page=2">O'Reilly OnLamp:  Rolling with Ruby on Rails Revisited</a>.)</p>

<p><b>"test" is a reserved word.</b><br />
This is apparently a problem. I'm building a DB to track usability tests, and I named one of my tables "test". I'm trying to migrate to "usabilitytests" but i'm running into problems. Solved by deleting the entire app and recreating. Obviously not something that one would always want to do, but I don't know how to un-create models and controllers and whatnot that have already been set. </p>

<p><b>functions in the controller are lowercase with underscores.</b><br />
I'm not entirely sure of this, but I downloaded a sample application and checked out that code.</p>

<p><b>TOTALLY STUMPED: Radio buttons in RoR?</b><br />
Okay, I found the documentation for how to render a checkbox. Am I smoking crack? Did the entire RoR project forget about the existence of radio buttons? From an interaction perspective, radio buttons are the exact same as SELECT boxes: They afford one-from-many selection. They're just rendered in an easier-to-read and easier-to-operate widget. (Select boxes are hard for people to use, and even if you know what you're doing, they're way more of a pain particularly for administrative-type applications when you interact with the box a billion times a day.) I expect there to be a function like collection_radio that operates almost exactly the same as collection_select -- but as far as I can tell, no such thing exists.</p>]]>
        
    </content>
</entry>

<entry>
    <title>My Total Novice Experience: Ruby on Rails with Locomotive</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2007/10/my_total_novice_experience_rub.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=96" title="My Total Novice Experience: Ruby on Rails with Locomotive" />
    <id>tag:www.ellenbeldner.info,2007://1.96</id>
    
    <published>2007-10-05T17:50:53Z</published>
    <updated>2007-10-05T17:22:31Z</updated>
    
    <summary>I&apos;m going to spare you the discussion on what Ruby on Rails is and why you&apos;d want to use it. Lots of other people have covered that. A quick word about my background: I am a very good HTML, Javascript,...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="prototyping" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>I'm going to spare you the discussion on what Ruby on Rails is and why you'd want to use it. Lots of other people have covered that. A quick word about my background:<br />
<ul><br />
<li>I am a very good HTML, Javascript, and CSS "coder".</li><br />
<li>I am a moderately proficient PHP programmer, which I use to create prototypes for usability tests and whatnot.</li><br />
<li>I am nigh-on retarded when it comes to hooking a webapp to a MySQL database. Ergo, I usually don't get beyond the prototype stage for a lot of cool webapp ideas I've had.</li><br />
<li>I can muddle along in a handful of other languages and frameworks, like Perl, Java, Clearsilver, Struts, and XSLT.</li><br />
<li>I have zero exposure to Ruby, Python, Gems, etc. </li><br />
<li>I'm good at programming -- thinking in abstractions, being efficient, breaking down a goal into minute logical steps, etc.</li><br />
</ul></p>

<p><b>My goal:</b> I'm helping a friend create a usability testing infrastructure for his startup. I want to create a website to recruit participants for various studies, let people sign up to be a participant, and do some lightweight CRM of when they were contacted, outcomes, and whether they have already participated in a test.</p>

<p><b>Requirements:</b></p>

<p>Participant: <br><br />
 Firstname Surname Phone Country Timezone Email(unique) DateOfSubmission Age Gender Occupation Industry Education ContactForFutureTests? NativeLanguage Status[ New | AssignedToTest | Archived | CompletedTest ] NOTES</p>

<p>Note: (Each participant can have several notes)<br />
Author Timestamp ParticipantID NoteText</p>

<p>Test: (Each test has several participants)<br />
TestID Status[ Active | Complete | Pending ] Date Description ConsentFormURL Compensation PARTICIPANTS</p>

<p>TestParticipant:<br />
CompensationGiven ConsentFormSigned? ConsentFormID</p>

<p>ConsentForm<br />
UniqueID HTML TestID</p>

<p></p>

<p>Note that this is NOT tied to the actual test data in any way -- that's not the point. This app is just to keep track of who we talked to and when. It's a very lightweight CRM.<br />
</p>]]>
        <![CDATA[<p><style type="text/css">pre { font-size: 100%; color: #009; font-family: courier new, mono;} </style></p>

<p>I had a no-problem installation of <a href="http://locomotive.raaum.org/" target="locomotive">Locomotive</a>, the Mac OS X bundled installation of Ruby on Rails. I got my little app up and running on my Mac.</p>

<p>But now, what the frack do I do?</p>

<p>I need to tell it my database schema: the start page says "Create your databases and edit config/database.yml"</p>

<p>I open database.yml. It looks like it's already set up a database:<br />
<pre>development:<br />
  adapter: mysql<br />
  database: UsabilityParticipants_development<br />
  username: root<br />
  password:<br />
  host: localhost<br />
</pre></p>

<p>Is this true? Do I have a MySQL database running? Or do I need to go create one now, named Usability_Participants? (I have MySQL installed already but it's not running now.)</p>

<p>On to the internet: I go to <a href="http://developer.apple.com/tools/rubyonrails.html">http://developer.apple.com/tools/rubyonrails.html</a>. Blah blah blah install, blah blah blah create an application. Locomotive did that for me. Ah-ha: <b>Jump-Starting the Application</b> sounds like where I'm at.</p>

<p>And here's the money shot: "Now we need to actually create the expenses_development database. Feel free to use whatever tool you're comfortable with. Here's how to create the database using the mysqladmin command-line tool:"</p>

<p>Thank you, Apple tech writers! I have the visual MySQL application installed in my Mac preferences panes, so I start up my server. I open up a terminal window. I run the suggested command and this happens:</p>

<pre>ellen-beldners-computer:~ ellen$ $ mysqladmin -u root -p create UsabilityParticipants_development
-bash: $: command not found</pre>

<p>Okay, so maybe I need to reinstall MySQL...? Google for [install mysql mac os x]; <a href="http://dev.mysql.com/doc/refman/5.0/en/mac-os-x-installation.html">Apple recommends this installation package.</a> It took about 400 clicks to get to <a href="http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.45-osx10.4-i686.dmg/from/http://mysql.he.net/">the actual download link for Mac OS 10.4 x86</a>.... </p>

<p>Installed and running. let's try that command again:<br />
<pre> mysqladmin -u root -p create UsabilityParticipants_development<br />
Enter password: [return]<br />
</pre></p>

<p>Argh. Okay, what's the default mysql password for root? Hmm, I need to set it:<br />
<pre>mysqladmin -u root password {whatever}</pre></p>

<p>(Also, shouldn't I be creating non-root accounts for these databases and having custom passwords for each? I have no idea what I'm talking about, really, but I know that "root" usually means "all powerful and really scary things can happen".)</p>

<p>Once again:<br />
<pre>ellen-beldners-computer:~ ellen$  mysqladmin -u root -p create UsabilityParticipants_development<br />
Enter password: <br />
mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'UsabilityParticipants_development'; database exists'<br />
</pre></p>

<p>You bastards! You already created the database? Or did I? Fine. Be that way.</p>

<p>{I write a lot more, and then I SAVE this article, and in the meantime my router crashes, so firefox hangs, and i lose a lot.)</p>

<p>Basically, what happens is Apple tells me to set up a migration to specify my database schema. I enter the command and i get an error message </p>

<pre>
ellen-beldners-computer:~/UsabilityParticipants ellen$ script/generate migration participant
Cannot find gem for Rails ~>1.2.3.0:
    Install the missing gem with 'gem install -v=1.2.3 rails', or
    change environment.rb to define RAILS_GEM_VERSION with your desired version.
</pre>

<p>I ponder reinstalling, but that seems really scary given all the ways that Ruby on Rails can fuck your computer up. So I go into my environment.rb file and make it like this:</p>

<pre>
# RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION
RAILS_GEM_VERSION = '0.9.2'
</pre>

<p>(My environment variables at localhost:3001 told me I was running 0.9.2'.)</p>

<p>And now my application won't start at all.</p>

<pre>
# RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION
RAILS_GEM_VERSION = '0.9.2' unless defined? RAILS_GEM_VERSION
</pre>

<p>doesn't work either. Meh. All right, I'm starting over. Delete the Locomotive Rails ap, delete the files, and create a new one with the same name. Same thing happens: </p>

<pre>
Cannot find gem for Rails ~>1.2.3.0:
    Install the missing gem with 'gem install -v=1.2.3 rails', or
    change environment.rb to define RAILS_GEM_VERSION with your desired version.
</pre>

<p>I don't even know what this means!!! My environment variables are<br />
<pre><br />
Ruby version	1.8.6 (i686-darwin8.9.1)<br />
RubyGems version	0.9.2<br />
Rails version	1.2.3<br />
Active Record version	1.15.3<br />
Action Pack version	1.13.3<br />
Action Web Service version	1.2.3<br />
Action Mailer version	1.3.3<br />
Active Support version	1.4.2<br />
Application root	/Users/ellen/UsabilityParticipants<br />
Environment	development<br />
Database adapter	mysql<br />
</pre></p>

<p>I think that the Apple site is maybe not my best bet at this point. Google [rails application with locomotive] and the second link or so is <a href="http://arstechnica.com/journals/apple.ars/2007/03/16/get-rolling-with-ruby-on-rails-using-locomotive">an ars technica article</a>. They're usually pretty good.... but not in this case. Did you actually write an article on dragging locomotive into your Applications folder? Assholes. That doesn't tell me anything.</p>

<p>Here's the <a href="http://wiki.rubyonrails.com/rails/pages/TutorialStepOneMigrations">official Rails tutorial on Migrations</a>.  Same command, same problem:</p>

<pre>
ellen-beldners-computer:~/UsabilityParticipants ellen$ ruby script/generate migration participants
Cannot find gem for Rails ~>1.2.3.0:
    Install the missing gem with 'gem install -v=1.2.3 rails', or
    change environment.rb to define RAILS_GEM_VERSION with your desired version.
</pre>

<p>After some more searching, I found <a href="http://locomotive.stikipad.com/home/revision/show/4/Creating+a+New+Rails+Application">this lovely tutorial on a first rails app with locomotive</a>. Following all the directions to the letter, I typed<br />
<pre><br />
ellen-beldners-computer:~/UsabilityParticipants ellen$ ruby script/generate migration create_participants<br />
      create  db/migrate<br />
      create  db/migrate/001_create_participants.rb<br />
      </pre></p>

<p>It worked! Yay! I have no idea why it worked this time but didn't before; this time I openend the terminal window from Locomotion, but before, I had doubled checked to ensure I was in the right directory. Weird.  Maybe it didn't set up my paths correctly and stuff??</p>

<p>I open the 001_create_participants.rb file. I now need to tell it about my database; but first I take a few minutes to sketch out exactly how I want my pages to flow to ensure that I'm capturing all the information I'll need to make it work.</p>

<p><a href="http://solutions.treypiepmeier.com/2006/12/04/rails-migration-data-types/">list of Ruby on Rails migration database datatypes</a></p>

<p>So I edited my .rb file to be like this: <br />
<pre><br />
class CreateParticipants < ActiveRecord::Migration<br />
  def self.up<br />
      create_table :participants do |table|<br />
      # note that "id" is added implicitly, by default<br />
        table.column :firstname, :string<br />
        table.column :surname, :string<br />
        table.column :namepronunciation, :string<br />
        table.column :email, :string<br />
        table.column :phonenumber, :string<br />
        table.column :country, :string<br />
        table.column :timezone, :string<br />
        table.column :dateofsubmission, :datetime<br />
        table.column :age, :integer<br />
        table.column :gender, :string<br />
        table.column :occupation, :string<br />
        table.column :industry, :string<br />
        table.column :nativelanguage, :string<br />
        table.column :futurecontactokay, :boolean<br />
        table.column :status, :string<br />
  end</p>

<p>  def self.down<br />
        drop_table :participants <br />
  end<br />
end<br />
</pre></p>

<p>I save and type the "rake migrate" command, which results in the extremely unsatisfying</p>

<pre>rake aborted!
./db/migrate//001_create_participants.rb:25: syntax error, unexpected $end, expecting kEND
</pre>

<p>Investigation reveals that I was missing an "end" to close my "do" statement, rerun the command, and get: <br />
<pre><br />
ellen-beldners-computer:~/UsabilityParticipants ellen$ rake migrate --trace<br />
(in /Users/ellen/UsabilityParticipants)<br />
** Invoke migrate (first_time)<br />
** Invoke db:migrate (first_time)<br />
** Invoke environment (first_time)<br />
** Execute environment<br />
** Execute db:migrate<br />
== CreateParticipants: migrating ==============================================<br />
-- create_table(:participants)<br />
   -> 0.0399s<br />
== CreateParticipants: migrated (0.0401s) =====================================</p>

<p>** Invoke db:schema:dump (first_time)<br />
** Invoke environment <br />
** Execute db:schema:dump<br />
** Execute migrate<br />
The rake task migrate has been deprecated, please use the replacement version db:migrate<br />
ellen-beldners-computer:~/UsabilityParticipants ellen$ <br />
</pre></p>

<p>So I need to figure out what this updated "db:migrate" thing means. blerrrrrgh..... it means the correct command is<br />
<pre>rake db:migrate</pre></p>

<p>Based on the information in <a href="http://wiki.rubyonrails.com/rails/pages/TutorialStepOneMigrations">the official rails tutorial on migrations</a>, I am now supposed to create a model. Here's what happens:<br />
<pre><br />
ellen-beldners-computer:~/UsabilityParticipants ellen$ ruby script/generate model Participant<br />
      exists  app/models/<br />
      exists  test/unit/<br />
      exists  test/fixtures/<br />
      create  app/models/participant.rb<br />
      create  test/unit/participant_test.rb<br />
      create  test/fixtures/participants.yml<br />
      exists  db/migrate<br />
Another migration is already named create_participants: db/migrate/001_create_participants.rb<br />
</pre></p>

<p>What does this mean? I don't know. Does it work? Is it broken? Should I do something else? Oh. Scaffolding:<br />
<pre><br />
ellen-beldners-computer:~/UsabilityParticipants ellen$ script/generate scaffold participants signup<br />
      exists  app/controllers/<br />
      exists  app/helpers/<br />
      create  app/views/signup<br />
      exists  app/views/layouts/<br />
      exists  test/functional/<br />
  dependency  model<br />
      exists    app/models/<br />
      exists    test/unit/<br />
      exists    test/fixtures/<br />
      create    app/models/participants.rb<br />
      create    test/unit/participants_test.rb<br />
   identical    test/fixtures/participants.yml<br />
      create  app/views/signup/_form.rhtml<br />
      create  app/views/signup/list.rhtml<br />
      create  app/views/signup/show.rhtml<br />
      create  app/views/signup/new.rhtml<br />
      create  app/views/signup/edit.rhtml<br />
      create  app/controllers/signup_controller.rb<br />
      create  test/functional/signup_controller_test.rb<br />
      create  app/helpers/signup_helper.rb<br />
      create  app/views/layouts/signup.rhtml<br />
      create  public/stylesheets/scaffold.css<br />
</pre></p>

<p>I'm able to go <pre>http://localhost:3000/signup</pre> and it works! All right!</p>]]>
    </content>
</entry>

<entry>
    <title>Funny quote when I signed into my hosted webspace....</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2007/07/funny_quote_when_i_signed_into.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=95" title="Funny quote when I signed into my hosted webspace...." />
    <id>tag:www.ellenbeldner.info,2007://1.95</id>
    
    <published>2007-07-16T16:29:06Z</published>
    <updated>2007-07-16T11:31:18Z</updated>
    
    <summary>Q: What do you call the money you pay to the government when you ride into the country on the back of an elephant? A: A howdah duty. I was impressed -- the interlanguage (and intercultural; &quot;howdy doody&quot; is moderately...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="daily life" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Q:      What do you call the money you pay to the government when  you ride into the country on the back of an elephant?</p>

<p>A:      A <a href="http://en.wikipedia.org/wiki/Howdah">howdah</a> duty.</p>

<p>I was impressed -- the interlanguage (and intercultural; "howdy doody" is moderately obscure, no?) pun is pretty sophisticated.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Dan Cederholm likes Halvorsen too</title>
    <link rel="alternate" type="text/html" href="http://www.ellenbeldner.info/2007/07/dan_cederholm_likes_halvorsen.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.ellenbeldner.info/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=94" title="Dan Cederholm likes Halvorsen too" />
    <id>tag:www.ellenbeldner.info,2007://1.94</id>
    
    <published>2007-07-13T20:16:46Z</published>
    <updated>2007-07-13T15:21:03Z</updated>
    
    <summary>Halvorsen is the typeface I recently used for my GreenBetween redesign. Turns out that Dan likes it too. I don&apos;t really know Dan, although I hired him via Google to do some fast icons for a small project a couple...</summary>
    <author>
        <name>Ellen Beldner</name>
        
    </author>
    
        <category term="design" />
    
        <category term="visual design" />
    
    <content type="html" xml:lang="en" xml:base="http://www.ellenbeldner.info/">
        <![CDATA[<p>Halvorsen is the typeface I recently used <a href="http://www.ellenbeldner.info/2007/06/project_description_greenbetwe.html">for my GreenBetween redesign</a>. Turns out that <a href="http://www.simplebits.com/notebook/2007/04/25/halvorsen.html">Dan likes it too</a>.</p>

<p>I don't really know Dan, although I hired him via Google to do some fast icons for a small project a couple of years ago. (I happened to be at his website because a friend of mine needs a template for his blog & I was going to recommend Dan.)</p>]]>
        
    </content>
</entry>

</feed> 

