<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Persistent Inappeasable Mind</title>
    <link>http://pim.famnit.upr.si/blog/</link>
    <description>thoughts about personal information management, human-computer interaction, interfaces, software ...</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6 - http://www.s9y.org/</generator>
    <pubDate>Wed, 15 May 2013 13:03:04 GMT</pubDate>

    <image>
        <url>http://pim.famnit.upr.si/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Persistent Inappeasable Mind - thoughts about personal information management, human-computer interaction, interfaces, software ...</title>
        <link>http://pim.famnit.upr.si/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Web browsers on Windows OS - comparison of vertical vs. horizontal tabs</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/301-Web-browsers-on-Windows-OS-comparison-of-vertical-vs.-horizontal-tabs.html</link>
            <category>Software Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/301-Web-browsers-on-Windows-OS-comparison-of-vertical-vs.-horizontal-tabs.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=301</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=301</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;In &lt;a href=&quot;http://pim.famnit.upr.si/blog/index.php?/archives/300-Widows-8,-Windows-Explorer-annoyances-and-Miller-Columns.html&quot;&gt;the previous post&lt;/a&gt; I talked about how I got to use the Windows laptop for a month. It is a whole another experience I must admit. The major difference (excluding the OS and software) is my&lt;strong&gt; screen size&lt;/strong&gt; (being now a staggering &lt;strong&gt;12.1 inches&lt;/strong&gt; on my &lt;a href=&quot;http://www.cnet.com/laptops/lenovo-thinkpad-x61s/4505-3121_7-32465540.html&quot;&gt;Lenovo ultraportable x61s&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;I&#039;m a big advocate of &lt;a href=&quot;http://pim.famnit.upr.si/blog/index.php?/archives/70-Tab-Candy-Azas-new-ideas.html&quot;&gt;vertical tabs in UI&lt;/a&gt;&lt;/strong&gt;. Almost all (if not all) desktop and laptop screens (excluding phones and tablets!) are growing horizontally. So the extra space on the side could easily be used for ... you guessed it - TABS. &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;With 12 inches screen (1024x768) I had to reconsider the vertical vs. horizontal tabbing&lt;/strong&gt;. I took a look at all major web browsers and opened 15 tabs (# of usually opened tabs) in each of them. The things to consider were:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. How many tabs are visible at once&lt;/strong&gt; (visibility&amp;#160;is crucial for an overview of everything available)&lt;br /&gt;&lt;strong&gt;2. How the tab UI helps as reminder to tasks to be done&lt;/strong&gt; (people use all sorts of clues as reminders in all PIM tools - e.g. moving files to the desktop or un-marking email as read)&lt;br /&gt;&lt;strong&gt;3. How tabs can be navigated&lt;/strong&gt; (navigation has to be easy and improve both visibility and &#039;remind-ability&#039;)&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;span style=&quot;font-size: 9.5pt;&quot;&gt;&lt;strong&gt;Internet Explorer 10:&lt;/strong&gt; IE can show only 8 tabs at once at this resolution. Tabs are hidden and reminding is greatly affected. Although a list of all tabs can be shown by clicking the IE icon on the Windows TaskBar. Navigating the tabs is tedious as well. The small chevrons/arrows on each side of the tab&#039;s list are small. Vertical scroll with the mouse scroll button (&lt;a href=&quot;http://www.productwiki.com/upload/images/logitech_wireless_mouse_m305.png&quot;&gt;the one that also moves left and right&lt;/a&gt;) is not working which makes the things worse. Tabs are also small and only one Letter of web page title is not helpful.&amp;#160;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_1.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Google Chrome:&lt;/strong&gt; Tabs list is better as it spans over the whole browser&#039;s window. In chrome all windows are visible all the time although they get&amp;#160;squashed&amp;#160;and don&#039;t provide reminding capabilities. Beyond 20 tabs all the favicons&amp;#160;disappear&amp;#160;which makes the reminding, visibility and usability worse (see next image of the 30 tabs being opened). Maybe there&#039;s an option to list them (&lt;a href=&quot;https://chrome.google.com/webstore/detail/verticaltabs/imimolldggofidcmfdkcffpjcgaggoaf?hl=en&quot;&gt;Vertical tabs&lt;/a&gt; extension provides a list similar to the above in IE). Sadly Chrome &lt;a href=&quot;https://code.google.com/p/chromium/issues/detail?id=99332#c25&quot;&gt;does not support real vertical tabs anymore&lt;/a&gt;.&amp;#160;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_2.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote style=&quot;margin: 0px 0px 0px 40px; border: medium none; padding: 0px;&quot;&gt; 
