Zort15's Domain
zort15
read my profile
sign my guestbook

Visit zort15's Xanga Site!

Name: Steven
Country: United States
State: Maryland
Metro: Cecil County
Birthday: 6/14/1985
Gender: Male


Interests:
Programming: My more productive hobby is programming. I like to program in C#, C++, and Visual Basic.Net.

Gaming: I'm very much into PC gaming, as you can see from my X-Fire profile. I love to go to LAN parties. I rarely miss a chance to mix programming and gaming.

Computers: As you might have guessed, I'm in to computers in general as well, I've built my own gaming rig. I also provide tech support for my friends. I like LAN parties as much for the fun of setting up a networking as for the gaming.

Expertise:
  • Programming
    • C#
    • C++
    • SQL
    • Visual Basic .NET
  • Computers
Current Computer Stats:
Motherboard: MSI K8N-Neo4 Platinum
Processor: Athlon64 3500+ 2.2 GHz
Video Card: Powercolor ATI Radeon X800 XL
Sound Card: Sound Blaster Audigy 2 ZS Gamer
Power Supply: Antec NeoPower 480 Watt Modular
Hard Drives: 4x Hitachi 7,200 RPM 80 GB SATA2
Primary Optical Drive: MSI 48x24x48x24x CD-RW/DVD-Rom Combo
Secondary Optical Drive: Lite-On 16x Dual Layer DVD R/RW
Case: Antec Super LANBoy Aluminum

Occupation: Computer related
Industry: Computers (Software)


Message: message meEmail: email me
AIM: zort15


Member Since: 7/6/2005

SubscriptionsSites I Read
penguin_steel
springgarden205
HAMster85404

Blogrings
York College Pennsylvania YCP
previous - random - next

Programmers Ring
previous - random - next


Posting Calendar

|<< oldest | newest >>|
view all weblog archives

Get Involved!

Suggest a link

Recommend to friend

Create a site


Sunday, July 01, 2007

(Almost) One year later

Almost one year from my previous post...
I graduated from York College in May and hopefully this means more free time to work on some projects I've been putting off (like blogging). Since my last post, I've been working on a variety of projects.

Projector Mark 2
The most notable project is the Projector Mark 2. In case you do not remember the Projector Mark 1, it was basically a striped down LCD monitor strapped to an overhead projector. The Projector Mark 2, completed early last September, is a massive upgrade using a custom built chassis, a new set of lenses, and a massive 400 watt metal-halide bulb. More details will come soon, but here's some pictures.
MassiveBulbProjector1Projector2
Gigantic light bulbSideFront

Senior Software Project
My Senior Software Project was a cross-platform AIM Client, written in C++ with a GTK GUI. The first semester I worked on a team with two others, and we managed to get the basics of the protocol implemented, and a simple console interface. The second semester we picked up another team member and developed better protocol support, mostly asynchronous operation, and a simple GUI.

Media Database
Another project I started during the school year, is a database to organize my media server. This project, which is still in progress, includes a variety of small applications to assist in the organization of various types of information and files, all centered around a SQL Server database. The overall design (as with most all of my projects) got out of hand pretty quickly. But the current process consists of a simple parser that takes information from XML-TV and puts it in the database, and a useable, though somewhat unstable, listing grid application.
Custom ListingsFull ListingsSearch
Unfortunately, XML TV uses Zap2it Lab's service for TV listings in the United States, which they recently announced will be discontinued on September 1st. Hopefully XML TV will find an alternative data source for the United States.

HTPC Software
The HTPC software that I started on last summer has pretty much been on hold since. The primary reason for this is that I found a few decent, free windows based HTPC programs. The most notable of these is Media Portal. It is not the greatest program, but it does have some slick features and gets the job done nicely, at least for DVDs and media files. It does not support my ATI TV-Wonder Pro. I still plan to revisit the HTPC project at some point.

RSS Reader
The RSS Reader has also gone under significant redesign and has been restarted again. Since the redesign last summer, and especially since the initial design of the original program, my personal requirements for what I want the program to do have changed. One of the most notable features is that the program has returned to using a database, though this time it's a SQL Server database instead of Access, like the original program. Though (for those of you who can't spare the system resources for SQL Server) the internal database manipulation will be fairly modular, so altering the program to use something else should not be too much of an issue.

