October 2007 Archives

chromatic

AddThis Social Bookmark Button

As I mentioned in Debugging GC Problems in Parrot, being able to find a failure as soon as possible helps with debugging. With a new runcore for GC debugging, we’ve found several memory problems and fixed most of them. (Some require rethinking certain design decisions.)

Here’s the process to finding and fixing bugs of this type.

Noah Gift

AddThis Social Bookmark Button

Leopard uses dscl, directory services command line, tool to manage most things important. Here is how you switch to Z-Shell:

sudo dscl /Local/Default -create /Users/ngift UserShell /bin/zsh

chromatic

AddThis Social Bookmark Button

Memory problems can be difficult to find and fix. I’m a huge fan of Valgrind, but it only works at the C level. The Parrot virtual machine allocates memory with malloc and releases it with free in a few places, and Valgrind is indispensable for making sure that those match.

Unfortunately for Valgrind, Parrot provides garbage collection, and two of its fundamental data structures rely on the correctness of the garbage collector. Some of the weirdest, and most difficult bugs to solve within Parrot are bugs in our implementation of garbage collection, usually where active objects get collected too soon.

Memory problems are often very unportable. Not only can one program demonstrate a problem where hundreds of other programs run without problems, but one operating system differs from another. Perhaps 64-bit platforms work just fine, but 32-bit platforms have a nasty segfault. Maybe the particulars of how you compiled the program may change memory layout sufficiently to avoid the problem.

Debugging GC-related problems reported on that one platform you don’t have access to is time-consuming and difficult. I discovered another way recently. Now reproducing GC problems in Parrot is possible across platforms, making them much easier to diagnose–and once you can diagnose a problem, you’ve done most of the work to fix them.

chromatic

AddThis Social Bookmark Button

One of the hazards of working with multiple computers is keeping data synchronized between them. I know I should keep Joey’s advice about Keeping Your Life in Subversion, but configuration files aren’t they only offenders.

For example, my personal web site is completely static. I generally update only a single YAML file when I need to make a change, then run a short script to rebuild the affected pages and update them on my server. scp is great for transferring files once in a while, but there’s a better option for frequent updates: rsync.

I’m also slowly migrating users off of a machine being decommissioned to a new machine, and there’s an hourly cron job which uses rsync to copy all of their files between the machines. Because rsync transfers only the differences between the files, it’s efficient on network bandwidth (even if it still must perform a lot of file IO to traverse their directory trees). It’s a program I could have written myself, very badly, but I don’t have to, thanks to the Samba hackers. Best yet, I’m not even sure all of the places I have it running as part of scripts or projects; it just does its job and stays out of the way (at least once you skim the man page for the correct option… my one gripe is that I never use it manually often enough to remember exactly every flag I need in certain situations.)

Thanks to everyone who’s contributed to the project for making this useful tool.

Noah Gift

AddThis Social Bookmark Button

