Wednesday, February 23, 2011

Book Review: Oh, The Humanity! A Gentle Guide to Social Interaction for the Feeble Young Introvert


I am an introvert. And like most other introverts, I sometimes find it hard to survive in a world that seems to cater to the all mighty extrovert. As a result, I'm always on the lookout for good books on how to make things a little easier on myself. Flipping through Jason Roeder's, “Oh, The Humanity!”, I thought it might be useful to read, so I gave it a shot.  You can also see a list of other books I've reviewed on the “Book Reviews” of the site.

Part One: Essential Qualities You Lack

Confidence - Confidence doesn't necessarily mean acting without fear. If you had no fears, you wouldn't need confidence. Confidence, according to Jason, is taking action despite that fear. Jason touches on some tips for improving your confidence. My favorite tip from this section is keeping a pride journal. This is done by jotting down any small accomplishment, or maybe a small compliment someone gave you that day. Then, when you're feeling like you can't do anything right, you have this entire journal you can flip through to get back up and going again. Other tips include: Changing your inner monologue, taming your self consciousness, looking like you matter, and changing your environment.

Humor - Nothing can win people over faster or more easily than humor. This chapter guides you through some of the rules for using humor and, “harnessing your inner Wayans Brother.”

Curiosity - Everyone wants their thoughts and feelings validated just as much as you do. If you want others to be interested in you, then you're going to have to return the favor, because everyone else is just as self-centered as you are. The best way to get people interested in you, is to be genuinely interested in them.

Empathy - If you want to be the kind of person that a friend can go to and open up about private matters, you need to be able to put yourself in the other persons shoes. Some of these empathy rules include, not judging the other person, keeping the focus on them, and facilitating an appropriate environment.

Part Two: Conversation for People Who'd Rather Be Home Fondling Their Record Collections, Kniting Berets for Pets They May or May Not Actually Have, or Just Sitting in a Dark Room, Dreaming of an Even Darker Room

Small Talk - This topic is by far the most interesting for me personally, as I have the most difficulty with this in my own life. Jason does a nice job here explaining how easy it is to find shared interests and experiences that make for comfortable small talk, when using personal and situational observations. He also includes several nice tips on extending these starter topics into the types of conversations you can make friends with.

Difficult People and Topics - This chapter seems silly at first, with tips such as using hunger or restroom urges to excuse yourself from painful conversations. However, politely exiting yourself from controversial conversation or difficult people is definitely a good skill to have. This chapter offers some help with how to navigate through these difficult conversations and people.

Nonverbal Communication - Everyone knows that verbal communication is only part of the equation when it comes to how you express yourself. In fact, your body language can communicate as much, or even more than what you're speaking with your mouth. Following Jason's hints on smiling, eye contact, nodding, posture, and physical contact, should bring you a step closer to a relaxed, friendly and genuine first impression.

Effective Cross-Cultural Communication - Jason makes a great point here that not everyone you meet will come from the same culture or ethnic background as you. This chapter offers some tips on how to use some extra caution when dealing with cross-cultural communication, as well as some common values and customs that vary with ethnic diversity.

Part Three: Making Friends That Last a Lifetime (Or Until Things Just Kind of Drift)

How Do I Know If Someone's My Friend - A friend is someone who puts up with your flaws. A friend encourages you. A friend is honest with you. A friend is someone you can confide in. A friend is fun. A friend will happily drown for you.

Where Will I Find My Friends? - I had never really thought about this question until reading this chapter because up until now, I've always had plenty of opportunities to make friends in school with classes, intramural sports, clubs and other events. Once I graduate however, I will no longer have such easy access to making friends. Jason offers some great tips on how to go out and meet people. My favorite of these tips is joining an adult education class or volunteering. This way, you already know you have at least one common interest to talk about with everyone around you.

Will You Be My Friend? - This isn't my top choice on the topic, but overall, this is nice short, and to the point book, with plenty of tips getting you started with overcoming shyness or introversion. There is plenty of humor throughout the book keeping it fun and easy to get through in one sitting.   

Sunday, February 20, 2011

