Kyle's blog

My girlfriend, among others, knows how important building a community of excellence in the black community. I've talked with her about it on many occasions. Today I took the first step toward making it possible. I started a Black Techies group on meetup.com to bring black coders and technologists together.

Growing up in "the 'hood" taught me about the importance of encouragement and nurturing in the development of an acute mind. People are like plants, if you put them in a pot that is too small, their growth is constrained. This, I've heard, is the secret of growing a bonsai tree. Constant restriction at the hands of an artful master. However I doubt anyone would argue that the 'hood is an artful master.

In many ways, the inner city presents the same challenges, lack of financial, educational, and encouraging resources. Mentors for some of the really cool and interesting things that kids want to do is limited, and this is something I hope to change. I want kids to know there is a place where they can be challenged to learn and grow. For me personally, that challenge was computer science. For other kids it may be math, or music, or history, but because mine was computer science, I would like to make a difference to kids who are interested in it.

The Black Techies meetup group is a first step. Although it does not meet directly wit kids as of right now. It does provide an avenue to meet other black professionals in technology. I know I can't fulfill the mission alone, and I'm hoping to bring others on board to make it possible. I guess the success of the vision will be judged on its execution, and I look forward to the challenge.

I strongly believe that a better educated black community will make America a better place to be. I hope that my actions are taking us all in that direction. If you're in NYC, I'd love to meet you at the meetup.

-Kyle

So after Tom Panzerella (@tpanzerella) and Kyle Burton (@kyleburton) posted their reading lists, I figured I would post mine. To give a brief bio, I have been coding since I was a kid, long ago that it was either Turtle on an Apple IIe or Basic on a vTech Typing tutor. I’ve always loved to hack, but didn’t realize how much I lived to hack until I was at my last job at Family Planning Council in Philadelphia and would automate solutions to problems on my own time.

With regard to my list, I think I should explain a little of my background and how I learn. I believe that the best way to become a master is to sit silently amongst the masters. By listening and observing I how learn how they think. I'll never forget the summer I was in basketball camp and Timmy Legler, the reigning NBA 3-point champion came to speak. He talked about the preparation to be an NBA player. Then he talked about Michael Jordan. For the non-NBA fans, summer is the height of the NBA offseason, when your average player is loafing with a primary goal of being fit enough not to get laughed out of training camp. Legler said he just got a call that Mike was back in the gym. That meant offseason was over, unless you wanted Mike to embarrass you—when the season started in 4 months! To me the difference between average and well above average is in the extra time and effort.

My book list is decidedly is still quite brief as compared to those of my more experienced counterparts. Without further delay, I present it.

I’ll start off with the book that changed my life, Zen and the Art of Motorcycle Maintenance. For the first twenty-odd years I have been on this earth, I listened to other people far more than my own voice. None of these people were out to hurt me, they were family, friends, parents, professors, and others I look up to and admire. However, by not cultivating my own voice, I stood in peril of a life half-lived, where I meet the expectations of others., but not myself. Zen changed my outlook. I had always wanted a motorcycle, after reading this book, I got my first motorcycle within 2 weeks (this was after having a license for 2 years).

Zen is about philosophy of quality, and trying to describe the essence of what it is to be human. Seeking the essence of philosophy, the protagonist drives himself mad, or sane depending on your viewpoint. I took it as coming into the sanity that exploring, dissecting and analyzing are the tools of the mind, but the essence of life is doing. Zen got me up, off the couch and out doing, not thinking.

Following the Zen theme, my second book is about as far from programming as you can get. It is The Art of War by Sun Tzu. This book talks about the power of every action, of how to motivate oneself and others in difficult situations, and how to make do with little. Be like water traveling downhill: impossible to stop.

The third part of my mentality collection is the Hagakure, or the way of the Samurai. There's some intense philosophy in the book, most of it centered around the concept of death, and how to live properly.Personally realizing that reflecting on movements that I make, and considering how I will feel about them on my deathbed makes me bold and fearless. Because the time of death is uncertain, if we can make all movements as if we are looking back upon our life, decisions of boldness become easier. Sometimes I am frustrated, it helps to remember that the problems I have are the problems I asked for. I want to follow my dreams, so what comes to me is a direct result of that. I am thankful for them. Reflecting backwards from the future has helped me achieve this mentality.

The Hagakure is full of gems such as, "Throughout your life advance daily, becoming more skillful than yesterday, more skillful than today. This is never ending." There is also a quote from Ghost Dog, a Jim Jarmush film that purports to be from the Hagakure.

Even if one's head were to be suddenly cut off, he should be able to do one more action with certainty. The last moments of Nitta Yoshisada are proof of this. Had his spirit been weak, he would have fallen the moment his head was severed. Recently, there is the example of Ono Doken. These actions occurred because of simple determination. With martial valor, if one becomes like a revengeful ghost and shows great determination, though his head is cut off, he should not die.