Comic Book Reader
Lastly, another project I've working on on and off is a comic book reading application. Comic books can be found in CBR and CBZ formats, which are basically compressed archives (rar or zip) of images. I found a few other programs that serve this purpose. The most popular application seems to be CDisplay, which gets major points from me for being lightweight and streamlined. On the other end of the spectrum is ComicRack, which is a much more advanced application. I wanted a program somewhere in the middle, that provided more functionality than CDisplay, but I really did not want the full-scale library features of ComicRack.
Folder SidebarPages Sidebar
Folder SidebarPages Sidebar


Sunday, August 20, 2006

Summer is comming to a close

Well, summer is slowly coming to a close. Moving day at school is next Sunday. Here's what I've been up to for the past almost two months.

First of all, I got a lot done on the RSS reader, but it's still not ready for a beta release. I got XML parser beefed up a lot, it can parse pretty much anything as long as it downloads properly (which is still has some problems to work out).
I dropped the MDI forms system because it wasn't working out as well as I was hoping. It's been replaced with a pretty slick system though. The new system uses user defined controls and the .Net 2.0 docking features. First, I created a base user defined control. This control handles the tab interface, docking controls, and a couple other things. From there I derived some other controls, such as the feed previewer, feed list, web browser, etc... Pretty much all of the windows will be derived from this base control. There is also one other feature handled by the base control. For message passing purposes it was necessary to give each control a window, but under normal circumstances this window is invisible. I took advantage of this by giving the user the ability to tear off controls in the RSS reader. Basically what happens, is the control gets moved from the main form to the invisible form, the from is made visible. When the user chooses to reattach the form, the control gets moved back to the main form and the control's form is made invisible again. This would have been very difficult to do Visual Basic 6, but with the way that C# (and VB) 2005 handle controls, it was a simple matter of adding it to control list of the invisible form.
I've been bouncing around a bit with a system for rendering feeds. At first, I tried putting web browser controls in a tree view, but that didn't work out. Then I wrote a pretty cool java scripting system, but I eventually decided that that would have performance issues if the user tried to view a large number of articles. So I've come almost full circle and and again trying to make a tree list of web browser. The difference this time is I'm writing my own tree list, instead of using the .net 2.0 tree view control in VS 2005.
All in all, the RSS Reader is coming along pretty well. I'll post some screen shots sometime this week.

On the other hand, I haven't really touched the HTPC software since I restarted on the RSS reader. I still plan to get back to work on it at some point though.

In other news, I got my Dell 2007wfp 20.1" widescreen monitor. It doesn't have any dead pixels, nor does it have the banding issue that some of the earlier ones had with the DVI. The picture quality is awesome, and at 1680x1050 resolution, there is a fair amount of screen real estate. Having both a DVI and a VGA input has come in handy as well, I have the media server and my Linux box hooked up via KVM switch to the VGA port, while my desktop is hooked up via DVI. My only complaint is that the monitor does not support picture and picture with the DVI and VGA. The picture in picture source can only be set to the S-Video or the composite input.

I went back to running Windows XP on my laptop, and I now have the media server dual booting XP and Server 2003. Vista was cool, but the hardware and software support isn't quite there yet. It also had some annoying quirks. It also did not perform very well on my laptop. Still, I look forward to it's release.

One thing on my to-do list for the summer that I did actually get done. I did learn some PHP. I actually got an opportunity to work with it at my internship. I was asked to set up this PHP message board. The board was pretty buggy, so I got some PHP experience while I debugged it. I also installed PHP and MySQL on the media server and set up a really quick and dirty message board type of system to experiment with database access. It was surprisingly easy, but not quite as cool as ASP.net.

Another thing I did some research on is Windows message hooks. I found a nice overview on online MSDN library. Message hooks basically allow your program to intercept messages passed from program to program. Since Windows does just about everything with message passing, hooks are quite powerful. What I'm thinking is that by intercepting messages relevant to window creation and painting the messages could be forwarded to another computer so the window would (theoretically) show up on the remote instead of on the computer where they were originally broadcast. I thinking I could devise some sort of per window remote desktop software that could serve as an alternative to stuff like remote desktop and VNC.

Classes start next Tuesday, and between my internship and classes, I probably won't have very much time for working on the RSS reader, or any other projects after that.


Saturday, July 08, 2006

RSS Reader Progress and more Windows Vista