Lessons in Manliness: My Little Brother

      There's a little writing project going on over at, “The Art of Manliness” blog, where readers are able to submit a blog entry about someone they believe embodies what it means to be a man. Some of the early entries have inspired me to write about someone I'm beginning to look up to more and more, as he continues to grow into this awesome young man, my little brother.
      Nolan, is the second child (after me), with two younger sisters right behind him. He is a big time gym rat, participating in football, wrestling, and soccer through high school, and continuing into college with rugby and judo as he makes his way through the physical therapy program at Creighton University.
      As kids, Nolan was the kind of brother who always wanted to follow me around, hang out with me and my friends, and do whatever else he could, to be just like me. Somewhere along the line though, he started to figure out his own thing, and today, it's me who looks up to him. Here are a few lessons in manliness my younger brother has taught me.

Don't worry about what others think: I love my brother, but that doesn't stop me from pretending I don't know who he is when he embarrasses me on a daily basis. My brother takes longer than my sisters getting ready to go out, and can't walk past a mirror or reflective surface without looking at himself. The thing is, Nolan cares about his physical appearance, and when he cares about something, it doesn't really matter when others tell him it's dumb, or that he looks stupid when he's staring at his reflection in the car window. Don't get me wrong, I really do think he should get help with the whole checking himself out thing. But then I'll watch him bring our little sister to his judo practice because she wanted to try it out. Nolan cares about our sister just as much as he cares about his reflection, and he didn't even have to think twice about it, even when all his buddies were snickering at the sight of him hanging out with his little sister the entire day. Now that is definitely pretty cool.

Speak what's on your mind: Every holiday season, a bunch of long time friends and I get together for our annual Christmas dinner. This past winter, as I was getting dressed for this dinner, Nolan came up to me and basically told me I wasn't going out dressed like that. When he was done giving me a hard time, he took me to his closet and helped me pick something out that was a bit more reasonable to him. When Nolan thinks something is wrong, he's not afraid to speak up. Once he speaks his mind though, he lets it go, he's not really there to judge. The thing that separates him from most criticizing assholes is his ability to easily empathize with almost anyone. He's experienced countless struggles with others (including me) laughing at something he cared about or thought was really cool. So in turn, he understands he shouldn't be judging anyone else when they may seem a little different or odd as well.

No one is perfect, but try your best: After a long first semester away from home at college, my brother decided to come home for Christmas break and party with his friends. I don't usually really care what Nolan and his friends do when they go out, but I can remember his reaction when my dad found a bunch of empty alcohol bottles littered on the family car floor the next morning. I've never seen anyone so scared for his life before. Even though I have plenty of nice things to say about my brother, he is far from perfect and has done some incredibly stupid things in the past. The thing is, he's not afraid to admit it. Instead of trying to hide it or allowing it to linger, he's eager to accept it, learn from it, and move on.

      All these traits are what make up this very confident young man my brother has grown into. I feel very proud when I see him out there not desperate to please anyone other than himself, and the people he loves. His many quirks and screw ups are what makes it easy to feel he's not there to judge any of yours. I hope to one day learn to live with his great understanding that your friends and family don't want you to be perfect, and that your faults are what make you endearing. I think everyone can live a little happier when they can embrace any mistakes, instead of being afraid to make them.

Sunday, February 6, 2011

What is Net Neutrality?

The Issue – Net Neutrality is the term used to describe the issue of whether an Internet Service Provider (ISP) should have the ability to shape or control the data usage on its own network. The internet currently acts as a neutral medium, where people can access or distribute any service through the internet, without having to worry about traffic from other services taking higher priority over its own (with few exceptions). However, major ISPs want to change the way this works. They want the legal ability to implementing techniques such as bandwidth throttling, or even outright blocking certain types of content. For example, they could cut down the max transfer rates on email in an attempt to clear up bandwidth for other types of traffic such as video, or completely block any torrent traffic tying up its network.

The Argument Against Net Neutrality – Internet and Cable Providers argue that the quality of their service will degrade without the ability to shape internet traffic. They currently lack an efficient technique that allows them to accommodate the resent surge in data heavy services such as Hulu or Netflix. ISPs feel they have a right to do whatever is beneficial to their own company. The free market should allow them to act as they want and allow users to vote with their dollars, by either choosing to stick with a provider that interferes with traffic, or move to a competitor that does not.

