<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[armannvg]]></title><description><![CDATA[Software developer, working mainly in C++, Python, and C#]]></description><link>http://armannvg.com/</link><generator>Ghost 0.6</generator><lastBuildDate>Tue, 14 Apr 2026 20:12:21 GMT</lastBuildDate><atom:link href="http://armannvg.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Moving over to cmder]]></title><description><![CDATA[<p>One the biggest problems I have always had with Windows is the default (cmd.exe) shell that comes with it. It just feels like its commands don't bend properly to my will and its lack of history between sessions is extremely frustrating (been waiting for that one for years).</p>

<p>Perhaps</p>]]></description><link>http://armannvg.com/2015/08/18/in-love-with-cmder/</link><guid isPermaLink="false">9c02c841-4260-49a5-8b1c-41c735b79830</guid><category><![CDATA[opensource]]></category><category><![CDATA[windows]]></category><category><![CDATA[shell]]></category><dc:creator><![CDATA[Ármann Veigar Guðgeirsson]]></dc:creator><pubDate>Tue, 18 Aug 2015 12:49:35 GMT</pubDate><content:encoded><![CDATA[<p>One the biggest problems I have always had with Windows is the default (cmd.exe) shell that comes with it. It just feels like its commands don't bend properly to my will and its lack of history between sessions is extremely frustrating (been waiting for that one for years).</p>

<p>Perhaps it's because I have used the Linux shell so much over the years and its commands are essentially my go-to tools when I need to get things done. To Microsoft's credit though, they have been moving PowerShell in the right direction but I still don't feel that is enough.</p>

<p>I've tried to emulate the Linux shell behavior on Windows for years now. Few notable applications that do exactly this are <a href="https://www.cygwin.com/">Cygwin</a> and <a href="http://sourceforge.net/projects/console/">Console2</a> but I never got them to behave exactly like I wanted. This is probably exactly how developers get fused to older editors like <a href="https://www.gnu.org/software/emacs/">Emacs</a> or <a href="https://en.wikipedia.org/wiki/Vi">Vi</a>, where they have specific keybindings that are wired to their brain and leads to maximum efficiency in writing out text. I even know people who claim that <a href="https://www.midnight-commander.org/">Midnight Commander</a> is the best file manager out there (it doesn't look the part, but maybe I'm missing something).</p>

<p>This is where <a href="http://gooseberrycreative.com/cmder/">cmder</a> entered my life about 2 years ago, I've never found such a good shell running on Windows that is suited exactly to my needs. All the linux commands that I use the most are in there (e.g. tail, ls, less, grep, and cat) along with the usual operators (e.g. |, &amp;&amp;, >, and >>) so I'm able to do my usual Linux commands in Windows without problems. The only command I've found missing is man but that info can be found at <a href="https://www.kernel.org/doc/man-pages/">some man page site</a>. Cmder is also completely standalone, so in theory I should be able to keep it on an USB drive and use it on just about any Windows machine (given that it is a relatively new version).</p>

<p>The final element that completely sold me cmder is that I can setup <a href="http://mridgers.github.io/clink/">clink</a> as an extension in the Vendor folder, which enables using recursive search for commands. That means I can lookup previously executed statements and run them again very quickly (just like on Linux), so if I keep my statements generic enough (read: not dependent on the folder you are currently in) then it's simple to execute the same things over and over again. That should save us developers few precious seconds every day.</p>

<p>Another tweak that I have made is to add a menu item in the explorer context menu. This will allow me to quickly open a cmder window in the folder I'm looking at. This can be done by adding a registry key and following is a .reg script if you want to get this up and running on your machine (I keep cmder at c:\cmder):</p>

<pre><code>Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Open cmder here\command]
@="c:\\\\cmder\\\\cmder.exe \"%V\""
</code></pre>

<p>That's it for now. I will keep on building on cmder from here on out and going by the pragmatic programmer then it is one of the few tools that I work on being very proficient at using (other tools that fall into this category are <a href="http://www.sublimetext.com/2">Sublime Text 2</a>, <a href="https://www.visualstudio.com/">Visual Studio</a>, and the run button), all part of being as quick as possible in solving the everyday programming problems.</p>]]></content:encoded></item><item><title><![CDATA[numconv.com]]></title><description><![CDATA[<p>The <a href="http://www.armannvg.com/numconv-0-1-released/">numconv</a> Python script was originally thought for developers that had Python already set up and ready to go. However, this might not always be the case and sometimes people need to do these kind of number conversions without having any interest in going through the trouble of configuring Python</p>]]></description><link>http://armannvg.com/2014/08/19/numconv-com/</link><guid isPermaLink="false">9ba0d167-4af7-4d6c-a3f7-ffd2e0b4e12d</guid><category><![CDATA[python]]></category><category><![CDATA[petproject]]></category><dc:creator><![CDATA[Ármann Veigar Guðgeirsson]]></dc:creator><pubDate>Tue, 19 Aug 2014 13:00:53 GMT</pubDate><content:encoded><![CDATA[<p>The <a href="http://www.armannvg.com/numconv-0-1-released/">numconv</a> Python script was originally thought for developers that had Python already set up and ready to go. However, this might not always be the case and sometimes people need to do these kind of number conversions without having any interest in going through the trouble of configuring Python on their machine.</p>

