Thursday, 27 September 2012

Basic Linear Algebra Subprograms (BLAS)

Learned about BLAS for doing some math. It's the standard API for doing linear algebra. It is much better and faster then writing such algorithms or functions yourself. I used it for basic vector and matrix multiplication.

http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms

Thursday, 13 September 2012

Open Source Licencing

I read an open source or permissive licence and propriatary licence agreement. The first being the Open Source Initiative (OSI) Berkeley Software Distribution (BSD) 2-Clause License, also known as the Simplified BSD License and FreeBSD License because of it's usage in FreeBSD. The latter licence agreement was Skype's Terms of Use.

I found a few things interesting. The main difference between these licences is that the free one stated what you can do, and if you do such things, what you are required to then do. Skype's licence was more about what you cannot do. However both require the user to waive all liability. The BSD license is similar to other such licenses that I have read, like the MIT License. Basically you can do what ever you want provided you include the license with it.

Skype's terms of service seem to be nothing unusual. Which, in my opinion, is a pretty good thing. I've seen some agreement which state that the company owns anything you do with the service, and licenses which require users to waive their right to class action lawsuits. It was also quite readable and understandable.

Building Firefox - Part 2

I've just finished compiling the Mozilla nightly build. Here is what I did.

Git

I had to make a git account which was easy. Then I followed the instruction to install Git on Fedora. With my new account I forked Mozilla's Git repository. The next step was to clone it on my computer. First I fallowed Git's instructions and used the HTTPS protocol. This was going to take a long time as there where over 3 million items. I found out that you could take a shallow clone consisting of around 65,000 items using "--depth=1", but with further reading I found that I needed to have all the historical information (the whole thing) in order to use it properly.

Well after a while may shaking internet connection disconnected and I was forced to start from the beginning again. Fortunately I found out that I could clone it much faster using the git protocol thanks to the Git book. This time the download was much faster and I managed to get the whole thing. Now to actually build it.

Building

After I updated Fedora with all the necessary tools, I was actually able to start compiling it. I ran make and it was successful in the first try, and it only took about 15 minutes.


Wednesday, 12 September 2012

Building Firefox - Part 1

So the first big problem with building Firefox is that it take a long time... or so I'm told. What I've looked up makes me think that it won't be that slow, but I'm not taking chances. Linux is faster than Windows, so I have to install Linux. Fedora has all the latest and greatest stuff and its supported by Seneca College so I'll go with that. My first big snag is that my main drive (120 GB SSD) has only one partition and even still, it doesn't have as much room as I would like. Although I have lots of space on some older hard drives, solid state drive are so much faster, and repartitioning my drives may take a long time, I'm willing to get another 120 GB SSD (Intel SATA 3) drive which is on sale for $100.

Now I've got my drive installed and I've downloaded Fedora's 64-bit disc image and burned it to CD. First I tried to install Fedora using the new Unified Extensible Firmware Interface (UEFI) as opposed to a BIOS install, but after the installation finished and I tried to restart, I couldn't get back into Linux. I was seeing some sort of "GRUB:" prompt. It apparently was some partition problem even thought I gave Fedora the whole new drive to use. Instead I just reinstalled it using BIOS. That worked. Once in I got the latest updates, which was very easy in Fedora (Activities > Applications > Software Updates).

At this point I only have one problem to solve before I could continue. Well it was more of a preference. I have two monitors and Fedora wasn't handling them properly. Apparently it uses an free open source video drive for Nvidia cards from Xorg called Nouveau. I didn't really look into it. I found a good guild on how to used Nvidia's drivers. I followed the instruction and now I have the full power of my new GTX 660 ... probably.

Now that that's all done I can get on with compiling Firefox in the next part.

Nvidia GeForce GTX 660 Ti

I had to get a new video card recently because my parallel programming course required a CUDA compatible card and I didn't have one. The only other option was using the computers in a classroom that is booked most of the time. So after much deliberating I decided on GTX 660 Ti.

I had the HD 6850 (~150) previously and it was a pretty good card for the price.  That card fits roughly in the high middle between the GTX 550 Ti (~$125) and the GTX 560 Ti (~$200). The 560, in gaming terms anyway, is maybe 15% faster than the 6850 and the 550 is about 30% slower, although it can easily vary depending on game and settings. So basically, if I wanted something about the same or just slightly better I'd have to spend around $200. Then I looked at Nvidia's latest card, the GTX 660 Ti. It has between 2 and 3 times the performance depending on settings for $300. For 50% more money I can get much more that 50% the performance, count me in.

New Look

I turned the layout into a mostly black and white one with blue links.  The background is from Nasa's Hubble Ultra-Deep Field (wikipedia). I found Blogger's layout and template pages are easy to use.

First Post

So I have to start a blog. Interestingly enough Chrome's spell checker doesn't think "blog" is a word. Anyway, I figure my first post should be some sort of introduction.

Introduction

First I'll introduce myself. I am currently a student at Seneca College and I'm in my final year of the Software Development Degree program. And the reason this blog exists is because one of the courses I am taking is the Topics in Open Source Development (DPS909) course; which is a professional option in my program. I am required to take several professional options to complete my program.

So this is a blog and I'm supposed to write stuff. If I find it interesting I might post about other things I'm interested in, although I don't want to speculate what those things are until I become interested enough to write about them. Obviously I'm going to blog about my open source work. In addition I may as well write about the other professional option I'm taking this semester. Introduction to Parallel Programming (DPS915) is mainly about programming GPUs.  In the course we are working with CUDA, which is the language for programming Nvidia's products.

Now since the purpose of this blog is to write about the steps and work I do I suppose I should start with the initial state of things.  I'll skip the part about making this blog since the only comment I can make is that I choose Blogger because I prefer Google products and use Google products extensively.

My Computer

Well the initial state of things really is just my hardware and software. I'll just make a list.

Desktop

Hardware

Software

Laptop

Phone