The Argument for Net Neutrality – Supporters of net neutrality believe that internet service should be treated as a utility, and a provider should not care about the traffic going through its wires. An ISP should not be able to prioritize its traffic, because doing so can lead to the elimination of competition between those content providers who can pay for higher prioritization and those who can't. For example, a small start-up wanting to stream television over the internet would not be able to compete on a Comcast network who is blocking any television streaming service other than its own.

Current Rules – On December 21, 2010 the FCC approved new Net Neutrality rules defining what an ISP can and cannot do. The rules state that all there will be no shaping of legal content over wired infrastructure. The rules are slightly less strict on wireless networks however, as wireless carriers such as Verizon or AT&T are able to transparently interfere with certain content or services as they see fit. This means that as long as wireless carriers are open about what traffic they chose to discriminate against, they can do it.

My Opinion – I look at it this way, would you rather have competition between internet services providers, or individual content providers? Large ISPs have such a strangle hold on the industry that a consumer will usually only have one or two decent options in a give area. This undermines a huge chunk of the anti-Net Neutrality argument. An ISP that can manage it's network by throttling certain types of traffic can just sit there without improving infrastructure when it's users don't really have another option to turn too.
Adding regulations will keep a high quality of competition between content providers. Instead of large established companies being able to pay for high priority traffic, they will have to compete with any small start-up on a level playing field, leaving innovation the only choice to improve and beat out the competition. And when ISPs aren't able to shape traffic to their needs, the only other choice they have is to improve their current infrastructure.
Verizon is currently fighting the rules set by the FFC, however I feel that strict Net Neutrality regulations will prompt innovation and improvements in both the quality of the service and content providers, leading to a win for the average consumer on every front. 

Thursday, February 3, 2011

Resolution Update


It's been about three weeks since I'd shared my resolutions for this year so I thought I'd give a quick update on my progress.

Graduate Project

This is the goal I've probably had the most success with so far. I hope to soon have a review up on Javascript the Good Parts, by Douglas Crockford, as well as Beginning Javascript and CSS Development with jQuery, by Richard York, the two books I read through as preparation for this project. I also want to post a few jQuery tricks I've found most useful so far, along with a screen shot or two of my progress.

Windows Phone 7 App

I would say I'm having medium success with this one so far. I already have a review of .NET Book Zero, by Charles Petzold posted, with another one on Programming Windows Phone 7 by the same Arthur coming soon. The disappointment comes with having jumped into the programming without a full understanding of the code I was writing first. After reading through .NET Book Zero and most of Programming Windows Phone 7, I can already spot several critical flaws in my first app including window navigation, tombstoning, and data passing, bringing me right back to where I started. I will definitely do my part in trying to prevent others from repeating my mistakes by posting the previously mentioned flaws, and how to properly correct them (until I find out that my new fixes are not the most efficient methods either of course).

Guitar Performance

I've had the least luck with this one so far as I can start to see my dreams of becoming a rock star slowly melting away. I've been practicing the most challenging piece I've tried to date, an arrangement Joan Osborne's “One of Us” by Ulli Bogershausen. However I'm beginning to think that I'm not going to be able to impress any strangers with it, and I may need to step up to an even more advanced version, or drop the song all together.

So that's what I've been up to so far this year. Hopefully I can keep the momentum up through another month, and come back with better results next time. Its felt great to get through all of the reading material while getting most of the design docs out of the way, but I'd be lying if I told you I wasn't worried about the lack of code I have down so far. Alright, here's to round two!


Book Review: .NET Book Zero

I read through this book in preparation for my resolution of writing applications for Windows Phone 7 devices. This book is a great starting point for anyone looking to get involved with .NET or Silverlight programming. .NET BOOK ZERO started out as an introduction chapter to .NET, trying to cover some of the key differences between C++ and C#. However, it soon became obvious that this single chapter was trying to cover too much and turned into an entire book of it's own, going over the very fine details of objects and structures, to string manipulation and nullable types.  You can also see a list of other books I've reviewed on the “Book Reviews” of the site.

