| Twitter Status: |
I’m leaving for cape cod tomorrow after work, I’ll be vacationing there until friday, which ought to be relaxing, though I might be a bit more relaxed if I had more time at work before I return to school. I have a whole lot of coding, testing, and documenting to do before I go back to Lehigh, and I’ll only have one week after vacation for work. I’ll probably be working overtime next week, and won’t finish all that I want to.
The nice thing about working and overtime is the money. I really want to get two of these. It looks like that would cost $1100, but I think I can get it down to ~$800, if not lower by the time I get it. Here’s how it would be done (legally, too): I can get a $50 mfgr discount at most places (like amazon) which drops it down to $500 each. Then, amazon offers a $50 electronics credit on large purchases (periodically), so I’d buy one, and spend the credit on the next monitor. I’d sell the last credit to someone for $40. I’d then sell my current monitor for at least $100 (it’s a beautiful black 19″ flat screen trinitron). Since a large sum of money (that is, all my money except about $50) went toward tuition last week, I need to be careful with my spending. I also need to make sure I’ll get my job back over the winter so that I’ll have some money for next semester. Dual flats would increase my desk space and screen space, both of which would be helpful. $800 more helpful? I’m not quite sure. It would be great to have, though… and the ladies like LCD, I would assume.
I’m putting debian back on my laptop. Red hat is good, but it’s just not flexible enough for me, it seems. Home sweet debian.
When I started this journal, I was afraid that I’d have nothing to write, but I sure have been churning out books for the last week! I think that’s a sign I should get a paid account.
OK, here it is. I’ve been thinking for a while about what computer-related processes could be done much better, because I find it fun to try to come up with original, useful ideas. I’ll write about my previous idea at another time, but I want to talk about my new one now.
In business and outside of business, many, if not most, of the computer related tasks in a project consist of “document maintenance”. For example, at work, we have a share on a server that has probably hundreds of documents for our project, all in some vague organization. People go out and edit the files, or go look at them to get information. There are a few problems with this:
* Files are locked, only one person can edit at a time. This is rarely a problem in this case, but it’ll make more sense later
* There is no easily viewable document history. A correctly configured Microsoft word document can track changes, which we do use sometimes, but most documents don’t do this.
* All user interaction related to this entity is done indirectly through editing, or done through another communication medium (email, AIM, or in person).
Let’s look at another problem: source code management. Similarly, files exist on a server and are edited by authenticated users. In this case, version history is usually built in, with user comments for each version. Good source control systems allow simultaneous editing, but you can’t really see what other people are doing with files at any time, and merging can be a pain because it’s disconnected while you edit.
My idea is to centralize all processes related to these entities (called documents, but with respect to a project or process, it’s more than just a file). There should be a server that stores the contents of the documents, but also does more. It should be able to merge, branch and keep change logs just like cvs. Two people should be able to open the file at once and have the option of seeing what the other person is doing (with color coding or something). They should be able to add metadata (comments) to any type of document. Users should be able to have very granular permissions on each object (ie they can only read and add comments to a document). Users currently editing a document should be able to easily chat. Users should be able to ‘own’ a part of a document, and get notified or be asked for permission if others want to change it. All emails relating to the document would be stored in a message-board type view, so that users can easily glance at what other people have been saying about the doc, instead of having to search through their email folders.
Nothing in this system hasn’t been implemented before, the difference is that it’s integrated. All of the processes surrounding document maintenance are thrown into one interface, making metadata and other team members readily available. There are many problems with this idea, including having to support different formats differently, people not wanting to switch editors, and plenty of race conditions, I’m sure. Regardless, I think it’s a neat idea. Do you?
I’ve read a lot about how programmers need to be in a certain state to program. This is usually described as one without distractions, in which the programmer can let ideas and thought flow freely. Good companies design workplaces such as to maximize this state (I’ll get back to this point). As of this afternoon, I hadn’t been focused on my task in about a day. I’d completely programmed, commented, and written documentation for the first part of my task, but the second part was so huge that I couldn’t get my arms around it. There were just so many dependencies, requirements and limitations that I couldn’t formulate a good way to represent the process in pictures or in words. I tried scrawling down some nonlinear steps on some scrap paper, in order to illustrate the dependencies, but the limitations of that method quickly became apparent. I needed a medium that would really let me be free to draw out what I was thinking. The process simply had too many components to plan on one piece of paper. I tried writing some queries and vb.net code to see if it became apparent what needed to be done, but this method also proved to be a dead end.
By the time this afternoon came along, I realized that I had a real problem. I had a very important problem that I was being asked to solve, and I needed to at least have a plan outlined and discussed before I go on vacation (next Tuesday) so that I have a week to implement as much as possible and hand it off to whoever will be responsible for my process in the future. I couldn’t let this slip: it was my only objective for the remainder of my internship.
I thought about what my problems were, and realized that I a) needed more space to write: 8.5×11 or a computer screen were not enough, and b) I was distracted by my computer as well as all the junk on my desk (lots of papers). So, I checked the schedule and found that the large conference room (which has a markerboard, teleconferencing and videoconferencing equipment , and about 16 chairs around a big table) was free. I gathered up a few packets of information that I’ve been working on for the last couple of weeks, and entered the room. Immediately upon picking up the marker, I realized that each part of the process can be put into four linear categories. I called these stages 1-4, each with a specific description of what was required before the stage, and what every step in the stage should work to accomplish. I then went through some of my documents, and placed each task in one of the stages. Everything seemed to fit (some more easily than others). I then refactored the process a bit and simplified it, costing some cpu cycles. By 5:00, I had a complete system which I believe will be able to address all of the requirements of the process, which I hope to present at the meeting on Monday. Better yet, I think the stages will be really good for implementation, because we can also have a set of tests associated with each stage that ensure that the stage did everything correctly.
In short, I solved in less than two hours what I had spent well over a day fruitlessly pondering. I believe that my intentions for going into the conference room were the exact reasons I was successful. That made me wonder: why don’t I have an office, with a closing door and markerboard? The obvious, and correct answer is that I am an intern, and even my manager doesn’t have an office with a closing door. The funniest offices are those that have real walls and a window, but no door… just to keep you working; but I digress… Why is it that a productive work environment needs to be earned? Does a higher up manager need a place to focus more than I do? Somehow I doubt it.
I have more to write, but I’ll save it for another post because this one is already extremely long (as seems to be the norm lately)
I’ve been thinking a lot about where I want to work next summer. I’m certain that my manager and other managers at Travelers would be happy to have me back, but I’m not sure if that’s what’s right for me. It seems that after two years of interning in the same position, I’m reaching a point of diminishing returns as an intern. If I were to return next year, I won’t gain much more knowledge about corporate culture, I won’t have too much more responsibility, and I won’t get paid significantly more (I’m pretty sure that it’s a fixed track for all interns based upon years of experience).
Part of my motivation for leaving is that it’s been so great for the last couple of years. As far as I can tell, the job that I took is the best internship available for me at the company. I’ve seen 20 intern presentations in the last couple of years, and talked with many other interns, and not one of them has a job that interests me. My job, on the other hand, is great for me. I’m given real tasks, and I’m responsible for solving problems that are critical to the project. The data side of the conversion process *belongs* to me: I created it, and I’m in the process of implementing it. In fact, my manager’s manager listed my leaving as one of the ‘risks to the project’ in the coming months. Most interns can’t say that. I also do get paid quite well for my age, though I’m sure it’s low for the work I’m doing.
The question then becomes, what else am I looking for? For one, I’d like something to compare this to. I want to have a better idea of what different management styles are, and what’s effective and what isn’t. Importantly, I’d like to diversify my resume at the same time. Although my interest and philosophy are in Linux, the vast majority of the experience on my resume is in Microsoft products, especially visual basic. I don’t want to lock myself into becoming a commodity programmer (Commodity programming will only get worse as those jobs get shipped overseas).
So this leaves me with: where do I want to be in 5-10 years? Well, I have no idea. I won’t say that it’s not at Travelers, I won’t say that it is. I’ve been reading Joel On Software a lot recently, and it really makes me want to start a small software company. I agree with 90% of what he says, and a lot of it is really insightful and interesting. If you work in the computer industry, I recommend you read everything in his archives section, it’s worth your time. If I wanted to start a company, I’d probably need something to sell, a product or a service. Alas, I have no real good ideas for such things at the moment, which means that ideas like that will just have to wait.
After Debian exploded on my laptop when I was trying to get my wireless card to work, I decided that it was a good time to try another distribution. My first experiment was Gentoo Linux. This distribution interested me because it was different. All of the packages are built from source, and downloaded on demand (similar to the way that Debian gets binary packages). This means it takes days to install a desktop system (but I didn’t get that far).
I’ll start with the good points. Gentoo is a very mature feeling system, considering how relatively new it is. I like how it gave me all the newest capabilities (1280×1024 terminal resolution worked right of the CD). Everything is colorful, even outside of X. The config files are loaded with useful information about every option, and the install tutorial is the best I’ve ever seen.
There’s a reason I’m not writing this from Gentoo, though. There is no ‘install’ program, it seems.. and I think there really could be. You boot a cd, run fdisk yourself, mount the new partitions, and chroot to install stuff. It works, and it feels very manly, but some things also got confusing. Worst of all, I recompiled the kernel several times because I kept getting kernel panics on boot. After briefly trying to solve the issue, I just gave up… unless it’s a filesystem error (which it didn’t seem to be), I really don’t like figuring out kernel panics.
I then switched to Red Hat 9. I used Red Hat up until a year and a half ago.. it was OK, but debian gave me a better option. The install took about an hour, but could have been shorter because I played with the partitions for a while and installed many packages. Install was really easy, and in my opinion, easier than a Windows install. Yes, my mom could probably install Windows XP, but she could install an LDAP server if she was told to. I never like how it defaults to ‘automatic partitioning’… I don’t know why you’d want to entrust that sort of behavior to a system of which you don’t know the rules.
I liked the high level capability selection during install, e.g. ‘news server’. To be honest, I wouldn’t know how to install a news server in debian (without looking around for a bit), so I appreciated how it made common tasks easier. Once I got to the desktop, it seemed pretty clear that the system was not designed for users like me (not that there’s anything wrong with that). The items on the quicklaunch-style bar are web browser, email, and open office stuff. No terminal. The system feels like it’s mean to be installed, run, and then upgraded. As a business model, this makes sense. By creating significant periodic upgrades, they are more likely to keep customers paying. Debian, on the other hand, has no such motive, so the system basically evolves with the times. This isn’t to say that redhat doesn’t update software. There are security and bugfix updates from rhn (the red hat network), but I don’t think you would install new software from here. For example, if I want to install the Mozilla Firebird browser, I’d have to search around online for the rpm (I think). If there is easy software installation like apt, I sure haven’t found it.
The menu is very well organized, with items using the text describing what they do, not the app name. Though this may sound bad to some, the names are sufficiently succinct for this tradeoff to be worthwhile.
Crack attack doesn’t seem to be included with this distribution.
I might put debian back on here in a few days, I’m not quite sure yet. I still like this better than that OS I have installed on my FAT32 partition
Hopefully I’ll have another big post coming down the pipe soon.. I’m starting it now.
This entry has been composed in parts over the last couple of days…
I’ve been visiting my friends from high school quite a bit during the last few days.. and it’s made me feel quite nostalgic about the days of old (what else can you be nostalgic about?). I’m not sure if I’ll be back here next summer (the topic of a future post), so the question becomes: when will I see these people again. Sure, I can visit a few people at schools and what-not, and see people on other breaks… but there are so many people with whom I’m not incredibly close friends whose company I miss. I suppose the same thing will happen at college, but the effect is stronger here because I have a very large group of friends, and I’m able to connect with many of them on a level that I often don’t find elsewhere.
In my mind, time is inevitably depressing: it destroys the existence of moments. I’ve even found myself dreading upcoming happy moments because I know that by occurring, they are also being destroyed. This is very poorly worded, but I’m not too worried about it. I guess it could be related to a fear of change (though I almost always look forward to the future, I don’t like the process of change itself, even if it’s change to the better).
There is another way to look at missing people though. Given the minuscule subset of humanity with which we have all interacted, the odds that we can find equally good/suitable/friendly people in other groups is quite high (that’s an understatement!). In fact, for any good connection that you or I have with a friend, odds are there are plenty of people out there with whom you would have had a better connection. Luckily I don’t let this prevent me from enjoying other people, but it’s a good thought from time to time.
Well, I have a plenty of substantial things that I would like to write about, but it’ll have to wait.
I’ve resumed work on mconsole recently, trying to implement a new listbox. I did manage to repair my laptop in the last few days, so I have dvd playback ability now, which is great because I can watch my family guy dvds while on the bus and such. The second DVD is coming out in september, which will of course be great. There are rumors of a family guy movie, which I’m a bit skeptical of, but of course would support. Evidence is here. I don’t think they just register domain names without potential for action.
Why is Haley Joel Osment listed in the credits of the episode “Leave it to Paulie”? (with the mob) I’m so confused about this! Somebody clear it up!
Maybe it’s just a joke, because I couldn’t find anyone in the ep that sounded like him.
Ok, time for the sleep.
for some reason I couldn’t get to sleep last night, only to wake up again at 6:30 this morning. Since I didn’t feel all that tired for some reason, I went into work early. I had so much to do today, preparing documentation for a meeting that I (somewhat) had to run at two. After that I worked really hard to push our asinine conversion data from the extract onto the sql database, which is still a work in progress. I ended up working 9.5 hours, which means being at work for 10 hours, which means being away from home for nearly 12 hours today. And I get to leave at 6:15 tomorrow!
My agenda for tomorrow until noon:
6 -6:15 throw on clothes, brush teeth, etc
6:15-6:40 drop old car off at garage and get driven to bus stop
6:45-7:20 ride bus to Hartford (hopefully sleeping)
7:20-7:45 finish documentation for the continuation of yesterday’s meeting (very quickly!) and print out a bunch of copies
7:45-8:00 try to finish importing the data into SQL server (I won’t finish it here, I’m sure)
8:00-9:30 work through my document at the conversion meeting
9:30-10:25 Finish importing data into SQL. Verify that it got in ok. Email coworkers so they know they can start using it. Celebrate briefly and quietly with some sort of sugary snack.
10:25-10:30 write up some sort of status update for my subproject(s) for the week (to be used at the 11:00 meeting)
10:30-11:00 meet other interns quickly to go over the presentation that you don’t have time to work on today, but will probably be pretty funny by the time you’re done.
11:00-12:00 boiler workstation status meeting… look alert!
then get picked up and go to Vermont until Sunday…
AHH!
I managed to break both of my computers in the last week.
My laptop was the first to go last Thursday. I was using it as an mp3 jukebox at work, and the hard drive started making a loud (and scary) clicking sound. I restarted the laptop and none of the drives were found by the BIOS (*panic*). This was especially bad since I hadn’t backed up up the band alumni database. After a few minutes, I tried again and the computer did boot. All the data seems intact. The computer runs for a few minutes and then the clicking sets in and the disk can’t be accessed. I managed to back up all the important stuff despite this.
Thus begins the inevitable epic battle with tech support. First off, dell still had the laptop listed as belonging to the person from whom I bought it. It took a few days to contact him to get it taken care of. I spent at least two hours today talking to 3 dell representatives to try to get them to realize what I knew from the moment the hard drive started clicking: it needed to be replaced. I hate spending so much time to get people to come to obvious conclusions. I want to pay $50 extra as an “I know what the problem is” fee… it would save us all trouble and stress. After going from one operator to another, I eventually arranged to have the hard drive replaced. I couldn’t get them to do the same for the dvd-rom, which hasn’t played dvd’s since I got it. She said the hard drive probably had caused the dvd problems, even though the dvd problems began months earlier. She said something like “it has to use the hard disk to load the programs, so that could make it slow”. No lady, the hard disk was not slow, it was exploding. The performance of the computer when the drive was not clicking was quite good. And what programs are loading during dvd playback? Windvd loads ~25MB of memory on start, but doesn’t expand after that. The worst part is, I’d be totally unable to explain to her how wrong she was. And when I get the new hard drive and the dvd still doesn’t work, I’ll have to argue my case all over again. Horray.
Around the same time, I screwed up my computer with kerel and compiler version problems while trying to set up cd writing (which now works!). I now know that linux 2.4.21 can be built with gcc 3.3, but not 2.4.20. Lesson learned.
In other news, cdbakeoven is a really cool cd burning app for linux. It’s in apt, too.
My family left with some neighbors and friends to go to Misquamicut (sp?) beach in Rhode Island a little after 7 yesterday (the 4th). It was quite crowded there, mostly due to the weather prediction, as the weather in the morning was largely miserable. It was very overcast and cold up through about 2pm, when the sun finally started coming out. After that it got hot enough for me to justify going in the water, so I did, and it was great, despite being very cold. We went on the boogie boards and then threw the frisbee among the waves (which were quite big yesterday). It turned out to be a good day, although I got a significant amount of sunburn. Oh well.