Monkey on a RockSitting Up HighOld CrashPollutionSpash!Nice ThrowSwan SwimSwans and GeeseWet Rock

What’s going on, a blog return.

September 9th, 2008

I hope to be back on my blog now. My goal is to update once a week or more. There’s plenty of things going on in my life now for me to write about here.

Education

News

I talked about studying for the CCIE at one point. That’s fallen to the wayside in favor of a graduate degree. However, I think my approach to the CCIE might have been wrong (I was following the Odom book). Odom starts with the physical layer and works his way up… a class I’m taking this semester (”Computer Networks”)’s textbook starts with the application layer and works its way downward (skipping Presentation & Session layers, of course ;)). This does seem like a more natural progression, though one could certainly spend enough time on the network layer to never reach Data Link and Physical layers. This class should be interesting, as it takes a more internal view of how things work (not per-Cisco, but looking at the RIB, FIB, queuing, etc).

My overall educational goal is currently in the Ph.D.  direction. I’m currently working on my M.S., which at my part-time pace should be completed in 2010. After I’ve completed it, I am planning on continuing onward toward the doctorate. My ability and drive should enable me to reach that point. I work very hard in my classes now and have no desire to stop.

This semester will be tough because of the topic. I know networking very well and it can be hard to filter out what I already know to reach what I don’t… I don’t think it will be a problem, but it may be boring at times!

Philosophy

I’ve been working on better organization, better use of time, and more creativity in my approach to education and work. My big take-aways for this week are: (from a Disney workbook on Imagineering) buy the best tools (notebooks, paper, pens, etc) you can afford and treat them like they’re the cheapest. I’ve got the first part down… I love moleskine notebooks and my parker pen! I don’t like to use them, though!! I try too hard to save the notebooks for”good” writing when the “good” writing turns out to be worse than the scribbles and drawings I put down elsewhere. This is something I’m stopping! My notes aren’t particularly interesting in any case (they’re technical about projects, project ideas, school ideas, thesis ideas, etc) and tend to be made of scratchy block diagrams… but these block diagrams are above and beyond the long notes I write otherwise.

The other one for this week is to focus on a question. In education (and work, often) a topic sentence is often garbage. There’s nothing more meaningless than most (technical) paper titles! Instead, I want to focus on a topic question. A question requires a direction. A sentence does not. I realize that some questions can be vacuous (I often hear others asking them in class ;)). I therefore have these three rules (with perhaps more to come):

  1. No Rhetoric.
  2. Must be open-ended.
  3. Must be answerable, but need not have an answer.

The latter rule may seem contradictory, but it’s not. A question can be non-rhetorical yet still be unanswerable in context. Once the Topic Question has been asked, brainstorming can begin…

I haven’t nailed down exactly how I want to brainstorm and organize my educational questions, but I’m working on a GTD / 43-Folders (+ A to Z archives) organizational scheme. It’s not optimal yet (especially as far as projects go), but I’m working toward it.

Fitness

After a hiatus for a few months this summer (no gains, no losses), I’m mostly back on track for diet & fitness. I need to re-overhaul my diet again (incorporate more vegetables, whole grains & avoid more poisons like HFCS). I am, however, making some excellent strides in my exercise regimen. I could use more cross training and resistance training, but I’m doing very well on cardio and stretching!

I have a goal to run the Barrington, RI “Trot Off Your Turkey” 5k race in November. It sounds like an extremely laid back 5k race, so a perfect first foray into road races. Keep in mind that I’ve hated to run in the past (I was a High School swimmer, never a runner). Currently I’m on week 5 of the Couch to 5k (C25K) program, which is a major milestone of the 9 week program. Tomorrow will be my 2nd day (each week has 3 running days) which has 8 minute runs with a 5 minute walk between. Saturday is my first major run at 20 minutes continuously. Every run begins and concludes with a 5 minute walking warm-up/down.

My “secret” goal (not so secret) is to run the 2009 Cape Cod Marathon to completion. I have no goals of great times or even to run continuously… As they discuss in The Non-Runner’s Marathon Trainer, the goal is simply to finish. I would like to finish before the course closes, however… Training for this task begins after the November 5k (or perhaps as soon as my C25K program is complete, since that should occur first).