&lt;p&gt;30 tabs opened in Chrome. No favicons are shown and there&#039;s no way of telling what&#039;s under each tab.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_2_30.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Firefox + &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/&quot;&gt;Tree Style Tab&lt;/a&gt; extension&lt;/strong&gt;: Still my favorite, despite the small screen resolution that makes me sometimes scroll web content horizontally. But visibility, reminding function (favicons + page titles) and navigation are all there.&amp;#160;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_3.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote style=&quot;margin: 0px 0px 0px 40px; border: medium none; padding: 0px;&quot;&gt; 
&lt;p&gt;With vertical tabs, Firefox shows only 9 tabs at once at this resolution and navigating left and right on the tab&#039;s list can be done by clicking on chevrons/arrows on both sides of the list (similar to IE). This can be tedious as the mouse pointer has to move from one side of the screen to the other.&amp;#160;Horizontal&amp;#160;scrolling with the mouse is not working. The spatial tab management is possible with &lt;a href=&quot;http://support.mozilla.org/en-US/kb/tab-groups-organize-tabs&quot;&gt;Tab groups&lt;/a&gt;&amp;#160;(which clearly helps visibility and navigation). But navigating from the tab&#039;s list to the spatial tabs layout and back switches the context an Tab groups are not always visible while browsing.&amp;#160;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_4.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Safari&lt;/strong&gt;: It shows 9 tabs only as Firefox, but the navigation on the list is done by pressing the 2&amp;#160;chevrons/arrows on the rightmost tab (why they are on the tab itself is not clear). The click on these arrows does not move the list left and right but rather opens a drop down list of&amp;#160;remaining&amp;#160;tabs (improving somehow the &lt;a href=&quot;http://en.wikipedia.org/wiki/Spatial_memory&quot;&gt;spatial memory&lt;/a&gt;). It also shows the list of all opened tabs by clicking on the icon in the TaskBar.&amp;#160;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_5.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Opera&lt;/strong&gt;: is my second favorite and if it wouldn&#039;t be for vertical tabs extension in Firefox this would be my choice. All opened tabs are visible at once (as with Chrome) and it is possible &lt;a href=&quot;http://www.youtube.com/watch?v=cbGDQdpUbz0&quot;&gt;to group them&lt;/a&gt; (as with Firefox Tree Style Tabs or Tab Groups). Although the grouping somehow hinder visibility and reminding capabilities. Even if more tabs are opened the favicons remain visible (see next screenshot).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_6.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote style=&quot;margin: 0px 0px 0px 40px; border: medium none; padding: 0px;&quot;&gt; 
&lt;p&gt;Opera with 30 tabs opened still preserves some visibility and reminding capabilities.&amp;#160;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/browser_tabs_4_30.jpg&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Although my screen estate is significantly smaller than the one on my 15.4 inches laptop, I still prefer vertical tabs. The reminding, visibility and navigation are still superior than with horizontal tabs and this outweighs&amp;#160;some horizontal navigation on some web pages.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 20 May 2013 12:21:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/301-guid.html</guid>
    
</item>
<item>
    <title>Widows 8, Windows Explorer annoyances and Miller Columns</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/300-Widows-8,-Windows-Explorer-annoyances-and-Miller-Columns.html</link>
            <category>Software Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/300-Widows-8,-Windows-Explorer-annoyances-and-Miller-Columns.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=300</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=300</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt; For the past month &lt;strong&gt;I&#039;m stuck with Windows 8&lt;/strong&gt; as my MacBook pro had &lt;a href=&quot;http://www.ifixit.com/Answers/View/9045/MBP+A1226+Logic+Board+last+resort+fix+for+nVidia+video+chip&quot;&gt;a common GPU problem&lt;/a&gt; which is being fixed at the moment (BTW I&#039;m not an Apple fanboy and for the cost of their computers they should be way more reliable). &lt;br /&gt;&lt;br /&gt;After a long time not using Windows (last time XP and then various flavours of Linux, BSD and OS X) I have &lt;strong&gt;found some annoyances&lt;/strong&gt; with this particular 8th version. But &lt;strong&gt;the worst&lt;/strong&gt; (being a &lt;a href=&quot;http://en.wikipedia.org/wiki/Personal_information_management&quot;&gt;PIM&lt;/a&gt; researcher) of them &lt;strong&gt;is&lt;/strong&gt; &lt;strong&gt;Windows Explorer&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. When&lt;/strong&gt; &lt;strong&gt;navigating folders on the File Pane (right side), the tree in Navigation Pane (left side) is not expanding&lt;/strong&gt;. So 8 levels down the hierarchy on a File Pane I realise that the tree is still closed and moving files between File and Navigation Pane is not possible until I move 8 levels down the hierarchy on both sides?!? I remember the expansion being default in Windows XP. I learnt so far that the current (non-expanding) behaviour became default in Windows 7 and is persistent in Windows 8. Who thought that this would be a good design? To make things just a bit worse they changed the way to turn automatic expansion on :(. (&lt;a href=&quot;http://lifehacker.com/5877704/make-windows-explorers-sidebar-expand-as-you-navigate-through-the-tree&quot;&gt;Windows 7&lt;/a&gt; or &lt;a href=&quot;http://www.eightforums.com/tutorials/11474-navigation-pane-turn-expand-current-folder-off-windows.html&quot;&gt;Windows 8&lt;/a&gt; solutions).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. What are the Libraries for?&lt;/strong&gt; It&#039;s a rhetorical question. But I have all videos in separate folders (e.g. movies, cartoons, personal videos, etc.) and I don&#039;t need the OS to accumulate them together. I put them in separate folders for a reason. The same with photos. So I&#039;d love to remove Libraries from the Navigation Pane. Right mouse click in Navigation Pane and deselect &amp;quot;Show all folders&amp;quot;?!? What?!? What does this string has to do with Libraries?&lt;/p&gt; 