I just came across the fact that Rsync Version 3 is available for testing. I probably use rsync more than any other unix utility, and so I am very excited about some of the new features which include, to name a few:

  • –xattrs: supports OS X xattrs (which includes their resource fork data)
  • –acls: Included support for OS X ACLS too.
  • A new incremental-recursion algorithm
  • I would also be curious to know the clever ways other people are using rsync. I have used it to do everything from synchronize directories to act as a software distribution system. It is also important to note that the license for Rsync is now GPLv3. The Samba team has made some very public statements about their support for GPLv3. This obviously limits the usage of rsync in proprietary software.

    Doug Hellmann

    AddThis Social Bookmark Button

    The commands module contains utility functions for working with shell command output under Unix.

    Noah Gift

    AddThis Social Bookmark Button

    The nice folks at Apple have given us a workaround to get IPython tab completion to work on Leopard. I post the exact details here if you are curious.

    Basically you manually import readline…

    ln [1]: import readline
    In [4]: readline.parse_and_bind (”bind ^I rl_complete”)

    chromatic

    AddThis Social Bookmark Button

    Ian Bicking discusses Mozilla Prism in Prism:

    Here’s a general rule I have: I don’t accept anything made by people who hate the web. If you hate the web and you want to improve the web, I don’t want anything to do with you… To me Silverlight and AIR reek of a distaste for the web.

    While I think that HTTP and REST are the most important parts of web applications, not the web browser (and certainly not HTML and JavaScript), credible (that is, both free-as-in-freedom and not web hating) alternatives to AIR, Silverlight, and Flash are very welcome.

    Noah Gift

    AddThis Social Bookmark Button

    Anyone else just a copy of Leopard in the mail for Fed Ex? The delivery guy mentioned quite a few people were getting this same package. I have been running several Developer Versions of Leopard for about a year now, and I am excited to finally get the production release. I am also excited I can finally talk about what I think is cool, as the NDA is up.

    Since I have been using Leopard for over a year, these are the things I could never live without again:

    1. Tabbed Terminal Rocks

    I am glad OS X finally fixed this, although this pretty much kills iTerm

    2. Spaces is absolutely brilliant.

    I use 8 spaces consisting of 2 rows of 4. I did a lot of experimenting and found this suites me best, although this is probably more than most people may want. I also assigned specific applications to specific Space windows…which makes it very handy.

    3. Python is finally fixed.

    Leopard ships with the bleeding edge, or newest, fixed version of Python 2.5.1, which is cool.

    4. Python is a first class option for Cocoa and OS X Development.

    I am very happy that Python can write both command line tools and Cocoa Applications using all of the libraries available to Objective C.

    5. Many more standard Unix Tools are available like built in SVN support, and even Ruby on Rails.

    This is very nice, and I hope OS X continues to add to the growing repository of command line tools it supports out of the box without resorting to using 3rd party package management.

    6. Development Tools have a big upgrade:

    There are some really cool features like built in Python and Ruby templates in XCode.

    7. Mail is fixed

    There are a bunch of fixes to Mail that are great improvements.

    8. The Finder is hugely improved

    I love the whole 3D finder deal. I find it way better.

    9. Downloads go to Downloads directory.

    Moving all default downloads to a download directory was a smart move, and keeps the desktop much cleaner. Good move on Apple’s part.

    10. AutoFS is finally fixed…..

    Enough said. Thanks Apple.

    That is what is cool on my end…what do you like so far, as you violently rip open your fedex delivered copy of Leopard……

    Chris Tyler

    AddThis Social Bookmark Button

    It’s day 1 of the Free Software and Open Source Symposium (FSOSS 2007) — 32 talks and 10 workshops on Open Source and related topics over two days. We’re pumped! The FSOSS web site at http://fsoss.senecac.on.ca/ will let you in on some of the excitement, with links to videos of the talks (more formats coming), Flickr images, and a blog planet.

    (FSOSS is hosted by Seneca College, where I teach).

    Matthew Russell

    AddThis Social Bookmark Button

    After a lot of article writing over the past few years, I’ve managed to put together a slightly longer piece in the form an O’Reilly Short Cut: Get Up and Running with Dojo. As it turns out, this Short Cut is the forerunner to my upcoming O’Reilly book that’s targeted for early next year.

    In a nutshell, the Short Cut is 50 pages and was written to do exactly what the title implies. Since I first become involved with Dojo about a year ago, a common theme I’ve noticed (myself included) is that developers tend to have a little bit of trouble just picking it up and running with it. The entire premise of this Short Cut was to lower that barrier to entry as effectively as it could be in a couple of sittings. The Short Cut was written against the latest 0.9 release of Dojo and should be fully compatible with the soon to be released 1.0 version (If it’s not, then we’ll update it and make it so.)

    The Short Cut is rich with code examples on the raw fundamentals of building object-oriented widgets and is written with the “average” web developer in mind. While the upcoming book will be the full monty, this Short Cut should serve you well, give you a jump start on your Dojo efforts, and be a valuable hands-on resource that will save you a lot of time.

    Noah Gift

    AddThis Social Bookmark Button

    On Nov. 8th, PyAtl, will be having a GUI showdown in which we have a series of 10 minute lightening talks on all of the available GUI toolkits we can muster. I know we are missing three big ones, wxPython, Jython, and IronPython.

    If you live, or will be traveling to, the Atlanta, GA area, then please contact me about presenting. O’Reilly has graciously given us a prize to be awarded to the best presentation, a copy of the book, Making Things Talk. As a side benefit, you will also be able to meet some of the people who work on EVE Online, as they just opened up an office in Atlanta, GA.

    In related news, the plans for an Atlanta Web Framework Shootout continue. We have gotten positive feedback about corporate sponsorship, so we can proceed with tentative planning to hold the event in Atlanta, around Summer ‘08. If you are interested in helping to organize the event, please contact me, and I will put you on the organizing list.

    chromatic

    AddThis Social Bookmark Button

    Wikipedia estimates that Facebook has 47 million active users, as of this month. If, as reported widely, its founders believe it’s worth $15 billion, each active user account is worth around $319.15. That’s old valuation math, though–bog-standard cost of acquisition. Facebook is something new. It’s a platform for hosting applications to take advantage of 47 million users who like to poke each other electronically.

    As far as I can tell, the second best reason to use Facebook is the Facebook Zombie Application, which lets you bite 20 of your friends every day to turn them into zombies too. (The best reason, according to my contacts in institutions of higher learning, is to watch the friend list of your next potential significant other to see if your rival gets more attention than you do.)

    If every active Facebook account signed up for the Zombie app, the value of the site becomes approximately $15.98 per daily zombie bite. This introduces new funding models for publicly traded platform-only companies in a new economy; perhaps class A shares could eschew zombie bites in favor of voting privileges, class B shares could transition from zombie bites to voting privileges over a vesting period, and class C shares could get additional zombie bites.

    I wonder if they’ll have to extend EBITDA to include decapitation, though….

    AddThis Social Bookmark Button

    Bom dia!

    It certainly has been a while; in fact, the last time found me in Colorado, toughing out the ridiculously beyond-cold weather of the Rockies, but managing to have a great time, and laugh about it, nonetheless. Now, my better half and I are in her hometown of Uberlandia, Minas Gerais, Brazil. I’ll stop myself from turning this into a piece on all the goodness one can experience in a Brazilian minute, but let me just say this: You owe it to your taste buds to indulge in the ambrosial bliss that açaí is. Be liberal and have two bowls. It’s Dessert 2.0. I hope they serve it in the sweet by-and-by.

    Okay, so on to the topic at hand - Windows Vista’s BitLocker, which encrypts all data on the system volume. At a glance, this might not seem like the logical place to discuss matters Vista-centric, but what follows is applicable to any instance where cryptography is required. As much as it is about BitLocker, it’s about much more. First, before continuing, you might want to take a look at the original draft of an article I wrote, entitled, “On Shifting ‘Windows’ and ‘Security’ from Less Antonymous to More Synonymous.” An adaptation, “BitLocker and the Complexities of Trust,” appears in the October 2007 issue of Microsoft TechNet Magazine.

    Phil Zimmermann was kind of enough to provide some commentary for the article, of which I assume you’ve read at this point. Perhaps the most resounding proverb is, “Design as if making a mistake will cost someone’s life.” This brings me to my questions for you guys and gals. What do you expect out of cryptography? Are there any general goals you think it should achieve? What is “good cryptography” to you? How do you feel about open-source versus closed-source, in regards to cryptographic implementations? Are there any examples, that stand out to you, of where cryptography is being done the right way?

    What I’ve come to find, over and over again, is a perpetual state of failure within cryptographic implementation; that is, when cryptography fails in practice, it’s almost never because of the cryptography itself, but, rather, its implementation. I attribute much of this to the fact that most developers responsible for implementing cryptography aren’t, well, cryptographers. I don’t expect them to be, either. However, many of these developers haven’t the knowledge to properly define the right threat model, let alone identify which cryptographic primitives they need in order to address that threat model. Mistakes ensue. To many of you, I’m sure this isn’t news.

    I’m proactively working on ways to educate developers so they can avoid the subtle mistakes that leave huge marks. There’s a long road ahead, but the dividends are grand. Besides, cryptography is usually the strongest link in any security system. Why all the lax implementations? Shouldn’t we expect the same strictness in implementation that’s put into design?

    Cryptography has, arguably, the best track record out of all the other aspects of security; it’s time to do a better job at reflecting this in practice. Something’s wrong if cryptography can’t reach its fruition in practice. Developers are in dire need of something that cryptographers have, so we need to bridge what is still an uncomfortably large gap between the two.

    With our systems like loose slacks, we have a tight belt, yet we can’t seem to put it on right.

    I’m all ears. Well, eyes. I’m all eyes.

    Andy Oram

    AddThis Social Bookmark Button

    A few months ago I summarized the state of municipal networks, particularly wireless, and pointed out that the motivations for creating them were still strong despite some poor choices in a few major cities that made a lot of press. My blog was filed from a conference run by MuniWireless, a company focused on the business models and strategies for municipal wireless networks. They’ve just released a report reasserting the viability of these networks and showing steady growth year to year. I haven’t read the report (which is for sale), but their press release points to growth in the 30% - 50% range each year, for the past several years and projected on into the future. The networks are also gaining in bandwidth to meet demand: more fiber and WiMAX is seen.
    Noah Gift

    AddThis Social Bookmark Button

    A while back, Jeremy and I asked about topics people would like to see covered in the book we are writing about Python for Systems Administration. I would like to take this one step further as ask if there are any essential open source libraries we should cover in our book. An example of this would be the unbelievably useful IPy Module, which my co-worker Doug introduced me to a while back. Since then, I have found the module indispensable.

    Also, if you have done something really cool with Python and Systems Administration, send me an email, and I will see if I can give it some coverage in the book. Even if you plan on doing something cool, then make a google code project and send me a link.

    Doug Hellmann

    AddThis Social Bookmark Button

    The itertools module includes a set of functions for working with iterable (sequence-like) data sets.

    Noah Gift

    AddThis Social Bookmark Button

    (Names, companies, and identities have been changed to protect the innocent.)

    I recently got sucked in the dark, black vortex of linkedin, and it got me thinking about my life. Linkedin is a very interesting social networking website because, quite literally, every person I have worked with in the last 10 years of my professional life is on it.

    It is quite a stroll down memory lane, as I add one person, then remember, wow, I forgot about that person, hmm, I wonder what they are up to, lets add them too…. All in all, it is fun experience that is almost like a high school reunion, but for an adult professional life.

    One of the items that caught my eye recently was, a title a, link of a link, had, roughly:

    Catalyst Team Organizer -
    Create innovation at Joe Blow Company.
    Encourage interaction between departments.
    Demonstrate innovation case studies to Executive Team for approval.

    I would suggest that by definition, Corporate Mandated Innovation, defines that a Corporation will never be innovative, and is currently not innovative. This reminds me of a scene straight out of Catch-22. Here is the famous quote from the book:

    There was only one catch and that was Catch-22, which specified that a concern for one’s safety in the face of dangers that were real and immediate was the process of a rational mind. Orr was crazy and could be grounded. All he had to do was ask; and as soon as he did, he would no longer be crazy and would have to fly more missions. Orr would be crazy to fly more missions and sane if he didn’t, but if he was sane he had to fly them. If he flew them he was crazy and didn’t have to; but if he didn’t want to he was sane and had to. Yossarian was moved very deeply by the absolute simplicity of this clause of Catch-22 and let out a respectful whistle.
    “That’s some catch, that Catch-22,” [Yossarian] observed.
    “It’s the best there is,” Doc Daneeka agreed.

    So here is the Corporate version of Catch-22. If you are innovative, no one needs to tell you to be innovative, you just are. If you are not innovative, you cannot say you are working to be innovative, because by definition, the very act of deciding to be innovative is not innovative. Ahh, this is also some Catch-22, maybe not the best there is, but close….

    Noah Gift

    AddThis Social Bookmark Button

    According to my RSS reader the iPhone SDK will actually be released in Feb. 2008. This is one of my complaints in the article, “Eight things I hate about Apple”.

    This is so shocking that I wonder what is next, open source/cross-platform Cocoa?

    chromatic

    AddThis Social Bookmark Button

    Will Coleda, Parrot project manager, has just announced the release of Parrot 0.4.17. Parrot’s seen a lot of progress in the past month, with several features improved and a few reclaimed. In particular, the design documentations for several important subsystems have left draft status and are awaiting implementation.

    We’ll release Parrot 0.5.0 on 20 November 2007, with a full implementation of Parrot’s object system. (It narrowly missed this release.) This should also give us much better speed, as well as the ability to make much further progress on implementing advanced languages including Perl 6 and Cardinal (Ruby on Parrot). I’m also preparing to check GC-debugging code that should let us track down memory errors very quickly and effectively.)

    Next month’s bug day/new contributor day is 17 November 2007, so if you’re curious about the project and want to get involved, feel free to join #parrot on irc.perl.org between now and then. There’s plenty of work to do even if you don’t know Perl or C.

    Andy Oram

    AddThis Social Bookmark Button

    I’ve just posted a story called Validators that speculates on these topics and the meaning of democracy in general, along with trends in privatization, broadband penetration, etc.
    Nitesh Dhanjani

    AddThis Social Bookmark Button

    dhanjani-hacklu2007-1.jpg

    dhanjani-hacklu2007-2.jpg
    I’ll be speaking at the hack.lu 2007 security conference in Luxembourg on October 20, 2007. My talk is titled Breaking and Securing Web Applications. The conference agenda is here.

    Doug Hellmann

    AddThis Social Bookmark Button

    The shlex module can be used to create mini-languages using simple syntaxes like the Unix shell. It is also handy for parsing quoted strings.

    Andy Oram

    AddThis Social Bookmark Button

    MVC frameworks such as Rails are great for new projects, but they’re hard to integrate with existing databases. Their design reflects more interest in the V than the M. If you have existing data in a relational database that you want to expose to a wider audience, you’re left with the choice of:

    • Using your MVC framework to create a new schema (which is designed for simple CRUD access, and probably less well-suited to your data than your hand-crafted schema) and laboriously load the old data, or
    • Write a tangled gateway script to translate between the framework’s schema and your schema, perhaps through a batch job (which would kind of ruin the vision of consistent, current data).

    I heard this perspective from a veteran Perl hacker in the finance industry at today’s Ubuntu Massachusetts InstallFest. It was a nice, low-key event, by the way, attracting several college students who were new to Linux when I was there, along with a couple teenagers. While veterans played with Beryl-driven graphics or tried at an OLPC system, my colleague laid out the general framework problem and described his difficulty adding a modern web interface for naive users to a useful little scheduling application he developed some time ago.

    Given that web mash-ups and visualizations of existing data are of growing interest, and that there’s a movement for more access to public and government data, we need to learn ways not just to develop green-field services with new data, but to reflect the richness of existing relational data.

    chromatic

    AddThis Social Bookmark Button

    Adrian Howard asked on PerlMonks is there any way to access the contents of a block eval?. After catching an exception in Perl, can you see the source code that threw the exception, without using a source filter?

    I wrote many of my parts of Perl Hacks by trying to do impossible things that no one had ever done before. (I don’t know that no one had ever done them, but I’d never heard of them before, which was close enough.) Because everyone thought it was impossible, I decided to try.

    Nitesh Dhanjani

    AddThis Social Bookmark Button

    UPDATE:Yahoo! just let me know that these issues have been fixed.

    Many organizations offer Mobile and WAP enabled flavors of their web applications. These applications may appear to have restricted functionality, but a security vulnerability in these applications can allow malicious users to launch attacks whose implications may propagate to the main applications. For example, a persistent XSS issue that may be present in the mobile version is likely to show up in the full-fledged version of the application (Cross-Application-XSS).

    Businesses seem to derive a false sense of security from the fact that these “mobile” web-sites execute lower amount of transactions than the full-fledged version: it is thus incorrectly assumed that the security risk posed by the mobile version is lower. This is an incorrect assumption because vulnerabilities present in the mobile version of the application can easily propagate to the main application. Consequently, these applications are not held up to reasonable security standards causing the business and it’s customers’ data to be at risk.

    This seems to be the case with Yahoo! Their “mobile” version is available at http://us.m.yahoo.com/. The Yahoo IM service and the Calendar service exposed at this location are vulnerable to XSRF (Cross Site Request Forgery).

    chromatic

    AddThis Social Bookmark Button

    When I started using Unix seriously in 1998, there weren’t a lot of options for getting on the web. I’d happily used Opera on Windows at home, after Netscape’s rather disappointing version 4, but Netscape Navigator (and not the whole suite) was clearly the best option when I switched to GNU/Linux full-time at home later that year.

    I followed the Mozilla project with interest and finally switched away from NN4 to one of the Mozilla milestones around 0.9.1. This was an improvement, and not only because Mozilla tended to be higher quality but because it supported more sites more effectively.

    Firefox didn’t impress me when it first arrived. Removing useful features altogether still strikes me as deeply silly. I remember thinking that Firefox’s vaunted slimness and lower footprint would go away when I had to install a dozen extensions to get back the features I used every day.

    I haven’t thought that for years. I switched to Firefox around its 1.0 release and consider it a fine piece of software. Sure, there are problems, but I remember using Netscape 2 betas. Web browsers have come a long way in reliability and utility since then.

    Firefox may be my most heavily used application, if you don’t count X.org or the command line. It’s served me well, and I’ve recommended it highly to countless others. Thank you to all of the contributors to Firefox and Mozilla’s projects. Even ten years ago, I had no idea how valuable this work would be.

    Doug Hellmann

    AddThis Social Bookmark Button

    As usual, I’m a little late to the party and Jesse beat me to the punch. If you haven’t already, head on over to LinkedIn and join the new Python community group set up by Danny Adair.
    chromatic

    AddThis Social Bookmark Button

    Thomas Klausner has just published the final report on YAPC::Europe 2007, with plenty of statistics and details. Note that this was the largest Perl conference in Europe so far, and that it generated tens of thousands of pounds in profit.

    If you’re thinking of organizing a conference, browsing the details there will help. In particular, the timeline of planning events is a good indicator of what any community-organized conference will face. I’m sure YAPC::EU 2008 will be even better thanks to all of the work the Vienna team has done.

    Doug Hellmann

    AddThis Social Bookmark Button

    The difflib module contains several classes for comparing sequences, especially of lines of text from files, and manipulating the results.

    Curtis Poe

    AddThis Social Bookmark Button

    How many open source relational databases can you name? My friend Gabrielle recently sent me the links to two of them. However, if you’re like most technical people, you probably don’t know any — just as I didn’t until recently. I can already imagine many of you saying “bulls**t”, what about MySQL and PostgreSQL?” (to name just two), but those are just databases, not relational databases. Noted (and controversial) database experts Chris Date and Hugh Darwen, building on the work of the founder of relational theory, Edgar F. Codd, have tried to educate people about the actual relational model but with little success. It’s a strange world of relations, relvars, attributes and other things which sound familiar, but when you look closely, they’re not.

    chromatic

    AddThis Social Bookmark Button

    Michael Meeks hacks on OpenOffice.org (and other code) for Novell. While very few people question Sun’s generosity in purchasing Star Office and subsequently opening the code, there have been persistent questions regarding the community management of the project. Michael’s work log for 02 October 2007 highlights what appears to be lopsided behavior from Sun. In particular:

    If OpenOffice was blessed (like other more sensibly structured projects) with a large, diverse and healthy developer-base, then perhaps we could expect to go around rejecting big chunks of code, offending developers and driving away potential contributors. To do this solely in order for Sun to retain total ownership of the code-base (and even loosely coupled components) - seems rather a betrayal of it’s self-appointed stewardship role wrt. OO.o code ownership (under the JCA).

    Ultimately, it seems to me the current setup is not a winning, open approach, but a dangerous situation that hobbles OpenOffice.org, and leaves us in a bind.

    This fits with a lot of semi-public criticisms I’ve heard of the project management over the past few years: onerous change request processes, an insular development process, and tight control from some managers at Sun. It’s not all Sun’s fault, though–someone reminded me that the StarOffice team is a tight-knit group of developers who’ve all been working in the same building on the same code for a decade, so a distributed, community-driven development process is a big change.

    OO.o development has not exactly progressed with rapidity. While loosening the grip of the main contributor over the project is no guarantee that the project will attract more developers, the opinion I’ve heard from contributors from almost everywhere but Sun is that it’s an experiment well-worth trying, lest OO.o manage itself into irrelevance.

    Update: Michael has comments on the related Slashdot story (Sun Refuses LGPL for OpenOffice; Novell forks), mostly refuting a very misleading headline. Also, GNOME co-founder Federico Mena-Quintero argues that the OO.o governance model appears designed to discourage outside contributions, with examples from Ximian and Evolution as well as Mozilla.

    Noah Gift

    AddThis Social Bookmark Button

    I have been meaning for a while to write a post about how mentors have helped me to achieve my goals and dreams, but I have been so busy recently, that I put it off. This week I came across the video of the last lecture by Carnegie Mellon Professor Randy Pausch, who is dying from pancreatic cancer, and I was inspired enough that I figured I should write this post and tie it into my response to the video.

    First, I would highly recommend that everyone and anyone watch this video. It is truly an inspirational and powerful video. One of the things he mentions in the video is, “How to Get People to Help You”. He mentions five points:

    1. You can’t get there alone, and I believe in Karma
    2. Tell the truth
    3. Be earnest
    4. Apologize when you screw up
    5. Focus on others, not yourself

    He also mentions, “Brick walls let us show our dedication”.

    I won’t focus on everything he says in final speech, but I will get straight into how this relates to finding mentors in life. My first great mentor was Dr. Bogen, who I met at Caltech. He took in an interest in me when I was starting to form into a man, and, without a doubt, changed my life forever.

    I remember doubting for quite a while if I was really intelligent or not, and then thinking that here was a guy that was in school until he was 37, a neurosurgeon, and a professor at Caltech, who found me interesting enough to talk with me every Friday from 8PM until 2 or 3 in the morning for a few years. Maybe I was smart? We talked about Philosophy, Math, Psychology, Consciousness, Religion, the Stock Market, Computers, Artificial Intelligence, and Bonsai Gardening, etc.

    These talks and his wisdom allowed me to dream beyond what I thought was possible. He also introduced me to other powerful mentor/guru types. He also spurred a life long interest in the brain and psychology. Even though he passed away a couple of years ago, I still remember his words and advice almost like when Luke Skywalker hears the voice of Obi-Wan Kenobi. “Noah use your brain, don’t turn to the dark side…..”. I am also very glad that I got the chance to tell him that I loved him before he died and that I got to say goodbye when he was in the hospital. It gives me great comfort that he knew that before he died. I still remember that day very clearly, I grabbed his bald head, like I now grab my son’s head now, and let him know how much he meant to me.

    I have met other different types of mentors, as well, in my journey through life so far. Another interesting person who I met at Caltech was Titus Brown. He has been a much different type of a mentor, but I have been asking him questions about computers and programming since 2000. He was the voice that kept gently whispering in my email…”so why don’t you try Python?” I can honestly say that if it wasn’t for Titus, I would never have touched Python or considered it. God knows what language I would be using at this point.

    In March this year, at Pycon, I had dinner with Titus, who I hadn’t physically seen in a while and I met Shannon Behrens. We ate some barbeque and started talking about Vim, LDAP, Python, etc. Before I knew it, Shannon turned into a mentor. His knowledge of Python is so vast, and his attitude is so humble, that he has made a huge impact on my knowledge of Python. As I have mentioned in many previous posts, Shannon is my hero. He is one of those rare people who will quite literally tell you anything he knows, and will not judge you for asking a stupid question, for this, he is my hero.

    I have also met some incredible mentors in the various jobs I have had. What is interesting, is that each mentor has a different method to access their secrets, and different ways of teaching those secrets. In some cases I have even had “unwilling”, or “hostile” mentors. A “hostile” mentor is someone who is scared to share what they know with you because they are insecure. A “hostile” mentor is a bit like someone who has turned to the dark side of the force. They feel that they can only succeed by working really, really hard and not sharing information with people or giving them false information.

    It is still possible to learn from these dark lords, by just seeing through the insecurity and focusing on what you can observe to be truth. Yes, a dark lord can still be a mentor.

    I met a really impressive, good, mentor at Disney named Greg Neagle who taught me many cool OS X tricks. I met another extremely powerful, yet incredibly humble mentor named J.F. Panniset, who is now in charge of engineering at a A52, while I was working at Imageworks. JF was scary smart, in particular, because he can write code, is an expert Video Engineer, knows Film production and Post Production inside and out, is an expert sysadmin, AND is about as approachable and humble as they get. All I can say about A52 is that they lucked out big time getting JF. He is a one in a million catch for a company. I was very upset to have had to leave Imageworks, but my wife and I moved out to Atlanta to start a family.

    When I got to Atlanta, I was lucky enough to take a couple of classes at the Big Nerd Ranch and I become friends with Aaron Hillegass, the owner. He has been a great help and a very kind mentor as well. I am in a book club with him and we are currently reading Information Theory, Inference, and Learning Algorithms.

    So, what does all this mean and why am I bringing it up? There are mentors and gurus behind every bush. It is very easy to tell a powerful mentor. The more powerful the mentor, the more freely they give information, help and guidance. I am now under the belief that there is a direct correlation with a person’s mental power and their ability to mentor. The greater a mentor’s power and wisdom, the greater they can give. After all how much effort does it take for a flood light to light up a dark backyard, compared to flashlight? These great wizards can spare the beams.

    If you want to get better at something, you need to find mentors and find out how to get them to take an interest in you. In some cases it make take quite a while for a good mentor to think your serious. I would refer back to the quote by Randy, “Brick walls let us show our dedication”. If you really want to learn from a good mentor, then if you put in the work they will eventually help you, unless they are a dark lord, but those guys are easy to catch. They say things like, “Old age and treachery will beat youth and skill, every time.”

    The soon to be released “Spotlight on FOSS”, video podcast Pilot episode, features Mark Shuttleworth. (We should have a date announced for release very soon). He gives a tremendously, moving talk that is on par with the Randy Pausch talk. One of the goals that Jeremy and I are trying to achieve by doing this podcast series, is to take these mentors of the Free and Open Source Software world and to expose their thoughts, ideas and passions to a larger audience. I hope people take the time to watch our first show, and I am very excited that it turned out to be this powerful.

    In closing, I am also on the lookout for a new mentor to learn new things. I am particularly interested in learning more about artificial intelligence in the next few years. If you are a guru, and are interested in taking an interest in me, I would love to hear from you. I am currently looking for another mentor like Dr. Bogen, although that may never happen again, as he was truly one of a kind, or one in a billion. Also, if you have Guru/Mentor stories, I would love to hear about them. Finally, all of the mentors mentioned here are mine, all mine, so get your hands off them!

    chromatic

    AddThis Social Bookmark Button

    I first used Subversion about five years ago while writing my second book. It was an early milestone, but it was easier to compile, install, and configure than CVS was, and it was much more powerful than RCS. Since then, I’ve used Subversion to host every book I’ve written or edited. (See The Making of BSD Hacks.)

    Though distributed version control systems are gaining in popularity (and though I use SVK atop Subversion), Subversion is still tre