Microsoft – It’s a Love Hate Relationship

20 03 2008

So first off, let me say, I’m pretty neutral about the different major Operating Systems. I like Windows for surfing, programming, and basic stuff.

I like Macs for their power with photo and video editing and unique and creative features.

I like linux for programming, and using as a server. It’s quite good at those things.

So now we can see some of the nice things about each. Now for most of my computers I’m running windows. (except 2 that are running ubuntu  server) The reason for this is because I’ve been doing so much programming in the last few weeks. I’m putting out about 300-400 lines of code a day.  Thats a lot. Now, at this point you probably know that I’m going to talk about the .NET framework and the Visual Studios IDE’s. I really REALLY hate the .NET framework because it is Microsoft only, just like everything else Microsoft makes. Though with programs like Mono, which I talked about two or three posts ago, I don’t really have to worry about the portability of the .NET framework. So that is one thing that makes me happy about Microsoft; It is still portable despite the fact that they don’t want to be.

Despite those things, I still like the simplicity of most of Microsoft’s programs. Microsoft stuff like Office and Visual Studios are quite nice. They hog memory, but other than that they are very nice. I love Visual studios. It makes programming in any .NET language so much easier and the form designer is probably the best thing about it. Choose the things you want, and drag and drop them. The IDE is so great also for people like me who just wan to experiment. The intellisense in Visual Studios is very nice, and makes it easy to just explore the language itself so you don’t have to go looking through man-pages to find out how to use a function, and that is so convenient. Hooray,  Microsoft made something that I really like for once :]

I still hate Microsoft’s web site. It’s impossible to navigate…





Cross Platform .NET

18 03 2008

Finally, something to make it easier to develop programs for all platforms. I have been so sick of being stuck using the .NET framework, only running on Windows. But Mono has come to the rescue.

Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell, the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications.

As you can see, for any programmer using a .NET language, this is an amazing tool. This allows us to not have to think so much about which programming language is the best to use. In my case, that is especially important because it is generally more like “what programming language should I learn to enable me to make this?”





Thoughts About Distributed Computing

20 01 2008

For me, distributed and parallel computing is one of the most interesting areas in computer science that I have found so far. I would really love to do work/research with it.

Distributed and Parallel Computing, at least from how I see it, seems to be the future of computers and processing power. Processors are starting to reach towards their physical limitations. So instead of making one processor even better, why not just use several, or even hundreds.

Slowly, I’m putting together my spare parts that I have at home into more computers to use. I got two more working in the last 2 days, both of which are semi decent machines. The main thing that I want to do with them is to try to make some of my own distributed applications that will be able to spread its processes out over several computers. Right now I have 3 computers that I want to use in my distributed system, the most powerful of which will be the main computer that is in charge of assigning the tasks. the other two, which are not as powerful, but still can handle plenty, will be sent instructions that will be processed and then they will send results back to the main server.

Now seeing as the 2 secondary nodes that will be in the system do not have the same specs, I have to make sure the server pays attention to the % of their resources that are being used when it goes to assign instructions. If the slower computer has been assigned less, but is using more of its resources, the next task that needs to be processed will be sent to the other computer.

Currently both of my secondary nodes are running Windows XP. This is fine I guess, but it seems like a large waste of system resources to have to run full windows. Though I realize that there is no way in hell that I can actually do this, I would love to write my own very basic OS just to handle being a secondary node in a distributed system. A node that when it turns on, simply connects to the central server, waits for its tasks, and then executes and sends back reports. No need for hogging resources with a gui or anything. All that is particularly necessary is enough to execute instructions and send/receive data over the network. But, when you actually think about it, that would take a very long time for me to figure out how to do. I don’t know the first thing about where an operating system starts really. Maybe I could use a linux kernel and just build off of that and get rid of things that aren’t really needed. I need to do a lot of research on this one.

This seems like it has the opportunity to be extremely efficient. Just a lightweight OS meant solely for being a secondary machine in a distributed  system would be so much faster than running anything i could create as a windows application. Unfortunately, I don’t know where to begin. Maybe I will set this one aside as a very long term project, slowly do research on it, and spend the bulk of my time on other projects are already have going like Fizzure. Haven’t worked on that one in a few days. Need to get back to it. I’ve been doing some little practice applications with sending and receiving data with the TcpClient and TcpListener class in C#. Now that I think I have a much better handle on how those work, it should be much easier to get over the hurdle I was stuck on with Fizzure.

Another goal I have is to make the Fizzure central server able to be split into nodes. Have different sections of all the XML data to be searched stored on different nodes. when a query comes in, the server sends a request to each node, each node searches the part of the data that it has stored and returns its results to the server, which than returns all of the results to the client. This seems more efficient than just having it all done by one computer, though because of network bandwidth, I don’t quite know if it would be in actuality.