Author Archives: JordanRinke

Dating Ad

So, I recently discovered that I can advertise on Facebook for about $.50 per 1000 impressions, and after playing with the demographics selection I learned there are about 74k women within 25 miles of San Antonio within my selected age range. So, for $37 a day I can show all of the women (more or less) in this area an ad… how should I wield such power?! By making a dating ad for myself obviously. It is a numbers game anyways right?

With that in mind I need some help. As with any advertisement for a superior product (me) it needs reviews so people know that it isn’t just all hype but has actual substance… awesome, awesome substance. I need reviews ladies. If you know me, have just met me or have only had the pleasure of hearing about me, write a review and I will put it on the little micro-site I am going to make for my dating ad word for word (good or bad). I will post every review.

You can either email them to me or just post in the comments below.

I know this is conceptually crazy but that is what makes it so interesting. Best case scenario it works, worst case plausible scenario it is an entertaining experiment that fails and I get nothing but trolls which would at least be interesting to see. (technically the worst case scenario is that everything ceases to exist but I doubt this will cause that).

PyWin32 Silent Install

Working on the MSI for the OpenWin project I ran in to an issue, how to silently install PyWin32. It took some digging, and I ended up having to open a feature request to get the answer (Mark Hammond replied very quickly), but here it is…

 

(Instructions specific to Python 2.6.x but should be easy to adapt)

Extract the .exe installer (I use UniExtract http://legroom.net/software/uniextract)

It will create 2 directories PLATLIB and SCRIPTS copy the contents of both directores in to c:python26libsite-packages

Then cd to c:python26libsite-packages and run “python pywin32_postinstall.py -install”

Remove pywin32_postinstall.py

That will install PyWin32 silently.

 

You may not have to copy the pywin32_postinstall.py script to site-packages or cd to that dir, but that is how I did it the first time and it worked, and I just haven’t tested it any other way.

USB Art

Had an idea that slowly morphed in to a pretty cool concept after some extensive discussion with Will Kelly…

 

A plexigalss cube of USB devices, basically start with a small clear cube (corner balanced) that you can connect USB devices that is just a giant JBOD. People can send in their physical devices, the installation is read only. You plug the device in and it has a little blue read light that blinks when it is accessed or a scaled light from Green to Red depending on how much content on the drive is down voted or flagged as not fitting the acceptance agreement (nothing illegal etc). As more USB drives come in, another layer is added to the cube and another micro server to handle all the additional devices. The submission would be open for a certain period of time, or to a max limit of devices, then the cube is sealed and becomes a snap shot of files in time and is an interactive art installation since it would pulse and blink randomly as the files were accessed etc. There would be a website front end that randomly displays content from the drives on the main page, and it would all be searchable.

 

Thoughts?

Rackspace Cloud Builders

Rackspace Cloud Builders was announced today. Check it out: http://www.rackspace.com/cloudbuilders/

Catch me on twitter/aim/skype/IRC(freenode) if you would like to talk RCB/OpenStack – JordanRinke

Based36 naming scheme for OpenStack servers

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 “nn” for nova node and “nc” 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… let me know your thoughts…

Naming format XXXXXXXYYYYZZZZ
All Base36 – XXXXXXX=Coded service list, YYYY=Cluster#, ZZZZ=Unit#
This gives 31 service bits, 1 Million cluster #s, and 1 Million unit #s
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)