The fourth book on my list is Train Tough the Army Way. The author, Mark Bender was a Lt. Col for the US Army. Though the book is sport focused, it applies to everyday life. The first is "Want it Bad." Want it so bad, that whenever the question is asked "How bad do you want it?", and answer "Read bad" without thinking. Awesome.

 We haven't yet hit the programming books, and that is because I haven't read that many of them. The lack of reading came from an assumption that my professors would prepare me for the working world. WRONG! So I must prepare myself. Therefore I will outwork you.

K&R. Why K&R? Well because it was the first programming text that made me feel smart. Most of the books we used in school absolutely sucked. They talked down to me, they didn't give me the information I needed. It was all bottom-up information rather than top-down. I'm a top down kind of guy. This is the book by the C guy. Bottom up, top down, and sideways, this book was so easy for me to read and understand. I started by working all of the problems. Wanting to keep track of my changes made me learn git. Knowing C got me confident enough to buy an Arduino. Coding the Arduino made my C better, and made me hate not having version control. (Although I have learned that apparently you can use an external IDE, but still compile with the Arduino, I'll post more on that later.)

The Mythical Man-Month. This book was amazing to read because it is about the human aspects of code. If you remember from above, I am good at sports, I make my team better at sports mostly because I practice the mind game that most players don't practice. The Mythical Man-Month was like Train Tough but for coders. It's about the team, organizing the team. The Mythical Man-Month says forget that, "I need 9 women to make a baby in 1 month" crap because it doesn't work.

Currently, I'm reading The Design of Everyday Things by Donald Norman. This book us unabashedly critical of poor design, like the door that looks like you should push, but you really must pull.I think the engineering side of software can lead to designing for constraints that do not factor in human behavior.Human behavior is a terribly tough constraint to place on any design. This book gives a good example of pitfalls, and also some strategies to avoid the pitfalls.

I'll continue to expand the list, but I wanted to get out the few books that came to mind first. Feel free to review, criticize, and suggest new books. Thanks!

I’ve been working on a new “app” that I hope can change the world. It’s starting to make me realize why PHP became so cool that it then became uncool. Or maybe the coolness of PHP changed with my level of exposure to programming concepts. Bear with me...

PHP was the ultimate language for making websites in about 2003. Since then Python and Ruby have become very popular for building sites quickly. What PHP had to its advantage is a huge user-base with many beginning programmers. Normally that would not be an advantage, but in the case where you are trying to put something together quickly, it can be. There was tons of help from “developers” who had enough extra experience to explain a topic, but not so much experience that receiving an answer felt like Moses talking to the burning bush. 

Now that I am working with Rails and Django, it makes me appreciate the level of support that was there when I first learned PHP. Django and Rails seem to be used by much more experienced programmers. Probably because they are better languages. Either that, or the N00bs just keep quiet so it appears that there are not many beginners. 

PHP has an “ace in the hole” for inexperienced programmers. It has magical, do-everything functions. They lend themselves greatly to thinking in a linear way, probably in much the way that any beginning programmer would think. Forget classes and encapsulation, PHP for the beginner resembles BASIC. It’s simple, straightforward, and requires no thought. I don’t think that makes PHP a good language though, but I think it makes it a suitable language to learn on—as long as you move on quickly to something that makes you think more.

After always having a terrible time installing MySQL on OS X, today I have given up. I would concede that I have always installed from the Sun/Oracle binary distributions, and always had problems getting everything initialized and situated. 

MySQL has a Preference Pane and some other automated tools that should have made the installation simple. But it wasn't. The Preference Pane failed to start MySQL, and I decided I wasn't going to go down the bug-chasing road. Cryptic error message after cryptic error message wore me out, and that the error messages do not show up on the Mac's Console Log was probably the last straw. 

So, I found some instructions, and removed MySQL. I went to MacPorts and downloaded PostgreSQL and the Python bindings for it. I'll check back in a few days and let you know how it's working. 

UPDATE: 2011-07-14

For months, I haven't been using mysql, preferring to use sqlite when developing with (my new hobby) Django. I finally sorted out my problems, and they come down to the macports install instructions.

###########################################################
# A startup item has been generated that will aid in
# starting mysql5-server with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo port load mysql5-server
###########################################################
---> Installing mysql5-server @5.1.57_0
******************************************************
* In order to setup the database, you might want to run
* sudo -u _mysql mysql_install_db5
* if this is a new install
******************************************************
---> Activating mysql5-server @5.1.57_0
---> Cleaning mysql5-server

The proper way to get this up and running seems to be to use the following rather than the above:
$ sudo -u mysql mysql_install_db5
Admittedly, I haven't added the launcher, mostly because this is on a laptop. If adding the launcher doesn't work, I may be back with a second update full of correcting past wrongs.