&lt;p&gt;And to answer my rhetorical question: &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&amp;quot;In 7 it is intended that you use your Libraries to handle data, and leave the data management to the system&amp;quot;&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;http://social.technet.microsoft.com/Forums/en-US/w7itproui/thread/c98ecee9-9d9a-463d-928d-30804c1f2d40&quot;&gt;Wait, what?&lt;/a&gt; &lt;strong&gt;I DON&#039;T WANT THE SYSTEM TO HANDLE MY FILES!&lt;/strong&gt; This is what all user studies suggest SINCE 1980! And nothing has changed in 2013 as far I as I read scientific papers :(.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Missing status bar.&lt;/strong&gt; In XP the status bar showed the remaining space on the currently browsed hard drive or how big are selected files, how many of them are in the current folders, etc. I know this was not shown by default but View-&amp;gt;Toolbars-&amp;gt;Status bar (or something similar) was not hard to select. Now it&#039;s gone ... &lt;a href=&quot;http://social.technet.microsoft.com/Forums/en-US/w7itproui/thread/c98ecee9-9d9a-463d-928d-30804c1f2d40&quot;&gt;the reason&lt;/a&gt;:&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&amp;quot;... removed due to&amp;#160;a user anxiety problem, usually caused by reserved space allocations for the Virtual Memory or TEMP set asides ...&amp;quot;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;What, what, WHAT?&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;To clarify. I understand that &lt;strong&gt;less technically savvy users&amp;#160; might embrace these features&lt;/strong&gt; (I checked with my sisters and parents and they are not using the Libraries .. don&#039;t even know what they are and what&#039;s their use). &lt;strong&gt;But disabling features for Power users?!?! I simply don&#039;t get it. &lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;I&#039;m also aware that &lt;strong&gt;there are&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;http://lifehacker.com/5824811/the-best-alternative-file-browser-for-windows&quot;&gt;alternative file browsers&lt;/a&gt;&lt;/strong&gt; but I have to admit: &lt;strong&gt;I miss &lt;a href=&quot;http://support.apple.com/kb/ht2470&quot;&gt;Finder&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;and&lt;/strong&gt; its &lt;strong&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Miller_columns&quot;&gt;Miller Columns&lt;/a&gt;&lt;/strong&gt; which I personally find way more useful than trees. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;The only two Windows file browsers with Miller Columns&lt;/strong&gt; (or multi-columns if you like) I found are:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.softpedia.com/get/File-managers/UltraExplorer.shtml&quot;&gt;UltraExplorer&lt;/a&gt;&lt;/strong&gt; which sadly is not developed for the past 3 years and its multi column interface is very buggy (to name one, after deleting files the current column is not auto-updated and it crashes at least once a day)&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.winbrowser.com/&quot;&gt;&lt;strong&gt;WinBrowser&lt;/strong&gt;&lt;/a&gt; which isn&#039;t cheap for a file browser but at least it&#039;s being developed.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/file_browser-winbrowser.jpg&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; &lt;/ul&gt; 
&lt;p&gt;I find it hard to believe that there aren&#039;t more alternatives. &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Well .. every current OS has some annoyances and every new version of each of them will annoy some users. I suppose that&#039;s life ....&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; &lt;/ul&gt; 
&lt;p&gt;EDIT 15. 5. 2013: WinBrowser is buggy :/. Crashes at least once a day. So no real Muller Columns alternative for Windows.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 13 May 2013 13:23:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/300-guid.html</guid>
    
</item>
<item>
    <title>Kile editor (KDE) menu items keep changing order</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/291-Kile-editor-KDE-menu-items-keep-changing-order.html</link>
            <category>Software Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/291-Kile-editor-KDE-menu-items-keep-changing-order.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=291</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=291</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;First of al I don&#039;t have a solution (I just happened to work on this Ubuntu 12.04 box). I found it amusing that every time I opened Kile the order of menu items was different.&lt;/p&gt;
&lt;p&gt; In the photo below the order of items is &lt;strong&gt;View, Edit, File&lt;/strong&gt; ... :). &lt;/p&gt;
&lt;p&gt;Everyone knows that changing positions on the menu items kills the familiarity with the system ... but maybe an element of randomness makes it more fun (at first at least). &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20130102_142356.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 06 May 2013 14:34:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/291-guid.html</guid>
    
</item>
<item>
    <title>Which way does this door open 2?</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/288-Which-way-does-this-door-open-2.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/288-Which-way-does-this-door-open-2.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=288</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=288</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;I already posted &lt;a href=&quot;index.php?/archives/212-Which-way-does-the-door-open.html&quot;&gt;one bad&lt;/a&gt; and &lt;a href=&quot;index.php?/archives/271-I-know-which-way-this-door-opens.html&quot;&gt;one good&lt;/a&gt; example of door handles. Here is another good one. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;On this side the door needs to be pushed:&lt;/p&gt; 
