Saturday, January 29, 2011

Three-Way Handshake -- why and when?

I've been pondering why some protocols need a "three-way handshake" when others do not.

For example, TCP requires a three-way handshake. I.e., A to B (syn), then B to A (syn and ack), then A to B again (ack). Then data can flow in both directions.

The SIP INVITE transaction requires this as well. I.e., A to B (INVITE), then B to A (response code like 200), then A to B (ACK).

I did read some Knowledge Theory stuff in my Distribute Algorithms class. It seems like I ought to know this.

It seems like it has something to do with one of these:

(1) The purpose is to BEGIN a flow (and not to do something idempotent).

(2) A is making a request of B, but B must also make a sort of request of A.

Of course, these two options may both, or neither, be involved in the true answer.

Thursday, January 27, 2011

The Better to Control Your Mind, My Dear.


I taught one of my largest training classes ever last week, at the offices of a largish telephone company in Alabama. The class was planned for 12 students, and 17 arrived!

I got to skim-read a new book on cognitive research for teachers, called "Why don't students like school?" by Daniel T. Willingham. It was fun to apply new techniques to better manipulate my students brains.

These are some reflections on my most recent training experience.

0. Learn their names.

My wife, Hayden, suggested using the video feature on my phone to record each student introducing himself. It worked well, and watching the video a few times helped me to know everybody. That helps me feel more connected, if nothing else.

1. Force the students to consider their level of commitment.

One reason the class went well was that the students worked hard and focused on the class. This isn't always the case. The students in my class are often key to the operation of their ISPs and telephone companies. The students often struggle to keep up with work while learning new material. There's a drawback to splitting your attention like this: you stink at both, but you stink the worst at the task that requires the most original thought.

So before I even introduced the class, I had my students fill out a survey (using a Form in Google Docs). The questions asked about their daily job and their levels of expertise in various areas. The last question was this:

---------

How much time will you be able to give the class this week? *

This class will require your full attention and concentration to be effective. If you are distracted by other ongoing projects, emails, etc., then you will be frustrated and may not learn much.

[  ] I will be completely focused on this class, and will ignore all distractions. I will delay most work requests until after the class finishes each day, or until next week.

[  ] I will be periodically emailing, texting or instant-messaging, but mostly I'll be focusing on this class.

[  ] I will be in and out; I have some ongoing projects that will require my attention and that cannot be delayed. I may need to leave the class at times.

[  ] I have a lot going on right now. No promises!

----------

Perhaps it was just coincidence, but I had an unusually high proportion of my students' attention. I suspect that forcing the students to consider the options and make a commitment affected their behavior for the week.

2. Use an iPad, and be liberated from the whiteboard.

Many classrooms have no whiteboard. In some cases, the whiteboard is covered by the projector screen. But I need both a drawing surface and the projector screen to show my slides and other demonstration. So the projector was attached to my laptop computer.

I found an app for iPad called "Air Sketch". I draw on the iPad, then view the live drawing in a Firefox or Safari browser window on my laptop. Of course, to show the drawing to the students, I just put the browser window on the projected screen.

This made it easy to have a whiteboard-like drawing for the room. I could also draw from the back of the room to verify how readable it was from the students' position.

I now prefer Air Sketch with a stylus over a real whiteboard.

3. Test early; test often.

During my training, news came out about the value of taking a test when you're trying to learn something. So I quickly wrote some additional quizzes using Google Docs "forms" feature, and made the students take those tests with a time limit.

They say that taking a test helps you to remember the material.

4. Grade often and record the score.

I've learned long ago to grade the students' work during the course. I provide live feedback, so they can go fix the parts they did wrong. And it sends the message that I genuinely expect each student to do all the assigned work. And it gives me a chance to interact directly with each student. If I didn't grade their work, I'd never have a chance to talk one-on-one with some students.

I used Docs To Go on my iPad to grade student material. Students do the exercises on paper in their book, so I walk around the room to look at each book. Docs To Go has a passable spreadsheet feature that I used to record grades.

It's a lot of work, but the payout in increased student effort is big.

5. Give substantial rewards for hard work and performance.

Throughout the class I gave an award each day for the hardest-working student. This is because progress depends heavily on intelligence, background, AND level of effort.

A student in my class cannot change his intelligence or his background knowledge, but he CAN work hard. So I look for the students who are working the hardest. That often means that he's struggling but he's also continuing to work until he gets the right answers.

This time, I had some little $9 metal keychain flashlights. I gave one or two as an award each day.  My point is that the prize each day was really worth having. I've tried using candy bars, and it just doesn't seem to work. Everybody wants to claim to be on a diet.

