After reading The Hobbit to my sons, my younger guy requested his favorite character. Quite pleased with how this grey pilgrim turned out.
Author Archives: Adam Young
Git: Syncronizing Multiple Patches on Multiple Branches
With Openstack, I find I often have a patch up for review that I want to use as the basis for future work. When a review comes in, I have to make the changes for the review and update the commit. There are a couple ways to go about doing it, but here is one that has worked for me. Continue reading
Presentation on Keystone Deepdive and Folsom
http://adam.younglogic.com/presentations/KeystoneFolsom/
There is not a lot of text: I tend to keep my presentations as a visual mnemonic for the topics being discussed.
Let me know if you want to steal any of the images I created. I have them all as SVG, and the UML diagrams came out of ArgoUML.
Most of the Creative Commons images were found on DeviantArt.com, attributions at the end.
Latency
(To the tune of Yesterday, With apologies to all four Beatles and most sys admins)
Latency
It’s the signature of HPC
that is why it’s running endlessly
your process gates on Latency
This one, well
is embarrassingly parallel
that is why its running fast as hell
the render farm works just as well
Why’s it running slow
don’t you know the bottleneck
demands for some commands
will dictate your architect ect ecture
Here’s the scoop
This one’s nothing more than data soup
that you’re running through an endless loop
You probably should try Hadoop
(This might be the only one I tag as both Lyrics and Networking)
Installing RPM Build Dependencies
If you ever want to build and RPM, you need to make sure that the things it requires are installed. These are listed in the SPEC file on lines that begin with BuildRequires. Installing these by hand is time consuming enough that it should be automated. Here’s a first hack in Python.
#!/usr/bin/python
import sys
import re
build_re = re.compile('BuildRequires:.*')
compare_re = re.compile('.*=.*')
def main():
if (len(sys.argv) > 1):
spec = open(sys.argv[1])
for line in spec:
if build_re.match(line):
for token in line.rsplit(" "):
if build_re.match(token):
continue
if compare_re.match(token):
break
token = token.rstrip(" ,\n\r")
if len(token) > 0:
print token
if __name__ == "__main__":
main()
To use it, save in a file called buildreqs.py and run:
sudo yum install `./buidreqs.py ~/rpmbuild/SPECS/krb5.spec`
Speeding up SQLite based unit tests
If you write database driven applications, you probably have used SQLite at some point. Since it is a simple embedded database, it is a logical choice to use for unit tests that go to the database. However, SQLite performance on Ext4 (default Fedora File system) is lack-luster.
A cheap way to speed things up is to use a ramdisk as the backing store for the database.
Continue reading
Realizing Eight Tone Scales
Using musescore , I wrote out a handful of the Eight Tone Scales.
Here is what they sound like.
Of course, to really explore these, they would need to be rearranged. I’m most interested to hear how the various modes sound, and to see which work on top of the more common chords.
minor not Major
I’ve been trying to find a way to algorithmically generate sheet music. In looking into both Lilypond and ABC one thing is apparent: they are both based on the Major scale, which make s the notation weird. If you are only concerned about major scales.
Continue reading
Why Keystone Tokens are not Certificates
A Certificate Authority signs other certificates. A signing certificate can sign documents. There is a big difference. With this week’s discussion of the Flame malware and the mechanism used to sign it, I think it is important to point out why we are not using an X509 as the signed token in Keystone.
Continue reading
Token Signing with OpenSSL
While Fedora has standardised on NSS for security services, a large swath of the world uses OpenSSL. Here are roughly comparable steps to sign a message with OpenSSL as I previously posted using NSS.
Continue reading





