<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://lunarlogicpolska.com/</id>
  <title>Lunar Logic Polska Blog</title>
  <updated>2010-03-03T14:09:00Z</updated>
  <link href="http://lunarlogicpolska.com" rel="alternate"/>
  <link href="http://lunarlogicpolska.com/atom.xml" rel="self"/>
  <author>
    <name>Paul Klipp</name>
    <uri>http://lunarlogicpolska.com</uri>
  </author>
  <entry>
    <id>tag:lunarlogicpolska.com,2010-03-03:/blog/2010/03/03/our-first-iphone-app-available-on-appstore.html</id>
    <title type="html">Our first iPhone app available on AppStore</title>
    <published>2010-03-03T14:09:00Z</published>
    <updated>2010-03-08T10:47:32Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2010/03/03/our-first-iphone-app-available-on-appstore.html" rel="alternate"/>
    <content type="html">&lt;p&gt;I became interested in iPhone development last winter, when I bought my own iPhone. I wanted to learn how to write iPhone apps, and the best way to learn how to program is to do it &amp;ndash; so I needed to write a first simple application, that I could learn and experiment on. I've decided to write an iPhone client for our &lt;a href="http://rubytime.org"&gt;RubyTime&lt;/a&gt; service; I figured it would save me a few minutes each day if I could enter my activity entries while waiting for a bus on a bus stop instead of doing it in a hurry in the office before I leave (of course, I could also do it using mobile Safari, but it wouldn't be as convenient&amp;hellip; and it wouldn't be so fun!).&lt;/p&gt;

&lt;p&gt;The first version was ready a few months later &amp;ndash; it was able to display recent activities and add new ones. I used and extended the JSON API that Marcin Kulik has earlier created when he was working on his &lt;a href="http://github.com/sickill/rubytime-plasmoid"&gt;RubyTime plasmoid for KDE4&lt;/a&gt;. I showed the app to Paul and he liked it so much that he allowed me to spend almost a month of my working time on improving it and adding new features. I've added support for admin accounts, to let Paul check on his iPhone who was busy and who wasn't, and for client accounts, so that our clients who have iPhones can monitor the progress of their projects. I've also added a search form that finds activities within a certain time range for given projects and users.&lt;/p&gt;

&lt;p&gt;It took a bit longer than expected to bring the application to the point when it can be publicly released, also because we had to make sure that potential users can download a stable version of the server that supports the client app; but the release finally happened last month. I was surprised how fast the application went through the review process &amp;ndash; I had heard stories of apps waiting for weeks or months to get accepted; mine was ready in less than 3 days!&lt;/p&gt;

&lt;p&gt;If you want to try it, iRubyTime is &lt;a href="http://itunes.apple.com/us/app/irubytime/id355303566?mt=8"&gt;available on the AppStore for free&lt;/a&gt;. I've also shared the &lt;a href="http://github.com/psionides/iRubyTime"&gt;source code of the app&lt;/a&gt; on GitHub, so if you're learning Cocoa and iPhone SDK, you can take a look at it and use it as an example or starting point for your own projects.&lt;/p&gt;

&lt;p&gt;I must say that working on your first iPhone application is very difficult at first. It's a completely different experience than working on a Rails webapp &amp;ndash; partially because of the language (ObjC), but also because of different approach and paradigms used in mobile app development, and because of limitations of the phone's hardware. I had to fix hundreds of strange and confusing bugs &amp;ndash; but that means I've also learned a lot, and it will be easier next time.&lt;/p&gt;

&lt;p style="text-align: center;"&gt;
  &lt;img src="/images/posts/iRubyTime_shot.png" style="width: 250px;" alt="iRubyTime screenshot"&gt;
&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2010-02-15:/blog/2010/02/15/mysql-and-mongodb-working-together-in-kanbanery.html</id>
    <title type="html">MySQL and MongoDB working together in Kanbanery</title>
    <published>2010-02-15T12:01:00Z</published>
    <updated>2010-03-08T10:47:32Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2010/02/15/mysql-and-mongodb-working-together-in-kanbanery.html" rel="alternate"/>
    <content type="html">&lt;p&gt;An important feature of the &lt;a href="http://kanbanery.com"&gt;Kanban tool&lt;/a&gt; is the logging of project
events, such as changes in task status, from which we generate the
project history. I spoke with &lt;a href="http://sickill.net"&gt;Marcin Kulik&lt;/a&gt; and &lt;a href="http://blog.solnic.eu"&gt;Piotr Solnica&lt;/a&gt; about
their decision to use &lt;a href="http://www.mongodb.org"&gt;MongoDB&lt;/a&gt; for this.&lt;/p&gt;