In addition, I gave a  Starbucks coffee mug and a Starbucks gift card at the end of the class to the person with the highest overall score.

6. Declare and keep to the daily schedule.

I like to specify the daily schedule in advance. I do 75-minute chunks of work and lecture, with 15 minute breaks. Lunch is also 75 minutes, and I do a shorter period after lunch because everyone is sleepy anyway.

But the hard thing for me us sticking with this schedule. I'm not a very punctual person normally. However, it helps a lot to get people back in the classroom if they know I'm really going to start after an exact 15 minute break.

7. Maximize student thinking on the Right material.

Students remember what they spend time thinking about; as Daniel Willingham put it, "Memory is the residue of thinking." So I put some effort into ensuring that students really spent time thinking about the right things.

This led me to drop a few elements of the class. For example, I usually have students manually configure a SIP IP Phone to register with their VoIP system. But the students spend a lot of time fussing over the silly menus on the phone when they should be focused on the four key elements of SIP registration. The menus on the phone are good to understand, but they don't need me there to do that. So I reworked the exercise so that they spend time studying a packet capture of SIP registration.

I also learned that people are especially good at remembering stories. I wanted my students to remember the SIP call-setup process in a realistic environment. So after studying the process for a few hours, I had them write a short story where the plot is the SIP call control in a realistic carrier environment. I hope they forced the students to really ponder the SIP INVITE transaction, B2BUA's, and redirect servers. And hopefully remembering their plot will help them troubleshoot failing phone calls.

Wednesday, January 12, 2011

What King Solomon had to say about the "Partner" page on your web site


Whoever belittles his neighbor lacks sense,
but a man of understanding remains silent.

Whoever goes about slandering reveals secrets,
but he who is trustworthy in spirit keeps a thing covered.

Whoever puts up security for a stranger will surely suffer harm,
but he who hates striking hands in pledge is secure.


In my current industry of telecommunications, many firms loosely attach themselves to one another through "partnerships". In a typical partnership, some managers from the two companies get along well, and see one another as providing complementary products. For example, one company makes equipment, while another company is good at installing the equipment and making it go.

Too often, these relationships don't carry much weight. There aren't many barriers to creating new loose partnerships, and they're typically not binding. Years ago, I learned that my employer was an official Cisco Systems partner -- but Cisco wouldn't put anybody on the phone to answer questions about my product. Sometimes I wonder if the only meaningful inter-company partnership is when one company is a customer to the other: ("You do work and send invoices, I send you money. That makes us partners.")

The text above, from the 11th chapter of the ancient Jewish book of Proverbs, gives some interesting clues about these arrangements between companies. With texts going back to around 1000 BC, Proverbs was one of the earliest "wisdom books" ever written. It has been meticulously maintained by Jews, who moved it (and the rest of the their sacred texts) from format to format to keep it alive. Other cultures in the same area also had wisdom literature in the same timeframe; for example, Egyptians also had wisdom texts in similar format. Proverbs is a part of current-day Jewish and Christian sacred texts. (Proverbs 11:12, 13 and 15)

Whoever belittles his neighbor lacks sense, but a man of understanding remains silent. By living near your neighbor, you know some secrets about them; perhaps even things that would be harmful. It's stupid to reveal those secrets openly. In close working relationships, employees from both companies work in close contact with one another. Each company learns some of the weaknesses of the other. Advertising these facts gained by the close working relationship isn't smart.

Whoever goes about slandering reveals secrets, but he who is trustworthy in spirit keeps a thing covered. Are you considering a close working relationship with a company that gives you all the dirt on everybody else? Try to do business with folks who are "trustworthy in spirit". One teacher I've had said that he's glad to sign paperwork, but if he has to make someone sign paperwork to get people to keep their word, then he'd rather find someone else to do business with.

Whoever puts up security for a stranger will surely suffer harm, but he who hates striking hands in pledge is secure. "Puts up security" is similar to co-signing a loan; the security is collateral. The loose business partnerships rarely involve actual bank loans, but business relationships often involve lending goodwill. "Striking hands in pledge" is like a handshake.

For example, if you're an expert in Linear Defrobnicator installation and maintenance, and you strike up a business partnership with a Linear Defrobnicator manufacturer and begin to recommend their Defrobnicators, then you're really using your goodwill earned through previous good recommendations and service. Your customers listen to you because you know how to make Linear Defrobnicators go.

This proverb is teaching that it's smart to avoid such interaction -- with strangers, especially. Unschooled business managers in highly-technical fields often don't understand just how bad or how immature other technical products might be. It takes real skill and background and time to really know whether a company's technical products are worth recommending.