Another Ada Lovelace Day Post – CS Role Model
I posted earlier for Ada Lovelace Day about LinuxChix.org as a great resource for women in technology, and now I'm getting into the groove and want to add another post, this time about my first female role model in computer science.
Dr. Neelima Shrikhande is a professor of computer science at Central Michigan University. At the time I was working on my MS, she was the only female professor in the department. I never had an indication that she views herself as a role model for the few women studying computer science there, but she is definitely a role model.
She's a super intelligent and focused woman for whom I have a lot of respect. According to the cmich.edu website, she "is an authority on computer vision and artificial intelligence. She studies how to make computers capable of seeing things and understanding pictures."
I had her for only one class, my compiler class, but she really opened up the world of computer science for me with that class. It was a hard and life-consuming class, but I loved it more than any other class and even used what I learned for my thesis. I now have a life-long fascination with compilers and virtual machines because of that class and I still have my dragon book. At the time, I never thought about this, but I imagine that class was at least as hard to teach as it was to take, but she held up to the challenge seamlessly.
Thanks, Dr. Shrikhande, for being such a sharp, successful role model in computer science.
Shameless plug: the CMU CS department is a great place for an education!
Celebrating Ada Lovelace Day and Women in Technology
March 24th has been designated as Ada Lovelace Day and is an opportunity to celebrate the achievements of women in science and technology. FindingAda.com is encouraging women to blog about this today.
I've not paid much attention to her aside from being aware of her and knowing she's the namesake of the Ada programming language, but I've benefited tremendously from her contributions and the contributions of other women in technology for most of my life.
I read up on Ada at Wikipedia and learned this bit of trivia today, "she was the only legitimate child of the poet Lord Byron and Anne Isabella Milbanke."
I won't spend a lot of time dwelling on her interesting life, because Wikipedia does that far better than I could, but I'll take this opportunity to make mention of some current-day pioneering women in technology, the women who are advocating and teaching other women about Linux, computers, and other free software via LinuxChix.
LinuxChix is a community for women who like Linux and for anyone who wants to support women in computing. We are an international group of Free Software users and developers, founded in 1999 with the aim of "supporting women in Linux." Founder Deb Richardson described it as an alternative to the "locker room atmosphere" found in some online technical forums and gave LinuxChix two core rules: "be polite" and "be helpful." LinuxChix is now many things to many people, but it remains primarily a group for supporting women in computing, specifically in Open Source/Free Software/Software Libre computing.
If you're a woman in need of help or able to offer some help to others, check out LinuxChix!
A Loosely Coupled Cloud
"Build loosely coupled systems." That was one nugget of recurring advice given last night by Jorge Noa, CTO of HyperStratus when he spoke at a meet-up titled "Amazon EC2 Cloud Computing and Application Design" held at HackerDojo (see slides here - pdf and I also found the same slide show already online here as an O'Reilly Media Slideshare).
After a review and comparison of various IaaS, PaaS and SaaS services, the talk then focused on details of Amazon's overall cloud offering. Finally he finished out the presentation with a discussion of software developer best practices - the primary reason I attended. More time spent on software development would have been a big plus in my view, but I can understand that he felt the need to get everyone in the room up to speed on Amazon's platform. It was a big crowd.
Cloud Computing Development Best Practices
The ten best practices Jorge espoused were:
- Build cloud apps, not apps in the cloud
- Virtualize the application stack
- Design for failure and nothing fails
- Design for scalability
- Loose coupling lets you maximize plug and play
- Design for dynamism
- Build Security into every component
- Leverage native cloud storage options
- Leverage best cloud Management Tools
- Don't fear cloud constraints
Of those ten, the two points that gave me the most pause for contemplation were to "build loosely coupled systems" and to "build security into every component."
Build Loosely Coupled Systems
"Build loosely coupled systems" brought a flash from the past, triggering a memory of a distributed operating systems class I had in the 1990s. The concept of loosely coupled systems was new for me back then and made a big impression, so I dug out my old textbook (yes, I kept them all!) to refresh my memory. The textbook was "Modern Operating Systems" by Andrew S. Tanenbaum.
Saying Goodbye to Transparencies and Roundies
and goodbye to pitiful SEO, too...
After several years of experimenting with css rounded corners and transparency and the various perplexing cross-browser issues, I've redesigned this website and even moved it over to a new platform. Gone are the strange hoops I needed to jump through to add new stories to this site.
Here's one last glimpse of the original Geek on the Loose:
I've also put a lot of effort into trying to follow good SEO principles on the new site. It may not have been obvious, but the old site was created before I had studied up on SEO and probably violated every major principle. It was a real SEO train-wreck. It will be very interesting to find out if I've learned anything or not.
Parallelism and Abstraction in Java
Here's an interesting parallel programming interview with Intel's Paul Guermonprez covering threads, JSR166y, and Hadoop. I particularly enjoyed the Hadoop discussion at the end.
The discussion focused on efforts to separate Java programming from the nitty gritty details of threads. This separation allows a greater number of developers to successfully program for parallel environment by removing focus on the technical details, and thus reducing the knowledge required to write the code. There's also some coverage of the benefits of the higher level of abstraction of functional programming and how the functional programming style is being incorporated into the Java concurrency model. The text has this:
The future will be functional programming or won't be at all.
Intellectually, I applaud these efforts. Emotionally, I feel some loss.
My first introduction to threads was in a systems programming class, using the C language and Pthreads library. Pthreads blew my mind, or maybe it was lack of quality in the lectures. Either way, determined not to be defeated by Pthreads, I went out and bought a stack of books on Pthreads and threads in general and set out to wrap my mind around threads. It worked, but along the way, I learned that I loved the challenge and so I embraced concurrency and parallelism with much enthusiasm. This knowledge that I've accumulated will always be of great value, but as I move toward programming threads at further and further abstractions, I'll lose that close connection to the internals, and I'm a little saddened by that.