&lt;p&gt;Several different solutions were considered initially, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; logging to a text file&lt;/li&gt;
&lt;li&gt; logging to the application's MySQL database&lt;/li&gt;
&lt;li&gt; logging to a separate MySQL database&lt;/li&gt;
&lt;li&gt; logging to a different database platform&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The concern when making this decision was to make sure that the value
of logging application events wasn't outweighed by any fall-off in
performance, and having encountered MongoDB being used in similar
contexts, it was investigated as a solution. We didn't need a
transactional data-store - what we needed was fast reads and writes.&lt;/p&gt;

&lt;p&gt;Once we started thinking of using MongoDB, we considered whether to
use &lt;a href="http://github.com/jnunemaker/mongomapper"&gt;MongoMapper&lt;/a&gt;, which is akin to Active Record or &lt;a href="http://datamapper.org"&gt;DataMapper&lt;/a&gt; for
MongoDB, built from scratch. But rather than use this, in the
interests of consistency within our application, we opted for
&lt;a href="http://github.com/solnic/dm-mongo-adapter"&gt;dm-mongo-adapter&lt;/a&gt;, a MongoDB DataMapper Adapter. Piotr Solnica is one
of the authors of dm-mongo-adapter, and its current maintainer, so
obviously we had unrivalled support for any issues we might encounter!
So we were able to be more consistent in using the same abstraction
library for development and testing, and whilst dm-mongo-adapter is
not yet feature complete, it was sufficient for our purposes.&lt;/p&gt;

&lt;p&gt;DataMapper allows you to work with multiple data-stores simultaneausly and have cross-database relations.
We use this setup with MySQL and MongoDB right now. We've created a simple hierarchy of LoggedEvent models that are
persisted in MongoDB and have them associated with other models from MySQL database. If you are wondering how you can
achieve that, here is a simple example showing multiple repository setup in DataMapper:&lt;/p&gt;

&lt;script src="http://gist.github.com/320537.js?file=mysql_and_mongodb_example.rb"&gt;&lt;/script&gt;


&lt;p&gt;We have a SingleTableInheritance setup with LoggedEvent as the base class and 3 other subclasses. Each of the subclasses
has a set of additional properties that is specific only to them, not the base class. The big difference between MongoDB
and MySQL in this case is the fact that the latter will store &lt;em&gt;all&lt;/em&gt; the properties for each of the records resulting in
a bigger database size and lower performance. For instance take a look at this example:&lt;/p&gt;

&lt;script src="http://gist.github.com/320567.js?file=sti_example.rb"&gt;&lt;/script&gt;


&lt;p&gt;Notice that in MySQL we would have 8 columns whereas in MongoDB we only store the properties that are associated with
specific model. That's why every record in the database has only 6 attributes. Another useful feature is Hash being the
property type (:custom_attributes property in the above example). It's a flexible solution for storing meta-data that
varies between records.&lt;/p&gt;

&lt;p&gt;Piotr &lt;a href="http://gist.github.com/304575"&gt;benchmarked&lt;/a&gt; inserts into a MySQL and a MongoDB using
DataMapper and reported that inserts were more than 20x faster. Both he
and Marcin pointed out that this is measuring the combined performance of
the adapters and the database, and is not a test of each databases underlying speed.&lt;/p&gt;

&lt;p&gt;Piotr's benchmarks seem to confirm that MongoDB and the
dm-mongo-adapter were a good decision for logging application events
in Kanbanery - the solution is very low impact, and one which we  are
very happy with.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2010-01-13:/blog/2010/01/13/my-improvements-on-latest-i18n-gem.html</id>
    <title type="html">My improvements on latest i18n gem</title>
    <published>2010-01-13T10:30:00Z</published>
    <updated>2010-02-15T10:56:08Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2010/01/13/my-improvements-on-latest-i18n-gem.html" rel="alternate"/>
    <content type="html">&lt;p&gt;Originally published at &lt;a href="http://blog.knapo.net/2010/1/12/my-improvements-on-latest-i18n-gem"&gt;knapo.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In recent weeks I spent a lot of time on i18n stuff in project I currently working on, so I was really happy, after I read Jos&#233; Valim&#8217;s &lt;a href="http://blog.plataformatec.com.br/2009/12/run-i18n-run/article"&gt;article&lt;/a&gt; about new i18n gem, which has been very improved and introduces new features (Thanks Jos&#233; for great article and benchmarks).&lt;/p&gt;

