<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>mike mcquaid dot com &#187; Software</title> <atom:link href="http://mikemcquaid.com/category/software/feed/" rel="self" type="application/rss+xml" /><link>http://mikemcquaid.com</link> <description>the internet is leaking</description> <lastBuildDate>Tue, 31 Jan 2012 23:59:33 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Deploying Qt applications with DeployQt4</title><link>http://mikemcquaid.com/2012/01/deploying-qt-applications-with-deployqt4/</link> <comments>http://mikemcquaid.com/2012/01/deploying-qt-applications-with-deployqt4/#comments</comments> <pubDate>Wed, 04 Jan 2012 16:48:27 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikemcquaid.com/?p=3350</guid> <description><![CDATA[CMake 2.8.7 has been released and includes the DeployQt4 module I created. DeployQt4 will take an executable and any specified Qt plugins and install and setup all the linked dependencies. DeployQt4 does this by using e.g. otool, ldd or depends.exe to find the linked libraries, installing a qt.conf file (if needed) to ensure the correct [...]]]></description> <content:encoded><![CDATA[<p><a href="http://www.kitware.com/news/home/browse/CMake?2012_01_02&#038;CMake+2.8.7+Now+Available">CMake 2.8.7 has been released</a> and includes the DeployQt4 module I created.</p><p>DeployQt4 will take an executable and any specified Qt plugins and install and setup all the linked dependencies.</p><p>DeployQt4 does this by using e.g. <code>otool</code>, <code>ldd</code> or <code>depends.exe</code> to find the linked libraries, installing a <code>qt.conf</code> file (if needed) to ensure the correct Qt is used and install any specified Qt plugins to the default Qt application plugin path. On OSX it will also use <code>install_name_tool</code> to make sure your application is linked directly to the libraries inside its bundle.</p><p>For example an OSX application bundle before DeployQt4 might look like:<br /> <img src="http://mikemcquaid.com/wp-content/uploads/2012/01/before.png" alt="Before DeployQt4 directory tree" width="244" height="119" class="alignnone size-full wp-image-3415" /></p><p>and afterwards like:<br /> <img src="http://mikemcquaid.com/wp-content/uploads/2012/01/after.png" alt="After DeployQt4 directory tree" width="244" height="279" class="alignnone size-full wp-image-3414" /></p><p>The most commonly used DeployQt4 function is <code>INSTALL_QT4_EXECUTABLE</code> function. For example:<br /> <code>INSTALL_QT4_EXECUTABLE(${EXECUTABLE_PATH} qsqlite)</code></p><p>If you wanted to do this in a CMake script rather than at install time (i.e. for an already compiled executable) you could instead call:<br /> <code>FIXUP_QT4_EXECUTABLE(${EXECUTABLE_PATH} qsqlite)</code></p><p>Other DeployQt4 options include manually specifying libraries or non-Qt plugins to install their linked dependencies, additional directories to check for linked dependencies (the Qt directories are added by default), override the default plugin installation directory, override whether a <code>qt.conf</code> file is installed and the use of CMake <code>INSTALL</code> components.</p><p>You can see an example of using DeployQt4 (combined with CPack to generate installers) in <a href="https://github.com/mikemcquaid/Fabula/blob/master/CMakeLists.txt">the CMakeLists.txt file for my Fabula project</a>.</p><p>For more information read the <a href="http://cmake.org/cmake/help/cmake-2-8-docs.html#module:DeployQt4">DeployQt4 section of the official CMake documentation</a>, read the <a href="https://github.com/Kitware/CMake/blob/master/Modules/DeployQt4.cmake">DeployQt4 source code</a> or post a question in the comments.</p><p>If you want the same functionality for non-Qt projects I suggest you investigate the <a href="http://cmake.org/cmake/help/cmake-2-8-docs.html#module:BundleUtilities">BundleUtilities module in CMake</a>. Despite the confusing name this installs linked dependencies on Windows, Mac and Linux. DeployQt4 extends this functionality to improve the API and add some Qt-specific deployment help.</p><p>If you want the same functionality for Mac-only non-CMake projects I suggest you investigate the <a href="http://developer.qt.nokia.com/doc/deployment-mac.html#the-mac-deployment-tool">Mac deployment tool (macdeployqt)</a> that is bundled with Qt. It lacks the DeployQt4 added features of automatic installation of any linked dependencies, CMake/CPack integration and support for Windows and Linux but will install the Qt libraries correctly.</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2012/01/deploying-qt-applications-with-deployqt4/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Make Qt use the GTK Style on XFCE or Xubuntu</title><link>http://mikemcquaid.com/2011/12/make-qt-use-the-gtk-style-on-xfce-or-xubuntu/</link> <comments>http://mikemcquaid.com/2011/12/make-qt-use-the-gtk-style-on-xfce-or-xubuntu/#comments</comments> <pubDate>Thu, 01 Dec 2011 18:14:40 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikemcquaid.com/?p=3367</guid> <description><![CDATA[I&#8217;m a Qt developer and use Xubuntu in my Linux VMs as it is lighter than KDE and doesn&#8217;t get in my way (unlike Unity). By default there is a problem with QGtkStyle which stops it correctly picking up the GTK theme as XFCE does not save it in the usual place. To fix this [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;m a Qt developer and use Xubuntu in my Linux VMs as it is lighter than KDE and doesn&#8217;t get in my way (unlike Unity).</p><p>By default there is a problem with QGtkStyle which stops it correctly picking up the GTK theme as XFCE does not save it in the usual place.</p><p>To fix this we can use a simple script:</p><p><code>#!/bin/sh<br /> DEFAULT_XFCE_THEME=greybird<br /> XFCE_THEME=$(xfconf-query -c xsettings -p /Net/ThemeName 2&gt;/dev/null)<br /> GTK2_RC_FILES=$HOME/.config/xfce4/gtkrc<br /> [ -z "$XFCE_THEME" ] &amp;&amp; XFCE_THEME=$DEFAULT_XFCE_THEME<br /> echo gtk-theme-name = $XFCE_THEME &gt; $GTK2_RC_FILES<br /> unset DEFAULT_XFCE_THEME<br /> unset XFCE_THEME<br /> export GTK2_RC_FILES<br /> . /etc/xdg/xfce4/xinitrc</code></p><p>Put this script into <code>$HOME/.config/xfce4/xinitrc</code> and ensure it is executable by running <code>chmod +x $HOME/.config/xfce4/xinitrc</code>.</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2011/12/make-qt-use-the-gtk-style-on-xfce-or-xubuntu/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>The Social Network: A Defence of Programming</title><link>http://mikemcquaid.com/2010/11/the-social-network-a-defense-of-programming/</link> <comments>http://mikemcquaid.com/2010/11/the-social-network-a-defense-of-programming/#comments</comments> <pubDate>Thu, 11 Nov 2010 04:57:11 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Film]]></category> <category><![CDATA[Life]]></category> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikemcquaid.com/?p=3027</guid> <description><![CDATA[I recently saw The Social Network, a dramatisation of the creation of Facebook. It was a thoroughly enjoyable film with brilliant direction, casting (Eisenberg and Timberlake in particular) and writing. It also had an incredibly realistic hacking scene (using wget and perl scripts) and featured KDE on the desktop of most of the programmers in [...]]]></description> <content:encoded><![CDATA[<p>I recently saw <a href="http://www.imdb.com/title/tt1285016/">The Social Network</a>, a dramatisation of the creation of Facebook. It was a thoroughly enjoyable film with brilliant direction, casting (Eisenberg and Timberlake in particular) and writing. It also had an incredibly realistic hacking scene (using wget and perl scripts) and featured KDE on the desktop of most of the programmers in the film. I highly recommend seeing it, regardless of your thoughts on Facebook.</p><p>A friend sent me a <a href="http://www.nybooks.com/articles/archives/2010/nov/25/generation-why/?pagination=false">link to an interesting review</a> that I was writing a long response to but thought I&#8217;d turn it into a blog post instead. The review is fantastically written by Zadie Smith but there&#8217;s a few glaring holes in it that frustrated this post into existence.</p><p>Smith, like many mainstream journalists and writers, seems to fundamentally understand what makes people like us excited about programming. I&#8217;ll respond to some choice quotes from the review.</p><blockquote><p><em>No doubt the filmmakers considered this option, but you can see their dilemma: how to convey the pleasure of programming—if such a pleasure exists—in a way that is both cinematic and comprehensible?</em></p></blockquote><p>If such a pleasure exists? Really? She mentions in the review she talked to a &#8220;software expert&#8221; but she must have avoided this topic of discussion. The pleasure in coding combines creativity (like creating art, no-one will ever write a program the same way as you), building to try to simplify the lives of others and mathematical problem solving. I think the film communicates this fairly well but it&#8217;s one of these things that&#8217;s pretty much impossible to hide the elements of programming that immediately turn some people off it. Some people find the idea that I sit at my computer typing for most of the day fundamentally boring and there&#8217;s not much you can do to argue against this viewpoint other than display the great things that can result from it.</p><blockquote><p><em>E Pluribus Unum—that&#8217;s the point. Here’s my guess: he wants to be like everybody else. He wants to be liked.</em></p></blockquote><p>It&#8217;s a shame that for anyone who is or was ever considered &#8220;nerdy&#8221; that we fall victim to such poor pop psychology. Just because we weren&#8217;t all deemed &#8220;cool&#8221; in high school doesn&#8217;t mean our entire careers are driven by this reductionist need to over-compensate for what others thing we missed out on. Zuckerberg I&#8217;d imagine, like most software engineers wants to build something that everyone will think &#8220;how did I manage before this came along&#8221; and, even if they don&#8217;t know he made it, he&#8217;ll know that he&#8217;s simplified the lives of a lot of people. This is why we do it and this is why we love it.</p><p>The fact that Zuckerberg open-sourced his earlier applications (not just gave it away for not monetary value, her review misses this) shows this; he values the pleasure of people using his tool over the monetary return that he could have instead. This also points to why Facebook didn&#8217;t take the many chances to sell out to large companies earlier in its existence.</p><blockquote><p><em>I am dreaming of a Web that caters to a kind of person who no longer exists. A private person, a person who is a mystery, to the world and—which is more important—to herself.</em></p></blockquote><p>The type of web (and person) she mentions already existed and still exists: you can use private email, private Facebook messages, protected Twitter accounts and use other services that guarantee privacy, even relying on end-to-end encryption so only the sender and receiver can see any content. Arguably, this was the first web, the one many of us were using 10 or 15 years ago. The problem is that she fails to see the flip side of her argument: what about those of us who are very public people, how could we share things with the world without relying on a gatekeeper or third-party before the internet and, arguably, before Web 2.0&#8242;s concepts became mainstream?</p><p>This is why she&#8217;s writing her review in the New York Review and not by monetizing a personal blog. She seems to believe in the gatekeeper, the Web 1.0 (or Person 1.0 from her article) and the tight separation of career and personal life, of the private persona that lives their life and the public persona that does their work (or perhaps I&#8217;m the one who is spouting pop psychology now).</p><p>As said, this was a brilliantly written review even although I disagree with many of the arguments in it. The Social Network (and indeed Facebook itself) is a great advertisement for the beauty and power of software: that someone can produce something that will change the world from their university dorm room with scarce resources, no corporate sponsors, some programming experience and a lot of hard work. It&#8217;s the antithesis of programs like X Factor and other reality TV that spouts the lie to society that success comes from being lucky enough to be picked by a corporation and that fame itself is the thing worth striving for.</p><p>Start showing films like The Social Network in schools. Get high school kids writing software rather than the letters in Word. Teach them how to write Facebook and mobile applications, programs that they and their friends will use outside of school. Let us, as software engineers, rekindle the passion that got us into this field in the first place and let&#8217;s see a return to late-night coding binges and building useful stuff for fun. Let&#8217;s see the youth of tomorrow look at our field and think &#8220;wow, that&#8217;s cool, I want to do that too&#8221;.</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2010/11/the-social-network-a-defense-of-programming/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Why I Left Linux and went to Apple</title><link>http://mikemcquaid.com/2010/09/why-i-left-linux/</link> <comments>http://mikemcquaid.com/2010/09/why-i-left-linux/#comments</comments> <pubDate>Tue, 21 Sep 2010 19:17:01 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikemcquaid.com/?p=2796</guid> <description><![CDATA[I originally bought a Macbook to use as a nice Linux laptop and for some iPhone and Qt OSX development. Shortly afterwards I got engaged which made me think about the future and how I spent my time a bit more. Linux is great for many use-cases but I just kept finding myself getting increasingly [...]]]></description> <content:encoded><![CDATA[<p>I originally bought a Macbook to use as a nice Linux laptop and for some iPhone and Qt OSX development. Shortly afterwards I got engaged which made me think about the future and how I spent my time a bit more. Linux is great for many use-cases but I just kept finding myself getting increasingly fed up with trying to use it on the desktop. My problems included having DVD playback not work quite correctly, having to manually edit configuration files in a text editor just to get some piece of hardware that worked instantly in OSX and Windows working and various other issues that wasted my time. Due to a kernel bug in Linux affecting my Macbook, I found myself using OSX more and more for work and finally moved across completely to my Macbook and also removing Linux from my desktop to relegate it to a Windows-only games machine. I&#8217;m now only running Linux on my NAS, this server, TV and phone.</p><p>I&#8217;m a software engineer and I like writing code. I don&#8217;t mind doing sysadmin, I did it at my previous employer and do it on this server but my main love with computers will always be programming. Moving to OSX gave me a system that &#8220;Just Works&#8221; and resulted in me having more time to work on interesting coding projects and wasting less time trying to make my computer do what it is meant to.</p><p>I think the reason people become so passionate about Apple&#8217;s products is that they really focus on not bothering the user unless they have to through making sensible design decisions rather than worrying about edge cases (an unfortunate affliction for software engineers). A great example of this is the suspend behaviour. Firstly, suspend and resume on Mac is 100% reliable, I&#8217;ve never had my machine not come up after suspending. It&#8217;s quick, it occurs on you putting the lid down and it quickly becomes second nature to do so. Another great example of Apple&#8217;s design focus is what happens when your battery runs out after you&#8217;ve already put your lid down and suspended (<strong>UPDATE:</strong> This feature is know as <a href="http://en.wikipedia.org/wiki/Hibernation_(computing)#Mac_OS_X">Safe Sleep</a> and combines hibernate and sleep. This is possible on Linux but isn&#8217;t default on any distribution I&#8217;ve ever used). On Windows (on older versions at least, haven&#8217;t tested this on 7) and on Linux: sucks, you shouldn&#8217;t have let your battery run out, you&#8217;ve lost all your work. On OSX: it hibernates automatically some time before the battery runs out so your work is saved.</p><p>I explained this to my wife and she asked &#8220;Why doesn&#8217;t everyone do it that way?&#8221;. I didn&#8217;t know. I suspect because it&#8217;s a hard problem and it doesn&#8217;t affect many people. The problem is that, although an edge case, when it does affect you it&#8217;s mindblowingly frustrating. When I use an Apple product it feels like they care about you enjoying your experience. They care if you lose work so they try and stop you doing so. On Linux, it just felt that whatever went wrong it was my fault for not RTFM. This came across from the OS itself and the developers and users I would ask for help.</p><p>Even if you use Linux or Windows, I encourage you to be influenced by Apple when you design your software: do the most sensible thing for the user at all times and don&#8217;t bother them. Don&#8217;t worry so much about edge cases and just try and transparently help the user without bothering them. This is why people pay a premium for Apple products. Better to make something that&#8217;s great at doing a few things in a way the user will love than possible to do everything if the user tries hard enough.</p><p><strong>UPDATE:</strong> I didn&#8217;t mention the distribution I&#8217;ve used because the above applied to every one I had used at the stage I left. Even on well supported Dell hardware (Latitude D620) I never had 100% reliable suspend on Fedora, Debian, Kubuntu, OpenSUSE, Arch Linux or Gentoo. I bought the laptop for Linux as a friend had a Macbook; it was really well supported and worked great and he&#8217;s a kernel hacker so I thought it was a good bet. Turns out the newer version I bought had the above mentioned kernel bugs causing only one core to be usable (ACPI bug).</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2010/09/why-i-left-linux/feed/</wfw:commentRss> <slash:comments>41</slash:comments> </item> <item><title>Windows Autologin Lock Screen</title><link>http://mikemcquaid.com/2010/09/windows-autologin-lock-screen/</link> <comments>http://mikemcquaid.com/2010/09/windows-autologin-lock-screen/#comments</comments> <pubDate>Sun, 19 Sep 2010 15:00:25 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=390</guid> <description><![CDATA[Something I miss when I used Windows is the nice autologin feature from KDE&#8217;s login manager (KDM). Autologin always struck me as a bit insecure; why have a password if you are going to bypass it completely? KDM&#8217;s solution was pretty nice, it allowed you to be logged in automatically (so that everything that runs [...]]]></description> <content:encoded><![CDATA[<p>Something I miss when I used Windows is the nice autologin feature from KDE&#8217;s login manager (KDM). Autologin always struck me as a bit insecure; why have a password if you are going to bypass it completely? KDM&#8217;s solution was pretty nice, it allowed you to be logged in automatically (so that everything that runs on startup started loading) and lock the desktop before it appeared so that when you turned on your computer you would still get a password prompt but would unlock it to find that all your applications had already loaded.</p><p>I&#8217;ve managed to emulate this functionality in Windows by using the login scripts. This script should work in Windows 2000 or any later version but the setup instructions may vary.</p><ul><li>Create a file named LockWorkStation.vbs with the contents: <code>WScript.CreateObject("WScript.Shell").Run("rundll32 user32.dll,LockWorkStation")</code></li><li>Access the hidden Advanced Users Control Panel by running &#8220;<code>control.exe userpasswords2</code>&#8221; from a Run dialog or command prompt.</li><li> In the &#8220;Users&#8221; tab, uncheck &#8220;Users must enter a user name and password to use this computer&#8221;.</li><li> <strong>UPDATE:</strong> Windows 7 Home Premium, Windows Vista Home Premium and Windows XP Home Edition don&#8217;t come with the necessary group policy editor so you can either Google for ways of using gpedit.msc (either downloading the needed files or editing the registry manually) or just put the above script in your Startup folder. The latter option will be less secure as someone could get access to your machine after the desktop loads but before the script does but it will still work.</li><li> In the &#8220;Advanced&#8221; tab under &#8220;Advanced user management&#8221; click &#8220;Advanced&#8221;.</li><li> Click &#8220;Users&#8221; in the left-hand pane of the &#8220;Local Users and Groups&#8221; window, right-click on the user you want to autologin from the right-hand pane and select &#8220;Properties&#8221;.</li><li> In the &#8220;Profile&#8221; tab, enter &#8220;LockWorkstation.vbs&#8221; in the &#8220;Logon script:&#8221; box..</li><li> Create a folder somewhere on disk (I recommend My Documents/Scripts) that you want to store the script in.</li><li> Right-click on the folder and select &#8220;Properties&#8221;. From the &#8220;Sharing&#8221; tab, click &#8220;Advanced Sharing&#8230;&#8221;.</li><li> Check &#8220;Share this folder&#8221; and enter &#8220;NetLogon&#8221; in the &#8220;Share name&#8221; box. Set the number of simultaneous users to 1.</li><li> Click &#8220;Permissions&#8221; and ensure you are the only user listed and you have only &#8220;Read&#8221; access enabled.</li></ul><p>You&#8217;re now done. When you next log in, you shouldn&#8217;t see the desktop at all (or incredibly briefly) and the screen should lock immediately and require your password to unlock while all your stuff happily loads in the background.</p><p><strong>UPDATE:</strong> This was <a href="http://lifehacker.com/5645098/make-windows-load-your-desktop-before-you-log-in">posted on Lifehacker</a> and they made a video walkthrough for this post:<br /> <object type="application/x-shockwave-flash" style="width:640px; height:390px;" data="http://www.youtube.com/v/8sVzE-zInfM"><param name="movie" value="http://www.youtube.com/v/8sVzE-zInfM" /></object></p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2010/09/windows-autologin-lock-screen/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>License to be Qt</title><link>http://mikemcquaid.com/2009/11/license-to-be-qt/</link> <comments>http://mikemcquaid.com/2009/11/license-to-be-qt/#comments</comments> <pubDate>Fri, 20 Nov 2009 19:36:26 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=375</guid> <description><![CDATA[Like my esteemed KDE colleague I&#8217;m now a Nokia Certified Qt Developer!]]></description> <content:encoded><![CDATA[<p>Like my <a href="http://vizZzion.org/blog/2009/11/im-a-real-developer/">esteemed KDE colleague</a> I&#8217;m now a <strong>Nokia Certified Qt Developer</strong>!</p><p><img src="http://mikemcquaid.com/wp-content/uploads/2009/11/Nokia_Certified_Qt_Developer_Logo.jpg" alt="Nokia Certified Qt Developer" /></p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2009/11/license-to-be-qt/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Hack on the Mac(book)</title><link>http://mikemcquaid.com/2009/11/hack-on-the-macbook/</link> <comments>http://mikemcquaid.com/2009/11/hack-on-the-macbook/#comments</comments> <pubDate>Mon, 16 Nov 2009 15:53:51 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Life]]></category> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=368</guid> <description><![CDATA[It&#8217;s been a busy few months! Outside of work my fiancee and I have been planning our wedding and bought a house for us to live in when we get married. It was worryingly easy to do the whole thing, it required minimal paperwork. It&#8217;s in Broughty Ferry (on the outskirts of Dundee) and the [...]]]></description> <content:encoded><![CDATA[<p>It&#8217;s been a busy few months!</p><p>Outside of work my fiancee and I have been planning our wedding and <strong>bought a house</strong> for us to live in when we get married. It was worryingly easy to do the whole thing, it required minimal paperwork. It&#8217;s in Broughty Ferry (on the outskirts of Dundee) and the sea is 100m away and visible from my new study. It&#8217;s all very exciting and I&#8217;m counting down the days until we get married and I move in.</p><p>At work, I&#8217;ve been involved in some more fun Qt consultancy stuff. It&#8217;s all been enjoyable and varied, something that really suits my <strong>childlike attention-span</strong>. I work from home so I&#8217;ve been flying to various places (Germany, Sweden, Denmark so far and Iceland next week) in the course of my work. I like seeing new places but am a rubbish tourist so it&#8217;s been nice to be able to expand my horizons without much personal effort.</p><p>One of the nice things about working with Qt and other open-source projects is that I can get to <strong>contribute to them at work</strong> when a customer needs a feature/bugfix. One of my projects has involved a lot of <a href="http://doc.trolltech.com/4.6/qtscript.html">QtScript</a> and I used <a href="http://code.google.com/p/qtscriptgenerator/">QtScriptGenerator</a> for the bindings (<em>wanted to try SMOKE but I couldn&#8217;t find enough of a solid internet presence to trust it fully yet</em>). I&#8217;ve made a few fixes to support code written in C++ rather than Qt (<em>handle exceptions better, do some automatic C++ standard library type conversion, support C-style single &#8220;void&#8221; parameter and bugfixing</em>). This stuff is all merged upstream and part of QtScriptGenerator.</p><p>I can&#8217;t wait till KDE and more open-source projects move to Git (<em>and Gitorious/GitHub</em>). It&#8217;s so <strong>amazingly simple to get patches merged</strong> and retain your attribution and handle local work branches while tracking upstream, with merging normally being handled near-automagically. This requires so much time to do in Subversion that it really pains me to have to use it now.</p><p>Another interesting project I&#8217;ve been working on recently is <a href="https://github.com/mxcl/homebrew">Homebrew</a>, a package manager for OSX that seeks to use system libraries, be fast and make contribution incredibly easy  (<em>things that MacPorts and Fink seem to fail at</em>). It uses Git as the repository backing store so you just fork from <a href="https://github.com/mxcl/homebrew">mxcl&#8217;s repository</a>, use &#8220;<em>brew create $URL</em>&#8221; to create a template package from the URL and archive name, modify it until it works and make a pull request on GitHub. mxcl then looks over your contribution and merges it if it looks good. So far I&#8217;ve tweaked Qt and started adding the necessary dependencies to get KDE in there too.</p><p><strong>I really like this model</strong>. I trust mxcl as a benign dictator, he is a good guy and makes sensible decisions (<em>such as buying me beer</em>), and I feel this method of contribution really opens the project up to many more people than it would otherwise. It also has the Steve Jobs/Linus Torvalds-type figure that I think is essential for any piece of software to have a clear set of goals and maintain a certain quality level.</p><p>It&#8217;s been nice for me working mostly on my Macbook now. <strong>Everything just works</strong> that I need to and I can still run pretty much every open-source application I used on Linux. It&#8217;s nice to see the vibrant OSS ecosystem on OSX and the attention to detail in applications such as Adium, particularly in having an attractive and easily usable interface. Hopefully I&#8217;ll be able to apply this level of polish to some of the KDEPIM apps in the next while too, currently they <strong>work great</strong> but look a bit nasty on OSX.</p><p>Too much writing, back to the code!</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2009/11/hack-on-the-macbook/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>MacBook KDE Development</title><link>http://mikemcquaid.com/2009/07/macbook-kde-development/</link> <comments>http://mikemcquaid.com/2009/07/macbook-kde-development/#comments</comments> <pubDate>Mon, 20 Jul 2009 20:52:54 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=342</guid> <description><![CDATA[Recently while looking for a replacement for my trusty Dell laptop I ended up being sucked into buying a piece of white shiny plastic that apparently doubles as a computer. I tried running Linux on it but due to some still unresolved issue it&#8217;s not really usable as a main operating system yet on this [...]]]></description> <content:encoded><![CDATA[<p>Recently while looking for a replacement for my trusty Dell laptop I ended up being sucked into buying a <a href="http://www.apple.com/uk/mac/">piece of white shiny plastic that apparently doubles as a computer</a>.</p><p>I tried running Linux on it but due to some still unresolved issue it&#8217;s not really usable as a main operating system yet on this laptop so I&#8217;ve been forcing myself to use OSX for a while and trying to learn some lessons from it.</p><p>As my first main contribution to the KDE Mac project I&#8217;ve been working at getting the packages easily buildable and distributable without MacPorts/Fink by using <a href="http://www.itk.org/Wiki/CMake:Packaging_With_CPack">CPack</a> (a cross-platform packaging tool that comes with CMake). This is the type of project that will probably be mostly committed in a oner into KDE Libs (post-review) and hopefully then available to basically any KDE project with a little configuration. I&#8217;m planning on starting with getting some basic packages without dependencies first (e.g. without KDELibs or DBus bundled) and then work up to an application bundle that contains all library and executable dependencies. If you&#8217;re interested what the result might look like then take a look at the <a href="http://www.mendeley.com">Mendeley Desktop OSX package</a>, built entirely using CPack that I produces while working at Mendeley.</p><p>Another thing I&#8217;ve found while building KDE for OSX is the need to build universal packages for all the KDE dependencies. This omits Fink unfortunately so I&#8217;ve ended up using MacPorts. Due to <a href="http://trac.macports.org/wiki/FAQ#syslibs">a decision I disagree with</a> I&#8217;ve contributed to Harald Fernengel&#8217;s project for adding dummy versions of MacPorts packages that are already available on OSX Leopard. <a href="http://gitorious.org/macports-dummies/macports-dummies">You can find this on gitorious</a>.</p><p>For anyone interested, the current minimal dependencies for various packages in trunk are listed below:<br /> <strong>kdelibs</strong>: pcre++, shared-mime-info, jpeg, giflib, libpng, dbus<br /> <strong>akonadi</strong>: shared-mime-info, boost<br /> <strong>kdepimlibs</strong>: gpgme, libical<br /> <strong>kdepim</strong>: <em>none</em></p><p>Once I&#8217;ve got a bit further I&#8217;ll get all this stuff on TechBase. Anyone interested in helping out or lending an opinion feel free to leave a comment.</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2009/07/macbook-kde-development/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>KDE &#8211; Blog from KOrganizer HOWTO</title><link>http://mikemcquaid.com/2008/09/kde-blog-from-korganizer-howto/</link> <comments>http://mikemcquaid.com/2008/09/kde-blog-from-korganizer-howto/#comments</comments> <pubDate>Sat, 27 Sep 2008 00:14:17 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=184</guid> <description><![CDATA[Blog from KOrganizer? What kind of madness is this? Apparently some crazy (but yet incredibly good looking) fool decided to give you the ability to post journals from KOrganizer to your blog. Let&#8217;s learn how to do it! Firstly open KOrganizer. When it has opened right-click anywhere in the &#8220;Calendars&#8221; area in the bottom-left and [...]]]></description> <content:encoded><![CDATA[<p><strong>Blog from KOrganizer?</strong> What kind of <strong>madness</strong> is this? Apparently some crazy (<em>but yet incredibly good looking</em>) fool decided to give you the ability to post journals from KOrganizer to your blog. Let&#8217;s learn how to do it!</p><p>Firstly open <strong>KOrganizer</strong>.</p><p>When it has opened right-click anywhere in the &#8220;<em>Calendars</em>&#8221; area in the bottom-left  and select &#8220;<em>Add&#8230;</em>&#8221; from the drop-down menu that appears.</p><p>Select &#8220;<em>Journal in a blog</em>&#8221; from the &#8220;<em>Resource Configuration</em>&#8221; dialog.</p><p>Fill in the &#8220;<em>Resource Configuration</em>&#8221; dialog.</p><ul><li><strong>Name</strong>: Choose a descriptive name for your resource, this is how KOrganizer will describe it to you in future. KOrganizer won&#8217;t reference this resource as being a blog again so you may want to choose something suffixed with &#8220;<em>blog</em>&#8220;.</li><li><strong>XML-RPC URL</strong>: This depends on your blog but for WordPress and Drupal this is the main URL followed by &#8220;<em>/xmlrpc.php</em>&#8220;, for Livejournal it is &#8220;<em>http://www.livejournal.com/interface/blogger</em>&#8221; and for Blogger it is &#8220;<em>http://www.blogger.com/feeds/$YOUR_USER_ID/blogs</em>&#8220;. For other blogs, consult their documentation or ask me for help and I&#8217;ll do my best to work it out.</li><li><strong>Username</strong>: This is the username you use to login and make blog posts.<br /> Password: This is the password you use to login with the above username and make blog posts.</li><li><strong>API</strong>: Use &#8220;(WordPress, Drupal &lt;5.6 workarounds)&#8221; if you use either of those blogs. Otherwise it is MovableType for Drupal, Google Blogger Data for Blogger and Blogger for LiveJournal. The LiveJournal API is unlikely to work with LiveJournal as it isn&#8217;t yet complete. If you wish to implement the LiveJournal full API rather than using legacy Blogger one then please contact me.</li><li><strong>Blog</strong>: When you have chosen an API this list will be automatically populated using items from the server. If there is only one entry, it will be greyed out but the entry&#8217;s text shown and selected. If there are more than one (<em>e.g. Drupal has one for pages and one for posts</em>) they will be selectable. If there is nothing new displayed then one or more of your XML-RPC/username/password/API are probably incorrect.</li><li><strong>Posts to download</strong>: This chooses how many posts the API will download and sync. If you, like me, have made hundreds of posts then you probably want to keep this number reasonably low.</li><li><strong>Automatic Reload</strong>: This defines how often KOrganizer will download new blog posts from the server without notification.</li><li><strong>Automatic Save</strong>: This defines when KOrganizer will upload new blog posts to the server without notification. You probably don&#8217;t want to have this set to &#8220;<em>On every change</em>&#8221; unless you want it to be uploaded as soon as you hit &#8220;<em>Save</em>&#8221; in the next view.</li></ul><p>You should now see your new blog resource displayed in the bottom-left corner. Let&#8217;s try making a new blog post. Activate the journal view by clicking the journal button.</p><p>We are now in the journal view and you can see on the left-hand pane that KOrganizer has successfully downloaded some of my blog posts. If we want to create a new one then click on the add journal button.</p><p>Fill in the &#8220;<em>Edit Journal Entry</em>&#8221; dialog.</p><ul><li><strong>Title</strong>: You probably want to change the title of the blog post from the default.</li><li><strong>Date/Time</strong>: On most blogs selecting the date/time to somewhere in the future means the blog won&#8217;t publicly appear until then.</li><li><strong>Content</strong>: Write something about how I am awesome, like the pictured example.The rich-text should be displayed on your blog correctly (<em>albeit with slightly nasty HTML</em>).</li></ul><ul><li><strong>Select Categories</strong>: This list should have been populated with the ones from your blog and from the KOrganizer defaults. Sadly, I can&#8217;t seem to remove the latter and selecting them will do nothing unless they have been created on your blog.</li></ul><p>When you click &#8220;<em>OK</em>&#8221; you may be prompted which resource you wish to save to. Select the resource we just created.</p><p>If you chose &#8220;<em>on every change</em>&#8221; for &#8220;<em>Automatic Save</em>&#8221; in the &#8220;<em>Resource Configuration</em>&#8221; dialog then your post has probably whizzed its way off to your blog already. If not, you can manually save it by right-clicking on your resource and selecting &#8220;<em>Save</em>&#8221; from the drop-down menu that appears.</p><p>I hope this was and is useful to some people. If you <strong>find any bugs, have any problems or want any other features</strong> then please let me know either by email, my posting on this blog or by <a href="https://bugs.kde.org/enter_bug.cgi?format=guided">filing a bug in the KDE bugtracker</a>.</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2008/09/kde-blog-from-korganizer-howto/feed/</wfw:commentRss> <slash:comments>22</slash:comments> </item> <item><title>WP-reCAPTCHA failure&#8230;</title><link>http://mikemcquaid.com/2008/09/wp-recaptcha-failure/</link> <comments>http://mikemcquaid.com/2008/09/wp-recaptcha-failure/#comments</comments> <pubDate>Wed, 24 Sep 2008 21:51:00 +0000</pubDate> <dc:creator>Mike McQuaid</dc:creator> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://mikearthur.co.uk/?p=167</guid> <description><![CDATA[So apparently the WP-reCAPTCHA plugin sucks is a little too good and seems to stop anyone from posting comments on my blog. I was going to link to their page but it seems it&#8217;s 404&#8242;ing which strikes me as somewhat ironic&#8230; If anyone else has a good plugin for WordPress for avoiding spam then please [...]]]></description> <content:encoded><![CDATA[<p>So apparently the WP-reCAPTCHA plugin <del>sucks</del> is a little too good and seems to <strong>stop anyone from posting comments</strong> on my blog. I was going to link to their page but it seems it&#8217;s 404&#8242;ing which strikes me as somewhat ironic&#8230;</p><p>If anyone else has a good <strong>plugin for WordPress for avoiding spam</strong> then please let me know as being on the Planet seems to result in me being spammed to oblivion.</p><p>Also, if you had anything interesting to say about <a href="http://mikemcquaid.com/2008/09/spore/"><strong>Spore</strong></a>, <a href="http://mikemcquaid.com/2008/09/bad-phorm/"><strong>Phorm</strong></a> or <a href="http://mikemcquaid.com/2008/09/google-chrome/"><strong>Chrome</strong></a> then please excuse me being a noob and post comments!</p> ]]></content:encoded> <wfw:commentRss>http://mikemcquaid.com/2008/09/wp-recaptcha-failure/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 11/83 queries in 0.042 seconds using disk: basic
Object Caching 558/679 objects using disk: basic

Served from: mikemcquaid.com @ 2012-02-06 16:29:09 -->
