I use UML to do quick brain storming and when exploring software. While I’ve not posted many write ups here (grad-school!), I generally don’t want to invest a lot of time in my UML diagrams and only sometimes do I even want to save them.
Often times, especially lately, I’ve been drawing on a whiteboard that I keep in my office. I find this to be efficient (even over paper because I’d end up throwing it away).
In one of my current grad-school classes, we are using “Object-Oriented Design & Patterns” by Cay S. Horstmann as the class text book. I’ve enjoyed the book and it provides some decent examples. I bring the book up because apparently the author of the book created a UML package called Violet UML. I’ve found this to be the best software based UML brain-storming software I’ve ever found. Here are my reasons:
- It loads quickly
- I can efficiently draw diagrams without warnings or complex menus to navigate though.
- The lack of UML rules enforcement means that I can draw partial diagrams; diagrams that mean nothing out of context.
- It’s open source
- So far, its more stable / reliable to ArgoUML
If you are looking for a UML package, I must recommend this. I searched and searched for a UML package a while back and I never came up with this. I looked at everything, no matter what and still never found it. So, if you like it, please spread the word (via your own blog, twitter, facebook, etc). I think it is well done software and worth some attention.
http://violet.sourceforge.net/
Frank Design Patterns, Design Tip, Graduate School, Open Source Project, Tips Grad-School, Open Source, Software, SourceForge, UML
The more I work with design patterns*, the more I come to respect them as a design tool. For grad-school, I’m writing a DVCS and I needed some information on ORM patterns. While I’m not sure if this is a real term, I Googled it and found a great article on Invisible to the eye.
The article can be found at: http://giorgiosironi.blogspot.com/2009/08/10-orm-patterns-components-of-object.html
For my project, I’m mainly interested in the Data Mapper and the Table Data Gateway. Both are patterns from Martin Folwer’s book Patterns of Enterprise Application Architecture.
While I’ve not read the book yet, I think I might… After classes…. Anyway, I mostly wanted to share on the 10 ROM patterns listed at Invisible to the eye.
*If you’d like a good intro to design patterns, I love Head First Design Patterns
Invisible to the eye
Frank Design Patterns, Design Tip, Graduate School, Tips Books, Design Patterns, DVCS, Grad-School, ORM

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 DVCS, Fossil, Mercurial
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 Java, object orientated, Refactor, Smells, software development, wiki
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
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
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
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.
- 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.
- 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…
- GCC: This is the GNU Compiler Collection and is often a requirement to build open source packages.
- 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.
- C / C++: Low Level libraries are often written in C or C++, even for an otherwise Java or Python based program.
- Python: Python is sometimes used in conjunction with Make to check for build dependencies, verify (build) requirements, or many other possible things.
- Perl: Often used like Python, from what I understand but I’ve yet to learn much about it.
- Subversion: This is the most common open source VCS software in use (based on my own observations)
- 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.
- 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 Bash, DVCS, FireFox, GCC, git, GNU, Linux, Mac OS, Mercurial, Open Source, Open Source Software, Perl, Python, Tool
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 SQL
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 Dissertations, Grad-School, Ph.D, software engineering, thesis
Recent Comments