<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Femgineer &#187; Software Development</title>
	<atom:link href="http://femgineer.com/category/coding-debugging/feed/" rel="self" type="application/rss+xml" />
	<link>http://femgineer.com</link>
	<description>Coder. Speaker. Writer.</description>
	<lastBuildDate>Sun, 05 Feb 2012 17:27:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Culture of Constraints</title>
		<link>http://femgineer.com/2011/12/culture-of-constraints/</link>
		<comments>http://femgineer.com/2011/12/culture-of-constraints/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 04:10:41 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[My Startup]]></category>
		<category><![CDATA[Product Development]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=919</guid>
		<description><![CDATA[In 4 days it will be the 1 year anniversary of launching BizeeBee my second startup.  When I started BizeeBee I was determined to put in place engineering principles that I hadn&#8217;t been able to at previous companies.  I also wanted to avoid a lot of bad practices that I had experienced throughout my ]]></description>
			<content:encoded><![CDATA[<p>In 4 days it will be the 1 year anniversary of launching <a href="http://bizeebee.com/" target="_blank">BizeeBee</a> my second startup.  When I started BizeeBee I was determined to put in place engineering principles that I hadn&#8217;t been able to at previous companies.  I also wanted to avoid a lot of bad practices that I had experienced throughout my career such as splitting the responsibilities of development and testing, and product bloat.</p>
<p>I know most startups like to take the quick and dirty approach to product development, and then go back and refactor or rebuild their product.  I think that&#8217;s great and we&#8217;ve certainly refactored a lot of our code base too.  But I started charging customers from day 1 of launching and had to convey confidence to get them to pay.  So I emphasized quality first and foremost.</p>
<p>My vision for BizeeBee&#8217;s product and engineering team was to create a simple and high quality product, and to do so cost-effectively.  I communicated these constraints to my team, and we knew there would of course be trade-offs, but we all agreed to these basic principles to guide our decision making and product development process.</p>
<p><strong>Invest time in talent</strong></p>
<p>In any industry employees are not interchangeable.  I know there are a lot of people who like outsourcing and just want something &#8220;built&#8221;.  This is fine if you are driving a culture of results.  But I truly believe employees need to be engaged in worthwhile work to produce quality.  So I hire for raw talent, hunger, and patience above all else.  I truly believe this is the only way to attract top performers.  You can look at people&#8217;s track record, but many don&#8217;t have one, so you just have to rest on raw talent and motivation.</p>
<p>Having a talented team is great because it means they will invest time in learning, after all talent is just a byproduct of learning, practice, and refining a skill.</p>
<p>So I invested the time in letting my engineers learn Rails and the entire stack of technologies that went with it.  I also had them talk to experts in the field about engineering process.  We adopted an Agile process and pair program.</p>
<p>Trade-off: giving people time to learn and not spend all their time developing means that less features will be built.  I know most founders would be too impatient with this approach, but I guess that&#8217;s why its helpful that I do yoga <img src='http://femgineer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Cost Effective Quality </strong></p>
<p>I didn&#8217;t have the luxury of having enough money to hire QA engineers, but then again I never liked how engineers would abdicate responsibility for their code to someone else.  Not having a QA team meant that my engineers would need to test their own code.  So for the first time ever I got what I had wanted: TDD (test driven development).</p>
<p>Trade-off: once again less features are built, but what is built has a high level of quality.</p>
<p><strong>Simple Design &amp; Integrating Solutions</strong></p>
<p>Over the course of my engineering career I&#8217;ve read a ton of <a href="http://femgineer.com/reading-list/">design books</a>, because my personal mission of becoming an engineer was to build things that improve human life.  So I wanted to build products that had an emotional appeal, and people would derive joy and want to use them all the time.  Life is already full of stress, the last thing I want to do is cause someone to have a bad day because I built a shitty product.</p>
<p>We don&#8217;t build everything, especially if we can find a good off the shelf solution.  If we don&#8217;t find one we&#8217;ll either build it ourselves, and if its not cost-effective then we&#8217;ll wait until we can afford to build it.  This of course means we&#8217;re spending a lot of time doing research, talking to vendors, understanding terms of service, and understanding the long terms implications of the partnership.</p>
<p>Trade-offs: this can stall product development but its important to know who you&#8217;re getting hitched to <img src='http://femgineer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I can&#8217;t speak for other startup founders but as one who wears both the business and technical hat I&#8217;ve had the freedom to create a company and engineering culture that I&#8217;ve grown to love and can be proud of.  I have to give a LOT of credit to my two developers: <a href="http://alexnotov.com/" target="_blank">Alex Notov</a> and <a href="http://twitter.com/#!/davidgrieser" target="_blank">David Grieser</a> who pushed me into implementing a lot of processes and have made me a much better femgineer.  I also want to thank <a href="http://www.taggert.net/wordpress/" target="_blank">Jesse Taggert</a> for her help with product design, and introducing us to <a href="http://kfitzapprentice.wordpress.com/" target="_blank">Kevin Fitzpatrick</a> at  <a href="http://pivotallabs.com/" target="_blank">Pivotal Labs</a>.  And last but not least <a href="http://lyndit.com/" target="_blank">Lyndi Thompson</a> our buzz bee who spreads the word about our product and team, and keeps encouraging me to write code and blog posts.</p>
<p>Its been a good year and I look forward to continuing to build BizeeBee in 2012!</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Culture+of+Constraints+http://tinyurl.com/79fs7ew" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Culture+of+Constraints+http://tinyurl.com/79fs7ew" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2011/12/culture-of-constraints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post-Launch Prep II</title>
		<link>http://femgineer.com/2010/12/post-launch-prep-ii/</link>
		<comments>http://femgineer.com/2010/12/post-launch-prep-ii/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 19:12:42 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[My Startup]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=834</guid>
		<description><![CDATA[
After launching BizeeBee I realized that my initial post on what to do after you launch wasn&#8217;t enough to cover all the work that the BizeeBee team has done after launching and thought I&#8217;d share some of our efforts.  We launched BizeeBee about three weeks ago with a few yoga studios across the nation.  The on-boarding process ]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://femgineer.com/wp-content/uploads/2010/12/Screen-shot-2010-12-28-at-11.09.17-AM.png" rel="lightbox[834]"><img title="Screen shot 2010-12-28 at 11.09.17 AM" src="http://femgineer.com/wp-content/uploads/2010/12/Screen-shot-2010-12-28-at-11.09.17-AM-300x208.png" alt="" width="300" height="208" /></a>After launching <a href="http://www.bizeebee.com" target="_blank">BizeeBee</a> I realized that my initial <a href="http://femgineer.com/2010/03/post-launch-prep/" target="_blank">post</a> on what to do after you launch wasn&#8217;t enough to cover all the work that the BizeeBee team has done after launching and thought I&#8217;d share some of our efforts.  We launched BizeeBee about three weeks ago with a few yoga studios across the nation.  The on-boarding process was pretty smooth, but once we had customers up and running I had an epiphany:  we have <em>paying</em> customers who <em>depend</em> on us for their livelihood, and we are a <em>reflection</em> of their business.  The team&#8217;s entire perspective about how we were managing our development process changed!  Here are the key things we added to our process:</p>
<p><strong>1. Backup and Restore</strong></p>
<p>We were responsible for the reliability of our users&#8217; data.  They need this data to understand the health of their business and convey it to their customers.  If something happens we need to be able to retrieve their data and most importantly restore it!  So we started doing backups, initially daily, but will move to hourly.</p>
<p><strong>2. Testing</strong></p>
<p>We could no longer just deploy to production anytime we wanted because our users use our product daily and hourly to run their business.  While continuous deployment is pretty seamless, I was more afraid of introducing a bug during someone&#8217;s working hours, so I wanted plenty of time to test and do a hotfix if necessary.  If testing hasn&#8217;t been a priority in the alpha or beta, it should become an imperative once you&#8217;ve launched.</p>
<p>Even if you don&#8217;t have time to setup a full regression suite, you can take a cue from our development process:  we have all our flows documented, and run through all of them manually every night, even if the feature hasn&#8217;t been touched in months.  We also test across the three major browsers: Chrome, Safari, and Firefox.  The last thing I want to break is something simple like password recovery or deal with browser interoperability issues.  We&#8217;re working on creating an automated suite that will run daily to ensure code quality.</p>
<p><strong>3. Branches</strong></p>
<p>I initially disliked <a href="http://github.com" target="_blank">GitHub</a> but now I love it!  It has made branching and merging a breeze because unlike SVN the cost of checking out and switching between branches is very low.  It doesn&#8217;t suffer from the same large data footprint that SVN does.  We created 4 categories of branches: master (current development branch), features (one off apps like internal tools), releases, and hotfixes, and also setup a policy of what could be checked into each branch.  For example, once a release branch has been created we can no longer check in new features only bug fixes.  Instituting these kinds of policies minimizes risk of introducing a bug after a release, and people have a good understanding of the ongoing changes in each released version.</p>
<p><strong>4. Track Customer Support Issues</strong></p>
<p>I created an admin tool that lets me login daily to see our user growth count and feature usage.  This also lets myself and my team troubleshoot any issues that customers might be facing.  It has read-only access to their data and the authorization is limited.  If you find yourself constantly querying logs and databases, and have teammates who don&#8217;t know SQL or how to query logs then creating a tool that reflects the data empowers them.  And resolving customer support issues as quickly as possible is critical to the quality of your startup!</p>
<p>These are just a few changes we made, but we&#8217;ve got even more in the pipeline: more data encryption, site monitoring, and scaling the system based on growth rate.  I&#8217;ll post another follow-up once we tackle those shortly.</p>
</div>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Post-Launch+Prep+II+http://tinyurl.com/3cjtq28" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Post-Launch+Prep+II+http://tinyurl.com/3cjtq28" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/12/post-launch-prep-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby Tuesday: Pitfalls of Prototyping in Rails</title>
		<link>http://femgineer.com/2010/06/ruby-tuesday-pitfalls-of-prototyping-in-rails/</link>
		<comments>http://femgineer.com/2010/06/ruby-tuesday-pitfalls-of-prototyping-in-rails/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 06:43:12 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Ruby Tuesday]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=726</guid>
		<description><![CDATA[My last Ruby Tuesday post was pretty laudatory regarding prototyping in Rails.  In this post I&#8217;m switching gears and exposing the pains and limitations with Rails.
The development team at my current startup is composed of engineers and designers, basically I make everyone on the team write code    I understand that Rails&#8217; benefit is ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/06/Screen-shot-2010-01-12-at-4.36.23-PM.png" rel="lightbox[726]"><img class="alignleft size-full wp-image-752" title="Screen shot 2010-01-12 at 4.36.23 PM" src="http://femgineer.com/wp-content/uploads/2010/06/Screen-shot-2010-01-12-at-4.36.23-PM.png" alt="" width="134" height="59" /></a>My last Ruby Tuesday post was pretty laudatory regarding prototyping in Rails.  In this post I&#8217;m switching gears and exposing the pains and limitations with Rails.</p>
<p>The development team at my current <a href="http://bizeebee.com">startup</a> is composed of engineers and designers, basically I make everyone on the team write code <img src='http://femgineer.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />   I understand that Rails&#8217; benefit is in thinking from an MVC mindset.  But because it integrates all components its requires that all developers have some knowledge of a high level language (Java, Ruby), front-end technologies (HTML, CSS), and an understanding of databases.  While it doesn&#8217;t require them to have depth of knowledge I think the tight coupling makes it hard to separate the layers.</p>
<p>The following are the three limitations I&#8217;ve been experiencing with Rails:</p>
<ol>
<li>Integration &#8211; when it comes time to integrate HTML or design changes, designers and front-end engineers need to work in the same space i.e. the same .erb.html file.  Yes I know it doesn&#8217;t require a painful and time-consuming compilation process like XMLC or Velocity.  But its easier for the designer to change the look and feel using XMLC or Velocity because they have defined a set of DOM objects.  With Rails designers have to understand views and partials.</li>
<li>Convention over configuration &#8211; the speed of development with convention over configuration Rails seems to come at the price of normalization, meaning there  is not foreign key construct in Rails.  You as a developer are required to configure this yourself along with other database constructs like unique constraints and indexes.</li>
<li>Deprecation &#8211; perhaps its just me, and I&#8217;m used to Java versions being released every year or two, but it seems like there are a lot of constructs that are deprecated between Rails versions.  The book publishers can barely keep up with the changes.  The other is that some of the constructs that are deprecated which I think are quite large i.e. scaffolding.</li>
</ol>
<p>Despite these pitfalls I do advocate Rails as a prototyping platform.  The learning curve isn&#8217;t steep, and convention over configuration improves the progress developers can make in a day.  I&#8217;d also like to learn more about how people have addressed these pitfalls as their prototype matures.  What have been some of your experiences and approaches to dealing with Rails as you transition and build out the product?</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Pitfalls+of+Prototyping+in+Rails+http://tinyurl.com/44fzq5r" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Pitfalls+of+Prototyping+in+Rails+http://tinyurl.com/44fzq5r" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/06/ruby-tuesday-pitfalls-of-prototyping-in-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Basics</title>
		<link>http://femgineer.com/2010/03/jquery-basics/</link>
		<comments>http://femgineer.com/2010/03/jquery-basics/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 00:14:25 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=646</guid>
		<description><![CDATA[I&#8217;d been hearing a lot of buzz around jQuery and how much developers like it.  While I myself am not a front-end developer and prefer doing mostly back-end work in Java or Rail, after I saw jQuery in action at SXSWi I wanted to learn to code it in first hand.
One of the reasons I ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/03/Screen-shot-2010-03-20-at-5.11.19-PM.png" rel="lightbox[646]"><img class="alignleft size-full wp-image-647" title="Screen shot 2010-03-20 at 5.11.19 PM" src="http://femgineer.com/wp-content/uploads/2010/03/Screen-shot-2010-03-20-at-5.11.19-PM.png" alt="" width="252" height="99" /></a>I&#8217;d been hearing a lot of buzz around jQuery and how much developers like it.  While I myself am not a front-end developer and prefer doing mostly back-end work in Java or Rail, after I saw jQuery in action at SXSWi I wanted to learn to code it in first hand.</p>
<p>One of the reasons I never liked coding in JavaScript is because I didn&#8217;t like it being dynamically typed language and having to deal with retrieving DOM elements based on their names and the ability for the namespace to constantly change.  I also found it cumbersome to have to deal with integrating CSS and JavaScript.  jQuery resolves a lot of these issues for me.  jQuery is basically a JavaScript library that lets developers manipulate DOM objects as if they were POJOs, and also manipulate objects based on their CSS classes.  It also has an extensive animation library giving user a richer experience.</p>
<p>For those out there who are new to JavaScript I highly recommend the following sequence of tutorials:</p>
<ol>
<li><a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery" target="_blank">Getting Started with jQuery</a></li>
<li><a href="http://docs.jquery.com/Tutorials">Additional Tutorials</a></li>
<li><a href="http://interface.eyecon.ro/" target="_blank">Pretty jQuery Interfaces</a></li>
<li><a href="http://www.ajaxtutorial.net/" target="_blank">AJAX with jQuery</a></li>
</ol>
<p>And of course you need the requisite tools to get up and running so I&#8217;d recommend downloading the lates version of FireFox and installing the <a href="http://getfirebug.com/" target="_blank">Firebug</a> plugin to help with debugging any JavaScript issues you might have.</p>
<p>If you want to get further into jQuery check out the main <a href="http://jquery.org/" target="_blank">site</a>, which includes a testing framework QUnit,</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=jQuery+Basics+http://tinyurl.com/3chvcg8" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=jQuery+Basics+http://tinyurl.com/3chvcg8" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/03/jquery-basics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SXSWi iPhone Insights</title>
		<link>http://femgineer.com/2010/03/sxswi-iphone-insights/</link>
		<comments>http://femgineer.com/2010/03/sxswi-iphone-insights/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 05:56:20 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=618</guid>
		<description><![CDATA[At the SXSWi conference this past week I attended a lot of great talks on iPhone applications that covered its user experience, development, and how to create apps that emulate the features of a native app but are quicker and easier to create.
User Experience
Josh Clark&#8217;s talk on creating apps that are &#8220;TapWorthy Applications&#8221; was one of ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/03/Screen-shot-2010-03-16-at-10.54.11-PM.png" rel="lightbox[618]"><img class="alignright size-full wp-image-625" title="Screen shot 2010-03-16 at 10.54.11 PM" src="http://femgineer.com/wp-content/uploads/2010/03/Screen-shot-2010-03-16-at-10.54.11-PM.png" alt="" width="210" height="280" /></a>At the SXSWi conference this past week I attended a lot of great talks on iPhone applications that covered its user experience, development, and how to create apps that emulate the features of a native app but are quicker and easier to create.</p>
<p><strong>User Experience</strong></p>
<p><a href="http://globalmoxie.com/index.shtml" target="_blank">Josh Clark</a>&#8217;s talk on creating apps that are &#8220;TapWorthy Applications&#8221; was one of the best talks I attended.</p>
<p>The following categories have successful iPhone applications because they focus on what the user wants to accomplish while &#8220;on-the-go&#8221;:</p>
<ul>
<li>microtasking</li>
<li>capturing lost time</li>
<li>location based</li>
<li>entertainment</li>
</ul>
<p>Each of these categories requires improving the quality of each tap by making it very  useful for users.   To do this you have to think about the basic functionality that users want that is divided into primary and recurring tasks.  Simplifying the design requires focusing on the mobile context, what the user is trying to accomplish when micro-tasking,  creating opportunities for exploring &#8211; secret panels and hidden doors to provide additional functionality without cluttering the design, and to think about ergonomics and industrial design so that it is easy to use the application itself.  You will also want to condense the amount of data that is being presented to users, which Josh describes as the &#8220;glance test&#8221;, i.e. a lot of information can be gleaned by just glancing at the app.  Apps that do this well incorporate large graphics and minimum amounts of data e.g. Weather App.</p>
<p>Finally prototyping on paper is a good way to figure out what it is users actually want and how they interact with the app before spending a lot of time building a code base for it.</p>
<p><strong>Development</strong></p>
<p><a href="http://jonathanstark.com/" target="_blank">Jonathan Stark</a>&#8217;s presentation focused on developing browser based mobile applications but still provide a lot of the richness of a native app.  To accomplish this feat he suggests using the following tools and APIs: jQTouch, PhoneGap, CSS3 and HTML5.</p>
<p><a href="http://www.jqtouch.com/" target="_blank">jQTouch</a> is a jQuery plug for developing mobile applications that emulate a lot of the functionality that a native iPhone app would have.  The app loads in Safari but has a lot of the same characteristics that a native iPhone app would.  The benefit is that it is a lot faster to develop and does not need to be approved by the App Store.</p>
<p><a href="http://phonegap.com/">PhoneGap</a> essentially fills in the gaps of taking a web-based application and transferring it to a mobile platform.</p>
<div><span style="font-family: arial, sans-serif;"><span style="border-collapse: collapse; line-height: normal; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></span></div>
<div><span style="font-family: arial, sans-serif;"><span style="border-collapse: collapse; line-height: normal; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><br />
</span></span></div>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=SXSWi+iPhone+Insights+http://tinyurl.com/3c2a8wx" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=SXSWi+iPhone+Insights+http://tinyurl.com/3c2a8wx" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/03/sxswi-iphone-insights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importance of an IDE</title>
		<link>http://femgineer.com/2010/02/importance-of-an-ide/</link>
		<comments>http://femgineer.com/2010/02/importance-of-an-ide/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 07:35:27 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=535</guid>
		<description><![CDATA[The first time I saw my VP of Engineering use Idea Intellij I feel in love with it!  All those shortcuts, a debugger, running a server, refactoring code, inserting exception handling, and the ability to do auto-complete!  I was coming from an Emacs, NEdit, VI background, which are all powerful in their own right.  I ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.38.16-PM1.png" rel="lightbox[535]"><img class="alignleft size-medium wp-image-541" title="Screen shot 2010-02-03 at 11.38.16 PM" src="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.38.16-PM1-300x169.png" alt="" width="300" height="169" /></a>The first time I saw my VP of Engineering use Idea Intellij I feel in love with it!  All those shortcuts, a debugger, running a server, refactoring code, inserting exception handling, and the ability to do auto-complete!  I was coming from an Emacs, NEdit, VI background, which are all powerful in their own right.  I loved Emacs, because I could switch between files quickly and compile in a single window, which is great for C and C++ development.  NEdit is great for hardware languages like Verilog and VHDL where you make a lot of single line edits.  And VI, was my first love, because of all those shortcuts!  But they all paled in comparison to Idea Intellij.  I used Idea for 3 years during the course of my Java development.  And then the unthinkable happened, I upgraded to version 8.0, and it sucked!  My experience was so bad that I reverted to version 7, and refused to upgrade while everyone else on my team upgraded.  I vehemently opposed upgrading for months because of the performance issues I faced.  None of the optimization techniques worked, and I forever remained an Idea 7 fangirl, while the rest of my team upgraded to version 9.  Developers hate waiting for code to compile, so why would they even tolerate an IDE that takes minutes to load or start a server, and brings the rest of your computer to a grinding halt.</p>
<p><a href="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.40.55-PM.png" rel="lightbox[535]"><img class="alignright size-full wp-image-539" title="Screen shot 2010-02-03 at 11.40.55 PM" src="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.40.55-PM.png" alt="" width="339" height="83" /></a>It&#8217;s been over a month since I&#8217;ve done Java development.  I&#8217;ve moved onto learning Rails.  While I have been happy with TextMate for the most part, my application is starting to get more complex, and I find myself constantly switching between files.  I&#8217;m also really lazy when it comes to typing and love shortcuts and autocomplete functionality.  Hence the quest to search for an IDE has begun again.  Currently, I&#8217;m playing with <a href="http://www.radrails.org/" target="_blank">Aptana RadRails</a>.  I decided to install the full application instead of an Eclipse plugin because I wanted to see it in its full glory.  I&#8217;m not a huge fan of Eclipse, but I know its probably the best free IDE out there with the most language plugins.  As my application becomes more complex and involves more languages I&#8217;ll switch over to Eclipse.  Or maybe just maybe I&#8217;ll give Idea 9 a shot&#8230;</p>
<p><a href="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.39.27-PM.png" rel="lightbox[535]"><img class="alignleft size-medium wp-image-540" title="Screen shot 2010-02-03 at 11.39.27 PM" src="http://femgineer.com/wp-content/uploads/2010/02/Screen-shot-2010-02-03-at-11.39.27-PM-300x155.png" alt="" width="300" height="155" /></a>A happy developer is a productive developer.  Sitting around and waiting for stuff to load or compile is time sunk.  An IDE makes or breaks a developers productivity.  A good IDE handles all development tasks and all stages of development: coding, debugging, refactoring, testing, and running the web app.  An awesome IDE provides the ability to integrate multiple languages like JavaScript, Java, and HTML, which is crucial for a developer like myself who deals with the whole stack (front and back-end).  But the most important factors are speed and ease-of-use.  An IDE should be blazing fast; I don&#8217;t want it to suck up memory, take minutes to load, and forever to synchronize changes.  Some nice to haves features are integration with code repositories and doing error checking (e.g. highlight unused references, static code analysis).</p>
<p>But the main reason I like IDEs is because I a like having single tool that slices and dices, and moves me seamlessly through each stage of development.</p>
<p>Quick video on installing RadRails: http://vimeo.com/channels/radrails#6450292</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Importance+of+an+IDE+http://tinyurl.com/3derv92" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Importance+of+an+IDE+http://tinyurl.com/3derv92" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/02/importance-of-an-ide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ruby Tuesday: Debugging</title>
		<link>http://femgineer.com/2010/02/ruby-tuesday-debugging/</link>
		<comments>http://femgineer.com/2010/02/ruby-tuesday-debugging/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 03:13:46 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Ruby Tuesday]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=530</guid>
		<description><![CDATA[When I was a freshman at Duke, coding away in Teer basement, I would often hear disgruntled engineers shout: &#8220;Damn, I&#8217;ve got 300 syntax errors, I left off the semicolon!  Why does everything have to be so exact?&#8221;  Those were the days of coding in C++, a language in which you had to actually compile, ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-12-at-4.36.23-PM1.png" rel="lightbox[530]"><img class="alignleft size-full wp-image-515" title="Screen shot 2010-01-12 at 4.36.23 PM" src="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-12-at-4.36.23-PM1.png" alt="" width="134" height="59" /></a>When I was a freshman at Duke, coding away in Teer basement, I would often hear disgruntled engineers shout: &#8220;Damn, I&#8217;ve got 300 syntax errors, I left off the semicolon!  Why does everything have to be so exact?&#8221;  Those were the days of coding in C++, a language in which you had to actually compile, but hey it was faster than punchcards!</p>
<p>Nowadays we have dynamic typed languages like Ruby that don&#8217;t even require semicolons!  But that doesn&#8217;t mean we&#8217;re in the clear.  We still have to debug.  RoR has done a good job of building in a lot of debugging tools.</p>
<p>Here is my philosophy and methodology for debugging:</p>
<ol>
<li><strong>Errors and Exceptions are the easiest:</strong> Load the web app, if there is an error or exception thrown in the webpage tackle that first.  If I don&#8217;t know what the exception means e.g. InvalidAuthenticityToken, I will look it up.  And read about it and usually that will lead me to a solution.</li>
<li><strong>I love logs!</strong> If the web app seems to load properly, but some functionality is broken I go look at the logs.  You can add log statements based on the level of logging you want to controllers in RoR with the following code: <span style="font-family: Courier;">logger.debug &#8220;BUGGY&#8221; or logger.info &#8220;YO&#8221; </span></li>
<li><strong>Data Corruption: to the Database!</strong> If the data appears to be displayed incorrectly then I go straight to the database.</li>
<li> <strong>Look &amp; Feel</strong>: if something is off with the way the page is rendered then it is most likely something I did wrong in HTML or CSS.  I like using Firebug for CSS issues.</li>
<li><strong><em>Vijayashanker Code</em></strong> If something is off about the functionality, and I have a sense of where it is happening I will go through and read my code.</li>
<li><strong>Debugger Last</strong>: I&#8217;m not really a lazy person, but setting breakpoints and stepping through code can be tedious.  So I save this as a last resort if I can&#8217;t use any of the above techniques to find my bug.</li>
<li><strong>I hate &#8220;debug&#8221; statements! </strong>I&#8217;m a neat freak, I don&#8217;t like polluting my code with debug statement, and creating more work for myself in having to go and remove them later.  If I can&#8217;t get the debugger to do what I want then I will resort to using debug statements.</li>
</ol>
<p>As I was debugging today I discovered a few good resources here are a few of them:</p>
<ul>
<li><a href="http://guides.rubyonrails.org/debugging_rails_applications.html" target="_blank">Debugging Rails Applications</a> (walks you through common debugging techniques and also explains logging levels and configurations)</li>
<li><a href="http://maintainable.com/articles/rails_logging_tips" target="_blank">Logging Tips</a> (Everything you ever wanted to know relating to logging in RoR)</li>
<li><a href="http://groups.google.com/group/rubyonrails-talk" target="_blank">RoR Google Group</a> (I found solutions and insights into most of the problems I was experiencing today)</li>
</ul>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Debugging+http://tinyurl.com/3pt3kf4" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Debugging+http://tinyurl.com/3pt3kf4" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/02/ruby-tuesday-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby Tuesday: Podcast</title>
		<link>http://femgineer.com/2010/01/ruby-tuesday-podcast/</link>
		<comments>http://femgineer.com/2010/01/ruby-tuesday-podcast/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 01:48:33 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Ruby Tuesday]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=514</guid>
		<description><![CDATA[I find it hard to learn with just one medium like a classroom or a book.  I need multiple sources of information to drill home a subject (I could of course just be dense).  I started learning Ruby on Rails with tutorials, which are great if you want to learn a few things and do ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-12-at-4.36.23-PM1.png" rel="lightbox[514]"><img class="alignleft size-full wp-image-515" title="Screen shot 2010-01-12 at 4.36.23 PM" src="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-12-at-4.36.23-PM1.png" alt="" width="134" height="59" /></a>I find it hard to learn with just one medium like a classroom or a book.  I need multiple sources of information to drill home a subject (I could of course just be dense).  I started learning Ruby on Rails with tutorials, which are great if you want to learn a few things and do it quickly (and also to kill time while you are waiting on Amazon to deliver your Ruby book).  But tutorials aren&#8217;t enough to understand the depth of the subject they aren&#8217;t enough.   The next phase of my learning is focused on working through the chapters of <em>Agile Web Development with Rails</em>.  It does a good job of presenting the use cases for Ruby on Rails, giving you a project to work on throughout the course of the book, and also explaining what tools to use in development.</p>
<p>I also like learning and being outside.  So I&#8217;ve started a tradition of podcasts and power walks.    I really like listening to: <a href="http://www.buildingwebapps.com/podcasts" target="_blank">Learning Rails</a>.  The podcast is free and you can subscribe to it on iTunes.  If you visit the site you can also download the screen casts.  If you haven&#8217;t yet gone through book exercises I&#8217;d recommend looking at the screen casts while listening to the podcasts, it makes it easier to follow and understand what Michael and Christopher are talking about.</p>
<p>I&#8217;ll cover video tutorials in the next Ruby Tuesday.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Podcast+http://tinyurl.com/3eh72f9" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Ruby+Tuesday%3A+Podcast+http://tinyurl.com/3eh72f9" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/01/ruby-tuesday-podcast/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Takeaways from Girls in Tech: Catalyst Conference</title>
		<link>http://femgineer.com/2010/01/takeaways-from-girls-in-tech-catalyst-conference/</link>
		<comments>http://femgineer.com/2010/01/takeaways-from-girls-in-tech-catalyst-conference/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 01:27:44 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=510</guid>
		<description><![CDATA[Today I attend the Girls in Tech: Catalyst Conference at the Common Wealth Club in San Francisco.  It was a great meeting ground for all girls in tech.  I was introduced to VCs, CEOs, and of course fellow femgineers!  My panel was: &#8220;Curious About Coding &#38; Developing: Developing Creativity &#38; Building a Business.&#8221;  Here is ]]></description>
			<content:encoded><![CDATA[<p><a href="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-26-at-4.45.56-PM.png" rel="lightbox[510]"><img class="alignleft size-full wp-image-511" title="Screen shot 2010-01-26 at 4.45.56 PM" src="http://femgineer.com/wp-content/uploads/2010/01/Screen-shot-2010-01-26-at-4.45.56-PM.png" alt="" width="158" height="258" /></a>Today I attend the Girls in Tech: Catalyst Conference at the Common Wealth Club in San Francisco.  It was a great meeting ground for all girls in tech.  I was introduced to VCs, CEOs, and of course fellow femgineers!  My panel was: &#8220;Curious About Coding &amp; Developing: Developing Creativity &amp; Building a Business.&#8221;  Here is what I learned from the Q&amp;A period and hallway conversations I had with other girls:</p>
<ol>
<li>Women want to code!</li>
<li>Entrepreneurs want to understand where they can meet developers and how to interact and motivate them to join their startups (this is gender neutral).</li>
<li>There is a growing gap between entrepreneurs and engineers (once again gender neutral).</li>
</ol>
<p>Because the panel was brief some questions on each of these points went unaddressed.  I&#8217;m going to attempt to address some of them now.</p>
<p>1. Just do it!  Seriously, if women in their 20s can run companies, 30s can run marathons, 40s can give birth then they can certainly code!  Any new skill is daunting (believe me I&#8217;ve tried snowboarding on blues&#8230;)  But the key to learning a new skill is patience, practice, and perseverance.  Start by figuring out what you ultimately want to do e.g. designing websites (CSS, HTML, Illustrator/PhotoShop), creating software programs or web applications (Java, Ruby), or pulling data for business reports (mySQL).  Next evaluate what kind of learner you are: self or group?  If you are good at self-study then go do some tutorials.  Don&#8217;t do it all in one shot, pace yourself!  And if you like learning in groups then go attend a workshop or a class.  You can enhance your learning with podcasts on the subject (there are a ton on iTunes), and reading books on the topic.</p>
<p>2. Its no secret developers are a nose-to-the-grindstone bunch.  Good developers are especially hard to meet in the wild <img src='http://femgineer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Here are a few secret hide-outs: Hacker Dojo (Mountain View), Meetups (Ruby, Java, iPhone, Android) along the peninsula hosted monthly, and of course un-conferences like CodeCamp, She&#8217;s Geeky, and Chirp.</p>
<p>I hate to stereotype but I think there are two key motivating factors: building cool stuff, and solving tough problems.  By building cool stuff I mean developers who like to work in a fast paced environment, like a startup, and be a part of a product&#8217;s evolution.  By solving tough problems I mean developers who like to work in a stable environment and think about tough engineering problems like scaling a database or improving the performance of a site to load photos really fast.  Figure out which you want for your company or team.  Then motivate them, first and foremost with projects, and second with the autonomy to build or work on those projects and drive the direction of them.</p>
<p>3. This is mostly a communication issue.  I&#8217;ve noticed a growing trend in entrepreneurs understanding jargon, and even what technologies work best for front vs. back-end development.  But I have yet to see a movement in the developer community  to create a more articulate bunch of coders that can clearly explain tradeoffs in laymen&#8217;s terms e.g. more servers == more $$ or more code clean up == more developer time.  I think such initiatives needs to start at the university level, perhaps by incorporating a public speaking component to the curriculum.  And in companies managers should <em>force</em> their developers to explain projects and give presentations that are across departments.  I don&#8217;t think agile does a good job of emphasizing the need to be articulate, but I think it would help with the entire product development process.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Takeaways+from+Girls+in+Tech%3A+Catalyst+Conference+http://tinyurl.com/42vzk7h" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Takeaways+from+Girls+in+Tech%3A+Catalyst+Conference+http://tinyurl.com/42vzk7h" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2010/01/takeaways-from-girls-in-tech-catalyst-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freemarker Browser Issue with Date Formatting</title>
		<link>http://femgineer.com/2009/11/freemarker-browser-issue-with-date-formatting/</link>
		<comments>http://femgineer.com/2009/11/freemarker-browser-issue-with-date-formatting/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 22:49:24 +0000</pubDate>
		<dc:creator>Poornima</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://femgineer.com/?p=341</guid>
		<description><![CDATA[When I have to write an internal tool I use Freemarker as my templating engine of choice, because in one file I can write html, and then access Java objects that are passed in a model.  Its faster to use for development than engines like Velocity or XMLC, and has enough functionality to write ]]></description>
			<content:encoded><![CDATA[<p>When I have to write an internal tool I use Freemarker as my templating engine of choice, because in one file I can write html, and then access Java objects that are passed in a model.  Its faster to use for development than engines like Velocity or XMLC, and has enough functionality to write the UI for a tool.  The Java objects values are resolved using reflection, to either Strings or Integers.</p>
<p>Recently I ran into a browser compatibility issue.  When I used the following code</p>
<blockquote><p>&lt;#assign currentDate=myObject.todaysDate?date?string.short&gt;</p>
<p>&lt;td&gt;${currentDate}&lt;/td&gt;</p></blockquote>
<p>The dates would render the current date but in the wrong millenium only in Firefox.</p>
<p>The solution is to instead do the following:</p>
<blockquote><p>&lt;td&gt;${myObject.runDate?date}&lt;/td&gt;</p></blockquote>
<p>The correct date is printed.  The format is month name, date, and year, and it also contains a timestamp.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Freemarker+Browser+Issue+with+Date+Formatting+http://tinyurl.com/3nh9vyf" title="Post to Twitter"><img class="nothumb" src="http://femgineer.com/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Freemarker+Browser+Issue+with+Date+Formatting+http://tinyurl.com/3nh9vyf" title="Post to Twitter">Tweet This Post</a></p>]]></content:encoded>
			<wfw:commentRss>http://femgineer.com/2009/11/freemarker-browser-issue-with-date-formatting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