From Right to left, binary to based36
000000000000000000000000000000000000 = 7char base36 XXXX from above.
|||||||||||||||||||||||||||||||||||'-Nova-API
||||||||||||||||||||||||||||||||||'-Nova-Compute
|||||||||||||||||||||||||||||||||'-Nova-Network
||||||||||||||||||||||||||||||||'-Nova-ObjectStore
|||||||||||||||||||||||||||||||'-Nova-Scheduler
||||||||||||||||||||||||||||||'-Nova-Volume
|||||||||||||||||||||||||||||'-Swift-Account
||||||||||||||||||||||||||||'-Swift-Auth
|||||||||||||||||||||||||||'-Swift-Container
||||||||||||||||||||||||||'-Swift-Object
|||||||||||||||||||||||||'-Swift-Proxy
||||||||||||||||||||||||'-Glance-API
|||||||||||||||||||||||'-Glance-Registry
||||||||||||||||||||||'-Future-Use
|||||||||||||||||||||'-Future-Use
||||||||||||||||||||'-Future-Use
|||||||||||||||||||'-Future-Use
||||||||||||||||||'-Future-Use
|||||||||||||||||'-Future-Use
||||||||||||||||'-Future-Use
|||||||||||||||'-Future-Use
||||||||||||||'-Future-Use
|||||||||||||'-Future-Use
||||||||||||'-Future-Use
|||||||||||'-Future-Use
||||||||||'-Future-Use
|||||||||'-Future-Use
||||||||'-Future-Use
|||||||'-Future-Use
||||||'-Future-Use
|||||'-Future-Use
||||'-Future-Use
|||'-Future-Use
||'-Future-Use
|'-Future-Use
'-Future-Use

Common Examples:
All Nova = 000001R
All Swift = 00001J4
All Glance = 00004QO
Nova+Swift = 00001KV
Swift+Glance = 000069S
All current = 00006BJ
All current & future = VKHSVLR

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...
00001KV00RU09R7

There are some variations possible, we could do XX

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?

Note: These unit names should be auto generated through various setup utilities, anyone doing an install by hand probably wouldn’t need a naming scheme with large scale design, although I would highly recommend it if possible.

If you would like to comment please visit my blog directly http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/ ping me on twitter http://www.twitter.com/JordanRinke or find me on IRC on #OpenStack

Automating the email archive script

There is no way to actuall schedule an event in Outlook that I know of, however if you add the following code to the same session as the previous sub it will kick off whenever a task with the subject “MOVEOLDEMAILREMINDER” pops a reminder. To set this up create a new task, give it the subject “MOVEOLDEMAILREMINDER” and set a reminder. When the reminder fires, the code below will execute, moving the reminder to a day later. Simply dismiss the reminder popup and your email over 30 days old will have been moved to a personal folder. If you want to run this a week apart instead of daily, just change the DateAdd number from 1 to 7.

Private Sub Application_Reminder(ByVal Item As Object)
Dim objTask As Object
Set objTask = Item
If objTask.Subject = "MOVEOLDEMAILREMINDER" Then
    objTask.ReminderTime = DateAdd("d", 1, objTask.ReminderTime)
    objTask.Save
    MoveOldEmails
End If
Set objTask = Nothing
End Sub