Chapter 1: Why This Book – The latest version of this book is available for download free of charge at www.charlespetzold.com.

Chapter 2: Why .NET? - This chapter reviews the basic requirements of .NET programming including CIL and CLR. The first important difference between c++ and c# is pointed out right off the bat: no pointers!

Chapter 3: Runtimes and SDKs -You'll need the .NET runtime components and SDK (available here) in order to program and run .NET application. .NET namespace, class structure, and api documentation are available here.

Chapter 4: Edit, Compile, Run, Disassemble – This chapter takes a look at how namespaces are used to organize code, and the syntax used in method calls. The chapter continues to go over where namespaces fit into the compilation process.

Chapter 5: Strings and the Console – This chapter introduces the concept of static vs instance methods while reviewing the strings class.

Chapter 6: Primitive Data Types – C# supports short, int, and long integers just like C++. C# also supports boolean, character, string, floating point, double and decimal value types. Many of these data types can be used with the Math class.

Chapter 7: Operators and Expressions – Primary, unary, multiplicative, shift, relational, equality, logical, conditional, and assignment operators are discussed in this chapter.

Chapter 8: Selection and Iteration – C# supports the same selection, iteration, and flow control statements used in C++, with some restrictions. These restrictions are intended to help you avoid common coding mistakes.

Chapter 9: The Stack and the Heap – One of the most helpful chapters in this book. This chapter covers key differences between structures and classes, including what these differences mean during memory allocation, along with very clear explanations of the stack and heap.

Chapter 10: Arrays – One of the less useful chapters in the book. We go over multiple ways of initializing and filling arrays, including multi-dimensional arrays. If you have any experience with c++ you can completely skip this chapter.

Chapter 11: Methods and Fields - Most of this chapter goes over syntax of defining methods and fields. There are some notes of interest in this chapter as well. This chapter introduces c#'s alternative to using pointers by taking a deeper dive into the differences between classes and structures, and what these differences mean during the parameter passing process in c#.

Chapter 12: Exception Handling – A very short and concise review of structures of exception handling including try(), catch() and throw().

Chapter 13: Classes Structures and Objects – This chapter re-visits classes and structures, while adding some new concepts as well. The bulk of this chapter is spent on how memory is allocated on the stack and heap for different data types, and what this means for efficiency.

Chapter 14: Instance Methods – Any instance method in a class has access to the instance fields of that class. This greatly simplifies code by reducing parameters that need to be passed between functions. Instance methods can also call any other instance method, static method, or static fields of it's class. A static method has access to none of these.

Chapter 15: Constructors – This chapter goes over basic syntax for creating a constructor. All classes have a default parameter-less constructor. This constructor is deleted if a constructor is defined by the user and an error is thrown if it is used.

Chapter 16: Concepts of Equality – Every class and structure includes a method named equals. This method is defined by the System.Object class, and inherited by all other classes. This chapter defines what you are actually comparing when you use the equals operator with any class including user defined classes.

Chapter 17: Fields and Properties – In use, properties look and behave just like fields. The major difference is that properties can have code attached to them, which can be used for get and set methods. This makes using properties much cleaner to use in most cases.

Chapter 18: Inheritance – A class can only inherit from one other class, where all non-private fields, properties, and methods are inherited. However, constructors are not inherited. This chapter looks at the order of which constructors are executed from parent to child class.

Chapter 19: Virtuality – getType() and typeOf() are methods that return an object of type Type. This object can be used to determine if two objects are of the same time. Only methods and properties can be declared as virtual.

Chapter 20: Operator Overloading – Any operator can be overloaded to work with a user defined class. These operators include: +, -, !, ~, ++, –, true, false, *, /, %, ==, !=, <, >, <=, >=. This chapter includes syntax for overloading these operators, as well as example use cases.

Chapter 21: Interfaces – Classes can inherit from only one class, however they can inherit an infinite amount of interfaces. A class must include a methods of an interface it is implementing.

Chapter 22: Interoperability – This chapter demonstrates how to use platform invoke, which allows you to use Win32 API functions from your .NET programs.

Chapter 23: Dates and Times – This chapter introduces the DateTime object. Constructor parameters, tick counts, DateTime calculations and TimeSpan are explained throughout this chapter through the DateTime example project. This project is continued throughout the rest of the book.

