<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Eoin O&apos;Connor</title>
    <description>My thoughts on software engineering.
</description>
    <link>http://eoin.ie/</link>
    <atom:link href="http://eoin.ie/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 26 Sep 2026 21:19:00 +0000</pubDate>
    <lastBuildDate>Sat, 26 Sep 2026 21:19:00 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>&lt;em&gt;build-it:&lt;/em&gt; Copy, copy, do you read...</title>
        <description>&lt;p&gt;Before I built the &lt;a href=&quot;/2026/09/19/shoot-your-screen-shot.html&quot;&gt;screenshotpaste tool from my previous post&lt;/a&gt; I was interacting with a lot more agents and found myself wanting to copy paths quickly. I have long been a fan of the &lt;a href=&quot;https://www.manpagez.com/man/1/pbcopy/&quot;&gt;pbcopy &amp;amp; pbpaste commands &lt;/a&gt; and wanted something similar for paths. Realpath was what I needed but I wrote a small wrapper around it called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cpath&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cpath&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then
    &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;pwd&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;tr&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;\n&apos;&lt;/span&gt; | pbcopy &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;pwd copied to clipboard&apos;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;else
    &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;realpath&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;tr&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;\n&apos;&lt;/span&gt; | pbcopy &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Path copied: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;realpath&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This has been quite useful - if you’re curious to learn more about how NSPasteboard works I recommend &lt;a href=&quot;https://quietclip.app/blog/how-nspasteboard-works/&quot;&gt;this neat post&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 26 Sep 2026 16:56:30 +0000</pubDate>
        <link>http://eoin.ie/2026/09/26/copy-copy-do-you-read.html</link>
        <guid isPermaLink="true">http://eoin.ie/2026/09/26/copy-copy-do-you-read.html</guid>
        
        
      </item>
    
      <item>
        <title>&lt;em&gt;build-it:&lt;/em&gt; Shoot your (screen)shot</title>
        <description>&lt;p&gt;I love tools that shave a couple of seconds off my process - it is probably fair to say I do not ascribe to the “Is It Worth the Time?” mantra of &lt;a href=&quot;https://xkcd.com/1205/&quot;&gt;xkcd&lt;/a&gt; but we all have our foibles I guess.&lt;/p&gt;

&lt;p&gt;In that vein, one feature I love is alfreds &lt;a href=&quot;https://www.alfredapp.com/help/features/clipboard/&quot;&gt;clipboard history&lt;/a&gt; which allows me to cycle through previous copies - I love this so much I even found a Samsung equivalent to use the clipboard with &lt;a href=&quot;https://r1.community.samsung.com/t5/others/use-the-clipboard-at-side-panels/td-p/21392039&quot;&gt;their edge panel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The gap however is when I’m working in an environment what requires lots of screenshot sharing - I like &lt;a href=&quot;https://shottr.cc/&quot;&gt;shottr&lt;/a&gt; for quick screenshots - I do not want to have to move all my screenshots through my clipboard however so I built a small alfred workflow to allow me to cycle through my recent downloads and screenshots and paste where I am. This build on a previously using a global shortcut to open my screenshots folder.&lt;/p&gt;

&lt;p&gt;Here it is in action:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/alfred-screenshot-picker.png&quot; alt=&quot;The Alfred workflow in action&quot; width=&quot;545&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I like it so far and have been inflicting much more images on my co-workers as a result.&lt;/p&gt;
</description>
        <pubDate>Sat, 19 Sep 2026 15:00:56 +0000</pubDate>
        <link>http://eoin.ie/2026/09/19/shoot-your-screen-shot.html</link>
        <guid isPermaLink="true">http://eoin.ie/2026/09/19/shoot-your-screen-shot.html</guid>
        
        
      </item>
    
      <item>
        <title>Bash Scripting</title>
        <description>&lt;h1 id=&quot;all-roads-lead-to-bash&quot;&gt;All Roads Lead to Bash&lt;/h1&gt;

&lt;p&gt;Last week I once again found myself writing some bash scripts while
restructuring how some of our Chronos jobs are deployed here at
&lt;a href=&quot;https://www.reonomy.com/&quot;&gt;Reonomy&lt;/a&gt;. The truth is I would say at least every
couple of months I come up aginst a problem where a reasonable solution is to
write a quick bash script.&lt;/p&gt;

&lt;p&gt;Sometimes this involves writing a once off and sometimes it means writing
something that will live a little longer but the one thing that is consistent
is I almost always want to get done with the scripting and on to the next phase
of the problem. This is a reasonable enough desire but I think that I have been
missing an opportunity to improve my bash-foo and be in a better position for
the next time a bash sized problem appears, as it surely will.&lt;/p&gt;