Outlook macro to archive email

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 ( http://blogs.iis.net/robert_mcmurray/archive/2010/02/25/outlook-macros-part-1-moving-emails-into-personal-folders.aspx )

There are a few things to note… use at your own risk is the first. Second, this only does a folder deep in the inbox mostly because I didn’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.

Sub MoveOldEmails()
'NOTE: This does Sent Items, Inbox, and 1 folder below inbox. It will not do more than 1 folder deep in the inbox.
    ' Declare all variables.
    Dim objOutlook As Outlook.Application
    Dim objNamespace As Outlook.NameSpace
    Dim objInbox As Outlook.Folder
    Dim objSentbox As Outlook.Folder
    Dim objDestFolder As Outlook.Folder
    Dim objMail As Variant
    Dim intCount As Integer
    Dim intDateDiff As Integer
    Dim intAge As Integer

    'Move anything older than this date.
    intAge = 30

    ' Create an object for the Outlook application.
    Set objOutlook = Application
    ' Retrieve an object for the MAPI namespace.
    Set objNamespace = objOutlook.GetNamespace("MAPI")
    ' Retrieve a folder object for the inbox folder
    Set objInbox = objNamespace.GetDefaultFolder(olFolderInbox)
    'Retrieve a folder object for sent box folder
    Set objSentbox = objNamespace.GetDefaultFolder(olFolderSentMail)
    ' Note: Using cached mode with exchange is much faster, non-cached mode will take 1-2 seconds per email
    ' since a request is made for every object vs using a local cache.

    'Move sent items first.

    For intCount = objSentbox.Items.Count To 1 Step -1
        ' Loop through the items in the folder. NOTE: This has to
        ' be done backwards; if you process forwards you have to
        ' re-run the macro an inverese exponential number of times.
        Set objMail = objSentbox.Items.Item(intCount)
        intDateDiff = DateDiff("d", objMail.SentOn, Now)
        Debug.Print intDateDiff & ":" & objMail.SentOn
        'Move anything older than intAge
        If intDateDiff > intAge Then
            'Set blnFound to False, it will be set to true by logic if the folder does not need to be created
            blnFound = False
            For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders
                'This is sloppy since we will loop through all of the folders to see if the folder exists
                'for every mail item, I could make an array and do a search on it but this should be run in
                'cached mode so there is not much of a difference. This is however, very much not optimal
                If objFolder.Name = objSentbox.Name Then
                    'If the current folder matches our search folder set blnFound to true to skip folder creation
                    blnFound = True
                End If
            Next
            If blnFound = False Then
                'Create the folder if it was not found
                objNamespace.Folders(CStr(Year(objMail.SentOn))).Add objSentbox.Name
            End If

            Debug.Print objMail.SentOn & ":" & objMail.Subject
            'Set the destination to the same structure as the source folder, i.e. "2010Sent Items"
            Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objSentbox.Name)
            'Move the object - technically mail is not the best name since this can be calendar items etc but I liked it more than "variant"
            objMail.Move objDestFolder
            'Destroy object for clarity
            Set objDestFolder = Nothing
        End If
    Next intCount

    'Next move everything in the root of the default Inbox
    For intCount = objInbox.Items.Count To 1 Step -1
        Set objMail = objInbox.Items.Item(intCount)
        intDateDiff = DateDiff("d", objMail.SentOn, Now)
        If intDateDiff > intAge Then
            blnFound = False
            For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders
                If objFolder.Name = objInbox.Name Then
                    blnFound = True
                End If
            Next
            If blnFound = False Then
                objNamespace.Folders(CStr(Year(objMail.SentOn))).Add objInbox.Name
            End If

            Debug.Print objMail.SentOn & ":" & objMail.Subject
            ' folder structure i.e. "2010Inbox"
            Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name)
            objMail.Move objDestFolder
            Set objDestFolder = Nothing
        End If
    Next intCount

   'Loop through all the folders in the inbox
    For intFolderCount = 1 To objInbox.Folders.Count
        For intCount = objInbox.Folders(intFolderCount).Items.Count To 1 Step -1
            DoEvents
            Set objMail = objInbox.Folders(intFolderCount).Items.Item(intCount)
            intDateDiff = DateDiff("d", objMail.SentOn, Now)
            If intDateDiff > intAge Then
                blnFound = False
                For Each objFolder In objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders
                    If objFolder.Name = objInbox.Folders(intFolderCount).Name Then
                        blnFound = True
                    End If
                Next
                If blnFound = False Then
                    objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders.Add objInbox.Folders(intFolderCount).Name
                End If

                Debug.Print objInbox.Folders(intFolderCount).Name & ":" & objMail.SentOn & ":" & objMail.Subject
                ' folder structure i.e. "2010InboxsubFolder"
                Set objDestFolder = objNamespace.Folders(CStr(Year(objMail.SentOn))).Folders(objInbox.Name).Folders(objInbox.Folders(intFolderCount).Name)
                objMail.Move objDestFolder
                Set objDestFolder = Nothing
            End If
        Next intCount
    Next intFolderCount

    Debug.Print "Done"