&lt;p&gt; &lt;img src=&quot;uploads/blog/IMG_20121018_205729.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;On this side the door has to be pulled: &lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20121018_205715.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Apr 2013 14:11:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/288-guid.html</guid>
    
</item>
<item>
    <title>The role of the second monitor - post-it notes board</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/287-The-role-of-the-second-monitor-post-it-notes-board.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/287-The-role-of-the-second-monitor-post-it-notes-board.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=287</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=287</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;Usually the second monitor is used for extending the desktop&#039;s real estate. Not in this example. In this office the extra monitor is used for post it notes. &lt;/p&gt; 
&lt;p&gt;The reason: if email is on the extra monitor, then less work gets done as the user keeps an eye on the arrived mail all the time. So more work gets done with the monitor turned off. And as the monitor is already there, the user uses it for post-it notes.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20121022_144317.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;br /&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 22 Apr 2013 14:05:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/287-guid.html</guid>
    
</item>
<item>
    <title>How to write non-English letters in my name</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/296-How-to-write-non-English-letters-in-my-name.html</link>
            <category>My Thoughts</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/296-How-to-write-non-English-letters-in-my-name.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=296</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=296</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;Well .. apparently there are many ways. My name is written like this&amp;#160;&lt;/p&gt; 
&lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;Matjaž Kljun&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; But when the keyboard lacks special letters you can always compensate with other non English letters like my colleagues do&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;M&lt;span&gt;ątj&lt;/span&gt;&lt;span&gt;ăz Klj&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;span&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;ún&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/Interfaces/IMG_20121019_182838.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;Or like this&lt;/p&gt; 
&lt;p&gt; &lt;font size=&quot;4&quot;&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;Mätjåz Klj&lt;span&gt;ũ&lt;/span&gt;n&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;span&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/Interfaces/IMG_20121019_103348.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I suppose both are &lt;a href=&quot;index.php?/archives/272-This-is-how-you-write-down-Matja-in-English.html&quot;&gt;still better than &lt;font size=&quot;4&quot;&gt;&lt;strong&gt;Nat Jazz&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt; :)&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 15 Apr 2013 15:26:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/296-guid.html</guid>
    
</item>
<item>
    <title>Taps 24: separated push tap</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/295-Taps-24-separated-push-tap.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/295-Taps-24-separated-push-tap.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=295</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=295</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;This one was interesting to operate. &lt;strong&gt;Buttons need to be pressed and held down for water to flow&lt;/strong&gt;. When one button is pushed in (e.g. right cold) only one&amp;#160;hand can be washed. It is &lt;strong&gt;impossible to hold both buttons down and wash hands :)&lt;/strong&gt;. Mixing water is also not possible without plugging the sink (the plug is not there). &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/Interfaces/IMG_20121116_200210.jpg&quot; class=&quot;no_float&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 08 Apr 2013 14:54:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/295-guid.html</guid>
    
</item>
<item>
    <title>Showcase of a store with a price for the missing item</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/293-Showcase-of-a-store-with-a-price-for-the-missing-item.html</link>
            <category>My Thoughts</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/293-Showcase-of-a-store-with-a-price-for-the-missing-item.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=293</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=293</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;I suppose not the April fools day. Made me laugh nonetheless ... the first item on the list is a hat for 7€.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20121218_171026.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20121218_171019.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 01 Apr 2013 14:46:00 +0200</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/293-guid.html</guid>
    
</item>
<item>
    <title>A smile with a pancake </title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/294-A-smile-with-a-pancake.html</link>
            <category>My Thoughts</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/294-A-smile-with-a-pancake.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=294</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=294</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt; Very similar &lt;a href=&quot;index.php?/archives/164-A-good-morning-image-on-a-side-of-a-bowl-of-cereals.html&quot;&gt;to this one&lt;/a&gt; :)&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20121202_134556.jpg&quot; class=&quot;no_float&quot;/&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 25 Mar 2013 14:51:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/294-guid.html</guid>
    
</item>
<item>
    <title>Taps 23: Tap with pedals </title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/292-Taps-23-Tap-with-pedals.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/292-Taps-23-Tap-with-pedals.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=292</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=292</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;At first I was puzzled as I was searching for sensors. Then I realised that this &lt;strong&gt;tap is operated by pedals on the floor&lt;/strong&gt;. Hygienically very good. Selecting a desired temperature a more complex task :). I like it. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20130119_080307.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20130119_080313.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20130119_080322.jpg&quot; class=&quot;no_float&quot; /&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Mar 2013 14:39:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/292-guid.html</guid>
    
