<?xml version='1.0' encoding='utf-8' ?>
<feed xmlns='http://www.w3.org/2005/Atom'>
  <title type='text'>Mark Cipolla</title>
  <generator uri='http://effectif.com/nesta'>Nesta</generator>
  <id>tag:markcipolla.com,2009:/</id>
  <link href='http://markcipolla.com/articles.xml' rel='self' />
  <link href='http://markcipolla.com' rel='alternate' />
  <subtitle type='text'>Half Designer. Half Developer. Half Space Wizard.</subtitle>
  <updated>2011-05-26T00:00:00+00:00</updated>
  <entry>
    <title></title>
    <link href='http://markcipolla.com/lunchplaces' rel='alternate' type='text/html' />
    <id>tag:markcipolla.com,2011-05-26:/lunchplaces</id>
    <content type='html'>
            &lt;div class='row'&gt;
              &lt;div class='column grid_2'&gt;
            &lt;h2&gt;&lt;a href=&quot;http://lunchplaces.info&quot;&gt;LunchPlaces&lt;/a&gt;&lt;/h2&gt;
            &lt;p&gt;A simple web app (that&amp;rsquo;s location aware) for you mobile that shows you good lunch places to eat.&lt;/p&gt;
            
            
              &lt;/div&gt;
              &lt;div class='column grid_3'&gt;
            &lt;p&gt;At work, when it gets to around noon, not a single day passes where someone says “Where should we go for lunch?”.&lt;/p&gt;
            
            &lt;p&gt;Therefore, my boss asked me to start a wiki so we can add out favourite places to eat. Wiki&amp;rsquo;s are for the weak. A real developer just builds an app.&lt;/p&gt;
            
            &lt;p&gt;&lt;a href=&quot;http://lunchplaces.info&quot;&gt;LunchPlaces&lt;/a&gt; is feature-light; it shows places that others have added that they like to eat lunch at. Nothing more. You can add more places. And others can see them.&lt;/p&gt;
            
            &lt;p&gt;The nicest thing is that it uses geolocation. The app asks you where you are (on an iPhone, via it’s GPS, whilst on a desktop browser it locates from the IP address), and shows you places within 5kms of wher you are.&lt;/p&gt;
            
            &lt;p&gt;The awesome rails gem &lt;a href=&quot;http://geokit.rubyforge.org/&quot;&gt;GeoKit&lt;/a&gt; handles the finding within ranges. Very easy to get your head around.&lt;/p&gt;
            
              &lt;/div&gt;
              &lt;div class='column grid_3 pre_1'&gt;
            &lt;img src=&quot;/design/articles/lunchplaces/phone.png&quot; /&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          </content>
    <published>2011-05-26T00:00:00+00:00</published>
    <updated>2011-05-26T00:00:00+00:00</updated>
  </entry>
  <entry>
    <title></title>
    <link href='http://markcipolla.com/status_board' rel='alternate' type='text/html' />
    <id>tag:markcipolla.com,2010-11-04:/status_board</id>
    <content type='html'>
              &lt;div class='row'&gt;
                &lt;div class='column grid_2'&gt;
              &lt;h2&gt;&lt;a href=&quot;https://github.com/markcipolla/Status-Board&quot;&gt;Status Board&lt;/a&gt;&lt;/h2&gt;
              &lt;p&gt;A web-based sinatra-driven status board for displaying site stats on a whoppin' large tv.&lt;/p&gt;
              
              
                &lt;/div&gt;
                &lt;div class='column grid_3'&gt;
              &lt;h3&gt;For when you want to display a whole bunch of stats from a variety of sources...&lt;/h3&gt;
              
              &lt;p&gt;With a big, beautiful television mounted on the wall, and nothing to display on it, in a bit of time between projects I made a status board showing the status of the site, &lt;a title=&quot;SitePoint Pty. Ltd.&quot; href=&quot;http://sitepoint.com&quot;&gt;sitepoint.com&lt;/a&gt;. It pulled down some stats off Google Analytics, and tried to make useful sense out of it, and display (as-close-as) immediate details available.&lt;/p&gt;
              
                &lt;/div&gt;
                &lt;div class='column grid_4'&gt;
              &lt;p&gt;Some of the stats that I thought interesting is user-stats breakdowns: operating systems, per-browser-usage breakdowns.&lt;/p&gt;
              
              &lt;p&gt;Also, pageview &amp;amp; UB stats as well as sales for the last week, which products are hot, etc...&lt;/p&gt;
              
              &lt;p&gt;An interesting note: I found that having all the browser-breakdown stats took up a lot of space! So, after a bit of fiddling, they now cycle through each of the stats graphs, taking up a single (larger) block than six or so smaller ones.&lt;/p&gt;
              
                &lt;/div&gt;
                &lt;div class='column grid_5 pre_4'&gt;
              &lt;img title=&quot;The Status Board&quot; src=&quot;/attachments/statusboard1.jpg&quot; /&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            </content>
    <published>2010-11-04T00:00:00+00:00</published>
    <updated>2010-11-04T00:00:00+00:00</updated>
  </entry>
  <entry>
    <title></title>
    <link href='http://markcipolla.com/rea_suburb_profiles' rel='alternate' type='text/html' />
    <id>tag:markcipolla.com,2010-05-16:/rea_suburb_profiles</id>
    <content type='html'>
                &lt;div class='row'&gt;
                  &lt;div class='column grid_5'&gt;
                    &lt;div class='row'&gt;
                      &lt;div class='column grid_2'&gt;
                &lt;h2&gt;&lt;a href=&quot;http://www.realestate.com.au/cgi-bin/rsearch?a=sp&quot;&gt;Realestate.com.au Suburb Profiles&lt;/a&gt;&lt;/h2&gt;
                &lt;p&gt;Suburb Property info for Realestate.com.au, Australia&amp;rsquo;s largest property portal.&lt;/p&gt;
                
                
                      &lt;/div&gt;
                      &lt;div class='column grid_3'&gt;
                &lt;p&gt;As part of an exclusive deal with &lt;a href=&quot;http://www.rpdata.net.au/&quot;&gt;RPData&lt;/a&gt;, &lt;a href=&quot;http://www.realestate.com.au&quot;&gt;REA&lt;/a&gt; had access to their property data. To that end, we created suburb profile pages, with almost 11,500 suburbs having information regarding buying and selling properties.&lt;/p&gt;
                &lt;p&gt;We created median price graphs, using &lt;a href=&quot;http://code.google.com/p/flot/&quot;&gt;FLOT&lt;/a&gt;, a JavaScript JQuery plotting tool. It's very customisable, and allows for awesome, interactive mapping of data. These were shown inside a custom JS tab block. FLOT by default wants JavaScript arrays jammed in page, which is fine, but for accessibility reasons we built a table reader into the initialisation that reads a table of the data, and builds a graph in a corresponding sibling element. FLOT out of the box allows for customisation of colours, and drops tooltips in for you.&lt;/p&gt;
                
                      &lt;/div&gt;
                      &lt;div class='column grid_4 pre_1'&gt;
                &lt;p&gt;To get the appropriate formatting of data (so the graph knows the difference between numerical and financial amounts), we had to create custom initialisations for the differing blocks by a mix of class names and our own DOM walker, that traverses the DOM finding named elements and adding the JS to them.&lt;/p&gt;
                
                      &lt;/div&gt;
                      &lt;div class='column grid_2'&gt;
                &lt;img title=&quot;Median Prices&quot; src=&quot;/attachments/medianprices-204x300.jpg&quot; alt=&quot;Median House Prices&quot; /&gt;
                
                      &lt;/div&gt;
                      &lt;div class='column grid_3'&gt;
                &lt;p&gt;Using a combination of our own stats and the stats platform we use (in regards to the number of users hitting the properties in that suburb), against the number of properties available in that suburb, we created our Supply &amp;amp; Demand graphs. These graphs were well received by our users as they could see, at a glance, how competitive the suburb in question is. Also attached to this block (by the tab block) is an interest rate graph. &lt;/p&gt;
                &lt;p&gt;This (although primarily an ad) shows Standard Variable Rate (from the major lenders) against the Reserve Bank of Australia Cash Rate, all in the custom colours of whomever had bought the rights to that block.&lt;/p&gt;
                
                      &lt;/div&gt;
                      &lt;div class='column grid_5'&gt;
                &lt;p&gt;At the larger sites, it is often hard to create new advertising ideas (due to a desire to travel the safe, well-worn roads), but by using supported content we could find a happy medium; something users will use, and raise brand awareness at the same time.&lt;/p&gt;
                &lt;p&gt;In it's full glory, the page offers in-depth information on any given suburb. It has surpassed both usage expectations and ROI, and has made me a little proud to see it get out the door and into the wild.&lt;/p&gt;
                
                      &lt;/div&gt;
                    &lt;/div&gt;
                  &lt;/div&gt;
                  &lt;div class='column grid_4'&gt;
                &lt;img title=&quot;Suburb Profile Pages&quot; src=&quot;/attachments/sppages.jpg&quot;/&gt;&lt;/p&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
              </content>
    <published>2010-05-16T00:00:00+00:00</published>
    <updated>2010-05-16T00:00:00+00:00</updated>
  </entry>
  <entry>
    <title></title>
    <link href='http://markcipolla.com/rea_mobile' rel='alternate' type='text/html' />
    <id>tag:markcipolla.com,2010-05-10:/rea_mobile</id>
    <content type='html'>
                  &lt;div class='row'&gt;
                    &lt;div class='column grid_6'&gt;
                      &lt;div class='row'&gt;
                        &lt;div class='column grid_2'&gt;
                  &lt;h2&gt;&lt;a href=&quot;http://m.realestate.com.au&quot;&gt;Realestate.com.au Mobile&lt;/a&gt;&lt;/h2&gt;
                  &lt;p&gt; The first mobile interface for Realestate.com.au, Australia's largest property portal.&lt;/p&gt;
                  
                        &lt;/div&gt;
                        &lt;div class='column grid_4'&gt;
                  &lt;p&gt;As part of working at &lt;a href=&quot;http://www.realestate.com.au&quot;&gt;REA&lt;/a&gt; as a UI Designer / Developer, one of the platforms for developing new ideas has been 'Labs'. Just before the release of the iPhone in Australia, I saw a gap in our offering; we didn't have a compelling mobile experience.&lt;/p&gt;
                  
                  &lt;p&gt;I built the first prototype in a week or so, and after it was rebuilt for production (with the efforts of Mike Breeze and Michael Allan) and launched in the UK for &lt;a href=&quot;http://www.propertyfinder.com&quot;&gt;propertyfinder.com&lt;/a&gt; it was receiving ~15,000 unique browsers a month.&lt;/p&gt;
                  
                  &lt;p&gt;The success of the UK mobile site saw a release for our &lt;a href=&quot;http://m.realestate.com.au&quot;&gt;main brand&lt;/a&gt;, &lt;a href=&quot;http://www.realestate.com.au&quot;&gt;realestate.com.au&lt;/a&gt;, which it now has in the hundreds of thousands unique browsers monthly.&lt;/p&gt;
                  
                        &lt;/div&gt;
                        &lt;div class='column grid_6'&gt;
                  &lt;img src=&quot;/attachments/reamobile_example.jpg&quot; alt=&quot;REA Mobile&quot; /&gt;
                  
                        &lt;/div&gt;
                      &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class='column grid_3'&gt;
                  &lt;p&gt;From it's inception, it was designed to work across a diverse range of mobile devices, progressively enhancing to adapt to any device. It (on the iPhone) asynchronously loaded properties straight from the results list, reducing the amount of page load and making for an significantly improved fluid search, rather than the &quot;click-on-property, reload-page, back, repeat&quot; users saw on their desktop. The smaller screen offered challenges to how to best use the available space to it's maximum, yet remain uncluttered. Key learnings from this were:&lt;/p&gt;
                  &lt;ul&gt;
                  	&lt;li&gt;Don't try and remake your whole site, with every feature, on a mobile. Do what people need, and what people need on a mobile is different to what they need on a desktop.&lt;/li&gt;
                  	&lt;li&gt;Different users use a mobile to a full site. We found much higher ratios of (mostly likely) younger people were using the mobile site, and the difference of search for Buy verses Rent was much closer on the mobile site rather than the full site (which saw Buy searches having the majority).&lt;/li&gt;
                  	&lt;li&gt;If you are going to do browser detection, do it right. We had a simple regex-based solution initially, and it worked well for a while. As soon as you want to fix things for individual devices (especially those used by the business leaders of the business, heheh), without a more robust solution it is hard. However, the trade off is more work up front implementing a solution that is scalable. We found some Apache level ones, but there are lots of options available.&lt;/li&gt;
                  	&lt;li&gt;Optimise the hell out of images. We found that the same images, uncompressed from the data centres, could add ~200kb to a page of twenty property listings. Jam those down to JPGs, and up the compression. For desktop, you want to sit around 80% quality, but on a mobile, especially for thumbnails, 20% seemed to work fine for us!&lt;/li&gt;
                  	&lt;li&gt;Really simple, good, semantic HTML is key. Browsers (I'm looking at you, BlackBerry) on the older phones just don't support all of HTML, or CSS on certain elements. And it can be hard to debug why. Write simple code, and whole bunches of problems just go away.&lt;/li&gt;
                  &lt;/ul&gt;
                  &lt;p&gt;As my original mobile site has now been replaced with a new one, leveraging a newer platform, I'm happy to show it here. My pet project has grown up and left the coup, and hopefully will take a life on its own. Check out the new one at &lt;a href=&quot;http://m.realestate.com.au&quot;&gt;m.realestate.com.au&lt;/a&gt;.&lt;/p&gt;
                    &lt;/div&gt;
                  &lt;/div&gt;
                </content>
    <published>2010-05-10T00:00:00+00:00</published>
    <updated>2010-05-10T00:00:00+00:00</updated>
  </entry>
  <entry>
    <title></title>
    <link href='http://markcipolla.com/hudson_global_dashboard' rel='alternate' type='text/html' />
    <id>tag:markcipolla.com,2010-04-06:/hudson_global_dashboard</id>
    <content type='html'>
                    &lt;div class='row'&gt;
                      &lt;div class='column grid_2'&gt;
                    &lt;h2&gt;&lt;a href=&quot;https://github.com/markcipolla/Hudson-Global-Dashboard&quot;&gt;Hudson Global Dashboard&lt;/a&gt;&lt;/h2&gt;
                    &lt;p&gt;For tracking multiple automated continuous integration builds across multiple machines.&lt;/p&gt;
                    
                      &lt;/div&gt;
                      &lt;div class='column grid_3'&gt;
                    &lt;p&gt;The Hudson Global Dashboard is an idea that stems from the &lt;a href=&quot;http://www.panic.com/blog/2010/03/the-panic-status-board/&quot; target=&quot;_blank&quot;&gt;Panic Board&lt;/a&gt;. We had a scenario where we had multiple machines running Hudson, and for knowing at-a-glance the status of a build we relied either on build lights (USB lights, changing red to green depending on build) or CCMenu.&lt;/p&gt;
                    
                    &lt;h3&gt;Problem with this&lt;/h3&gt;
                    
                    &lt;ul&gt;
                    	&lt;li&gt;CCMenu cannot be easily seen by people walking by&lt;/li&gt;
                    	&lt;li&gt;Build lights can only be one per machine, however we are running multiple builds on a single machine.&lt;/li&gt;
                    &lt;/ul&gt;
                    
                    &lt;h3&gt;Usage&lt;/h3&gt;
                    &lt;ul&gt;
                    	&lt;li&gt;Check the code out.&lt;/li&gt;
                    	&lt;li&gt;It runs on http://localhost:3000&lt;/li&gt;
                    	&lt;li&gt;Enjoy&lt;/li&gt;
                    &lt;/ul&gt;
                    
                    &lt;h3&gt;Installation&lt;/h3&gt;
                    &lt;ul&gt;
                    	&lt;li&gt;git clone git@github.com:markcipolla/Hudson-Global-Dashboard.git&lt;/li&gt;
                    	&lt;li&gt;bundle install&lt;/li&gt;
                    	&lt;li&gt;padrino rake seed&lt;/li&gt;
                    	&lt;li&gt;padrino start&lt;/li&gt;
                    &lt;/ul&gt;
                    
                      &lt;/div&gt;
                      &lt;div class='column grid_4'&gt;
                    &lt;img src=&quot;/attachments/hudson1.png&quot; /&gt;
                    
                      &lt;/div&gt;
                      &lt;div class='column grid_4'&gt;
                    &lt;p&gt;The &quot;padrino rake seed&quot; lets you set up the first admin account, so you can login. Point your browser to http://localhost:3000/admin so you can login. After adding at least one build, head to http://localhost:3000&lt;/p&gt;
                    
                    &lt;p&gt;It can be found at &lt;a title=&quot;Hudson Global Dashboard of GitHub&quot; href=&quot;http://github.com/markcipolla/Hudson-Global-Dashboard&quot; target=&quot;_blank&quot;&gt;http://github.com/markcipolla/Hudson-Global-Dashboard&lt;/a&gt;.&lt;/p&gt;
                    
                    &lt;p&gt;Hudson Global Dashboard was built on &lt;a href=&quot;http://www.sinatrarb.com/&quot; target=&quot;_blank&quot;&gt;Sinatra&lt;/a&gt;, a great little light-weight framework on Ruby, but has been rewritten on &lt;a href=&quot;http://www.padrinorb.com/&quot;&gt;Padrino&lt;/a&gt;, which leverages a step up on Sinatra to offer a more powerful offering. A lot of the power of Ruby on Rails, still without all the hassle of dealing with a full suite.&lt;/p&gt;
                    
                    &lt;p&gt;It's still very early alpha, so use at your own risk, but it's fairly harmless, so I wouldn't stress too much. The only real problem is the error handling isn't superb, and it &lt;em&gt;can&lt;/em&gt; just die when a build is naffed. Which doesn't look good to business-type-people walking by. But, then again, neither does a failing build.&lt;/p&gt;
                    
                    &lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; I've rounded out a lot more error handling, so it'll start to check urls and IPs of the Hudson builds and skip broken ones.. for the most part.&lt;/p&gt;
                    
                    &lt;h2&gt;In the wild:&lt;/h2&gt;
                    &lt;p&gt;I was ever so pleased to see the dashboard get some use in a real world environment against active test suites... Thanks go to &lt;a href=&quot;http://www.linkedin.com/in/stevenholloway&quot; target=&quot;_blank&quot;&gt;Steven Holloway&lt;/a&gt; for taking the pics and letting me know.
                    
                      &lt;/div&gt;
                      &lt;div class='column grid_2 pre_5'&gt;
                    &lt;img title=&quot;In the Wild&quot; src=&quot;/attachments/IMG_0212-300x224.jpg&quot; /&gt;
                      &lt;/div&gt;
                      &lt;div class='column grid_2'&gt;
                    &lt;img  title=&quot;In the wild!&quot; src=&quot;/attachments/IMG_0213-300x224.jpg&quot; /&gt;
                      &lt;/div&gt;
                    &lt;/div&gt;
                  </content>
    <published>2010-04-06T00:00:00+00:00</published>
    <updated>2010-04-06T00:00:00+00:00</updated>
  </entry>
</feed>