A Busy Conclusion

Yes, I’m keeping my time filled! If this isn’t enough, I’m sure I’ll come up with more! I haven’t even talked about work projects and how I’m double booked on projects through the end of FY’10 (I am working on two projects half time, but one often gets pushed to the side… which means I have “extra” work to do on my own time or on overtime). How can I manage everything? I don’t know if I really can, but I’m hoping marathon training will help!! I’ve heard that this sort of effort (not to mention the extra energy from being in shape) can really help you keep the rest of your life straight. Only one way to find out……..

First attempts at MATLAB GUI with embedded UDP objects

May 18th, 2008

This is what I did to connect a MATLAB GUI to a UDP object (using the Instrument Control Toolbox). This example is a bit over-simple (one instance of MATLAB - nothing remote), but the concept could certainly be modified for a real application (in fact, I need to for a work project…). Please bear with me - I’ve never used event based programming in MATLAB before. If I’ve done something wrong (and I’m sure I have), please let me know!

First the basics: A GUIDE GUI:

Two pushbuttons, an edit box, a static text we don’t care about (title text), and one we do… configuring these further:

I set tags for the important items. The pushbuttons are named ’send’ and ‘close’ respectively, the text box is called ’sendbox’ and the static text is called ‘rcv’. More importantly:

The HandleVisibility for the GUI itself must be set to on (and less importantly, the name can be set here as well).

With this prep, the real work is ready to begin. In the gui_n_udp_OpeningFcn, set-up the UDP objects:

% Choose default command line output for gui_n_udp  

handles.output = hObject; % (GUIDE Configured)  

    

% Create UDP objects  

handles.rcv_udp = udp;  

handles.send_udp = udp;  

   

   

% Set-up UDP Receiver  

handles.rcv_udp.remotehost = 'localhost'; % Normally an IP Address  

handles.rcv_udp.remoteport = 10001;  

handles.rcv_udp.LocalPortMode = 'manual'; % Required  

handles.rcv_udp.LocalPort = 3457;  

handles.rcv_udp.LocalHost = 'localhost'; % Unnecessary?  

handles.rcv_udp.Tag = 'rcv_udp'; % This can make things easier...  

    

% Set-up UDP Sender (you should be able to see how this could be applied to  

% two separate MATLAB computers)  

handles.send_udp.remotehost = 'localhost'; % Normally an IP Address  

handles.send_udp.remoteport = 3457;  

handles.send_udp.LocalPortMode = 'manual'; % Required  

handles.send_udp.LocalPort = 10001;  

handles.send_udp.LocalHost = 'localhost'; % Unnecessary?  

handles.send_udp.Tag = 'send_udp';  

    

% Set-up callback for a UDP event (Receiver only)  

% There must be a better way to do this?  

handles.rcv_udp.DatagramReceivedFcn = 'UDP_GUI(''display_udp'')';  

    

% Prep the UDP objects!  

fopen(handles.rcv_udp);  

fopen(handles.send_udp);  

   

   

% Update handles structure  

guidata(hObject, handles); % (GUIDE Configured, but necessary of course)  

As the comments describe, I’m setting up two UDP objects that are linked together. It’s pretty boring (everything happens on the local machine), but the concepts are the same if IPs are used. I’m putting these directly into the GUI handles. The hardest part to piece through is that a GUI is a figure which can contain nearly unlimited additional variables and structs within it. Some of these objects are graphical while others, like the UDP objects I create, are just hanging out as children of the GUI figure… more about that later on.

You’ll also notice that I edit the handles.rcv_udp.DatagramReceivedFcn callback function. When a UDP Datagram is received, the event is triggered and the command in that variable is executed. I’m not really sure how to use function calls (e.g. “@display_udp”) so I used an explicit call to the GUI function. There may be a better way (as I indicated…). I won’t be jumping to this function yet…

Next up is the send_Callback. This is the function that is called when the Send button is pressed and its contents are pretty simple: 

fwrite(handles.send_udp,get(handles.sendbox,‘String’));

