<?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>Jordan Rinke &#187; Work</title>
	<atom:link href="http://www.jordanrinke.com/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jordanrinke.com</link>
	<description>Rants, revelations and other absurdities</description>
	<lastBuildDate>Wed, 04 Jan 2012 12:34:59 +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>Based36 naming scheme for OpenStack servers</title>
		<link>http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/</link>
		<comments>http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 23:05:04 +0000</pubDate>
		<dc:creator>JordanRinke</dc:creator>
				<category><![CDATA[OpenStack]]></category>

		<guid isPermaLink="false">http://www.jordanrinke.com/?p=88</guid>
		<description><![CDATA[<a href="http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/" title="Based36 naming scheme for OpenStack servers"></a>So, I am looking at doing large scale OpenStack deployments, one of the concerns with that is a naming format. Initially I was thinking something like &#8220;nn&#8221; for nova node and &#8220;nc&#8221; for nova controller etc. My large scale enterprise &#8230;<p class="read-more"><a href="http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/" title="Based36 naming scheme for OpenStack servers"></a><p>So, I am looking at doing large scale OpenStack deployments, one of the concerns with that is a naming format. Initially I was thinking something like &#8220;nn&#8221; for nova node and &#8220;nc&#8221; for nova controller etc. My large scale enterprise experience told me that would quickly become a horrible idea, especially considering the various ways that people are going to deploy this. With some thought and help from various colleagues I have come up with the following naming format&#8230; let me know your thoughts&#8230;</p>
<p>Naming format XXXXXXXYYYYZZZZ<br />
All Base36 &#8211; XXXXXXX=Coded service list, YYYY=Cluster#, ZZZZ=Unit#<br />
This gives 31 service bits, 1 Million cluster #s, and 1 Million unit #s<br />
This creates a 15char unit name, the maximum allowed for MS NetBIOS names (although primarily *nix right now, we have to account for future growth into the Windows space)</p>
<p><code><br />
From Right to left, binary to based36<br />
000000000000000000000000000000000000 = 7char base36 XXXX from above.<br />
|||||||||||||||||||||||||||||||||||'-Nova-API<br />
||||||||||||||||||||||||||||||||||'-Nova-Compute<br />
|||||||||||||||||||||||||||||||||'-Nova-Network<br />
||||||||||||||||||||||||||||||||'-Nova-ObjectStore<br />
|||||||||||||||||||||||||||||||'-Nova-Scheduler<br />
||||||||||||||||||||||||||||||'-Nova-Volume<br />
|||||||||||||||||||||||||||||'-Swift-Account<br />
||||||||||||||||||||||||||||'-Swift-Auth<br />
|||||||||||||||||||||||||||'-Swift-Container<br />
||||||||||||||||||||||||||'-Swift-Object<br />
|||||||||||||||||||||||||'-Swift-Proxy<br />
||||||||||||||||||||||||'-Glance-API<br />
|||||||||||||||||||||||'-Glance-Registry<br />
||||||||||||||||||||||'-Future-Use<br />
|||||||||||||||||||||'-Future-Use<br />
||||||||||||||||||||'-Future-Use<br />
|||||||||||||||||||'-Future-Use<br />
||||||||||||||||||'-Future-Use<br />
|||||||||||||||||'-Future-Use<br />
||||||||||||||||'-Future-Use<br />
|||||||||||||||'-Future-Use<br />
||||||||||||||'-Future-Use<br />
|||||||||||||'-Future-Use<br />
||||||||||||'-Future-Use<br />
|||||||||||'-Future-Use<br />
||||||||||'-Future-Use<br />
|||||||||'-Future-Use<br />
||||||||'-Future-Use<br />
|||||||'-Future-Use<br />
||||||'-Future-Use<br />
|||||'-Future-Use<br />
||||'-Future-Use<br />
|||'-Future-Use<br />
||'-Future-Use<br />
|'-Future-Use<br />
'-Future-Use<br />
</code></p>
<p><code> </code></p>
<p><code>Common Examples:<br />
All Nova = 000001R<br />
All Swift = 00001J4<br />
All Glance = 00004QO<br />
Nova+Swift = 00001KV<br />
Swift+Glance = 000069S<br />
All current = 00006BJ<br />
All current &amp; future = VKHSVLR</code></p>
<p><code> </code></p>
<p><code>A full example of a machine running Nova and Swift, in the 1,002 cluster, unit number 12,643 (assuming this is the biggest cluster ever heh) would be...<br />
00001KV00RU09R7<br />
</code></p>
<p>There are some variations possible, we could do XX</p>
<p>In theory this naming scheme would not need to be changed for a number of years. It also allows you to at a glance understand a servers original purpose or analyze a large scale implementation without requiring auditing or configuration databases. The obvious downside is that changing the services on a box would require a name change although in large systems usually service changes would use a migration box and the naming could be done there. The size of the name is a concern for ops people as well but I would expect copy/paste to be utilized from alerting/tickets etc. This is just an idea now that I will most likely start building installation process/automation around so any thoughts?</p>
<p>Note: These unit names should be auto generated through various setup utilities, anyone doing an install by hand probably wouldn&#8217;t need a naming scheme with large scale design, although I would highly recommend it if possible.</p>
<p>If you would like to comment please visit my blog directly <a title="http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/" href="http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/">http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/</a> ping me on twitter <a title="http://www.twitter.com/JordanRinke" href="http://www.twitter.com/JordanRinke">http://www.twitter.com/JordanRinke</a> or find me on IRC on #OpenStack</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Outlook macro to archive email</title>
		<link>http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/</link>
		<comments>http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 21:14:10 +0000</pubDate>
		<dc:creator>JordanRinke</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.jordanrinke.com/?p=77</guid>
		<description><![CDATA[<a href="http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/" title="Outlook macro to archive email"></a>Here is an Outlook macro I whipped up a little while ago since my inbox was so insane I was having trouble even selecting all of the email in it. As you can see my version is heavily modified from &#8230;<p class="read-more"><a href="http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/" title="Outlook macro to archive email"></a><p>Here is an Outlook macro I whipped up a little while ago since my inbox was so insane I was having trouble even selecting all of the email in it. As you can see my version is heavily modified from a source article I found here ( <a href="http://blogs.iis.net/robert_mcmurray/archive/2010/02/25/outlook-macros-part-1-moving-emails-into-personal-folders.aspx">http://blogs.iis.net/robert_mcmurray/archive/2010/02/25/outlook-macros-part-1-moving-emails-into-personal-folders.aspx</a> )</p>
<p>There are a few things to note&#8230; use at your own risk is the first. Second, this only does a folder deep in the inbox mostly because I didn&#8217;t feel like writing a recursion method. There is limited error checking, I wanted it to crash vs try to survive and screw up my email. For this to work you must have a datafile added for each year in YYYY (2010, 2009, etc) format. The macro will attempt to create any subfolders that it needs. Macro is as follows, if you make any huge improvements to it please let me know.<br />
<code><br />
Sub MoveOldEmails()<br />
'NOTE: This does Sent Items, Inbox, and 1 folder below inbox. It will not do more than 1 folder deep in the inbox.<br />
    ' Declare all variables.<br />
    Dim objOutlook As Outlook.Application<br />
    Dim objNamespace As Outlook.NameSpace<br />
    Dim objInbox As Outlook.Folder<br />
    Dim objSentbox As Outlook.Folder<br />
    Dim objDestFolder As Outlook.Folder<br />
    Dim objMail As Variant<br />
    Dim intCount As Integer<br />
    Dim intDateDiff As Integer<br />
    Dim intAge As Integer</p>
<p>    'Move anything older than this date.<br />
    intAge = 30</p>
<p>    ' Create an object for the Outlook application.<br />
    Set objOutlook = Application<br />
    ' Retrieve an object for the MAPI namespace.<br />
    Set objNamespace = objOutlook.GetNamespace("MAPI")<br />
    ' Retrieve a folder object for the inbox folder<br />
    Set objInbox = objNamespace.GetDefaultFolder(olFolderInbox)<br />
    'Retrieve a folder object for sent box folder<br />
    Set objSentbox = objNamespace.GetDefaultFolder(olFolderSentMail)<br />
    ' Note: Using cached mode with exchange is much faster, non-cached mode will take 1-2 seconds per email<br />
    ' since a request is made for every object vs using a local cache.</p>
<p>    'Move sent items first.</p>
<p>    For intCount = objSentbox.Items.Count To 1 Step -1<br />
        ' Loop through the items in the folder. NOTE: This has to<br />
        ' be done backwards; if you process forwards you have to<br />
        ' re-run the macro an inverese exponential number of times.<br />
        Set objMail = objSentbox.Items.Item(intCount)<br />
        intDateDiff = DateDiff("d", objMail.SentOn, Now)<br />
        Debug.Print intDateDiff &amp; ":" &amp; objMail.SentOn<br />
        'Move anything older than intAge<br />
        If intDateDiff &gt; intAge Then<br />
            'Set blnFound to False, it will be set to true by logic if the folder does not need to be created<br />
            blnFound = False<br />
            For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders<br />
                'This is sloppy since we will loop through all of the folders to see if the folder exists<br />
                'for every mail item, I could make an array and do a search on it but this should be run in<br />
                'cached mode so there is not much of a difference. This is however, very much not optimal<br />
                If objFolder.Name = objSentbox.Name Then<br />
                    'If the current folder matches our search folder set blnFound to true to skip folder creation<br />
                    blnFound = True<br />
                End If<br />
            Next<br />
            If blnFound = False Then<br />
                'Create the folder if it was not found<br />
                objNamespace.Folders(CStr(Year(objMail.SentOn))).Add objSentbox.Name<br />
            End If</p>
<p>            Debug.Print objMail.SentOn &amp; ":" &amp; objMail.Subject<br />
            'Set the destination to the same structure as the source folder, i.e. "2010Sent Items"<br />
            Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objSentbox.Name)<br />
            'Move the object - technically mail is not the best name since this can be calendar items etc but I liked it more than "variant"<br />
            objMail.Move objDestFolder<br />
            'Destroy object for clarity<br />
            Set objDestFolder = Nothing<br />
        End If<br />
    Next intCount</p>
<p>    'Next move everything in the root of the default Inbox<br />
    For intCount = objInbox.Items.Count To 1 Step -1<br />
        Set objMail = objInbox.Items.Item(intCount)<br />
        intDateDiff = DateDiff("d", objMail.SentOn, Now)<br />
        If intDateDiff &gt; intAge Then<br />
            blnFound = False<br />
            For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders<br />
                If objFolder.Name = objInbox.Name Then<br />
                    blnFound = True<br />
                End If<br />
            Next<br />
            If blnFound = False Then<br />
                objNamespace.Folders(CStr(Year(objMail.SentOn))).Add objInbox.Name<br />
            End If</p>
<p>            Debug.Print objMail.SentOn &amp; ":" &amp; objMail.Subject<br />
            ' folder structure i.e. "2010Inbox"<br />
            Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name)<br />
            objMail.Move objDestFolder<br />
            Set objDestFolder = Nothing<br />
        End If<br />
    Next intCount</p>
<p>   'Loop through all the folders in the inbox<br />
    For intFolderCount = 1 To objInbox.Folders.Count<br />
        For intCount = objInbox.Folders(intFolderCount).Items.Count To 1 Step -1<br />
            DoEvents<br />
            Set objMail = objInbox.Folders(intFolderCount).Items.Item(intCount)<br />
            intDateDiff = DateDiff("d", objMail.SentOn, Now)<br />
            If intDateDiff &gt; intAge Then<br />
                blnFound = False<br />
                For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders<br />
                    If objFolder.Name = objInbox.Folders(intFolderCount).Name Then<br />
                        blnFound = True<br />
                    End If<br />
                Next<br />
                If blnFound = False Then<br />
                    objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders.Add objInbox.Folders(intFolderCount).Name<br />
                End If</p>
<p>                Debug.Print objInbox.Folders(intFolderCount).Name &amp; ":" &amp; objMail.SentOn &amp; ":" &amp; objMail.Subject<br />
                ' folder structure i.e. "2010InboxsubFolder"<br />
                Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders(objInbox.Folders(intFolderCount).Name)<br />
                objMail.Move objDestFolder<br />
                Set objDestFolder = Nothing<br />
            End If<br />
        Next intCount<br />
    Next intFolderCount</p>
<p>    Debug.Print "Done"</p>
<p>End Sub</code><br />
 <br />
Enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jordanrinke.com/2010/12/22/outlook-macro-to-archive-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article from MSN: &#8220;The Worst Interview Faux Pas&#8221; &#8211; Pisses me off</title>
		<link>http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/</link>
		<comments>http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 07:59:51 +0000</pubDate>
		<dc:creator>JordanRinke</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.jordanrinke.com/?p=7</guid>
		<description><![CDATA[<a href="http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/" title="Article from MSN: &quot;The Worst Interview Faux Pas&quot; - Pisses me off"></a>So I just read this article http://msn.careerbuilder.com/Article/MSN-2051-Interviewing-The-Worst-Interview-Faux-Pas since I have a few friends interviewing at different places and I was curious if it was worth forwarding out. For the most part it is a reasonable article but there are two &#8230;<p class="read-more"><a href="http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/" title="Article from MSN: &quot;The Worst Interview Faux Pas&quot; - Pisses me off"></a><p>So I just read this article <a href="http://msn.careerbuilder.com/Article/MSN-2051-Interviewing-The-Worst-Interview-Faux-Pas">http://msn.careerbuilder.com/Article/MSN-2051-Interviewing-The-Worst-Interview-Faux-Pas</a> since I have a few friends interviewing at different places and I was curious if it was worth forwarding out. For the most part it is a reasonable article but there are two very specific topics that really pissed me off when I read it.</p>
<p><strong>Section 6: Poor Presentation, 3rd quote.</strong></p>
<p><em>&#8220;I once had a recent graduate who looked fantastic on paper, but showed up wearing  flip-flops. During the interview, he would lean back in his chair, flex his hands over his head and he even said several curse words in his responses. It was so bad I e-mailed him afterwards to point out his most obvious blunders!&#8221; &#8211; Nickie Doria, marketing director for Emmer Development Corp.</em></p>
<p>Reading this quote actually made me think &#8220;Fuck You&#8221;.  Sure, I wore a suit to my interview for my current employer (whom I love and where I now wear flip-flops to work most days) to show respect but it probably wasn&#8217;t essential. They were hiring a specific talent, not a specific look. I am pretty sure I leaned back in my chair a bit since I was at ease and relaxed mostly. I avoided the F bomb or anything similar but even having that requirement is absurd. If you are hiring an adult, to do grown up things&#8230; language and attire should be no limitation. I will avoid my rant on curse words since I am strongly opinionated and could dedicate an entire post to that alone. The pretentious attitude that is conveyed in this quote really gets me fired up. So the gist of this one for me is&#8230; treat adults like adults, companies with restrictions and limitations so strict they are essentially treating their workforce like children strangle their talent  in my opinion. To the dude above that didn&#8217;t get the job&#8230; you didn&#8217;t really want to work there anyways (hah, like he will ever see my blog but whatever)</p>
<p><strong>Section 8: Forgetting to clean up digital dirt, The entire section.</strong></p>
<p><em>&#8220;Of course, for those who are MySpace and Facebook junkies, make sure your pages are set to the private setting. We actually had a girl apply for a leasing position with one of our companies, and she did very well during the interview. Later, the manager wanted to learn more about her, and found that her MySpace name was &#8230; well somewhat promiscuous at best! Needless to say, she never even got a call back! &#8211; Doria</em></p>
<p>Seriously, I want to slap this person. Who cares if she is a slut (what I get from the implication above)? That has nothing to do with her work. If she can close leases on properties fast enough to meet or beat quota then I don&#8217;t give a damn if she spends her weekend snorting coke off a bathroom urinal while getting double penetrated by Ron Jeremy and Peter North (to the people who instantly knew those names&#8230; you are sick, of course I referenced them so what does that say about me?). Someone&#8217;s personal life should not be a consideration in their employment. Sure, it can be a benefit for instance a digital designer who happens to have a large online gallery; but it should never detract. People who look at a facebook page and think oh noes, they have pictures playing beer pong&#8230; to them I say they are hypocrites. They do/did the same shit, they just don&#8217;t have the balls to take a picture of it and post it online for everyone to see the real them. Again, this one angers me because personal and work time are entirely different.</p>
<p>Sure, if there was a picture of them pissing in the coffee at work, that would be different&#8230; that directly affects them in a job related manner. However, if my picture is from a going away party for friend, where I happened to be chugging beer from a beer bong and couldn&#8217;t exactly stand up straight while doing it&#8230; well that shouldn&#8217;t matter. Tell me how doing that on a Friday night makes me less capable on Monday morning? If anything you should be worried about people who DO clean up their online digital presence, it means they believe they have something to hide and are willing to do so. Who do you want to hire&#8230; someone who believes they may be doing something wrong or unsavory but they are willing to simply hide it from you and attempt to live two separate lives essentially lying about their true nature OR someone who is open and honest with who and what they are and they embrace it?</p>
<p><strong>Conclusion</strong></p>
<p>The &#8220;conventional wisdom&#8221; relayed in the above statements really drives me nuts. We live in a free country but people&#8217;s personalities are so oppressed in the business culture (I will avoid another rant about this that could be another blog post). Companies that are growing, thriving, changing the world&#8230; I like to think they throw this &#8220;wisdom&#8221; out of the window and look at what the people they are interviewing can actually do while they are at work. Not how they look when they get to work, or what they do when they aren&#8217;t at work&#8230; neither of those matter. People who believe they do matter, are living in an age that has passed and will slowly die as they do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jordanrinke.com/2009/10/29/article-from-msn-interview-faux-pas-pisses-me-off/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

