<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I am a software developer and cyclist in Hartford, Connecticut.</description><title>Software, Cycling</title><generator>Tumblr (3.0; @recalde)</generator><link>http://softwarecycling.com/</link><item><title>AppHarbor and Heroku Pricing</title><description>&lt;p&gt;Last year, I wrote a little about my first experience with AppHarbor &lt;strong&gt;&lt;a href="http://softwarecycling.com/post/4391295436/appharbor-paas-hosting"&gt;building a small prototype&lt;/a&gt;&lt;/strong&gt; website.  The experience was great, and I was excited to see a free PaaS offering for the .NET stack (especially since C# / MVC3 is my primary development platform at work.)&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;A few months later, I &lt;strong&gt;&lt;a href="http://softwarecycling.com/post/11448189675/grassroots-policy"&gt;rewrote the site in Rails on Heroku&lt;/a&gt;&lt;/strong&gt;, to get a little more experience with Rails.  Both experiences were similar, both platforms offered the similar features (Web Server, Database, Custom Host Names) for free, the only real difference being platform maturity and server-side technologies.&lt;/p&gt;
&lt;p&gt;The beauty of these platforms is that they provide the infrastructure for hobbyists to publish websites for free, with a seamless, future-proof ability to scale.&lt;/p&gt;
&lt;p&gt;Yesterday &lt;strong&gt;&lt;a href="http://blog.appharbor.com/2012/02/02/announcing-pricing"&gt;AppHarbor announced a new pricing structure&lt;/a&gt;&lt;/strong&gt; which includes an official free tier called &amp;#8220;Canoe.&amp;#8221;  One aspect of the pricing that I think caught a lot of people&amp;#8217;s attention is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you are happy with the Canoe plan and just need custom hostnames or SNI SSL, those can be added a la carte for $10/month. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To me, this is rather disappointing.  Most of what I do outside of work is not for profit&amp;#8230; I play with new technologies, make small websites for friends, and once in a while I prototype applications for businesses that aren&amp;#8217;t ready to make the leap to a paid solution.  If I have a host name to use on one of those projects, it would be nice not to have to pay $120/year to do it&amp;#8230;&lt;/p&gt;
&lt;p&gt;My two cents, keep custom hostnames free, focus on continuing to build out scalability features, and then target revenue from large companies &lt;strong&gt;&lt;a href="http://success.heroku.com/"&gt;like heroku&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS:  I still highly recommend both Heroku and AppHabor!&lt;/em&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/16983295350</link><guid>http://softwarecycling.com/post/16983295350</guid><pubDate>Fri, 03 Feb 2012 13:41:00 -0500</pubDate></item><item><title>Grassroots Policy</title><description>&lt;a href="http://grassrootspolicy.com"&gt;Grassroots Policy&lt;/a&gt;: &lt;p&gt;&lt;strong&gt;&lt;a title="Grassroots Policy" href="http://grassrootspolicy.com/"&gt;GrassrootsPolicy.com&lt;/a&gt;&lt;/strong&gt; is a website I’ve been working on in Ruby on Rails, hosted on Heroku.  The idea of the site is that users &lt;strong&gt;post&lt;/strong&gt;, &lt;strong&gt;vote&lt;/strong&gt;, and &lt;strong&gt;comment&lt;/strong&gt; on &lt;strong&gt;political ideas&lt;/strong&gt;. If you feel passionate about an idea you can share the link with your friends, and encourage them to provide feedback and vote on the issue.  Top ideas might get the attention of elected officials who can do something about it.&lt;/p&gt;
&lt;p&gt;&lt;img height="210" width="400" alt="Grassroots Policy" src="https://lh5.googleusercontent.com/-OYbdmPna92s/TpihuKEkG8I/AAAAAAAAEKI/WR1BJKUr3Bw/s400/Screen%252520Shot%2525202011-10-14%252520at%2525204.54.23%252520PM.png"/&gt;&lt;/p&gt;
&lt;p&gt;So far, Rails has made a few features easy…&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;User registration and login is implemented with gem ‘devise’&lt;/li&gt;
&lt;li&gt;Threaded comments are implemented with gem ‘awesome_nested_set’ and rails partial views.&lt;/li&gt;
&lt;li&gt;jQuery and jQuery UI are used in a lot of the default templates, tabs, and ajax postbacks for commenting, voting, and posting new ideas.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I’ve got a handful of features to implement, which I should probably start to manage on &lt;a href="http://trello.com"&gt;trello.com&lt;/a&gt;… but for now &lt;strong&gt;please &lt;/strong&gt;Register, Vote, Comment and post your own Ideas!&lt;/p&gt;
&lt;p&gt;PS, the code is messy, but if you feel like taking a look its out on &lt;a title="Github-Grassroots" href="https://github.com/recalde/Grassroots"&gt;github.com/recalde/grassroots&lt;/a&gt;.&lt;/p&gt;</description><link>http://softwarecycling.com/post/11448189675</link><guid>http://softwarecycling.com/post/11448189675</guid><pubDate>Fri, 14 Oct 2011 17:06:39 -0400</pubDate></item><item><title>Salesforce showFilePreview</title><description>&lt;a href="https://gist.github.com/1253878"&gt;Salesforce showFilePreview&lt;/a&gt;: &lt;p&gt;Here’s a &lt;a href="https://gist.github.com/1253878"&gt;code snippet&lt;/a&gt; showing how to use the Chatter file-preview dialog from a Visualforce page.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-6lsmsimamvg/ToXSfPebVJI/AAAAAAAAEJU/8HmvhUTaQJs/s400/filepreview.PNG" alt="showFilePreview Dialog" width="400" height="301"/&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/10847679195</link><guid>http://softwarecycling.com/post/10847679195</guid><pubDate>Fri, 30 Sep 2011 10:31:00 -0400</pubDate></item><item><title>Bicycle Tour of Colorado</title><description>&lt;a href="http://goo.gl/8kU7j"&gt;Bicycle Tour of Colorado&lt;/a&gt;: &lt;p&gt;Facebook &lt;a href="http://goo.gl/8kU7j"&gt;photo album&lt;/a&gt; from the Bicycle Tour of Colorado&lt;/p&gt;
&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-LhSWmGqNz_c/Tgi3jv1hzSI/AAAAAAAADho/vz-MB3oKerw/s400/lovelandpass.jpg" alt="Loveland Pass - Bicycle Tour of Colorado" width="400" height="300"/&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/6978148833</link><guid>http://softwarecycling.com/post/6978148833</guid><pubDate>Mon, 27 Jun 2011 13:04:00 -0400</pubDate></item><item><title>jQuery Grid Sample</title><description>&lt;a href="https://gist.github.com/1019552"&gt;jQuery Grid Sample&lt;/a&gt;: &lt;p&gt;Another &lt;a href="https://gist.github.com/1019552"&gt;code sample&lt;/a&gt; to demonstrate the new &lt;strong&gt;jQuery Grid (pre1.9)&lt;/strong&gt; widget on the &lt;strong&gt;Force.com&lt;/strong&gt; platform. This sample hooks up paging and selecting.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-S15lmzAH1l8/TfJ0EuE6xLI/AAAAAAAADhE/n9uqFPx6l-s/s400/GridScreenshot.JPG"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br/&gt;&lt;/em&gt;- &lt;a href="http://www.salesforce.com/us/developer/docs/ajax/index.htm"&gt;Salesforce AJAX Toolkit&lt;br/&gt;&lt;/a&gt;- &lt;a href="https://github.com/jquery/jquery-ui/tree/grid"&gt;jQuery UI Grid (Github)&lt;br/&gt;&lt;/a&gt;- &lt;a href="http://wiki.jqueryui.com/w/page/34246941/Grid"&gt;jQuery UI Grid Planning &amp; Development Wiki&lt;/a&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/6392098820</link><guid>http://softwarecycling.com/post/6392098820</guid><pubDate>Fri, 10 Jun 2011 15:25:00 -0400</pubDate><category>jquery</category><category>salesforce</category></item><item><title>jQuery Template Sample</title><description>&lt;a href="https://gist.github.com/1019529"&gt;jQuery Template Sample&lt;/a&gt;: &lt;p&gt;This &lt;a href="https://gist.github.com/1019529"&gt;code sample&lt;/a&gt; demonstrates how to use &lt;strong&gt;jQuery Template Plugin&lt;/strong&gt; on the &lt;strong&gt;Force.com&lt;/strong&gt; platform. This sample uses a SOQL query to select user data. The rendered template is switched onclick to an editable row. The updates are then persisted back to salesforce using the .update() javascript method. &lt;/p&gt;
&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-BzD2cBd6TtE/TfJ0iYzLeQI/AAAAAAAADhI/0lOv5YwJViw/s400/TemplateScreenshot.JPG"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br/&gt;&lt;/em&gt;- &lt;a href="http://www.salesforce.com/us/developer/docs/ajax/index.htm"&gt;Salesforce AJAX Toolkit&lt;/a&gt; &lt;br/&gt;- &lt;a href="https://github.com/jquery/jquery-tmpl"&gt;jQuery Templates (Github)&lt;/a&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/6391945497</link><guid>http://softwarecycling.com/post/6391945497</guid><pubDate>Fri, 10 Jun 2011 15:19:00 -0400</pubDate><category>jquery</category><category>salesforce</category></item><item><title>Silverlight on Windows 8</title><description>&lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-needs-to-tell-windows-8-developers-now-about-jupiter-and-silverlight/9608"&gt;Silverlight on Windows 8&lt;/a&gt;: &lt;p&gt;I like that Microsoft is elevating HTML/Javascript, but I generally disagree that Windows 8 is signalling an end to silverlight… this article includes some supporting evidence that Silverlight hasn’t been abandoned, yet.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: this is not an endorsement of Silverlight as a development platform for large complex applications.&lt;/em&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/6250131165</link><guid>http://softwarecycling.com/post/6250131165</guid><pubDate>Mon, 06 Jun 2011 11:20:24 -0400</pubDate></item><item><title>2011 Trek Madone 6.9 SSL dream bike built up at Manchester Cycle...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lllspkN2M01qg7d39o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;2011 Trek Madone 6.9 SSL&lt;/strong&gt; dream bike built up at Manchester Cycle Shop. The Mad Fiber wheels aren’t mine, yet, but the do look pretty sweet don’t they? Weight as pictured: 12lbs 14oz.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;SRAM Red 2011 (Black)&lt;/li&gt;
&lt;li&gt;Race XXX Lite Carbon Stem&lt;/li&gt;
&lt;li&gt;Race XXX Lite Carbon Handlebars&lt;/li&gt;
&lt;li&gt;Bontrager inForm RXL Saddle&lt;/li&gt;
&lt;li&gt;Bontrager Node2 Computer&lt;/li&gt;
&lt;li&gt;Look Keo Classic Pedals&lt;/li&gt;
&lt;li&gt;Reynolds DV-46T Tubular Wheelset&lt;/li&gt;
&lt;li&gt;Bontrager Race XXX Lite Tubular Tires&lt;/li&gt;
&lt;/ul&gt;</description><link>http://softwarecycling.com/post/5733548078</link><guid>http://softwarecycling.com/post/5733548078</guid><pubDate>Sun, 22 May 2011 11:36:00 -0400</pubDate><category>bike</category></item><item><title>Advice to a New Programmer</title><description>&lt;a href="http://www.code-magazine.com/Article.aspx?quickid=1105121"&gt;Advice to a New Programmer&lt;/a&gt;: &lt;p&gt;Nice article from Ted Neward in response to the question “I’m a new programmer, having moved over after 20 years as a systems guy. What do you wish somebody had taught you back when you were new?”&lt;/p&gt;</description><link>http://softwarecycling.com/post/4957424915</link><guid>http://softwarecycling.com/post/4957424915</guid><pubDate>Tue, 26 Apr 2011 11:17:18 -0400</pubDate><category>programming</category></item><item><title>2007 Cannondale CAAD9 purchased as a complete bike with Shimano...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ljltlgqvjJ1qg7d39o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;2007 Cannondale CAAD9&lt;/strong&gt; purchased as a complete bike with Shimano 105 on craigslist in 2008, and eventually swapped out everything but the original frame. It will probably become a dedicated hillclimb bike in preparation for the &lt;a href="http://www.mtwashingtonbicyclehillclimb.org/mwarbh/page.cfm/About-This-Race"&gt;2011 Mt. Washington Auto Road Bicycle Hillclimb&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;SRAM Force 2010 (Levers, Brakes, Front/Rear Derailleur)&lt;/li&gt;
&lt;li&gt;Shimano DuraAce 7800 (Crankset, Chain, Cassette)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.roadbikereview.com/cat/frames-and-forks/forks/easton/PRD_326183_2492crx.aspx"&gt;Easton EC-90 SLX Fork&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/08366"&gt;Bontrager Race XXX Lite Stem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/00286"&gt;Bontrager Race XXX Lite Seatpost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/00280"&gt;Bontrager Race Lite Handlebars&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/07135"&gt;Bontrager inform R Saddle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lookcycle.com/en/us/route/pedales/keo-classic.html"&gt;Look Keo Classic Pedals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.roadbikereview.com/mfr/reynolds/wheelsets/PRD_411248_5845crx.aspx"&gt;Reynolds DV-46T Tubular Wheelset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/07557"&gt;Bontrager Race XXX Lite Tubular Tires&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://softwarecycling.com/post/4585339997</link><guid>http://softwarecycling.com/post/4585339997</guid><pubDate>Wed, 13 Apr 2011 15:19:00 -0400</pubDate><category>bike</category></item><item><title>AppHarbor PaaS Hosting</title><description>&lt;p&gt;I just started working on a little proof-of-concept web app on &lt;strong&gt;&lt;a href="http://appharbor.com/"&gt;AppHarbor&lt;/a&gt;&lt;/strong&gt; (last night), which is an MVC3 PaaS similar to Heroku, except for .NET.&lt;/p&gt;
&lt;p&gt;So far I’m really impressed, and would recommend it to anyone as a development platform (still need to find out where it stands as a production environment…)&lt;/p&gt;
&lt;p&gt;Here’s what I have in place so far (~3 hours of work)&lt;!-- more --&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;AspNetMembershipProvider&lt;/strong&gt; on an AppHarbor 20mb SqlServer Instance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://weblogs.asp.net/haithamkhedre/archive/2011/03/13/openid-authentication-with-asp-net-mvc3-dotnetopenauth-and-openid-selector.aspx"&gt;DotNetOpenAuth&lt;/a&gt;&lt;/strong&gt; for OpenID authentication, integrated with AspNetMembership.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://nuget.org/List/Packages/elmah"&gt;ELMAH 1.1&lt;/a&gt;&lt;/strong&gt; – Error logging module.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://nuget.org/List/Packages/EntityFramework"&gt;Entity Framework 4.1 RC&lt;/a&gt;&lt;/strong&gt; – “&lt;a href="http://www.hanselman.com/blog/SimpleCodeFirstWithEntityFramework4MagicUnicornFeatureCTP4.aspx"&gt;Magic Unicorn&lt;/a&gt;”, Code-First &lt;a href="http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-2-table-per-type-tpt.aspx"&gt;Table-Per-Type (TPT)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.asp.net/ajaxlibrary/cdn.ashx"&gt;Microsoft’s CDN&lt;/a&gt;&lt;/strong&gt; for jQuery, jQueryUI, jQueryUI CSS, jQuery Templates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://dotnetslackers.com/articles/aspnet/Built-in-Unit-Test-for-ASP-NET-MVC-3-in-Visual-Studio-2010-Part-1.aspx"&gt;VisualStudio Unit-Test Framework&lt;/a&gt; - &lt;/strong&gt;AppHarbor will execute all your unit tests prior to deploying code!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://help.github.com/win-set-up-git/"&gt;GIT&lt;/a&gt; &lt;/strong&gt;– Local repository, with a Git push to AppHarbor to build/test/deploy code.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;For just a few hours, that&amp;#8217;s a pretty rich base to build an application on.  I haven&amp;#8217;t implemented &lt;strong&gt;any&lt;/strong&gt; front-end yet&amp;#8230; but I&amp;#8217;m looking forward to using some jQuery, JSON, and jQuery Templates!&lt;/p&gt;
&lt;p&gt;Here’s the website: &lt;strong&gt;&lt;a href="http://grassrootspolicy.com/"&gt;&lt;a href="http://grassrootspolicy.com/"&gt;http://grassrootspolicy.com/&lt;/a&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description><link>http://softwarecycling.com/post/4391295436</link><guid>http://softwarecycling.com/post/4391295436</guid><pubDate>Wed, 06 Apr 2011 11:06:00 -0400</pubDate><category>appharbor</category><category>asp.net mvc3</category></item><item><title>2008 Schwinn Madison with a few after-market parts to make her a...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_liucweWYsW1qg7d39o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;2008 Schwinn Madison&lt;/strong&gt; with a few after-market parts to make her a bit prettier:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://bontrager.com/model/04127"&gt;Bontrager Race X Lite Stem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/00280"&gt;Bontrager Race Lite Bar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bontrager.com/model/09126"&gt;Bontrager R4 Road Tires&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lookcycle.com/en/us/route/pedales/keo-classic.html"&gt;Look Keo Classic Pedals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Canondale C2 Seat Post&lt;/li&gt;
&lt;li&gt;Canondale C2 Brakes&lt;/li&gt;
&lt;/ul&gt;</description><link>http://softwarecycling.com/post/4194122485</link><guid>http://softwarecycling.com/post/4194122485</guid><pubDate>Tue, 29 Mar 2011 18:53:00 -0400</pubDate><category>bike</category></item><item><title>Developing on Salesforce</title><description>&lt;p&gt;I&amp;#8217;ve had a healthy amount of exposure to the Salesforce.com platform from an integration standpoint, and I&amp;#8217;ve done some tinkering with the web front-end and eclipse IDE in the past, but recently I&amp;#8217;ve been involved in a project that&amp;#8217;s going to be developed directly on the SFDC platform.  Here are some of my initial thoughts on it&amp;#8230;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Good&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Data-modelling&lt;/strong&gt; is extremely easy.  The data-model and API are extended rather elegantly.  Adding custom objects, custom fields, relationships can be done right through the web front-end.  I need to do a little digging to understand how their migrations are handled, but so far so good.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;development pattern&lt;/strong&gt; is straight forward MVC, and there&amp;#8217;s a rich set of apex controls at your disposal, saving you the trouble of writing HTML for straight-forward user interfaces.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;SOAP API&lt;/strong&gt;, although pretty complex, is very flexible, and automatically includes customizations you&amp;#8217;ve made.  (Caveat: login and queryMore can be a little tricky to figure out if you&amp;#8217;re using a language that doesn&amp;#8217;t have a pre-packaged wrapper ie: C#).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SOQL &lt;/strong&gt;(Salesforce Object Query Language) is pretty neat way of filtering data and results.&lt;/li&gt;
&lt;li&gt;The Spring &amp;#8216;11 release includes &lt;strong&gt;&lt;a href="http://www.salesforce.com/us/developer/docs/pages/Content/pages_js_remoting.htm"&gt;Javascript Remoting&lt;/a&gt; &lt;/strong&gt;which &lt;strong&gt;generates&lt;/strong&gt; javascript wrappers for your apex methods by simply adding @RemoteAction attribute to the method. &lt;a href="http://softwarecycling.com/post/2655416739/jquery-templates"&gt;I&amp;#8217;m a huge fan of the jQuery Template project&lt;/a&gt;, and look forward to leveraging it for this project.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;strong&gt;The Bad&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;I&amp;#8217;m scared of &amp;#8220;&lt;strong&gt;platform lock-in&lt;/strong&gt;.&amp;#8221;  John Mill&amp;#8217;s &lt;a href="http://millslifeblog.blogspot.com/2010/03/fears-of-paas-lock-in.html"&gt;post on the subject&lt;/a&gt; outlines some of the fears I have, but I think the counterargument used is a little optimistic. Developing in the cloud isn&amp;#8217;t realistically 5x faster than traditional development, especially when you start putting processes in place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Process:&lt;/strong&gt; it just doesn&amp;#8217;t feel like we have much of it. There is a trade-off to bypassing traditional IT gating processes and controls&amp;#8230;&lt;/li&gt;
&lt;li&gt;Currently we&amp;#8217;re only using &lt;strong&gt;source control &lt;/strong&gt;for release-ready code, not development.  I&amp;#8217;m a big fan of TFS-style change sets with check-in comments, and merging code.&lt;/li&gt;
&lt;li&gt;Not a huge fan of a using a &lt;strong&gt;custom language&lt;/strong&gt; (apex) however, this isn&amp;#8217;t a huge setback as its fairly similar to Java.  I just wish it had a little C# functional flair.&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s no out-of-the-box &lt;strong&gt;CDN &lt;/strong&gt;for jQuery, jQuery UI, and no pre-packaged CSS that mimics the salesforce look and feel.  I can&amp;#8217;t see how this would be too difficult to add. &lt;a href="http://www.asp.net/ajaxlibrary/CDNjQueryUI1811.ashx"&gt;Microsoft&lt;/a&gt; and &lt;a href="http://code.google.com/apis/libraries/devguide.html"&gt;Google&lt;/a&gt; figured it out.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;strong&gt;Overall Impressions&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m continually impressed by the SFDC platform, and I&amp;#8217;m pretty excited about this project.  I look forward to sharing some more thoughts once I get my hands dirty&amp;#8230;&lt;/p&gt;</description><link>http://softwarecycling.com/post/4166358085</link><guid>http://softwarecycling.com/post/4166358085</guid><pubDate>Mon, 28 Mar 2011 16:51:00 -0400</pubDate><category>salesforce</category><category>jquery</category></item><item><title>jQuery Combobox</title><description>&lt;p&gt;Jörn Zaefferer writes a good summary about creating a jQuery Widget: &lt;a title="A jQuery UI Combobox: Under the hood" href="http://www.learningjquery.com/2010/06/a-jquery-ui-combobox-under-the-hood"&gt;A jQuery UI Combobox: Under the hood&lt;/a&gt;, which was the basis of this &lt;a title="official autocomplete demo" href="http://jqueryui.com/demos/autocomplete/#combobox"&gt;official autocomplete demo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some customizations I made from here include:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Automatically open menu on focus-in, which can also allowed for removal of the button (this needs a little UX feedback from our customers.)&lt;!-- more --&gt;&lt;/li&gt;
&lt;li&gt;Add an afterchange event whenever the selected value changes, useful for further client validation.&lt;/li&gt;
&lt;li&gt;Remove default menu-item filtering by overriding the source callback to always show all options.&lt;/li&gt;
&lt;li&gt;Select the first element that currently matches typed text, previous behavior was to bold the text, but leave it to the user to cursor down or mouse click.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;After that a little extra css controls max-height with scrolling and font-size.&lt;/p&gt;
&lt;p&gt;- Rob&lt;/p&gt;</description><link>http://softwarecycling.com/post/2957686556</link><guid>http://softwarecycling.com/post/2957686556</guid><pubDate>Thu, 27 Jan 2011 08:51:00 -0500</pubDate><category>jquery</category></item><item><title>1/26/2011 Update</title><description>&lt;p&gt;The majority of my work the last few weeks has been HTML + JQuery + JSON&amp;#8230; once work calms down a bit, these are some things I want to share:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Extending an html select with a jquery autocomplete widget, including some UX considerations.&lt;/li&gt;
&lt;li&gt;Using Jquery $.data() to tag data to a DOM element.&lt;/li&gt;
&lt;li&gt;Reposting JSON data to a server, after it was rendered with jQuery Templates.&lt;/li&gt;
&lt;li&gt;Updating a jQuery Template by updating its underlying JSON data, its easy, and you should use it to save on expensive postbacks.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Have fun in the snow.&lt;/p&gt;</description><link>http://softwarecycling.com/post/2948823158</link><guid>http://softwarecycling.com/post/2948823158</guid><pubDate>Wed, 26 Jan 2011 19:37:09 -0500</pubDate><category>jquery</category><category>javascript</category><category>ux</category></item><item><title>MVC3 Gotcha: JSON Date Formatting</title><description>&lt;p&gt;When returning a JsonResult with MVC3 dates are a little &amp;#8220;non-standard&amp;#8221;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;ModifiedDate&amp;#8221;:&amp;#8221;\/Date(1291157061223)\/&amp;#8221;&lt;!-- more --&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here&amp;#8217;s a solution:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;function formatDate(jsonDate) {&lt;br/&gt;    var date = new Date(parseInt(jsonDate.substr(6)))&lt;br/&gt;    return date.toLocaleDateString();&lt;br/&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And, an example with jQuery Templates:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;script id=&amp;#8221;tableRowTemplate&amp;#8221; type=&amp;#8221;text/x-jquery-tmpl&amp;#8221;&amp;gt;&lt;br/&gt;    &amp;lt;tr&amp;gt;&lt;br/&gt;        &amp;#8230;&lt;br/&gt;        &amp;lt;td&amp;gt;&lt;br/&gt;            ${formatDate(ModifiedDate)}&lt;br/&gt;        &amp;lt;/td&amp;gt;&lt;br/&gt;    &amp;lt;/tr&amp;gt;&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://softwarecycling.com/post/2861681228</link><guid>http://softwarecycling.com/post/2861681228</guid><pubDate>Fri, 21 Jan 2011 16:47:45 -0500</pubDate></item><item><title>Tip: stringify your cookies</title><description>&lt;p&gt;This simple example shows how you can stringify a simple array to store search history in a cookie, but the same principle can be used for complex data too.&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;The sample uses json2.js and jquery.cookie.js.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;function getSearchHistory() {&lt;br/&gt;    // Get Search History from Cookie&lt;br/&gt;    var history = $.cookie(&amp;#8216;searchHistory&amp;#8217;);&lt;br/&gt;    if (history == null)&lt;br/&gt;        return [];&lt;br/&gt;    else&lt;br/&gt;        return JSON.parse(history);&lt;br/&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;function addSearchCookie(searchValue) { &lt;br/&gt;    // Get Search History&lt;br/&gt;    var history = getSearchHistory();&lt;br/&gt;    // Add Search Term&lt;br/&gt;    if (!containsValue(history, searchValue))&lt;br/&gt;    {&lt;br/&gt;        history.push(searchValue);&lt;br/&gt;         // Set Cookie&lt;br/&gt;        $.cookie(&amp;#8216;searchHistory&amp;#8217;, JSON.stringify(history), { path: &amp;#8216;/&amp;#8217; });&lt;br/&gt;    }&lt;br/&gt;}&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;Just to finish it off, you can use this search history in an auto-complete with this code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;// Add Auto-Complete&lt;br/&gt;$search.autocomplete({&lt;br/&gt;    source: getSearchHistory()&lt;br/&gt;});&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;Thanks for reading.&lt;/p&gt;</description><link>http://softwarecycling.com/post/2861504511</link><guid>http://softwarecycling.com/post/2861504511</guid><pubDate>Fri, 21 Jan 2011 16:35:35 -0500</pubDate><category>jquery</category></item><item><title>JSON postbacks with MVC</title><description>&lt;p&gt;Complex JSON post data was possible with MVC2, but it comes out of the box with MVC3, and it couldn&amp;#8217;t be much easier. This code sample should sum it all up, you&amp;#8217;ll just need the json2.js library, which gives you JSON.stringify(), and JSON.parse().&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Controller&lt;/span&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[HttpPost]&lt;br/&gt;public JsonResult RenameAction(string opportunityId, RenameProposalModel model)&lt;br/&gt;{&lt;br/&gt;    proposalService.RenameProposal(opportunityId, Identity.UserName, model);&lt;br/&gt;    return Json(model);&lt;br/&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;Javascript&lt;/span&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;function renameProposal() {&lt;br/&gt;    var dialog = $(&amp;#8216;#renameDialog&amp;#8217;);&lt;br/&gt;    var proposalName = dialog.find(&amp;#8216;#ProposalName&amp;#8217;);&lt;br/&gt;    var proposalJson = $.tmplItem(proposalName).data;&lt;br/&gt;    var postData = JSON.stringify({&lt;br/&gt;        QuoteID: proposalJson.QuoteID,&lt;br/&gt;        ProposalID: proposalJson.ID,&lt;br/&gt;        ProposalName: proposalName.val()&lt;br/&gt;    });&lt;br/&gt;    // Post to server&lt;br/&gt;    $.ajax({&lt;br/&gt;        type: &amp;#8216;post&amp;#8217;,&lt;br/&gt;        url: $renameUrl,&lt;br/&gt;        contentType: &amp;#8216;application/json; charset=utf-8&amp;#8217;,&lt;br/&gt;        data: postData,&lt;br/&gt;        dataType: &amp;#8216;json&amp;#8217;,&lt;br/&gt;        success: renameProposalSuccess, // reloads section&lt;br/&gt;        error: ajaxErrorDelegate // display raw error message&lt;br/&gt;    });&lt;br/&gt;};&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some notes about this code, it gets the original data (which was rendered with jquery templates) back using the html element reference, no need for hidden fields! Other than that, pretty standard.&lt;/p&gt;</description><link>http://softwarecycling.com/post/2861344855</link><guid>http://softwarecycling.com/post/2861344855</guid><pubDate>Fri, 21 Jan 2011 16:24:00 -0500</pubDate><category>jquery</category><category>asp.net mvc3</category></item><item><title>My Tracks for Android</title><description>&lt;a href="http://mytracks.appspot.com/"&gt;My Tracks for Android&lt;/a&gt;: &lt;p&gt;Google staffers put together this handy, open source, GPS app for cycling.  I used this on a couple dozen rides with my Droid X this fall.  Highly recommended! Take a look at the &lt;a title="Android MyTracks Source Code" href="http://code.google.com/p/mytracks/source/browse/"&gt;code&lt;/a&gt; if you’re curious how to put together an Android app in Java with the eclipse IDE.&lt;/p&gt;</description><link>http://softwarecycling.com/post/2729564961</link><guid>http://softwarecycling.com/post/2729564961</guid><pubDate>Thu, 13 Jan 2011 10:23:00 -0500</pubDate><category>cycling</category><category>android</category></item><item><title>This Developer's Life: Scars</title><description>&lt;a href="http://www.thisdeveloperslife.com/post/1-1-1-scars"&gt;This Developer's Life: Scars&lt;/a&gt;: &lt;p&gt;New podcast about &lt;strong&gt;cancelled projects&lt;/strong&gt;.  Should be an interesting listen for some folks I work with ;)&lt;/p&gt;</description><link>http://softwarecycling.com/post/2728714215</link><guid>http://softwarecycling.com/post/2728714215</guid><pubDate>Thu, 13 Jan 2011 08:32:00 -0500</pubDate><category>programming</category></item></channel></rss>