End Sub
 
Enjoy

Fiction

[14:37] <rackmike> write a story about MikeD’s fictional crimes

How geeks make plans

This is pseudo code and a mix of various languages (i.e. it wouldn’t compile in anything) but this was how it went down in real time…

3:36:01 PM: Jordan Rinke:

define Night (Drinks as new Drinking, Pool as new Billiards, BBQ as new Dinner, optional Go_Out as new Bar) {
 Arrive(Drinking.location)
 Drinking.execute()
 BBQ.execute()
 Billiards.execute()

 if defined Go_Out then {
  Go_Out.execute
  return hungover
 } else {
  return maybe_hungover
 }

}

main() {
 If Wayne.Walls.Approve = 1 then {
  Drinking.location = “Patio”
  Billiards.location = “Wayne Enterprise”
  BBQ.location = Drinking.location
  retval = Night (Drinking, Billiars, BBQ)
  # 
  #Optional Go_Out needs definition
 }

return = retval

}
3:36:55 PM: Wayne Walls: 1

3:37:35 PM: Jordan Rinke: this deserves a blog post lol

3:37:41 PM: Wayne Walls: lol

3:37:47 PM: Wayne Walls: i agree

Must see movies for any geek.

A friend recently had some free time to geek out and enjoy himself, he decided the best way to relax would be movies and video games. He had seen most of the must see / great movies etc so we decided to send an email out to everyone at work and ask them for a list of their must see movies. I qualified my question by asking for must see movies for a “geek dude”. Below is the list of movies I received, I have included anything that was part of a franchise so for instance if someone suggested Alien, then I included Aliens, Aliens3 and Alien Resurrection. I know there will be some grumbling about this but this is my blog and I think people should see an entire franchise even if some people thinks one or more of the films suck. Having said that, there are some movies on this list that I personally think aren’t worth watching… however movie reviews are such subjective things I have included them since they were recommended and who knows you might love them.

Admittedly not all the movies are geek specific, some are obscure, or interesting, horrific or hilarious etc. I think this ended up being a list of movies recommended by geeks instead of specifically for geeks hah.

If you have movies that should be on this list that have not been included, please post up in the comments and I will update the list to be as complete as possible.