&lt;p&gt;So I have taken  all the scripts I wrote this time and added them, some
slightly modified, to &lt;a href=&quot;https://github.com/mcmonkeyman/bash-playground&quot;&gt;bash
playground&lt;/a&gt; the goal here is to
try and become more disiplined about building up a decent bank of usefull
scripts and also to develop a good starting template to help the Eoin of the
future :)&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Apr 2016 21:54:57 +0000</pubDate>
        <link>http://eoin.ie/jekyll/update/2016/04/20/002-bash-playground.html</link>
        <guid isPermaLink="true">http://eoin.ie/jekyll/update/2016/04/20/002-bash-playground.html</guid>
        
        
        <category>jekyll</category>
        
        <category>update</category>
        
      </item>
    
      <item>
        <title>HP Touch as a news machine</title>
        <description>&lt;p&gt;A better Hp Touch&lt;/p&gt;
&lt;p&gt;I decided it was about time I put the HP Touch I received as a lovely gift from my cousins to good use. I wanted a tablet that would provide my with the most recent news but it needed to update daily and work offline as I commute to work using the subway.&lt;/p&gt;
&lt;p&gt;I didn&apos;t feel that the native webOS suitable for this so I installed Android  following the instructions at &lt;a title=&quot;The CyanogenMode Install Guide&quot; href=&quot;http://wiki.cyanogenmod.org/w/Install_CM_for_tenderloin&quot;&gt;the CyanogenMod wiki&lt;/a&gt;. One caveats that I found were that there was no stable version only the nightly but it works fine.&lt;/p&gt;
&lt;p&gt;I then installed a number of newspaper apps,  Google Reader and Pocket. My next post will be to get these apps working offline.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</description>
        <pubDate>Mon, 04 Mar 2013 07:20:44 +0000</pubDate>
        <link>http://eoin.ie/2013/03/04/hp-touch-as-a-news-machine.html</link>
        <guid isPermaLink="true">http://eoin.ie/2013/03/04/hp-touch-as-a-news-machine.html</guid>
        
        <category>Cyanogenmod</category>
        
        <category>HP touch</category>
        
        
      </item>
    
      <item>
        <title>SVN issues</title>
        <description>&lt;p&gt;Had a problem after I restructured webpage and the coda&apos;s SVN commit failed. The solution was to resolve conflicts and push repository  over the command line.&lt;/p&gt;
&lt;p&gt;Commands from &lt;a href=&quot;http://stackoverflow.com/questions/2406469/svn-remains-in-conflict&quot;&gt;this link&lt;/a&gt;:&lt;code&gt;&lt;br /&gt;
svn remove --force filename&lt;br /&gt;
svn resolve --accept=working filename&lt;br /&gt;
svn commit&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A secondary issue was that theSVN_EDITOR variable needed to be set. A &lt;a href=&quot;http://www.antbrown.com/web-development/svn-could-not-use-external-editor-to-fetch-log-message/&quot;&gt;work around&lt;/a&gt; is to  use the  -m &quot;&quot; flag.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
        <pubDate>Tue, 29 Nov 2011 00:34:55 +0000</pubDate>
        <link>http://eoin.ie/2011/11/29/svn-issues.html</link>
        <guid isPermaLink="true">http://eoin.ie/2011/11/29/svn-issues.html</guid>
        
        
      </item>
    
      <item>
        <title>Time they say is the great healer...</title>
        <description>&lt;p&gt;I am currently in the states and as a result I have been communicating with my family using Skype. With the O&apos;Connor clan spread across three time zones I have been confused by the time difference on more than a few occasions. Sure I could just check on google whenever I wanted to call but where&apos;s the fun in that:)&lt;/p&gt;