&lt;p&gt;Unfortunately, after few days of using it I noticed a few issues (which I reported on &lt;a href="http://github.com/svenfuchs/i18n/issues"&gt;http://github.com/svenfuchs/i18n/issues&lt;/a&gt;.  They were related to &lt;em&gt;I18n::Backend::Fallbacks&lt;/em&gt;, which handled only translation method, and does not localize, pluralize and &lt;em&gt;:default&lt;/em&gt; option, also &lt;em&gt;I18n:Backend::Fast&lt;/em&gt; threw an exception when there were no translations for locale or one of locale fallbacks. Because I need all these 3 backends, they blocked using new i18n :(&lt;/p&gt; 

&lt;p&gt;Rather than wait until they will be fixed, I forked i18n &lt;a href="http://github.com/knapo/i18n"&gt;http://github.com/knapo/i18n&lt;/a&gt; and fixed them by myself. So, I installed it as a plugin (using braid to easily upgrade its in future):&lt;/p&gt;

&lt;pre&gt;
$ braid add -p git@github.com:knapo/i18n.git
&lt;/pre&gt;

&lt;p&gt;And there&amp;#8217;s a trick (which i18n&amp;#8217;s &lt;span class="caps"&gt;README&lt;/span&gt; hopefully says about) &amp;#8211; to use i18n as a plugin I had to add to my &lt;em&gt;initializers/i18n.rb&lt;/em&gt;  &lt;em&gt;reload_i18n!&lt;/em&gt; method which replaces bundled i18n gem with plugin:&lt;/p&gt;

&lt;pre&gt;
def reload_i18n!
  $:.grep(/i18n/).each { |path| $:.delete(path) }
  I18n::Backend.send :remove_const, "Simple" 
  $: &amp;lt;&amp;lt; Rails.root.join('vendor/plugins/i18n/lib').to_s
end

reload_i18n!
&lt;/pre&gt;

&lt;p&gt;and created my own backend (I preffer that than including all modules to &lt;em&gt;&lt;span class="caps"&gt;I18&lt;/span&gt;::Backend::Simple&lt;/em&gt;)&lt;/p&gt;

&lt;pre&gt;
module I18n
  module Backend
    class Knapo &amp;lt; Simple
      include I18n::Backend::Pluralization
      include I18n::Backend::Fallbacks
      include I18n::Backend::Fast
      include I18n::Backend::InterpolationCompiler
    end
  end
I18n.backend = I18n::Backend::Knapo.new
&lt;/pre&gt;

&lt;p&gt;The only disadvantage of having i18n as a plugin is resetting &lt;em&gt;I18n.load_path&lt;/em&gt;, so all default translations loaded by Rails are being removed, I mean:&lt;/p&gt;

&lt;pre&gt;
actionpack-2.3.5/lib/action_view/locale/en.yml
activesupport-2.3.5/lib/active_support/locale/en.yml
activerecord-2.3.5/lib/active_record/locale/en.yml
&lt;/pre&gt;

&lt;p&gt;But actually it might be a feature for some devs (e.g. me:) ), I copied them into my locales dir to active_support, active_record and action_view subdirs, and have all translations file in one place, and it&amp;#8217;s better to have default (en) Rails ones there to easily compare other locale files with them, and/or edit them.&lt;/p&gt;

&lt;p&gt;I also added extra extensions for &lt;em&gt;I18n&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
  &lt;em&gt;I18n::LoadPath&lt;/em&gt; which makes I18n.load_path more handy:
  &lt;pre&gt;
I18n.load_path = I18n::LoadPath.new(I18n.load_path)
I18n.load_path &amp;lt;&amp;lt; Rails.root.join('locales/pl.yml') # loads single translation file
I18n.load_path &amp;lt;&amp;lt; Rails.root.join('locales') # loads all translation data files in specific directory
I18n.load_path &amp;lt;&amp;lt; Rails.root.join('locales/*.{yml,rb}') # loads all translation data files  by given pattern&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;em&gt;I18n.wih_locale&lt;/em&gt; which executes block in given locale set
   &lt;pre&gt;
I18n.with_locale("pl-PL") do
  # This code are being executed with pl-PL locale
end&lt;/pre&gt;
  &lt;/li&gt;
   &lt;li&gt;
      Making &lt;em&gt;MissingTranslation&lt;/em&gt; message thrown by &lt;em&gt;I18n.localize&lt;/em&gt; method complete, as previously when translation was missing it returned partial message e.g. for &lt;em&gt;I18n.l Time.now, :format =&amp;gt; :missing&lt;/em&gt; I was getting: &lt;em&gt;translation missing: en, long_ordinal&lt;/em&gt;, what was misleading and now I&amp;#8217;ve got: &lt;em&gt;translation missing: en, time, formats, long_ordinal&lt;/em&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;The only thing I really don&amp;#8217;t like in new i18n is forcing I18n.locale to Symbol &amp;#8211; why? it should absolutely be a String&lt;/p&gt;