<p>In order to accommodate these users I decided to create the <a href="http://www.numconv.com">numconv.com</a> website that offers similar functionality as the original Python script. The only difference is that the website cannot convert to and from ip addresses. This is because the <a href="https://docs.python.org/dev/library/ipaddress.html">ipaddress</a> class used in the script is only supported in Python 3.3 but the <a href="https://developers.google.com/appengine/">Google App Engine</a> that is used to host the website requires Python 2.7.</p>

<p>The codebase was changed almost entirely and only the actual conversion methods are the same. The command line option parsing was thrown out, obviously, and replaced by code that is handling web requests with <a href="http://flask.pocoo.org/">Flask</a>. The HTML is rendered using <a href="http://www.makotemplates.org/">Mako</a> templates, <a href="http://getbootstrap.com/">Bootstrap</a> was used for styling purposes, and <a href="http://jquery.com/">jquery</a> for the UI behavior. Overall, the code is relatively straightforward and the website was put together pretty quickly. Making it a no-brainer to provide this functionality to users that want to do all their number conversions in the same place.</p>

<p>This website itself is extremely simple, the user enters a number in the textbox and selects which type of number he has in the combobox. Then the "Convert !" button will send a request to the server which does the number conversions and writes them down in a table below. If there are any errors then that will be written in red between the user input controls and the conversion table.</p>

<p>There is one small feature that needs to be mentioned. The conversion parameters are added to the query string when the user presses the "Convert !" button. This means it's possible to create a link that will open <a href="http://armannvg.com/2014/08/19/numconv-com/numconv.com">numconv.com</a> with some specific conversion externally e.g. to convert <a href="http://numconv.com/?num=113&amp;type=Integer">113</a>, <a href="http://numconv.com/?num=XVII&amp;type=Roman">XVII</a>, and <a href="http://numconv.com/?num=0x4458&amp;type=Hex">0x4458</a></p>

<p>That's all folks, any comments and suggestions are welcome and can be sent to numconv@numconv.com</p>]]></content:encoded></item><item><title><![CDATA[numconv 0.1 released]]></title><description><![CDATA[<p>numconv is a simple Python script that converts a number between different numbering systems e.g. from int to hex or binary.</p>

<p>The primary driving force behind numconv is that it allows conversion between multiple numbering systems at once and the user does not have to rely on web sites</p>]]></description><link>http://armannvg.com/2014/06/01/numconv-0-1-released/</link><guid isPermaLink="false">256d5ad4-fa47-430f-ba88-a91ea2377aab</guid><category><![CDATA[opensource]]></category><category><![CDATA[python]]></category><category><![CDATA[petproject]]></category><dc:creator><![CDATA[Ármann Veigar Guðgeirsson]]></dc:creator><pubDate>Sun, 01 Jun 2014 14:00:24 GMT</pubDate><content:encoded><![CDATA[<p>numconv is a simple Python script that converts a number between different numbering systems e.g. from int to hex or binary.</p>

<p>The primary driving force behind numconv is that it allows conversion between multiple numbering systems at once and the user does not have to rely on web sites that only do one way conversion e.g. just from from int to hex.</p>

<p>numconv is thought of as a command line utility that users execute directly from their terminal. The logic is that software developers and IT administrators can use their active terminal session to quickly get the conversion output, removing the need to open an external tool like a browser.</p>

<p>Following are few conversion examples</p>

<p><strong>convert from int to hex:</strong>
numconv.py -n 87 -s int -d hex <br>
0x57</p>

<p><strong>convert from hex to binary:</strong>
numconv.py --n 0xbc -s hex -d binary <br>
10111100</p>

<p><strong>convert from int to roman</strong>
numconv.py -n 24 -s int -d roman <br>
XXIV</p>

<p>If no destination system is specified then all conversions are printed out</p>

<p><strong>convert from int:</strong>
numconv.py -n 119 -s int <br>
binary: 1110111 <br>
hex: 0x77 <br>
int: 119 <br>
ipv4: 0.0.0.119 <br>
ipv6: ::77 <br>
roman: CXIX</p>

<p><strong>convert from hex:</strong>
numconv.py -n 0x3f -s hex <br>
binary: 111111 <br>
hex: 0x3f <br>
int: 63 <br>
ipv4: 0.0.0.63 <br>
ipv6: ::3f <br>
roman: LXIII</p>

<p>numconv requires Python 3.3 and runs on both Windows and Linux (which includes Mac OSX)</p>

<p>The source code is published under my username on <a href="https://github.com/armannvg/numconv">github</a></p>]]></content:encoded></item></channel></rss>