Chapter 24: Events and Delegates – A delegate is a reference to a method. Handling events across objects is a common use of delegates. An event handler is attached to special delagates called events. These event handlers are called once an event is fired.

Chapter 25: Files and Streams – This chapter takes you through the lowest levels of file input/output with the FileStream class, reading and writing text files with the StreamReader and StreamWriter classes, and finally higher level file reading with the Environment, Path, DirectoryInfo, Directory, FileInfo, and File classes.

Chapter 26: String Theory – All strings in C# are immutable, which means that a string can not be altered once it is created. Instead you must create a new string whenever you need to adjust a string in some way. This chapter covers string manipulation and performance factors when when working with strings.

Chapter 27: Generics – Generics is the C# method for implementing the C++ template. Generics also support defining constraints that restrict the type of object that can be used with your generic.

Chapter 28: Nullable Types – Any value or structure can be made a nullable type. This is useful for defining a way for defining a value as not yet defined.

Summary: If you have a good amount of programming experience, .NET Book Zero definitely has it's share of less interesting material, some of which include data types, arrays and operators. However, I would still strongly recommend this as a starting point for anyone making the jump from C++ or C to C#. The chapters on delegates, properties, and class structures will give you a complete understanding of new concepts with extremely clear and concise explanations and examples. Chapters on stack and heap, differences between structures vs. classes, fields vs. properties, and static vs. instance were like a bonus review that cleared up some concepts that I never completely understood myself. And as a free download available at www.charlespetzold.com, the price can't be beat.

Monday, January 17, 2011

My Favorite Free Resources - Part 5: Education

Books
Music
Video
Software
Education

This is the fifth of a 5 part series exploring my favorite sources for free online resources.  Yes, it's been almost a year since part 1 was posted, And yes I'm posting part 5 out of order.  I just thought that the start of a new semester was the perfect time to write about free education sources. Enjoy!

Open Courseware Consortium  - Many Universities offer free online materials for many of it's classes, including recorded video of lectures, class assignments, tests, notes, and text.  MIT Open Coursware is probably the most popular University found in the OCC catalog.  

P2PU - Peer to Peer University takes a more traditional approach to open education.  Each semester offers a wide range of classes taught by peers.  Each class requires a hands on attitude and participation with assignments and small projects assigned throughout the semester. 

iTunesU - iTunes offers much more than music and television shows.  The podcast and University sections of the iTunes Store offer lecture recordings and power points from many of the same Universities that participate in OCC.  Including the very popular annual iOS development for beginners class.

Open Learning Initiative - I haven't tried the Open Learning Initiative myself yet. However it does seem very similar to OCC.  A great collection of online materials for the independent learner.  The Open Learning Initiative, as well as all previously mentioned educational resources mentioned in this post, offer college level course materials free of charge for no credit.



Wednesday, January 12, 2011

Happy New Year!

This is one of my favorite times of the year. The new year offers a fresh start, making it easy to move on from any past mistakes or failures, and start focusing on achieving the goals I have ahead of me. This year, there are three major goals I want to accomplish by the end of 2011. These goals are:
  1. Finish an awesome graduate project.
  2. have a Windows Phone 7 app completed and in the windows market place.
  3. play my guitar in public place such as an open mic night at a coffee place.
Graduate Project

There are three major parts to my graduate project. Part 1 involves creating a simple media streaming web application using traditional javascript, php, and sql database. Part 2 involves porting this web application using standards found in the new html 5 specification. The last step is to compare any differences in performance, scalability, and development difficulty. I have some familiarity with these web technologies, however this will definitely be a learning process for me, and hopefully a good learning experience for you as well.

Windows Phone 7 App

Everyone has dreams of creating the next “Angry Birds,” and this is my chance. I have almost no experience with mobile development so this will also be an adventure.  

Guitar Performance

This one is just for fun. I started off taking lessons from my sister 2 years ago, with very little improvement since. This is the perfect chance to jump start my progress.

Tracking my progress through this blog will hopefully add the positive pressure I need to keep up the momentum needed for success. Here's to a great year!