12 Monkeys – http://www.imdb.com/title/tt0114746/
2001 a Space Odyssey – http://www.imdb.com/title/tt0062622/
Airplane! – http://www.imdb.com/title/tt0080339/
Akira – http://www.imdb.com/title/tt0094625/
Alien – http://www.imdb.com/title/tt0078748/
Alien 3 – http://www.imdb.com/title/tt0103644/
Alien: Resurrection – http://www.imdb.com/title/tt0118583/
Aliens – http://www.imdb.com/title/tt0090605/
Antitrust – http://www.imdb.com/title/tt0218817/
Apollo 13 – http://www.imdb.com/title/tt0112384/
Army of Darkness – http://www.imdb.com/title/tt0106308/
Avalon – http://www.imdb.com/title/tt0267287/
Big Trouble in Little China – http://www.imdb.com/title/tt0090728/
Blade Runner – http://www.imdb.com/title/tt0083658/
Brainscan – http://www.imdb.com/title/tt0109327/
Brainstorm – http://www.imdb.com/title/tt0085271/
Children of Men – http://www.imdb.com/title/tt0206634/
Chopper – http://www.imdb.com/title/tt0221073/
Clash of the Titans (1981) – http://www.imdb.com/title/tt0082186/
Clockwork Orange – http://www.imdb.com/title/tt0066921/
Dark City – http://www.imdb.com/title/tt0118929/
Death Race 2000 (1975) – http://www.imdb.com/title/tt0072856/
Electric Dreams – http://www.imdb.com/title/tt0087197/
Equilibrium – http://www.imdb.com/title/tt0238380/
Event Horizon – http://www.imdb.com/title/tt0119081/
Forbidden Planet – http://www.imdb.com/title/tt0049223/
Ghost in the Shell – http://www.imdb.com/title/tt0113568/
Grandma’s Boy – http://www.imdb.com/title/tt0456554/
Hackers – http://www.imdb.com/title/tt0113243/
Hardcandy – http://www.imdb.com/title/tt0424136/
Heat – http://www.imdb.com/title/tt0113277/
High Tension – http://www.imdb.com/title/tt0338095/
Highlander – http://www.imdb.com/title/tt0091203/
Highlander II – http://www.imdb.com/title/tt0102034/
Idiocracy – http://www.imdb.com/title/tt0387808/
Krull – http://www.imdb.com/title/tt0085811/
Legend – http://www.imdb.com/title/tt0089469/
Lock, Stock and Two Smoking Barrels – http://www.imdb.com/title/tt0120735/
Logan’s Run – http://www.imdb.com/title/tt0074812/
Love Object – http://www.imdb.com/title/tt0328077/
Mad Max – http://www.imdb.com/title/tt0079501/
Mad Max 2: The Road Warrior – http://www.imdb.com/title/tt0082694/
Mad Max Beyond Thunderdome – http://www.imdb.com/title/tt0089530/
Manos: The Hands of Fate – http://www.imdb.com/title/tt0060666/
May – http://www.imdb.com/title/tt0303361/
Mazes and Monsters – http://www.imdb.com/title/tt0084314/
Minority Report – http://www.imdb.com/title/tt0181689/
Nerds 2.0.1 – http://www.imdb.com/title/tt0207264/
Once Were Warriors – http://www.imdb.com/title/tt0110729/
Paprika – http://www.imdb.com/title/tt0851578/
Pitch Black – http://www.imdb.com/title/tt0134847/
Raider’s of the Lost Ark – http://www.imdb.com/title/tt0082971/
Real Genius – http://www.imdb.com/title/tt0089886/
Revenge of the Ninja – http://www.imdb.com/title/tt0086192/
RoboCop – http://www.imdb.com/title/tt0093870/
RoboCop 2 – http://www.imdb.com/title/tt0100502/
RoboCop 3 – http://www.imdb.com/title/tt0107978/
Rollerball (1975) – http://www.imdb.com/title/tt0073631/
Rollerball (2002) – http://www.imdb.com/title/tt0246894/
Romper stomper – http://www.imdb.com/title/tt0105275/
Serenity – http://www.imdb.com/title/tt0379786/ (watch the associated TV series called “Firefly”)
Snatch – http://www.imdb.com/title/tt0208092/
Sneakers – http://www.imdb.com/title/tt0105435/
Solarbabies – http://www.imdb.com/title/tt0091981/
Star Trek (2009) – http://www.imdb.com/title/tt0796366/
Star Trek II: The Wrath of Khan – http://www.imdb.com/title/tt0084726/
Star Trek III: The Search for Spock – http://www.imdb.com/title/tt0088170/
Star Trek IV: The Voyage Home – http://www.imdb.com/title/tt0092007/
Star Trek V: The Final Frontier – http://www.imdb.com/title/tt0098382/
Star Trek VI: The Undiscovered Country – http://www.imdb.com/title/tt0102975/
Star Trek: First Contact – http://www.imdb.com/title/tt0117731/
Star Trek: Generations – http://www.imdb.com/title/tt0111280/
Star Trek: Insurrection – http://www.imdb.com/title/tt0120844/
Star Trek: Nemesis – http://www.imdb.com/title/tt0253754/
Star Trek: The Motion Picture – http://www.imdb.com/title/tt0079945/
Star Wars: Episode I – The Phantom Menace – http://www.imdb.com/title/tt0120915/
Star Wars: Episode II – Attack of the Clones – http://www.imdb.com/title/tt0121765/
Star Wars: Episode III – Revenge of the Sith – http://www.imdb.com/title/tt0121766/
Star Wars: Episode IV – A New Hope – http://www.imdb.com/title/tt0076759/
Star Wars: Episode V – The Empire Strikes Back – http://www.imdb.com/title/tt0080684/
Star Wars: Episode VI – Return of the Jedi – http://www.imdb.com/title/tt0086190/
Starman – http://www.imdb.com/title/tt0088172/
Starship Troopers – http://www.imdb.com/title/tt0120201/
Sunshine – http://www.imdb.com/title/tt0448134/
Superman – http://www.imdb.com/title/tt0078346/
Superman II – http://www.imdb.com/title/tt0081573/
Superman III – http://www.imdb.com/title/tt0086393/
Superman IV: The Quest for Peace – http://www.imdb.com/title/tt0094074/
Superman Returns – http://www.imdb.com/title/tt0348150/
Swordfish – http://www.imdb.com/title/tt0244244/
Terminator 2: Judgment Day – http://www.imdb.com/title/tt0103064/
Terminator 3: Rise of the Machines – http://www.imdb.com/title/tt0181852/
Terminator Salvation – http://www.imdb.com/title/tt0438488/
The Adventures of Baron Munchausen – http://www.imdb.com/title/tt0096764/
The Beastmaster – http://www.imdb.com/title/tt0083630/
The Bushido Blade – http://www.imdb.com/title/tt0078918/
The Chronicles of Riddick – http://www.imdb.com/title/tt0296572/
The Dark Crystal – http://www.imdb.com/title/tt0083791/
The Fifth Element – http://www.imdb.com/title/tt0119116/
The Game – http://www.imdb.com/title/tt0119174/
The Hitch Hikers Guide to the Galaxy (1981) – http://www.imdb.com/title/tt0081874/
The Hitchhiker’s Guide to the Galaxy (2005) – http://www.imdb.com/title/tt0371724/
The Last Dragon – http://www.imdb.com/title/tt0089461/
The Last Starfighter – http://www.imdb.com/title/tt0087597/
The Lord of the Rings: The Fellowship of the Ring – http://www.imdb.com/title/tt0120737/
The Lord of the Rings: The Return of the King – http://www.imdb.com/title/tt0167260/
The Lord of the Rings: The Two Towers – http://www.imdb.com/title/tt0167261/
The Lost Boys – http://www.imdb.com/title/tt0093437/
The Man From Earth – http://www.imdb.com/title/tt0756683/
The Man Who Fell to Earth – http://www.imdb.com/title/tt0074851/
The Manhattan Project – http://www.imdb.com/title/tt0091472/
The Matrix – http://www.imdb.com/title/tt0133093/
The Matrix Reloaded – http://www.imdb.com/title/tt0234215/
The Matrix Revolutions – http://www.imdb.com/title/tt0242653/
The Net – http://www.imdb.com/title/tt0113957/
The Princess Bride – http://www.imdb.com/title/tt0093779/
The Right Stuff – http://www.imdb.com/title/tt0086197/
The Terminator – http://www.imdb.com/title/tt0088247/
The Year My Voice Broke – http://www.imdb.com/title/tt0094347/
They Live – http://www.imdb.com/title/tt0096256/
THX-1138 – http://www.imdb.com/title/tt0066434/
Time Bandits – http://www.imdb.com/title/tt0081633/
Triumph of the Nerds – http://www.imdb.com/title/tt0115398/
Tron – http://www.imdb.com/title/tt0084827/
True Romance – http://www.imdb.com/title/tt0108399/
Two Hands – http://www.imdb.com/title/tt0145547/
Underworld – http://www.imdb.com/title/tt0320691/
Underworld: Evolution – http://www.imdb.com/title/tt0401855/
Underworld: Rise of the Lycans – http://www.imdb.com/title/tt0834001/
V for Vendetta – http://www.imdb.com/title/tt0434409/
Wargames – http://www.imdb.com/title/tt0086567/
Weird Science – http://www.imdb.com/title/tt0090305/