School
- Jul 20 2008 - Networks, Assignment 1 ...
I just finished my first assignment in a beginning networking course I’m taking and I am so far pretty impressed with how interesting this stuff is. I have a working knowledge of networking that includes decent understanding of the application layer, high level knowledge of the transport layer and basically just awareness of the link layer. It’s pretty rare that in my position as a developer that I need to answer questions about the link layer. (thank you my friends in IT)
The football field question actually relates to a pretty interesting concept called bandwidth-delay, which refers to the amount of data that exists “on the wire” or “on the air” at any given moment. Data that has been sent but not yet acknowledged. It’s helpful in determining minimum buffer sizes for receivers and transmitters over a given link.
Some of the questions are actually kind of fun in that they had me visualizing data flowing through networks in ways I had not before. For example given a link between two hosts X km apart, with a transmission rate of R and a propagation delay of N….
2.4.d What is the width (in meters) of a bit in the link? Is it longer than a football field?
Kind of useless, but super fascinating at the same time, imagining the physical manifestation of all this work I do day in and day out. Pulling these bits from all over the world is so effortless, so fast and so transparent that it’s easy to forget the actual resources behind it.
http://en.wikipedia.org/wiki/Bandwidth-delay_product
Another element to this first assignment was to setup apache as a proxy server on your local machine which was a bit surprising. I assumed at first that the assignment meant squid, but no, apparently apache itself can be configured to be a proxy server for a number of protocols including both ftp and http traffic.There are numerous articles out there on using it as a personal ad blocker, or caching server.
For reference this is what I had to do to Httpd.conf to make it work :LoadModule disk_cache_module modules/mod_disk_cache.so
Interestingly if you get that configuration wrong, you actually get a big “It Works!” page shown in your browser for any page you try to visit. Go figure. My mistake at that point was just not having uncommented the right modules, so apache was just serving the It Works page rather than attempting to proxy my request.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
<IfModule mod_proxy.c>
ProxyRequests On
<Proxy *>
Order deny,allow
Deny from all
Allow from 10.0.1.2/255.255.255.0
</Proxy>
</IfModule>
<IfModule mod_disk_cache.c>
CacheRoot “c:\apachecache"
CacheDirLevels 5
CacheDirLength 3
</IfModule> - May 5 2008 - I've forgotten how much I enjoy Unix ...
I just finished reading “The Dream Machine” and getting a very cool look at some early history of computing including the birth of Multics and it’s spin off and almost more interesting the birth of tools like email and ftp as a way to actually do something with the ARPANET that was being built. A great read for anyone interested in how we collectively have arrived at where we are today in computing. And as it happens, I’m also currently challenging a course on Unix which as part of the challenge requires that I complete a project before I can write the final exam.
The project itself is great fun actually. I’ve been in the world of Microsoft for so long at work that I’ve completely forgotten about the old days of living in vi on Solaris as part of my 9-5 work. (CATI programming back then) More than anything about Unix I love the power and flexibility of combining these small well written tools like awk, sed, grep etc. These are incredible tools and it’s easy to forget how powerful a fully text driven system really is.I remember being completely stoked about Microsoft’s powershell project a few years ago. On the surface it seemed to take everything exciting about a Unix environment and add a layer of object orientation across it so that not only could you fully embracing piping and redirection with the help of some impressive shell programming capabilities but you also had the full .net framework at your fingertips and the ability to use reflection to “discover” a system at run time. This discover-ability aspect is key, and the importance of “man” to rusty or newbie Unix users can let you appreciate the value in being able to query objects to ask what they can do. The simplest example of where powershell is so powerful is to just imagine good ole ls, but where each element output from ls was an actual file or directory object. If you do nothing then those are simply iterated by ls and essentially .FileName.ToString() gets called for each… but if you pipe that output to your own iterator you can all of a sudden do some really amazing things with very little effort.Having said that though I never truly fell into powershell like I have unix in the past. In my opinion it’s about the eco-system. The set of utilities in unix work because everything in unix plain old text, meaning the same tools can be strung together to do any countless numbers of tasks without additional support. Compare this to powershell which really loses it’s value where .NET doesn’t exist. True, there are some amazing providers that bridge gaps into SQL Server, WMI, etc etc. But just the fact that you are now talking about .NET development to create those new bridges means we’re half a step behind the accessibility and simplicity of a text file. I do think that powershell will only get better with age, but for now unix as a whole is still king for me even if powershell is sexier.Anyway, this project I’m working on is just a series of clever questions that force you to construct chains of tools to elegantly (or inelegantly) solve a problem. It’s extremely fun and in the course of a couple weeks I’ve reinstalled cygwin at work, gotten ssh access to my mac at home and have had terminal open for pretty much a week straight on my iMac. It’s hard to keep this up without an actual task - and considering I’m still doing 95% .NET development i don’t expect this will continue for too long but it’s a good reminder. - Mar 30 2008 - University Bureaucracy ...
Depending on how I choose to count I am now dealing with my fifth or sixth post-secondary institution in my odyssey to finish my computer science degree. One thing that all of the schools I’ve dealt with have had in common is a slow and inflexible bureaucracy.
Of course as a younger man I blamed a lot of my own failings on what I perceived then to be a completely fucked up system (University of Manitoba) that was screwing me over. I paid them for a service and yet the treat me as if I should feel lucky to be there! (Can you imagine dealing with thousands of similar minded young punks who couldn’t be bothered to actually read the calendar??)
In retrospect though I can see that most of what was going wrong for me was based on my own mistakes and a failure to read the fine print. I did terribly in my first year of university (terrible = D average) and was put on probation at the UofM. In my frustration I simply packed up and took my business down the road to the University of Winnipeg. (Which also happened to be much closer to where I was working and living)
Ahh… I remember being so excited about this fresh start, getting away from the inept and massive machinations at the UofM and getting a much more familiar and friendly experience with the UofW (which was about 1/6 the size of UofM at that time). It only took registration to completely rid me of my naivety. I had gone from a large university with an annoying but efficient phone registration system to one where I was actually standing in lines and dealing with a slow human process full of uncertainty and questions. Worse, my crappy year of courses of course comes along with me; I’m still on probation and not every course I passed at UofM is even transferable to my new program.
It wasn’t long before I was grumbling and complaining about the inept staff at UofW. I was a little more on top of things this time around though and was able to get through two solid years of course work having properly navigated the probationary process and meeting requirements from the transfer. It was just as I was settling in that I accepted a transfer with work and moved to Vancouver.
By this time I was much better at being a student, having learned my lessons the hard way and I had a certain expectation that future navigation of the university bureaucracy would be much easier. Had I been starting over that might have been the case, but instead I was now dealing with inter-provincial transfer rules and a struggle to get credit for the years I had already put in. I messed around for a few months trying to get into UBC and finally had someone recommend that I try Langara college as it would give me a simpler route into the BC system and transferring from there to UBC or SFU would become much easier.
Langara was great, and because I wasn’t seeking credit with Langara for past work it was basically just a matter of signing up and attending. It all might have worked but ultimately I could no longer afford the time involved in getting to and from school during the work day. And for reasons that are totally beyond me, computer science is still one of those subjects that just does not seem to offer consistent night time access, at least not the universities I’ve been attending at the times I was there.
Which finally has led me to the wonderful world of distance education. For the last two years or so I’ve been attending Athabasca University which is based in Alberta and at the time of my starting was the only fully accredited post secondary institution in Canada to offer a computer science degree.
I should say now that I have been pretty happy with my experience with this school for the last couple years. My transfer process was smooth, the course selection/planning process was easy thanks to some good help from an adviser via email and about my only concern right now is how much respect this degree will actually get once I’m done all this work.
Of course anytime you want to do something just a little different then that’s when you run into the beuracracy and this school was no different. Here’s a timeline of what was involved in challenging a course for credit :- Feb 24 - Email to exam unit to get the professor’s contact info to gain permission to challenge
- Feb 25 - Reply with professor name
- Feb 26 - Email to professor with short summary and request
- Mar 12 - Email the exam unit again asking for a different contact (still no reply)
- Mar 13 - Reply requesting I try again and get back to the exam unit if no reply in 3 or 4 days
- Mar 17 - Email to professor again
- Mar 16 - Professor reply! (need more background for permission)
- Mar 20 - Email professor with a customized resume
- Mar 20 - Approval! Please contact the exam unit again to arrange
- Mar 20 - Email to exam unit asking for next step
- Mar 25 - Reply all from exam unit “can someone help Chris?"
- Mar 31 - Still no reply from anyone so I submit what I assume is the right form and notify the exam unit that I didn’t want to continue waiting, let me know if I need to do anything else
- Apr 5 - the request is approved! course materials are in the mail.
I think the big difference between this experience and previous more frustrating challenges with getting things done was that on two separate occasions in this one transaction I had to reach out again in order to get the process moving again. At eighteen I probably would have just written this off as no longer on my plate and waited. If nothing happened it wasn’t my fault. I no longer have murderous thoughts at other’s ineptitude when deadlines pass and I’m stuck in the lurch, I think I just accept that when humans are involved things get slow and error prone. Treat your education like your job and always assume responsibility.
Still, no one enjoys dealing with this kind of crap do they?