&lt;h4&gt;Anyway, thanks to Rails i18n team for great improvements on i18n, and looking forward for fixed issues in next gem version (and Rails3, of course).&lt;/h4&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-11-04:/blog/2009/11/04/dev-talk-on-the-vodaphone-mobile-widget-platform.html</id>
    <title type="html">Dev Talk on the Vodaphone mobile widget platform</title>
    <published>2009-11-04T08:30:00Z</published>
    <updated>2010-01-18T12:59:01Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/11/04/dev-talk-on-the-vodaphone-mobile-widget-platform.html" rel="alternate"/>
    <content type="html">&lt;p&gt;Maciej gave a presentation today based on his work creating mobile widgets for a client using the Vodaphone mobile widget platform. Here are the slides:&lt;/p&gt;

&lt;iframe src="http://docs.google.com/present/embed?id=df6dg3ks_166fsxx53hg" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-10-09:/blog/2009/10/09/lunar-logic-polska-launches-coderack-global-coding-contest.html</id>
    <title type="html">Lunar Logic Polska launches CodeRack global coding contest</title>
    <published>2009-10-08T22:45:00Z</published>
    <updated>2010-01-18T12:59:01Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/10/09/lunar-logic-polska-launches-coderack-global-coding-contest.html" rel="alternate"/>
    <content type="html">&lt;p&gt;CodeRack is a coding contest dreamed up by a group of the Ruby programmers at Lunar Logic Polska who were excited about the possibilities of Rack middleware. The team wants to encourage Ruby developers to explore the possibilities and what better way than to hold a contest? The secondary goal of the contest is to generate a set of open source solutions that will solve real problems and inspire others. Every entry will be released under the MIT open source license.&lt;/p&gt;

&lt;p&gt;Programmers are encouraged to submit contest entries that will be judged based on the cleverness of the application and the elegance of the code. Entries can be submitted at http://www.coderack.org until midnight EST November 15th. Finalists are scheduled to be announced on the 1st of December and public voting will run for one month. The final winners will be announced on the 5th of January.&lt;/p&gt;

&lt;p&gt;The first round of the contest will be judged by an elite panel of judges including Ben Bangert of O'Reilly Media, Chris Wanstrath and PJ Hyett of GitHub, Joshua Peek of 37Signals, Yehuda Katz of Engine Yard and Rails core team member, Ryan Tomayko of Heroku, Core Rails team member Matt Aimonetti, and the Rails Envy team of Gregg Pollack and Jason Seifer.&lt;/p&gt;

&lt;p&gt;Once the finalists have been selected by the panel, the public will vote for the top prize winners.&lt;/p&gt;

&lt;p&gt;Prizes have been donated by Bytemark Hosting, GitHub, Jetbrains, Mindmeister, Freelance Total, Heroku, Rackspace Hosting, Peepcode, BDDCasts, and Zenbe Shareflow. The top prize includes a dedicated quad core server package and is valued at over $3000. Every entrant will receive a credit from bddcasts.com and $30 credit from Heroku. All finalists will receive a package including Zenbe Shareflow subscriptions, a RubyMine license from JetBrains, and five credits from bddcasts.com. Details of all of the prize packages will soon be available on the coderack.org website.&lt;/p&gt;

&lt;p&gt;More information about the contest, including the contest rules, can be found at www.coderack.org.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Rack?&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;The Rack documentation describes it this way:&lt;/p&gt;

&lt;p&gt;"Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call."&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-07-15:/blog/2009/07/15/our-new-planning-poker-cards-are-featured-on-creattica.html</id>
    <title type="html">Our new planning poker cards are featured on Creattica</title>
    <published>2009-07-15T08:00:00Z</published>
    <updated>2010-02-08T11:44:39Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/07/15/our-new-planning-poker-cards-are-featured-on-creattica.html" rel="alternate"/>
    <content type="html">&lt;p&gt;Creattica is the premium design site, picking only the best examples of design to share. We are very proud that the planning poker cards designed by our own Mariusz Cie&#347;la were featured. &lt;/p&gt;