All this does is send a string (retrieved from the ’sendbox’ text box) to the send_udp object. Hooray, we’re internet ready…

Now on to the display_udp function: 

function display_udp() 

% Takes a UDP event from rcv_udp and sets it to the rcv 

gui_handle = findobj('Tag','gui_n_udp');handles = guidata(gui_handle); 

data = fscanf(handles.rcv_udp,'%c');set(handles.rcv,'String',data);guidata(gui_handle,handles); 

 

This function was tougher - and probably somewhere things could have been done more easily. I first need to find the GUI handle. This handle is the ID (an actual floating point number) that lets me access the contents of the GUI. This is the point where, if HandleVisibility is turned off (or “Callback”), you won’t be able to search out the GUI’s Handle ID.

The “guidata” function retrieves the GUI Handles (plural - this is the GUI object that holds all the other goodies). Once this object has been retrieved, it’s easy to scan the data from the rcv_udp object, write the data to the “rcv” static text, and save everything using the guidata function again (an important step).

Finally, we have the close_Callback function (activated when the CLOSE button is pressed):

fclose(handles.rcv_udp); 

fclose(handles.send_udp); 

delete(handles.gun_n_udp); 

There’s not much exciting here… if you don’t close out the UDP objects, the ports will be seized until MATLAB is restarted. Deleting the figure object closes the GUI.

Monopoly Diet Plan?

March 2nd, 2008

I did some quick searches, but couldn’t find anything on the web about this… I’m going to try it.

One of the problems with calorie counting is keeping track of them. There’s plenty of methods out there: there are electronic calculators out there for it, people write down their calories or points, and there are many software packages (some of these are quite good). I’ve used the latter two ways in the past and it works for a week or two, but a few missed days and it’s game over!

What if you use play money to keep track of your daily calories? Calorie intake is a lot like a daily budget and having some physical connection to those numbers could not only keep you on track, but help teach just how much you should be eating.

Let each penny be one calorie… (So $1 of play money is 100 Calories). With some decent play money (or a similar scale with monopoly money) this should be easy to work with. Going out to eat? Take your money with you and ask for nutritional information (or bring one of those restaurant Calorie guides with you). Run out for the day and REALLY need to use more? Carry one IOU slip with you each week (these could be created on your own quite easily)… Don’t forget to pay the bank back! (I’ll be using an index card file as my “bank.”)

Give yourself that daily “salary” ($1200 perhaps) and pay your way to getting in shape.

Go Go Go!!

February 8th, 2008

This is one of those “all inclusive” posts. I just wanted to give a status update on everything (for the few that might pass by).

In school, I’m doing fine. I’m in an oceanography class which is very interesting but not yet totally relevant to my thesis, which will be on undersea acoustic networks. This has left me with limited time, but class this semester isn’t nearly as time consuming as my Ocean Engineering class last semester! This means that when I should be researching I have “procrastination time” that can be used to play Go!

I’ve played a lot of online Go so far this semester (and it’s only February)! So far I’ve played 16 games in 3 weeks! The first half (or so) of these were versus KGS Bots in order to get a real rank, but after becoming solid, I’ve reached 1-kyu and will hopefully creep upward from there. I’m not really sure where I should be, but my games tend to be pretty close around the 1-2 kyu levels… I’ve so far crushed most opponents weaker than this (let’s hope that continues ;).

I do need to concentrate a bit more when I play online. This was always a problem for me in the past and it certainly continues today. The game I lost today (vs. 1-kyu) was a disaster because  I got cocky (usually an online only syndrome), and I nearly lost another but for a lucky break: my opponent (2-kyu) allowed me to connect my dead group (I really should have connected when it was threatened).

All-in-all, the completion of my fifth year of Go (I’m at about 4.5 years) could be the one that sees me become a solid KGS dan player. I’ll be marking July 3rd on my calendar!

The Beginning

November 12th, 2007

I did make it into the Graduate program I mentioned before. It’s a joint program with NUWC and URI through the Center of Excellence in Undersea Technology (COEUT). So far the first class is going great! That being said, we’ve had about 8 weeks of class (once a week for ~3 hours) and two homeworks; our first quiz is this week. It’s Ocean Engineering 550 (and ELE 550) and it’s a survey course of Ocean Engineering.