The RSS reader is slowly coming together. I'm working on the AddFeed dialog. This dialog takes the URL of the feed then downloads the feed so the user can preview it before they add it. So far, the feed gets downloaded, parsed, stored in a special database, and then the GUI loads it and displays the headlines to the user. When the user clicks the "Add Feed" button on the GUI, it sends a message to the back end. The backend then downloads, parses, and stores the feed. The database it stores the preview in is different from the one that will store the feeds and articles. This structure stores one header and the articles all in one place. It also doesn't have the separate file to track free space allocation since the user the is not going to need to delete articles.

I've been testing it out on various pages. It works on most pages, but there are still some kinks to work out. Some pages just don't download right, others have extra XML fields so they don't parse right. I'm working on adding a search function to the XML parser which will bypass any extra fields and get straight to the RSS data. The next step will be to render the preview some how. The browser control in C# is much more powerful then the one in VB 6 so I have more options. I haven't decided how I want to do that yet.

I'm also looking at CVS. This is more for experimental purposes than anything else, I don't know if I would use it for this project. Visual Studio has an option to accept a source control plugin, and I've been looking around to see if I could find one for free that would work with CVS. I've installed WinCVS on the media server and attempted to setup a repository, but I didn't get very far with that. I need to do more research.

In other news, I installed Windows Vista on my laptop. So far so good. It had drivers for everything, but didn't have the control panel for the touch pad, and the wireless drive was really flakey. Fortunatly, the XP drivers for the wireless card and the touch pad worked in Vista. I've also got the Office 2007 beta installed. I still need to install Visual Studio and a few other things, but so far it looks good.


Saturday, July 01, 2006

DLLs and Message passing

Here's a quick status report on the new and improved RSS reader project. There were two things I needed to research before I could get started. How to use DLLs across languages, and how to do windows message passing in C# and C++.

The original plan called for having a really generic DLL that would have a class instead of methods. But I was having trouble figuring that out. Instead, I made a DLL that is really specific to this application and only has methods. The more I thought about it, the more I liked this design better. It puts much more of the code in to the DLL, so it's not in the main program. This means less code in both the front end and the back end.

The other thing I needed to figure out was how to do windows message passing. I learned how to send messages in Visual Basic 6.0 several months ago when I made a control panel for Windows Media Player that could play, pause, stop, move to the next track and move to the previous track. I did this using windows API statements like SendMessage and FindWindow, so I figured I could get started there. At first, I figured out how to do this the very hard way, and loaded them directly out of the DLL. While it ending up being useless, it was still kind of cool. Then I discovered that these functions are already defined in the windows.h header, which simplified everything substantially. It was about this point when I discovered I could use the same kind of message loop I use for making windows in C++ to wait for and receive messages.

Actually receiving messages in a console application proved to be slightly more difficult then I originally anticipated. I ended up having to create a window so I could have a handle to receive the messages. I later discovered, fortunately, that it was possible to create windows solely for the purpose of receiving messages.

All that's left now is to do some final design and get started on writing the program it's self.


Thursday, June 22, 2006

Projects update and Windows Vista

Here's a quick status report on the HTPC software and RSS reader. My attention has turned back the the RSS reader. Here's the deal, I'm pretty much starting over, though this isn't as bad as it sounds. There are a couple reasons for this. The lack of design in advance has come back to haunt me over and over. I've been rewriting sections over and over, so parts of the program are becoming unmanageable. Also, the limitations of Visual Basic 6.0 have finally gotten severe enough to make it easier to start from scratch in one of the 2005 languages.

So, here's the new plan...
There are going to be two components to the new design. The back end, and the frontend. The backend, as I've mentioned before, will be written in C++ 2005. This component will (hopefully) use minimal memory and will run continuously in the background. It will take care of keeping the database up to date by downloading new articles. The new frontend will be written in either Visual Basic or C#. This will be the GUI for the program. The GUI will be completely redone to use MDI forms and cool stuff like that, so it will be much more dynamic, customizable, and modern. As soon as I get some serious work done on the new frontend, I'll post lots of screen shots.