</item>
<item>
    <title>AngularJS: show progress of a form by counting the number of disabled fields</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/299-AngularJS-show-progress-of-a-form-by-counting-the-number-of-disabled-fields.html</link>
            <category>Software hints</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/299-AngularJS-show-progress-of-a-form-by-counting-the-number-of-disabled-fields.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=299</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=299</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;Let say &lt;strong&gt;we have a survey with&lt;/strong&gt; many questions. Some &lt;strong&gt;questions&lt;/strong&gt; are &lt;strong&gt;enabled and some disabled at first and this keeps changing&lt;/strong&gt; based on what is selected or entered. &lt;strong&gt;At any given time we want to know the count of all fields&lt;/strong&gt; in a form, how many of them are &lt;strong&gt;disabled and&lt;/strong&gt; how many still &lt;strong&gt;required&lt;/strong&gt;. The number of all and required fields is easy as AngularJS keeps an array of all form elements. Disabled elements are something else.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Counting disabled fields can be a challenge&lt;/strong&gt; if many radio buttons are used, as every radio button is counted as one element. &lt;/p&gt; 
&lt;p&gt;Lets take this code for example: &lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; &amp;lt;!doctype html&amp;gt;
 &amp;lt;html&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;head&amp;gt;&amp;#160;&amp;#160;&amp;#160; 
        &amp;lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;/head&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;body&amp;gt;
    
    &amp;lt;form&amp;gt;
     &amp;lt;input type=&quot;radio&quot; name=&quot;typeComputer2&quot; disabled&amp;gt; 1&amp;lt;br&amp;gt;
     &amp;lt;input type=&quot;radio&quot; name=&quot;typeComputer2&quot; disabled&amp;gt; 2&amp;lt;br&amp;gt;
     &amp;lt;input type=&quot;radio&quot; name=&quot;typeComputer2&quot; disabled&amp;gt; 3&amp;lt;br&amp;gt;
    &amp;lt;/form&amp;gt;           
    &amp;lt;div id=&quot;res&quot;&amp;gt;&amp;lt;/div&amp;gt;

    &amp;lt;script&amp;gt;
      var bla = $(&#039;:disabled&#039;).length;
      $(&#039;#res&#039;).text(&quot;Number of disabled elements: &quot; + bla);
    &amp;lt;/script&amp;gt;
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/body&amp;gt;
 &amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;/pre&gt; 
&lt;p&gt;Will produce this:&lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt;&lt;img src=&quot;uploads/disabled_elements.png&quot; class=&quot;no_float&quot; /&gt; &lt;/blockquote&gt; 
&lt;p&gt;The number of &lt;strong&gt;disabled elements is 3&lt;/strong&gt;. &lt;strong&gt;But in fact&lt;/strong&gt; this is the same group of radio buttons and &lt;strong&gt;could be counted as one element&lt;/strong&gt; (only one radio button can be selected at once). &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Lets look at the solution using AngularJS.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;We have this HTML document with 3 form elements. &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;First one is 3 radio buttons that are disabled and not required until the checkbox is selected&lt;/li&gt; 
&lt;li&gt;Second is a required radio button&lt;/li&gt; 
&lt;li&gt;Third is a required input field&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt;&amp;lt;html ng-app&amp;gt;
&amp;#160; &amp;lt;head&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;script src=&quot;http://code.angularjs.org/1.1.0/angular.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
     &amp;lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;lt;script src=&quot;controller.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;#160; &amp;lt;/head&amp;gt;
&amp;#160; &amp;lt;body&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 
&amp;#160;&amp;#160;&amp;#160; &amp;lt;div ng-controller=&quot;ctrlRead&quot;&amp;gt;

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form name=&quot;survey&quot;&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&quot;radio&quot; name=&quot;n1&quot; value=&quot;1&quot; ng-model=&quot;s.el1&quot; 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ng-required=&quot;s.el2&quot; ng-disabled=&quot;!s.el2&quot;&amp;gt; 1&amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&quot;radio&quot; name=&quot;n1&quot; value=&quot;2&quot; ng-model=&quot;s.el1&quot; 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ng-required=&quot;s.el2&quot; ng-disabled=&quot;!s.el2&quot;&amp;gt; 2&amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&quot;radio&quot; name=&quot;n1&quot; value=&quot;3&quot; ng-model=&quot;s.el1&quot; 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ng-required=&quot;s.el2&quot; ng-disabled=&quot;!s.el2&quot;&amp;gt; 3&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&quot;checkbox&quot; name=&quot;n2&quot; ng-model=&quot;s.el2&quot; ng-required=&quot;true&quot;&amp;gt; a&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&quot;text&quot; name=&quot;n3&quot; ng-model=&quot;s.el3&quot; ng-required=&quot;true&quot;&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 

&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id=&quot;res&quot;&amp;gt; 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Disabled: {{eDisabled}} &amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; All: {{eAll}}&amp;#160; &amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Required: {{eRequired}} &amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Done in %: {{eDonePercent}} &amp;lt;br&amp;gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Valid: {{survey.$valid}}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;

&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;
&amp;#160; &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt; 
&lt;p&gt;Now we need to write our controller.js&lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt;function ctrlRead($scope, $timeout) {

&amp;#160; //a variable to store our survey data
&amp;#160; var s = {}; 
&amp;#160; $scope.s = s;

&amp;#160; //watch for the sur variable to change
&amp;#160; $scope.$watch(&quot;s&quot;, function () {
&amp;#160;&amp;#160;&amp;#160;&amp;#160; //timeout to fire events 100ms later 
     //for DOM to register the changes
&amp;#160;&amp;#160;&amp;#160;&amp;#160; $timeout($scope.countPercentageDone, 100);
&amp;#160; }, true);

&amp;#160; $scope.countPercentageDone = function() {&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 
&amp;#160;&amp;#160;&amp;#160; var requiredTrue=0;
&amp;#160;&amp;#160;&amp;#160; var requiredFalse=0;
&amp;#160;&amp;#160;&amp;#160; var disabledElementNames = new Array();&amp;#160;&amp;#160;&amp;#160; 
&amp;#160;
&amp;#160;&amp;#160;&amp;#160; if ($scope.survey) { 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //this traverses the form elements stored in form name
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $.each($scope.survey, function(index, value) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //survey holds other elements ... 
        //only form elements have $error object
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($scope.survey[index].$error) { 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($scope.survey[index].$error.required == true) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; requiredTrue++;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } else {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; requiredFalse++;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //check if the form element is disabled
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($(&quot;[name=&quot;+$scope.survey[index].$name+&quot;]:disabled&quot;)) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //if it is and it is not just element filled in 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //element also become disabled once filled in!!
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($(&quot;[name=&quot;+$scope.survey[index].$name+&quot;]:disabled&quot;).length != 0) { 
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; disabledElementNames.push($scope.survey[index].$name);
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });
&amp;#160;&amp;#160;&amp;#160; }

&amp;#160;&amp;#160;&amp;#160; $scope.eDisabled = disabledElementNames.length;
&amp;#160;&amp;#160;&amp;#160; $scope.eAll = requiredTrue+requiredFalse;
&amp;#160;&amp;#160;&amp;#160; $scope.eRequired = requiredTrue;
&amp;#160;&amp;#160;&amp;#160; $scope.eDonePercent = 100-((requiredTrue*100)/(requiredTrue+requiredFalse-disabledElementNames.length));
&amp;#160; }

};
&lt;/pre&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;To summarise the code: &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;We traverse all form elements in the $scope.survey array. &lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Because this array contains other elements as well as form elements, we have to look only at those that have an $error object defined. &lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;In all elements that are not required we look for those that have lenght &amp;gt; 0. &lt;br /&gt;We do this because elements that we fill in also become disabled by AngularJS. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This example is also available in &lt;a href=&quot;http://jsfiddle.net/yY3tN/&quot;&gt;jsfiddle&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;For the progress bar we could use bootstrap&lt;/strong&gt;:&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt;&lt;p&gt;  
  &amp;lt;div class=&quot;progress&quot;&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;lt;div class=&quot;bar&quot; style=&quot;width: {{eDonePercent}}%&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;

&lt;/p&gt;&lt;/pre&gt; 
&lt;p&gt;or any of the &lt;a href=&quot;index.php?/archives/297-Bootstrap-progress-bar-in-100-images-for-older-browsers.html&quot;&gt;solutions I wrote about here&lt;/a&gt; to support older browsers.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;A big thanks to Tine for all the suggestions and help.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 04 Mar 2013 09:54:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/299-guid.html</guid>
    
</item>
<item>
    <title>Taps 22: a push tap with nice design for temperature control</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/290-Taps-22-a-push-tap-with-nice-design-for-temperature-control.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/290-Taps-22-a-push-tap-with-nice-design-for-temperature-control.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=290</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=290</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;This tap operates by &lt;strong&gt;turning the top knob left or right to select the desired temperature&lt;/strong&gt; and pushing it to start the water flow. The&lt;strong&gt; temperature indicator&lt;/strong&gt; is very nice as it shows the amount of cold and warm water.&lt;/p&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/blog/IMG_20120903_092314.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/blog/IMG_20120903_092326.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/blog/IMG_20120903_092332.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 25 Feb 2013 14:26:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/290-guid.html</guid>
    
</item>
<item>
    <title>Taps 21: A tap with a sensor and a manual</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/289-Taps-21-A-tap-with-a-sensor-and-a-manual.html</link>
            <category>Physical Interfaces</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/289-Taps-21-A-tap-with-a-sensor-and-a-manual.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=289</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=289</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;A (sensor) tap with a manual is never a&amp;#160;good sign. The tap itself is nicely designed.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20120903_115957.jpg&quot; class=&quot;no_float&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;uploads/blog/IMG_20120903_115957%20copy.jpg&quot;  class=&quot;no_float&quot;/&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 18 Feb 2013 14:18:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/289-guid.html</guid>
    
</item>
<item>
    <title>Bootstrap progress bar in 100 images for older browsers</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/297-Bootstrap-progress-bar-in-100-images-for-older-browsers.html</link>
            <category>Software hints</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/297-Bootstrap-progress-bar-in-100-images-for-older-browsers.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=297</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=297</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;These are assumptions taken here:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;a href=&quot;http://twitter.github.com/bootstrap/components.html#progress&quot;&gt;Bootstrap&lt;/a&gt; progress bars are nice&lt;/li&gt; 
&lt;li&gt;They do not work in IE 6-9 (I really wonder why 24% of web users don&#039;t upgrade their browsers):&lt;br /&gt;&lt;em&gt;&amp;quot;Progress bars use CSS3 gradients, transitions, and animations to achieve
 all their effects. These features are not supported in IE7-9 or older 
versions of Firefox.&amp;quot;&lt;/em&gt;&lt;/li&gt; 
&lt;li&gt;I needed a progress bar for a web form that would work in all browsers &lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;I&#039;m calculating how much of a web form is completed with &lt;a href=&quot;http://angularjs.org/&quot;&gt;AngularJS&lt;/a&gt; and change the progress bar on he fly.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Let&#039;s start.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Create 100 progress bars using a php loop and a &lt;a href=&quot;http://twitter.github.com/bootstrap/components.html#progress&quot;&gt;Bootstrap progress bar code&lt;/a&gt;:&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; &amp;lt;!doctype html&amp;gt;
 &amp;lt;html&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;head&amp;gt;&amp;#160;&amp;#160;&amp;#160; 
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;lib/bootstrap/css/bootstrap.min.css&quot;&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;script src=&quot;lib/bootstrap/js/bootstrap.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;/head&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;body&amp;gt;

&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;div id=&quot;progress_bar&quot; style=&quot;width: 500px; margin: 10px auto 0 auto&quot;&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;?php
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; for ($i=0; $i&amp;lt;101; $i++) { 
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; echo &#039;&amp;#160; &amp;lt;div class=&quot;progress&quot; &lt;span&gt;&lt;span class=&quot;attribute-name&quot;&gt;style&lt;/span&gt;=&quot;&lt;a class=&quot;attribute-value&quot;&gt;margin: 2px&lt;/a&gt;&quot;&lt;/span&gt;&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;div class=&quot;bar&quot; style=&quot;width: &#039;.$i.&#039;%&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&#039;;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; 
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; ?&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;/body&amp;gt;
 &amp;lt;/html&amp;gt;&lt;/pre&gt; 
&lt;p&gt;It is possible to use other colours and stripes, etc ... but I&#039;ll use simplest progress bar. Keep in mind that my outer div is 500px wide as this is the size of a progress bar I wanted.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Crop the progress bars from a web page produces by the above code &lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The simplest way is to use &lt;a href=&quot;http://awesomescreenshot.com/&quot;&gt;Awesome screenshot&lt;/a&gt; extension for Chrome, Safari or Firefox. It is also good to cut down the image size with e.g. re-saving it for the web so it would be smaller in size (not resolution).&lt;/p&gt; 
&lt;p&gt;I ended up with this image (&lt;a href=&quot;uploads/progressbar_small.png&quot;&gt;original size can be downloaded here&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;uploads/progressbar_small.png&quot;&gt;&lt;img class=&quot;no_float&quot; src=&quot;uploads/progressbar_small_tn.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;This can be already the end of the story. The only thing wee need is to use this image as a background of a div and slide up or down based on the percentage we want to show.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Show the progress bar &lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3.1 Using CSS&lt;/strong&gt; background-position &lt;strong&gt;and AngularJS binding&lt;/strong&gt; &lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; &amp;lt;div style=&quot;float: left;&quot;&amp;gt;Progress: &amp;lt;/div&amp;gt;
 &amp;lt;div style=&quot;width: 500px; height: 22px; float: left;
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160; background-image:url(&#039;progressbar_small.png&#039;); 
&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160; &amp;#160; background-position:0px -{{Math.round(22*(percentage))}}px;&quot;&amp;gt;
 &amp;lt;/div&amp;gt;&lt;/pre&gt; 
&lt;p&gt;Each progress bar is 22px high and I multiply it with the percentage I calculate based on how much of the form is filled in. I also use the Math JS in binding for multiplication (maybe there&#039;s a better way but I&#039;m not aware of any). To do this I had to define the Math object in my $scope this way $scope.Math = window.Math;&amp;#160; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;For some reason the above did not work in IE 8 (which I really care about). Although it apparently works on some web sites. So i decided to slice up the above image in 100 images.&lt;/p&gt; 
&lt;p&gt; &lt;strong&gt;3.2 Using individual images&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;This is not the optimum solution as for every change there is an Ajax get call to retrieve a desired image. We did this only once in the above example.&lt;/p&gt; 
&lt;p&gt;This procedure was also &lt;a href=&quot;http://pim.famnit.upr.si/blog/index.php?/archives/298-Slice-up-an-image-in-100-slices-with-ImageMagick-or-a-progress-bar-in-100-images.html&quot;&gt;explained in a previous post&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;First I sliced up the image with &lt;a href=&quot;http://www.imagemagick.org/Usage/crop/#crop&quot;&gt;ImageMagick using a crop flag&lt;/a&gt; (the second command should be in one line) using a bash one line script:&lt;br /&gt;&lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; mk@here/$ ls
 progressbar_small.png

 mk@here/$ for((i=0; i&amp;lt;101; i++)) ; do n=$[i*22]; \ 
          convert progressbar_small.png -crop 500x22+0+$n +repage progressbar${i}.png; \
          done

 mk@here/$ ls
 progressbar0.png&amp;#160;&amp;#160;&amp;#160; progressbar32.png&amp;#160; progressbar56.png&amp;#160; progressbar7.png
 ...
 progressbar2.png&amp;#160;&amp;#160;&amp;#160; progressbar53.png&amp;#160; progressbar77.png&amp;#160; progressbar_small.png
&lt;/pre&gt; 
&lt;p&gt;The -crop flag slices up images 500px wide and 22px high and starts at 0px on the X axis and goes down 22*i where i runs from 0 to 100. The end results are 100 images.&lt;/p&gt; 
&lt;p&gt;And finally the HTML bit: &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; &amp;lt;div style=&quot;float: left;&quot;&amp;gt;Progress: &amp;lt;/div&amp;gt;
 &amp;lt;div style=&quot;width: 500px; height: 22px; float: left;&quot;&amp;gt;
     &amp;lt;img src=progressbar{{Math.round(22*(percentage))}}.png&quot;&amp;gt;
 &amp;lt;/div&amp;gt;&lt;/pre&gt; 
&lt;p&gt;All&amp;#160; images are available &lt;a href=&quot;uploads/progress_bar.zip&quot;&gt;in this zip file&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I hope this can help someone.&lt;/p&gt; 
&lt;p&gt;Any other suggestions greatly appreciated.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;A big thank you to Tine for all the suggestions and help.&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Feb 2013 06:33:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/297-guid.html</guid>
    
</item>
<item>
    <title>Slice up an image in equal slices with ImageMagick or a progress bar in 100 images</title>
    <link>http://pim.famnit.upr.si/blog/index.php?/archives/298-Slice-up-an-image-in-equal-slices-with-ImageMagick-or-a-progress-bar-in-100-images.html</link>
            <category>Software hints</category>
    
    <comments>http://pim.famnit.upr.si/blog/index.php?/archives/298-Slice-up-an-image-in-equal-slices-with-ImageMagick-or-a-progress-bar-in-100-images.html#comments</comments>
    <wfw:comment>http://pim.famnit.upr.si/blog/wfwcomment.php?cid=298</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://pim.famnit.upr.si/blog/rss.php?version=2.0&amp;type=comments&amp;cid=298</wfw:commentRss>
    

    <author>nospam@example.com (Matjaž Kljun)</author>
    <content:encoded>
    &lt;p&gt;Let&#039;s assume we need a progress bar in 101 images where each shows a particular percentage form 0 to 100. How to create such image will be explained in &lt;a href=&quot;http://pim.famnit.upr.si/blog/index.php?/archives/297-Bootstrap-progress-bar-in-100-images-for-older-browsers.html&quot;&gt;the next post&lt;/a&gt; (not ready yet at the time of writing). &lt;a href=&quot;uploads/progressbar_small.png&quot;&gt;I already prepared the image here&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;The easiest way to slice up an image is &lt;strong&gt;in a command lin&lt;/strong&gt;e using &lt;a href=&quot;http://www.imagemagick.org/Usage/crop/#crop&quot;&gt;&lt;strong&gt;ImageMagick&lt;/strong&gt;&#039;s a crop flag&lt;/a&gt;. The first command shows the image file we are going to slice. The second command (which should be in one line) is &lt;strong&gt;a simple a bash for loop&lt;/strong&gt; and&lt;strong&gt; in each iteration we create a new slice&lt;/strong&gt;. The third command just lists files that we created.&lt;br /&gt;&lt;/p&gt; 
&lt;pre style=&quot;background-color: #ffffd2;&quot;&gt; &lt;strong&gt;mk@here/$&lt;/strong&gt; ls
 progressbar_small.png

&lt;strong&gt; mk@here/$&lt;/strong&gt; for((i=0; i&amp;lt;101; i++)) ; do n=$[i*22]; \ 
           convert progressbar_small.png -crop 500x22+0+$n +repage progressbar${i}.png; \
           done

 &lt;strong&gt;mk@here/$&lt;/strong&gt; ls
 progressbar0.png&amp;#160;&amp;#160;&amp;#160; progressbar32.png&amp;#160; progressbar56.png&amp;#160; progressbar7.png
 ...
 progressbar2.png&amp;#160;&amp;#160;&amp;#160; progressbar53.png&amp;#160; progressbar77.png&amp;#160; progressbar_small.png
&lt;/pre&gt; 
&lt;p&gt;The -crop flag slices up images 500px wide and 22px high and starts 
at 0px on the X axis and goes down 22*i where i runs from 0 to 100. The 
end results are 100 images.&lt;/p&gt; 
&lt;p&gt;All images are available &lt;a href=&quot;http://pim.famnit.upr.si/blog/uploads/progress_bar.zip&quot;&gt;in this zip file&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 04 Feb 2013 07:38:00 +0100</pubDate>
    <guid isPermaLink="false">http://pim.famnit.upr.si/blog/index.php?/archives/298-guid.html</guid>
    
</item>

</channel>
</rss>