The format is interesting and the subject is very broad, covering basics of Linear Algebra (primarily solving of systems of equations), navigation and geodesy, signals (primarily regarding the Fourier transform and frequency domain), and communications (modulation, etc). I’m very glad that the first class was formatted as a survey with a lot of review from undergrad - my biggest worry was that 7 years out of college would have resulted in too much apathy. It’s apparent that I have a good deal of work ahead of me, but I think I’m doing well so far (though I’m still waiting on the first set of grades).

Study Time!

June 15th, 2007

I’ve really broken into the books I’ve gotten to prepare for Grad school. I haven’t even been admitted yet, though I think I have a fairly good chance to get in the NUWC/URI COEUT Distributed Networking Systems program. I’m nearly finished a whitepaper titled “Resource Direction Protocol for use in Static Distributed Undersea Networks,” which hopefully falls in line with this program (it certainly fits into our research group’s ideas at work).

I will be attending an informational meeting and introduction session this upcoming Tuesday, so I’ll be finding out more about the program and how to apply. I’m more worried about passing it through budgeting at work - I know nothing about that process! I may also need to find two letters of reference, though that should be easy enough to do at work.

The books I’ve been working through on my own are: Forgotten Calculus by Barbara Lee, Probability, Random Variables and Stochastic Processes (3rd ed.) by Athanasios Papoulis, and Differential Equations and Their Applications (4th ed.) by Martin Braun.

The Braun book I just purchased used from Amazon and it seems to be very good! I barely got it and have already worked through the first few sections. It’s interesting to relearn Differential Equations. I’m understanding them better than I ever did in college (I had a terrible Math prof). The Probability book is very hard - nobody seems to like it on Amazon, but I did pick up a study guide too… so hopefully it will be enough to understand most of it without too much effort. Forgotten Calculus is a bit too easy, but necessary because I don’t remember any of the integral / derivative tables. I think the reasoning behind it is most important, though… and I thankfully didn’t lose that.

I’m fairly surprised at how quickly I’m relearning the math, especially the stuff I didn’t understand well the first time around. I’m attributing it to my significantly improved study habits (thank you Game of Go)! The absolute hardest part about learning math on your own is that the books are written by Math PhD’s. I think it does help you learn it better, but it’s sometimes tough to see how they get from equation X to equation Y. I was pleased when it finally dawned on me that the 1st order differential method is based on the Product Rule! Once I realized it, it seemed obvious… but the author only needed to say “by the product rule” instead of assuming it was second nature. Still, combine figuring that out with solving the odd numbered problems (solutions in the back) and you come out of it with math strength.

Look for more info sometime next week! I’m really looking forward to the URI meeting and getting started on the application!!!

Family Life

With the whitepaper I’m writing (mostly on my own time) and the studying, my family is a bit more neglected. Finally finishing the paper will alleviate that somewhat, but I have to acknowledge them in some way! I do try to do this work after J has gone to sleep, but sometimes I need a bit more time than that. I have to assume that it’ll be this way for the next few years or more… hopefully it isn’t too much of a problem! It will be interesting to have a 2nd kid during school (we certainly will sometime in the next 3 years), but it shouldn’t be a problem. At worst I’ll miss a class because  of it… and be more tired from lack of sleep.

In any case, it’s the other reason I’m studying hard this summer. It will make actual classes that much easier for my family to handle.

Starting a new Goal?

June 2nd, 2007

I may be putting my efforts toward the CCIE on the back-burner. I’d really like to get the most prestidgious technical certification out there, but something else has come up. I think I may be falling into a more important and advantageous opportunity!

A new Masters program in Electrical Engineering, Computer Science, Ocean Engineering, or Mechanical Engineering is starting between URI & NUWC concentrating in Distributed Networking. I would choose either the Electrical or Computer Science track. This would require me to meet all the normal requirements for the program only substituting a few core classes/electives for the concentration. The problem is that I don’t know a differential equation from a doughy eclaire… it’s just been too long! I’ll also have problem with signal math if I end up taking DSPs.