&lt;p&gt;Planning poker is the way of estimating project iterations in agile project management. The idea behind planning poker is simple. Individual stories are presented for estimation. After a period of discussion, each participant chooses from his own deck the numbered card that represents his estimate of how much work is involved in the story under discussion. All estimates are kept private until each participant has chosen a card. At that time, all estimates are revealed and discussion can begin again.&lt;/p&gt;
&lt;p&gt;Visit the entry on Creattica &lt;a href="http://creattica.com/business-cards/lunar-logic-polska-planning-poker/21834"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;img src="/images/posts/planningpoker.png"&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-07-14:/blog/2009/07/14/comming-soon-breakglass-password-manager.html</id>
    <title type="html">Coming soon - BrokenGlass password manager</title>
    <published>2009-07-14T16:45:00Z</published>
    <updated>2010-02-08T11:44:30Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/07/14/comming-soon-breakglass-password-manager.html" rel="alternate"/>
    <content type="html">&lt;p&gt;BrokenGlass was built for our internal use, but we'll shortly be releasing it as an open source project. BrokenGlass is a group password manager based on a simple concept. No one needs to know anything, until they do. When your boss catches you online at 2AM and you're the only one in the company awake and a client's server needs a reboot, what do you do? The sleeping SysAdmin has the data you need but that does you no good. With BrokenGlass, a team can store passwords or any other important data securely, and any employee with an account can access that data, but doing so requires a reason and triggers an email to notify the Admin to tell them who accessed what data and when. Hopefully, you'll never need it, but if it sounds like it might be handy, stay tuned for the release notification. It's the data equivalent of leaving a set of house keys with a neighbor.&lt;/p&gt;
&lt;img src="/images/posts/brokenglass.png"&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-05-25:/blog/2009/05/25/now-hiring-ruby-fundi.html</id>
    <title type="html">Now Hiring - Ruby Fundi</title>
    <published>2009-05-25T13:15:00Z</published>
    <updated>2010-01-18T12:59:01Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/05/25/now-hiring-ruby-fundi.html" rel="alternate"/>
    <content type="html">&lt;p&gt;I learned the Zulu term Fundi, when I worked in South Africa and it remains my favorite synonym for "expert."&lt;/p&gt;
&lt;p&gt;
Lunar Logic Polska, the first agile web development firm in Krakow and the team who first made Krakow a hub for Ruby development in Poland by founding the Krakow Ruby Users Group in 2005, is hiring. We're seeking only the best web application developers to join our team. If you think you have what it takes and you like the idea of working with some of the most experienced Ruby programmers in the region, send your cv to &lt;a href="mailto:jobs@llp.pl"&gt;jobs@llp.pl&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Lunar Logic Polska offers its employees:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highly competitive salaries&lt;/li&gt;
&lt;li&gt;Private health insurance&lt;/li&gt;
&lt;li&gt;Comfortable offices just minutes from Rynek&lt;/li&gt;
&lt;li&gt;Health club and swimming pool membership&lt;/li&gt;
&lt;li&gt;English language training&lt;/li&gt;
&lt;li&gt;Project assignments matching your skills and interests&lt;/li&gt;
&lt;li&gt;Flexible work hours&lt;/li&gt;
&lt;li&gt;Use of the company vehicle (okay, it's just a bicycle)&lt;/li&gt;
&lt;li&gt;A fun and relaxed work environment with great people&lt;/li&gt;
&lt;li&gt;Scrum-driven projects by a team with five years experience refining and perfecting agile development&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-04-26:/blog/2009/04/26/lunar-logic-polska-ranked-second-best-employer-in-poland.html</id>
    <title type="html">Lunar Logic Polska ranked second best employer in Poland</title>
    <published>2009-04-26T00:00:00Z</published>
    <updated>2010-03-08T10:47:32Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/04/26/lunar-logic-polska-ranked-second-best-employer-in-poland.html" rel="alternate"/>
    <content type="html">&lt;p&gt;&lt;img src="/images/posts/ranking.png"/&gt;&lt;/p&gt;

&lt;p&gt;Link2U, a Polish service that allows employees to anonymously rank their employers, ranks Lunar Logic Polska the second best employer in Poland. Granted, the sample size is small at just 483 respondees, but we were very pleased to see it, all the same.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:lunarlogicpolska.com,2009-04-17:/blog/2009/04/17/the-moo-cards-have-arrived.html</id>
    <title type="html">The Moo cards have arrived!</title>
    <published>2009-04-17T00:00:00Z</published>
    <updated>2010-03-08T10:47:32Z</updated>
    <link href="http://lunarlogicpolska.com/blog/2009/04/17/the-moo-cards-have-arrived.html" rel="alternate"/>
    <content type="html">&lt;p&gt;After seeing Mike Butcher's Moo cards when he visited last month, we had to have our own and today they arrived! Everyone at Lunar Logic Polska has their own Moo cards and, while we missed the trend on that one, they are still fun to have and pass around.&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/posts/moo.jpg"/&gt;&lt;/p&gt;</content>
  </entry>
</feed>
