<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
    <title>Jessica Fitch&apos;s blog</title>
    <link>http://blog.case.edu/jmf34/</link>
    <description>An online journal...</description>
    <language>en-us</language>
    <pubDate>Wed, 23 Mar 2005 00:09:56 EST</pubDate>
    <lastBuildDate>Wed, 23 Mar 2005 00:09:56 EST</lastBuildDate>
    <managingEditor>jessica.fitch@case.edu</managingEditor>
    <webMaster>jessica.fitch@case.edu</webMaster>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Movable Type v3.121</generator>

    
    <item>
      <title>Shifting Paradigms</title>
      <link>http://blog.case.edu/jmf34/2005/03/23/shifting_paradigms</link>
      <description>As I spent Sunday in a session of &quot;learn enough Perl to successfully program an assignment for Theoretical Computer Science...</description>
      <guid>http://blog.case.edu/jmf34/2005/03/23/shifting_paradigms</guid>
      
      <pubDate>Wed, 23 Mar 2005 00:09:56 EST</pubDate>
      <content:encoded><![CDATA[<p>As I spent Sunday in a session of "learn enough Perl to successfully program an assignment for Theoretical Computer Science (EECS 343)," I was reminded of what I consider to be one of the most interesting aspects of picking up a new programming language. The challenge I always face with a new language is not the syntax so much as a fundamental shift in the approaches taken to solve a problem. Once you've learned a programming language, it's fairly simple to pick up other languages, especially in the imperative language family. The syntax is simple enough to learn, the keywords are usually similar enough that a search through the index for the keyword that you're used to will show what the keyword you're looking for is, which enables you to look up the syntax. The control structures are fairly universal, and leaving aside the actual differences between names and variables, it's fairly easy to hack a solution in a new language. Therein lies the issue. For the most part, if you stick with the programming paradigm you're familiar with, what you end up programming is a hack. You don't utilize the full set of capabilities of a language, you end up forcing a language to mimic one that you're familiar with. While a number of languages have gained a lot of popularity, no single language has emerged as the be-all-end-all of programming.</p>

<p>One of the paradigm shifts I encountered during my excursion into the world of Perl, was attempting to represent a matrix. The C/C++/Java programmer in me bemoaned the lack of two-dimensional arrays in Perl and began looking for a way to build an array of arrays. Fortunately a friend (thank you Eric) pointed out a simpler solution before I wandered too far down this path. The idea of hashing each cell in the matrix/table I was trying to represent with the key being the cell position simply had not occurred to me. I found myself falling back into a thought process that connected Perl hash-tables to Java collections and Perl arrays to Java arrays.</p>

<p>Another example of a necessary paradigm shift is the difference between POSIX threading in C and threading in Java. This is the area in which I have the most problem in Java. I learned to do thread programming in our Operating Systems course (EECS 338) in C. Imagine my surprise one evening at 3 AM, the day a project is due, when I find that Java threads cannot signal each other, that something closer to a monitor-based solution is required. That's all well and good if the threads are worker threads that don't interact with each other, but trying to get threads to communicate immediately became (at least in my head) an absolute nightmare. The resulting 4 AM hack is quite likely the most painful bit of programming I have ever had the misfortune to turn in. By passing a single vector into both threads, I was able to create shared memory in the form of a thread-safe object. The program devolved into a semaphore based solution, each thread going into a non-blocking continuous loop until the other thread set a flag announcing that it was finished. This is still a mental shift I need to devote some time to studying before I get hit with the problem again.</p>

<p>During my first internship with Hewlett Packard, when I was picking up the basics of scripting, I ran across a very amusing example of a dedicated Windows batch script writer showing just how powerful the scripting language was. The programmer showed how to create linked lists among other dynamic data structures using the ability to create a large number of temporary files. While it was amazing to witness the extent to which someone could expand such a specific language, I was more interested in tracking the programmer down to inform them that there are actually languages designed for such things that don't cause a cascading number of files to be created, accessed, and subsequently deleted.</p>]]></content:encoded>
    </item>

    <item>
      <title>A rambling epic of second-guessing myself</title>
      <link>http://blog.case.edu/jmf34/2005/03/16/a_rambling_epic_of_secondguessing_myself</link>
      <description>Having finished one week of too many midterms, projects, meetings, and project proposals, I flew out to Boise to relax...</description>
      <guid>http://blog.case.edu/jmf34/2005/03/16/a_rambling_epic_of_secondguessing_myself</guid>
      
      <pubDate>Wed, 16 Mar 2005 04:38:38 EST</pubDate>
      <content:encoded><![CDATA[<p>Having finished one week of too many midterms, projects, meetings, and project proposals, I flew out to Boise to relax and reduce my workload to reading for only three classes/projects. Spring break was a lot more relaxing than I had intended, at least as far as school work was concerned. I sadly did not get around to much more than reading about SOAP and a few articles about Bayesian spam filtering. This week I'm gearing back up to put those hours I don't spend sleeping towards something that will at least result in a nice G.P.A. </p>

<p>Tonight I should be studying for the graphics (EECS 466) midterm I have tomorrow. Unfortunately I've hit that point where my brain will not absorb any more material that I have no interest in. My incentives for staying in this class are rapidly dwindling. I don't care about the material. A three-hour lecture that gave an overview of the graphics pipeline would be more than enough for me. I have no intention of pursuing graphics beyond this course. The project that I will be working on for the remainder of the semester for the course, involving object collision, is not something that interests me all that much. When I enrolled in the course, I had originally decided to include this course as one of those to double count toward both my undergraduate and graduate degrees. Right now my reasons for not withdrawing from the course mainly center around the amount of time I've already put into the course. The idea was to take an extra course this semester so that my last semester here could be almost wholly devoted towards finishing my thesis. At this point I feel guilty spending so much time on a subject that I'm not interested in when I could be spending the time on a subject I am interested in (my thesis). I'm still at war with myself over whether or not I should cut my losses before starting the semester project and withdraw, or tough it out and get something back for the time that I've invested in the course. This is the first time I've really felt the effects of signing up for a course thinking I would be interested in it only to find out relatively quickly after drop-add was over that I wasn't. I can only accept this as payback for not adequately determining what the course would offer. Since the midterm will likely determine whether this will turn out to be the first course I've ever withdrawn from, I should return to reviewing the Phong model again.</p>]]></content:encoded>
    </item>

    <item>
      <title>Grand Opening</title>
      <link>http://blog.case.edu/jmf34/2005/03/05/grand_opening</link>
      <description>Having been following Mano Singham&apos;s Journal for a while now, I have finally set aside some time to start a...</description>
      <guid>http://blog.case.edu/jmf34/2005/03/05/grand_opening</guid>
      
      <pubDate>Sat, 05 Mar 2005 02:36:02 EST</pubDate>
      <content:encoded><![CDATA[<p>Having been following Mano Singham's Journal for a while now, I have finally set aside some time to start a blog. This is the first blog I've had that hasn't been exclusively devoted to update information for a project, so I'm not sure exactly what will appear in it. I hope to get around to updating the look and feel of the blog soon, but given the amount of time I've dedicated towards my homepage at Case, I am not all that certain when this will actually occur.</p>

<p>Midterms finished at exactly 5:00 PM today for me. I'm flying back to my hometown of Boise tomorrow for spring break to visit with family and friends. My intention is for this to be a working holiday, with perhaps more sleep and better food than I've been getting living in the dormatories. On this list of things to accomplish during break would be reading papers related to intrusion detection systems for the computer security paper (course EECS 444), reading papers related to point cloud representations of graphics, collision detection, and volume preservation for the computer graphics project (course EECS 466), and reading as much as possible of Building Web Services with Java by Steve Graham et. al. for my thesis work. Hopefully during the break I will also find time to study for the upcoming graphics midterm and find an Eclipse plug-in to design web services using Axis and/or Tomcat.</p>

<p>The first order of business will be to get home. Northwest Airlines seems to be unable to make up their mind as to when my flight is. When I originally purchases the ticket, I was supposed to leave in the early morning of March 5th. Approximately one month ago they called my cellular phone to inform me that a change had been made. They did not call the number I had listed as my primary number, and they did not send me an email in regards to the change. All I had to go on was the changed flight times and a confirmation number that I hastily scribbled down as the automated message informed me of the change. The Northwest Airlines page also does not have a good way to access your flight information if you had not created an account previous to buying your ticket. Not intending to stick with the airline, I had not created an account. Trusting the airline, to borrow a phrase from Douglas Adams, "about as far as I can comfortably spit a rat," I endeavored to confirm my flight schedule. Twenty-four hours prior to departure I was able to partially complete a transaction designed to print out my boarding pass only to discover that the flight had been changed back to early morning. This time there was no friendly call to my cellular phone, no call to my primary phone, and no email sent to inform me of a second change. I fully expect that after showing up tomorrow, the representative for Northwest Airlines will cheerfully inform me that my flight isn't boarding for well over six hours. The sun and relative warmth of Boise calls to me, but I could do without the intervening time spent attempting to travel.</p>]]></content:encoded>
    </item>


</channel>
</rss>