So I ordered “Advanced Differential Equations for Dummies” and I’m breaking out my old signals book (by Leland B. Jackson, God of Signals and Transforms). I’ll also probably have to re-learn some trig and probability (always hated probability).

My other option is to learn basic computer programming from the { to the }. Yes I already know some, but my style is nil (since I only ever learned Pascal formally - and that was over 10 years ago). I just don’t know it well enough to get by. Relearning sounds easier than initially learning!

Well… it sounds like a fun summer so far! I wonder what else is in store…

Falling behind!

May 23rd, 2007

I suppose it’s a good thing (to keep me on track), but I’ve been so busy on weekends, at work, and even after work (the carpet guy is coming tonight) that I feel far behind on my CCIE studies! I’m still completing my Supermemo repetitions daily (sometimes skipping a weekend day), but I haven’t had the time to learn new items.

I’m starting to get back on track, though… reading the Techexams Forums is a great motivator! Seeing where others are at and where I should be headed… I love Darby’s log. Another good motivator I use is reading through a few points of the Supermemo “20 Rules of Formulating Knowledge in Learning” - it’s a good place to see that I AM learning in the correct way - I just need to keep ON TRACK!

Really, anything that talks about the Exam or the Lab tends to be an excellent motivator for me. I just need to get to the point where exam tips can be put to use! Another good one of these is CCIE.org.

I’ll hold off on posting my stats for now. They’ve increased only slightly since the last time I posted them, and I’d rather do a bit of studying than take the time to gather statistics…

so until next time…

The worst part…

May 11th, 2007

I’ll apologize in advance for the rant.

The worst part of studying for the CCIE (and ESPECIALLY the CCIE R&S) is that the beginning of the course is a major review. It may be that I’ve done too much IRL or that I just got out of my CCNP bootcamp… but it’s hard to wade through the tall grass of the chapters and find the valuable new material hiding in it. The worst part is the tall grass.

I already know how VTP works (it’s pretty simple) or how Trunking works (I’ve used it a good deal between routers and switches). After the CCNP (and CCNA!) it’s pretty old hat… There are some new things (the actual frames used in ISL and 802.1q), but it’s primarily rehashed stuff. For completeness however, everything I think I should know for all time is being studied (and supermemofied). This makes for LOTS of flash cards and very slow going.

That’s the end of the rant. To make up for it, an anti-rant… Even though I’ve had a lot of exposure to the basic elements of R&S, it’s of utmost importance that I solidify these fundamentals. Kageyama speaks to the importance of fundamentals in Go; the same is true for internetworking.

It’s actually fairly amazing that I’ve already been able to use some of these fundamentals! It’s good to know things off the top of your head (with just a bit of time for recall). I’ve had someone ask me to get back to him with info on a basic ethernet frame, and I was able to draw it out for him directly. Talk about a good way to impress people! I feel obliged to issue one warning: This does not work for picking up women!! At least not unless she’s also a network engineer. As proof, I’ll make this attempt on my wife tonight… maybe 802.3 with SNAP will be enough.

WOW! New CCIE R&S Exam Blueprint!

May 10th, 2007

Cisco has come out with a new CCIE R&S Exam Blueprint which goes into effect starting 19 June 2007! The changes seem fairly expected (MPLS & IPv6) - Odom’s CCIE R&S book (2nd Ed.) mentions both, though I might need extra reading on IPv6 as it seems a bit light there.

Unfortunately, my SuperMemo database is patterned off of the previous blueprint. Practically everything will be carrying over, but I will have to change my hierarchical format a bit. Just at first glance, other things have been removed or at least adjusted - I don’t see OSI on the new blueprint, for example. RIPv2 is also gone (they must have realized that very few people use it?).

Supermemo Statistics

Name Stat
Total Elements 428
Total Items 329
Memorized Topics 30 (of 99)
Memorized Items 329 (of 329)
Retention 97.40%
Memorized per Day 10.6129 it/day
Ave # Items & Topics per Day 13.606 & 4.745

Supermemo Statistics

After Converting to the new Blueprint

Name Stat
Total Elements 490