&lt;p&gt;In this post I will describe how I built &lt;a href=&quot;www.eoin.ie/tco.html.&quot;&gt;a page&lt;/a&gt; that displays each family members time and locations in a clear, intuitive and fun way.&lt;/p&gt;
&lt;p&gt;[soundcloud url=&quot;http://api.soundcloud.com/tracks/19557044&quot; params=&quot;show_comments=true&amp;amp;auto_play=false&amp;amp;color=ff7700&quot; width=&quot;100%&quot; height=&quot;81&quot; ]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. &lt;/strong&gt;&lt;strong&gt;Raphaël and an updated Analog clock.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Raphaël is a JavaScript vector library. I used an existing example of an analog clock which i got from &lt;a href=&quot;http://www.emanueleferonato.com/2010/12/11/javascript-analog-clock-with-no-images-and-no-css/&quot;&gt;this cool site. &lt;/a&gt;Initially it didn&apos;t work  with the current version of the Raphaël library and I had to update the code so it worked correctly. The issue was the rotate function, which appears to have changed in the more recent version of the Raphaël library. The new rotate function is relative to the vectors current position, whereas the old rotate function was relative to the initial vector position.&lt;/p&gt;
&lt;p&gt;I like this clock as it works using only JavaScript as opposed to a Flash version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. OO in javascript&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Next step was to read a couple of articles on OO in JS. I found the concept of no classes a bit unusual, &lt;a title=&quot;http://www.javascriptkit.com/javatutors/oopjs.shtml&quot; href=&quot;http://www.javascriptkit.com/javatutors/oopjs.shtml&quot;&gt;http://www.javascriptkit.com/javatutors/oopjs.shtml&lt;/a&gt; was a very useful article. I also bookmarked &lt;a href=&quot;http://www.2ality.com/2011/11/javascript-classes.html&quot;&gt;an article&lt;/a&gt; for further reading about the fundamental differences between JS and class based languages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Debugging in JS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While applying the principles learned in section 2  to make the code more object orientated I got my feet wet with the chrome &lt;a href=&quot;http://stackoverflow.com/questions/66420/how-do-you-launch-the-javascript-debugger-in-google-chrome&quot;&gt;JS console for debugging&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://getfirebug.com/downloads&quot;&gt;Firebug&lt;/a&gt; appears like it could be an option worth considering in the future.&lt;br /&gt;
&lt;strong&gt;4. Time out function issues&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While writing the code I had issues with the setInterval() method. It appears that when using it with OO code the method passed in to set Interval would be called from a global scope and not the class instance scope . I used the work around at &lt;a href=&quot;http://www.vonloesch.de/node/32&quot;&gt;http://www.vonloesch.de/node/32&lt;/a&gt; which allowed me to get  multiple clock instances displaying and updating correctly.&lt;/p&gt;
&lt;p&gt;For more in depth understanding &lt;a href=&quot;http://www.switchonthecode.com/tutorials/javascript-tutorial-using-setinterval-and-settimeout&quot;&gt;this article &lt;/a&gt; was also very informative on this topic.&lt;br /&gt;
&lt;strong&gt;5. Float the divs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Being out of practice with css It took me 5 minutes(too long) to figure out to float the divs to get my clock displaying side by side. &lt;a href=&quot;http://www.switchonthecode.com/tutorials/javascript-tutorial-using-setinterval-and-settimeout&quot;&gt;This article&lt;/a&gt; got me going in the right direction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Time: it&apos;s all relative baby.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lifted the code from&lt;a href=&quot;http://javascript.about.com/library/bltime1.htm&quot;&gt; this script&lt;/a&gt; and adjusted to suit my needs eg: to get the clocks displaying times in different time zones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Restructure&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Did a bit of restructuring, based the layout on the webpage &lt;a href=&quot;http://html5boilerplate.com/&quot;&gt;http://html5boilerplate.com/&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. Notes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There appears to be an issue with synchronisation at times. Possibly because the library is asynchronous.&lt;/li&gt;
&lt;li&gt;It could be prettier, I&apos;m happy that there is enough functionality and I will make it look good in the future if I can find the time.&lt;/li&gt;
&lt;li&gt;I could also improve the code structure as this is only the minimum working version.&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;strong&gt;9. Code&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;The page is available at &lt;a href=&quot;www.eoin.ie/tco.html&quot;&gt;www.eoin.ie/tco.html&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;10. Versioning&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Raphaël 2.0.&lt;/p&gt;
</description>
        <pubDate>Mon, 28 Nov 2011 23:47:55 +0000</pubDate>
        <link>http://eoin.ie/javascript/2011/11/28/time-they-say-is-the-great-healer.html</link>
        <guid isPermaLink="true">http://eoin.ie/javascript/2011/11/28/time-they-say-is-the-great-healer.html</guid>
        
        
        <category>JavaScript</category>
        
      </item>
    
      <item>
        <title>MAMP, Coda and BeanStalk: Workflow upgrade</title>
        <description>&lt;p&gt;After playing around on the eoin.ie workflow for a bit I have settled on a setup that I&apos;m more happy with. Previously I was simply editing files and ftping them to the live site, a bad setup to say the least. The new setup allows me to edit and preview the site locally using MAMP, commit changes to my SVN repository on BeanStalk and when ready publish the site using Coda. Below the necessary steps taken to achieve this setup are laid out:&lt;/p&gt;
&lt;p&gt;1.Setup MAMP&lt;/p&gt;
&lt;p&gt;The first step involved downloading the free version of  MAMP, installing it  and running it. The process was a synch and the  I only changed two settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the Apache tab I changed the Document root to /Users/my_user_account/Sites&lt;/li&gt;
&lt;li&gt;In the Start/Stop tab I unchecked the &apos;Check for MAMP pro when starting MAMP&apos; box.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2.Add multiple site support to MAMP&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First,  I made a folder  /Users/my_user_account/Sites/eoin.ie, where eoin.ie is the new folder that will hold my local copy of the site.&lt;/li&gt;
&lt;li&gt;Next I changed /private/etc hosts/ to include the name I wanted to use to access this new local copy of the site.&lt;/li&gt;
&lt;li&gt; Next I added a virtual host by editing /Applications/MAMP/conf/apache/httpd.conf. This ensures that the local site  uses  the correct root. The full instructions can be found on &lt;a href=&quot;http://www.brockboland.com/comment/826&quot;&gt;Brocks blog post&lt;/a&gt; .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3.Setup Beanstalk account and import old site&lt;/p&gt;
&lt;p&gt;This was a relatively straight forward step. Beanstalk offer a free SVN account so its perfect for my uses, I imported a zip of my current site to the root and had to delete some of the Mac system files that came along for the ride. There is a good &lt;a href=&quot;http://basementjack.com/uncategorized/video-coda-subversion-beanstalk-how-to/&quot;&gt;video tutoria&lt;/a&gt;l for this, even if it is a little drawn out for my tastes.&lt;/p&gt;
&lt;p&gt;4.Setup Coda&lt;/p&gt;
&lt;p&gt;I Installed Coda, added a Site and changed the settings for the site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; I set the local site to be the empty folder from step 2.&lt;/li&gt;
&lt;li&gt;I set the  the local preview URL to be the address I put in the hosts and http.conf file in step 2,  http://local.eoin.ie:8888/ in this case.&lt;/li&gt;
&lt;li&gt;Next I entered the details from  the BeanStalk SVN account from step 3 and a copy of  the site got downloaded from the SVN to my new local, previewable copy.&lt;/li&gt;
&lt;li&gt; Finally, I entered the settings for the ftp account, available from my web hosting company. Its worth noting that in my case I had to use the /webspace/httpdocs/ subdirectory in my ftp url  for it to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5.Test&lt;/p&gt;
&lt;p&gt;I tested the setup and I&apos;m able to commit changes to my repository to my hearts content and only publish when I&apos;m ready. I have yet to test a roll back but I&apos;m sure I will have too soon enough:)&lt;/p&gt;
&lt;p&gt;6. Versioning  History&lt;/p&gt;
&lt;p&gt;Mac version 10.6.8&lt;/p&gt;
&lt;p&gt;Coda version 1.7.4 -  &lt;a href=&quot;http://www.panic.com/coda/&quot;&gt; http://www.panic.com/coda/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MAMP version 2.0.5 - &lt;a href=&quot;http://www.mamp.info/en/index.html&quot;&gt;http://www.mamp.info/en/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BeanStalk -&lt;a href=&quot;http://www.beanstalkapp.com&quot;&gt; http://www.beanstalkapp.com&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 22 Oct 2011 18:47:21 +0000</pubDate>
        <link>http://eoin.ie/2011/10/22/mamp-coda-and-beanstalk-workflow-upgrade.html</link>
        <guid isPermaLink="true">http://eoin.ie/2011/10/22/mamp-coda-and-beanstalk-workflow-upgrade.html</guid>
        
        
      </item>
    
      <item>
        <title>Project Page Moved</title>
        <description>&lt;p&gt;If your looking for my final year project it has been moved to a new address: &lt;a title=&quot;http://fourthyearproject.wordpress.com/&quot; href=&quot;http://fourthyearproject.wordpress.com/&quot;&gt;http://fourthyearproject.wordpress.com/&lt;/a&gt; . Seeing as that project is now finished I will use this for my personal blog, expect some interesting posts to follow.&lt;/p&gt;
&lt;p&gt;Eoin out.&lt;/p&gt;
</description>
        <pubDate>Mon, 03 Oct 2011 07:48:40 +0000</pubDate>
        <link>http://eoin.ie/2011/10/03/project-page-moved.html</link>
        <guid isPermaLink="true">http://eoin.ie/2011/10/03/project-page-moved.html</guid>
        
        
      </item>
    
  </channel>
</rss>