I also pretty much became fed up with SQL in the project. Large sections of the program were for the sole purpose of generating SQL statements. The SQL class I was working on would have drastically reduced this, but it still was far from ideal. The new project will have it's own database utility. This should cut back on code (in the main program anyway), and will also cut out that dependency for the program. This component will be put in to a DLL so it can be accessed by both applications. Direct communication between the two applications will be accomplished via windows message passing. When the user clicks "Refresh Feed" on the GUI it will actually be sent as a message to the backend, and the backend will take care of refreshing the feed. The backend will then transmit a message back to the frontend notifying it that it as finished refreshing the articles for that feed, so it can query for the new articles.

Now, this looks like a major set back at first, but it's not as bad as it sounds. One of the major slow downs was caused by the fact the lack of design, which is pretty much done at this point. This means I won't be rewriting sections of code over and over. Visual Studio 2005, and the new versions of it's languages are also much more powerful with substantially fewer limitations. I still hope to release a version by the end of the summer.

Back to the HTPC software. It's kind of on hold at the moment. The database DLL that I'm developing for the RSS reader will get adapted for used with the HTPC project to keep track of the user's library. That was actually the application I started it for, but I decided that the RSS Reader was going to need it much more extensively, so I figured it would be better to write it for the RSS reader then adapt it the the HTPC software's library.

I spent a lot of time working out how the database system was going to work. I was trying to figure out a new way to store strings so they could be searched really quickly, and I actually did come up with something. Start with an array containing the alphabet. Each element goes to a linked list. The first element of the list, is the location of the first occurrence of that character, the second is the second, and so on, until all the characters are accounted for. Now, this would work great as long as the string is 255 characters or shorter, because this would allow the location of each character to be stored as eight bits, the same as it takes to store the character it's self. But at this point, a super efficient string search isn't really necessary. The next step up would be 65,536 characters (16 bits). This would take twice as much memory to store as a string that is 255 characters or less. After that would come 32 bit integers, then 64 bit integers (though it would probably never get that far, because that would be over 4 GB of string data). I eventually decided to stop working on it after I reviewed the results of my final project for Analysis of algorithms. The implementation of the Boyer-Moore search algorithm that I used for it was able to search 104 megabytes of string data in roughly 0.25 seconds. Even the Naive search was able to do it in roughly 0.6 seconds. This is just another example of how much more efficient C++ is than the old Visual Basic 6.0.

On a completely unrelated note, I've been running the Windows Vista beta on my media server. To be honest, I haven't really used it for any applications yet, but from what I've seen, it's really nice. Originally, I was going to include a bunch of screen shots in this entry, but I decided against that for two reasons. One, there are millions of screen shots on line. If nothing else, Tom's Hardware has an excessively detailed article that includes over 130 screen shots. Reason number two, the screen shots really don't do it justice.

The beta is of the ultimate edition as well, so it comes with the Media Center components. Now, I haven't installed a tuner card in my media server, so I haven't tried out the TV features. All in all, I was more impressed with Myth TV, but there are still some things I need to checkout in in Media Center. While it can play mkv video files, I was kind of disappointed with the fact that it can't show the subtitles. I also haven't figured out how I'm supposed to port video to another computer. It has the media center extender, which allows the user to port video to other devices that connect directly to a TV, but I still can't figure out how to port to another computer.

At some point, I want to get a copy of the Office 12 beta installed on it. Then I can see how well that works under Vista. I'm also thinking of installing Vista on my laptop for regular use, but my laptop doesn't have the hardware to run the fancy Aero interface. The beta doesn't expire until June of next year, so I should be able to use it all next school year with no problems as long as I can find drivers and everything for it. It also is supposed to have more power management features, so that might help out my aging laptop battery.

I have seen some pretty severe stability issues, but I haven't seen anything (except a glitch in minesweeper) that shows up during regular usage. I did initially have a problem with drivers for my IDE controller, which meant no optical drives (the four IDE channels on the motherboard are all taken up with hard drives). I tried to get it to take the XP drivers, but that just made it crash (pretty catastrophically once), and eventually it just started saying that the drivers were not compatible and wouldn't even let me try. I eventually told it to use the generic Silicon Image IDE controller drivers and that got the job done. And, just for the record, it did not need me to restart after installing the drivers, so it appears Microsoft was serious about reducing the number of times users would have to restart their computers.

As far as gaming is concerned, I haven't tried that yet. Windows Vista does use DirectX 10, which is supposed to be substantially more efficient then DirectX 9, but no games are coded for it yet, so those benefits are not visible. Extreme Tech posted an article about game compatibility though.



Next 5 >>

Total Hits:

Unique Hits: