Fossil SCM (DVCS)

January 28th, 2010
Fossil SCM

Fossil SCM

When I had really discovered DVCS a while back, I didn’t really notice fossil and for that I’m sorry.

I think it is a (for my purposes) viable DVCS in which I’d given consideration before diving in to use Mercurial (although it is a great system and I’ve had no issues with it). Some of the features of fossil are appealing, such as having the bug tracker integrated or the help wiki integration. Obviously this won’t work for all projects, but I think it has potential.

What is particularly interesting is that the site at fossil-scm.org is actually fossil serving itself. Consider the URL when you visit the home page: “http://www.fossil-scm.org/index.html/doc/tip/www/index.wiki”  It’s a wiki page. If you click on a few of the links in the link-bar, I think you’ll see what I mean. The site is it’s repository — or rather the repository contains the site. While this is arguably a good and bad thing, I can find it’s appeal. It’s certainly a new step (for me) in the management of a project.

While I certainly would never migrate all my Mercurial repositories to fossil for the time being, I am strongly considering using fossil for a class project I’ll be completing for SE-450. If for nothing else but to learn more about fossil and to gain insights in to it’s use as it compares to Mercurial. Fossil is suited to some things and Mercurial is suited to some things. Perhaps it’s time to actively use two different VCS depending on my project needs…

More inf o at: http://www.fossil-scm.org/

Frank Random , ,

Smells to Refactor

January 21st, 2010

I’ve recently been coming across the term “smells” or “code smells.” Once you see it in context, it’s quite clear what it means. Something bad to fix. Java.net posted a list of such smells as well as a suggested method to correct it.  Reference lists like this can be helpful. Even if you are not actively studying things like this, it’s good to review to gain a broad view of what types of things should be avoided.

http://wiki.java.net/bin/view/People/SmellsToRefactorings

This link was given to me by my instructor for a Object-Orientated Software Development class. Again, worth while to review.

Frank Design Patterns, Random , , , , ,

Happy Birthday tOSU

January 12th, 2010

I just realized that the 9th was this site’s birthday. This blog is now over one year old! Wow.

Most blogs only last one month! So this is exciting for me indeed. Although slow, the site isn’t dead. :-)

Several studies indicate that most blogs are abandoned soon after creation (with 60% to 80% abandoned within one month, depending on whose figures you choose to believe) [...]

Source: http://www.caslon.com.au/weblogprofile1.htm#ephemerality

Frank Random

Status – Site Still Alive

January 12th, 2010

I wanted to post a bit of a status update. There hasn’t been any new writing on this site for a while and I want to apologize about that — especially since I stopped right in the middle of my Firefox research.

I do intend to continue the pursuit; however, it has taken a backseat to my Graduate studies for the time being. I don’t want to go in to too much detail, but this term I’ve enrolled in two classes instead of just one.

Hang on to the RSS feed, I’ll be back to it shortly.

Frank Graduate School, Random

Python Speed – Performance Tips

November 30th, 2009

Between my graduate studies and such, I’ve been toying around with ProjectEuler.net questions. I’ve answered some in C but most in Python as I wanted to become more competent with Python.

As I was working on a problem, I was having performance problems with my code. I Googled and had come across this. So, I wanted to post this here for reference:

http://wiki.python.org/moin/PythonSpeed/PerformanceTips

The biggest difference for me  was using the xrange function over the range function. Project Euler requires you to iterate over various numbers and such, so when generating large ranges of numbers, xrange is faster… especially when you are simply creating a large range of numbers because you don’t know how high you need to go.

The other section that was also helpful was the code profiling section.

Frank Random

The Tools of Open Source

October 27th, 2009

As some readers will know, I’ve been working to study the architecture of FireFox. One thing I realize is that I’m not as familiar as I should be with some of the common open source tools, or what I consider to be the common open source tools.

Below is a list of tools that are worth learning (in my opinion). I’ve also included a short description of why it might be worth learning them. (The list is in no particular order)

If you have an interest in open source, it will not hurt to get a quick base understanding of each of these. I’m not saying you (nor am I trying to) become an expert in each of these tools. However, having a basic understanding of syntax and function should save time and headache while trying to understand a project.

  1. Linux: The concepts in and around Linux are often used on other open source products. I think Open Source developers tend to stick with using open source software. So, there is a link there.
  2. Bash: The de-facto standard shell for Linux (as far as I can tell). Knowing the basic usage of bash can save you time and confusion.  Certain scripts can depend on feature of your terminal interface. The Mac OS X ships with a version of bash, which is good to know…
  3. GCC: This is the GNU Compiler Collection and is often a requirement to build open source packages.
  4. Make: This is a part of the GCC but I want to make special mention of this because knowing how to read the script files and error messages can help diagnose an error.
  5. C / C++: Low Level libraries are often written in C or C++, even for an otherwise Java or Python based program.
  6. Python: Python is sometimes used in conjunction with Make to check for build dependencies, verify (build) requirements, or many other possible things.
  7. Perl: Often used like Python, from what I understand but I’ve yet to learn much about it.
  8. Subversion: This is the most common open source VCS software in use (based on my own observations)
  9. Mercurial: One of the two popular DVCS systems. I’ve noticed more and more open source projects switching to DVCSs, so a basic working knowledge of Mercurial and Git is helpful.
  10. git: The second of the two popular DVCS systems.

If you’d like to contribute to the list, please leave a comment below but please ensure you include a fair reason.

Frank FireFox, Open Source Project, Technologies, Understanding Software , , , , , , , , , , , , ,

Using COALESCE to Build Comma-Delimited String directly in SQL

October 27th, 2009

The following article covers a great should-know piece of information for any SQL Server developer. Though, comma delimited strings are not usually desired in database, it can be nice to receive data this way for things like embedding in to a query string or passing over a web service*.

http://www.sqlteam.com/article/using-coalesce-to-build-comma-delimited-string

*I don’t necessarily suggest the web service idea. I was just saying for illustrative purposes…

Frank SQL Server, Tips

Software Engineering Ph.D Dissertations at SIGSOFT

October 15th, 2009

I’ve been considering possible topics for a master’s thesis. I was bouncing around the ‘net and found the following link. I thought I’d post it here for (1) future reference, and (2) for others who might be interested (though, I suppose you are more likely to find it via Google…)

http://www.sigsoft.org/phdDissertations/

Frank Random , , , ,

Python Memory Performance

October 8th, 2009

I’ve been studying Python because it is extensively used in open source projects to script certain types of work or actions. I think Mozilla uses it to verify build time requirements, for example.

But, python itself is a full fledged programming language — not really a scripting language. In fact, Mercurial is written in Python which at first amazed me.

So, anyway as part of my pursuit of studying Firefox, I thought I should (at least) learn the basics of Python so that I could read any relevant scripts. Python is quite different from other languages I’ve encountered.

One thing I started to notice about python is that it seems to use more memory. I’m not sure, nor am I suggesting that it uses more than other languages. I just noticed that memory consumption seemed to grow rapidly when running a python script.

The following article seems to explain why. Instantiating a class is expensive. According to the article, a class is 336 bytes. Since in general, a class will use multiple other classes, I can see why memory consumption was growing rapidly.

Ultimately, I don’t think it matters. You just need to be aware that it happens. A modern computer will run the script without any notice to this phenomenon. You’d need to create a lot of objects to cause a problem. But I do beleive it is worth acknowledge that it happens so that you can be aware of the memory usage. It’s mostly noticeable on my work computer (the company provided) which only has 1 GBs of RAM (it runs Windows XP).

http://www.valuedlessons.com/2008/10/blog-post.html

Frank Python, Random, Tips

Firefox.exe Created !! The Firefox debug build completed on Vista!

September 1st, 2009

This is a follow up post to a series I’ve been posting. The previous post to this posting was “Firefox – Found time to Try again!

I finally was able to get Firefox to build on my Vista machine. It has given me a lot of trouble and I’ve had to troubleshoot several times. Relative to my previous post, I was last held up on a “NSInstall” error. NSinstall.exe would report “Bad File Number”.

The solution was reducing the directory depth. I had my mercurial repository in a sub folder of my documents folder. Specifically C:\Users\Frank\Documents\hg-repos\mozilla-fv-expirement\. I moved the directory to C:\mozilla-fv-expirement\ and re-ran the build script. It did it’s thing and I was able to fire up good-’ol firefox.exe from the [...]\dist\bin folder. I even checked my gmail account on it.

Now where?

I felt that before I started hacking and understanding the source code, I should be able to build the program. That way, if I make a significant change I can see how the code base reacts to it. Though, my intentions are not to hack but to understand how it works. The ability to drop print statements in should help with this… maybe…

Additionally, I hope to contribute to the Mozilla Litmus QA system. I might as well — I did take the time to build the trunk. :-)

Frank FireFox, Understanding Software , , , , , , ,