Skip to content

UCOSPLogRobinJastrzebski

Kevin Brightwell edited this page Aug 26, 2015 · 1 revision

Each UCOSP participant is asked to log all their accomplishments as well as the difficulties they have getting set up to understand Umple and other experiences they have. Difficulties might include understanding how to model in Umple, using UmpleOnline, code that is difficult to figure out, and development tools that are hard to figure out, or don't seem to work properly. The more log entries added the more we can better get a grip on the usability issues with Umple, and the more we can help future new contributors come up to speed.

Log entries in reverse chronological order

April 11th, 2013

It's been a busy little while and now things are a bit back to normal. I'm continuing with issue 259 (on Google Code) and so far I haven't been able to see how the analyzeKey() in UmpleInternalParser_CodeClass.ump executes twice per class analysis. I've been playing around with the function and I haven't been able to figure out how I can solve this last problem on 259. I'll continue to try and find a solution in between wrapping up a few last assignments today.

April 2nd, 2013

I'm having a tricky time fixing up the last part of issue 259 (on Google Code). I narrowed down the problem, but finding a solution needs a bit of thinking. Here is the isolated problem:

class A{

0..1 -- B }

class B{

key{ A} }

When the parser analyzes each class individually, class B does not have any associations defined in it, so it flags the error that A is not defined in the class. Right now there are two places in the analyzeKey method where error 27 is issued. The first is where the class does not have any associations, state machines or attributes. This is the area I need to change, because above is an example of how a class can essentially not have these things and still be considered correct. Class B does have an association, but the definition is in its associated class. At this point, I'm not quite sure just yet how to go about fixing this. I need to add some sort of check in the first block where error 27 gets issued to allow this situation to pass and all others to fail accordingly. Since the definition of the association is in class A, and there is no link to class A from class B, I'm a bit stumped how I'll make this work. This one is tricky.

I've moved back to issue 378 (on Google Code) to adjust the php and ruby generators to behave the way the java generator does now. This had to do with the compilation errors coming up in the set method for java because of a naming collision (the passed parameter in the method signature was the same name as an iteration variable). This was a pain to go through the tests so they pass, but this will take up some time until I can figure out what to do about the last bug fix in issue 259 (on Google Code).

I also found this useful when trying to figure out how to use php on the command line: http://www.netmagazine.com/tutorials/how-use-php-command-line

March 28th, 2013

Today I'm taking some time to fix the warnings that are showing up in the Umple build. This is a result from my work at the beginning of the semester with issue 259 (on Google Code). Today I fixed part of it. I made it so state machine names are allowed in key statements. I created a small patch and am committing it as we speak. I am hoping the full build passes but I think it should be okay considering the patch is quite small. That and I tested it a few times to make sure it was okay. Once this goes through, I can try and tackle the other item that is being flagged as a warning. I have not yet looked at the code again to determine what part of the grammar it is. Looks like the patch went through! That was kind of exciting, being able to fix, test, and patch all in one day. Albeit was a small fix, it was still good to get through the entire process in one day.

Another thing that was neat, was that I refactored some of the code in the analyzeKey function. Some of it was redundant and one part of it was added by me to begin with. Shame on me! That's all tidied now, and I think it is a lot easier to read and understand what is going on in that method.

March 26th, 2013

Turns out my patch was not ready for committing so it's a good thing it didn't actually get committed. I had been playing around with getting my added test case to work that I had forgot to update the generated code that the test compares it to. If you change the .ump file then obviously the previously generated code won't match, but it's not so obvious if you forget that minor detail. Now I'm just trying to tweak the php and ruby files. I apparently must add a ruby and php test template to compare to so my test passes. I'm not sure how that all works since the tests are in java and I thought I only would need to create a java generated file for test comparisons. This isn't the case, so the ruby and php tests are almost done. I've been telling myself that for the past probably half an hour or so and it still hasn't resolved itself so realistically I hope that I can make the php and ruby files work with the tests within the next half hour. I've been running template.test too often to count right now!

March 23rd, 2013

I don't know whether I should be mad or not that I didn't commit my patch earlier. I did an svn update today on my working directory and patched it with what I thought was a ready-to-go patch to be sure it was ready to commit. It apparently isn't as ready as I thought. There are some failed tests with php and ruby, which I swear weren't there before. Now I have to figure why that is and how to fix it. I'm double checking though to be sure that there actually is a problem that needs fixing on another trunk. Here's to hoping because these errors need some digging to understand what they are trying to point out. Not as obvious as some others, that's for sure.

Alright, so it turns out I just had a corrupt working directory somehow. I guess the first round of svn revert -R . and svn update didn't work for some reason and I had to do it a second time. I also just watched the build on cruise.eecs.uottawa.ca:8080/dashboard/tab/builds. I wasn't sure what I would do if it didn't work. But the build was successful so that's a good sign! Now I want to backtrack to the first issue I was working on where I missed two test cases.

March 19th, 2013

I've finally gone through all of the java changes and everything compiles finally! I was struggling for a while because I couldn't figure out why some functions had the old mapping of parameterOld and/or parameterNew. It was a bit frustrating because I was so close to getting everything to pass. I forgot that there's code injection allowed and thank god people put comments as to were that code injection is and which .ump file. It made things much easier to figure out. I don't think I would have thought of code injection as a possibility as to why things weren't working. Now I just have to figure out if this same issue applies to php and ruby. This I am uncertain of definitely. I've done some php work before but ruby I am not familiar with. This is the next step to see if maybe this issue applies only to java and I can call it nearly complete.

March 18th, 2013

This issue had me confused for a little bit when I was debugging my change. I wasn't sure why certain files had their setMethod signature changed versus other scenarios where this wasn't the case. I found the original .ump files to see what the differences were and it all started to click. Now I am just tediously going through all the test template files. Apparently there's some tests that parse .ump files and compare them to a pregenerated template test. If they match, the test passes. Right now they do not because of my change and I couldn't think of a quicker way to get through these changes. The other thing I am wondering about is all the changes that need to be made to the php and ruby template files then.

Does the index.html file bring up the errors that are in the ruby and php files too? Maybe when I complete all the java fixes, will the compiler flag the errors in the php and ruby files as well? I guess I will cross that bridge when I get there. It shouldn't be that difficult to figure out, just time consuming to make all the necessary changes.

March 13th, 2013

I am having some problems figuring out what is causing some tests to fail. It was especially frustrating because whenever I would run template.test to see if my changes made sense, the changes were not reflected. For issue 378 (on Google Code), I changed two values in the map functions for singular cases in Generator_CodeJava.ump:

This line:

UpperCaseSingularLookupMap.put("parameterNew", "new{0}"); changed to: UpperCaseSingularLookupMap.put("parameterNew", "aNew{0}");

(And similarly key parameterOld was altered)

This change fixed the test case that I was trying to resolve, however, it caused quite a number of errors in the testbed when I ran template.test This was to be expected as I am changing a key's value. So I had changed the first few lines or errors where the test referenced "newClass" or "oldClass" to their new values of "aNewClass" and "anOldClass". The weird thing is, when I saved these changes and ran template.test again, the changes were not reflected in index.html. Yesterday I was thinking I was changing the wrong file (maybe in the other trunk I had pulled), but this wasn't the case. I ended up reverting my changes and left Generator_CodeJava.ump in it's original state without prefixing the parameterNew and parameterOld keys. I did change the first file which indicated errors so the first assertEquals function had the "aNewStudent" as the comparing string instead of "newStudent". I had to run a full build and it finally picked up the changes. Needless to say, I do not know why running the quicker ant script template.test does not pick up the changes. I have to run the full build for the changes to be reflected.

This unusual behaviour aside, I removed the first few chunks of errors, but the remaining ones seem to be trickier. Each involve failing in SampleFileWriter.java and TemplateTest.java at the same lines. When I look at the .ump files that are being read, there isn't anything that I can change in there that would make it work. I haven't yet figured it all out yet, but it's going to take my longer than I had hoped.

Looking at some of the errors makes me worry a bit because some of them don't look like what I want to happen. What I want the functions to look like is:

setClass(Class.. newClass) {

for(Class aClass: list)

for(Class aNewClass: list)

for(Class anOldClass: list)

}

I believe some of the errors I believe I'm seeing a change in the method signature like this:

setClass(Class... aNew*Class)

I think this is going to cause the same errors as before. Sigh. I might have to go back to the drawing board to see what I can do. I'll have to take a look later.

I also have been having a lingering annoyance that I've been using a work around to keep developing. I get @UMPLE_VERSION@ errors if I run: ant -Dmyenv=local -f build.umple.xml template.test

after I run: ant -Dmyenv=local -f build.umple.xml umpleSelf compile packageMainJar

The only thing that has been able to fix this is if I run a full build: ant -Dmyenv=local

I did look at the umple version error wiki page to see if I could fix this quicker than running a full build each time because a full build can take anywhere from 6 minutes (without Eclipse open) to 12 minutes (with Eclipse open) on my computer. Needless to say, my computer sucks. I tried running the template.resetVersion script that was posted in one of the wiki pages, and that did not help.

March 12th, 2013

I have finally become a committer. Hooray! This was one of my goals for the semester so Tim can say he had his first group of UCOSP students who were all committers. Now I just hope I don't screw up! I checked out another copy of Umple to apply my patches to and hopefully this new process will be okay for me. I also am very paranoid of breaking the build. I will have to look and see what to do to remove a patch (if that's possible) and revert Umple to a working state if that were to ever happen. That would probably make me feel a bit better about everything.

I also don't understand what the difference really is between the two checkout versions available once you become a committer. The only difference is a username is required to checkout a copy, so it keeps track of who checks out a version of Umple I'm assuming. I'm also assuming it is okay I still make my patches in my anonymously checked out version of Umple and apply it to the one I checked out as myself. I figure this is okay because how would my other patches go through otherwise.

I am about to finish up issue 378 (on Google Code). I changed the map interface by one character and now I have to adjust a pile of tests. This will take me a while because I fear string replace functions. Better if I do it manually this time. I'll be moving onto issue 347 (on Google Code) as my main focus, but I may have to back track to issue 259 (on Google Code) I believe. Which is kind of funny because as a committer I can close issues, and today I marked it as "fixed"...and it's getting reopened. My first issue just refuses to die. That and becoming a committer AND having essentially a failed patch is awfully ironic. I don't feel too bad about it though. It was my first contribution to the project and now that I am more comfortable, I am hoping it will be a quick fix. This what learning is all about, right? Making mistakes and fixing them (and also never repeating them).

March 6th, 2013

I am about to send a patch off and with fingers crossed, the patch is clean and all is good! This issue was kind of hard to keep straight. There are a few issues that are occurring here and all were quite similar. I also am proud that I got through a lot on my own. I had spent so many hours trying to figure out what was going wrong and I had a difficult time learning how to interpret the errors the junit tests were creating. So I read a little bit on how junit works because I wasn't sure what it was all about. And as I am writing this entry I realize I did not include my tests in the testbed! I better do that now, so I don't forget to include them with my patch.

So junit! I found a really awesome tutorial using junit. What makes it awesome is that you don't have to even read the whole thing to get the picture. The first few paragraphs and a few pictures and that's all you need. There is some information in there regarding using junit and Eclipse, which would be helpful to anyone who is actually compiling in Eclipse (I don't think a single one of us this semester is doing anything beyond a text editor and the command line). From my understanding, junit prints reports in a sense to an xml file, which ends up being the handy local website found under dist/qa/cruise.umple. This was why I was having a problem figuring out what test case was causing the problem. The part of the code that was causing errors were actually in the file the piece of code was reading, not the actual erroneous code. So I had to track down what .ump file was being read and what that test case was. I thought that this was how each error was, but then I ran into an error where this wasn't the case. The name ended up being the method name in the test bed (one of the junit test method names). So, it does take a little digging to find out where the error is, but it can be done.

And now adding my tests have caused problems. I'll have to see what I did wrong. This an elusive patch! Oh yes, make sure that you name the test file the same as what the program has for a file name. Geez, it's been a long day. Too many silly mistakes being made at this hour! But the patch is heading out! I've got a good feeling about this one.

March 1st, 2013

I am still working out the kinks for 288. Seems like every minor adjustment I had been making would fix one test case but somehow break another or I would find another test case that I wasn't sure would be covered and it wasn't. I also had run all my local tests and they passed, ran the template.test and they had passed, ran the full build and it had compiled without failed tests, but I had forgot to 'svn update'. I was so close to a patch and I had to do it. Then when I ran my version of umple against template.test, I had failed tests. I'm not sure what had happened, but I wasn't happy. I had my hopes set up for completing this patch and then it slipped through my fingers just as quickly. I had finally found something very useful in the AssociationEnd class that helped me keep all the test cases in tact (isDefaultRoleName). I don't know how I didn't see this earlier. Now that I have that all straightened out, something is going wrong in the full build. There are tests that are showing up as failing for some reason. When I isolate the "problem" classes from the specified file, there are no errors that occur. Then I decided to copy the whole file that is causing problems to see if anything else interacts with it that maybe cause the error, and there still is no error arising. It's time to step away from the issue and come back to it at another time as there are multiple spots where there are errors. I've been working for a few hours now and I need maybe an hour or more to continue to debug each failed test. I was hoping that I'd get a patch out tonight, which has made me a bit disappointed that I could not. Hopefully when I look at it tomorrow with a fresh mind, everything will fall into place and it'll be fixed with less drawbacks than today.

February 26th, 2013

Right now I am currently debugging my fix for issue 288 (on Google Code). I've got the test cases covered but in my fix I've included some cases which should not be flagged as erroneous. This should just be a matter of changing some conditions to allow those cases to filter through (I hope). I started out playing around with associations and getting a feel for what I could and couldn't do for the issue. Then I found where message 19 is issued and started to trace some examples through. I had a tricky time with this one because I did not quite understand what was going on for a little while. It was only after I through in a couple print statements and saw how the function handled some examples where it started to make sense. I actually stumbled across a case in which the compiler could not handle. I'll have to make an issue for that one and try and tackle it after. That one may be tricky to trace.

In trying to figure out this issue, I had run into some problems compiling because of how umple builds itself. It runs itself by using the last version of umple.jar in the dist folder, which caused me a little hiccup because of my own failed logic/code. It would create the umple.jar I needed and I would test the cases manually to make sure it worked, but then when I made changes and try to recompile again, the build would fail. At first I thought it was because my solution wasn't covering the test cases 100% so it would fix itself once I had the cases covered. So I would copy a clean version of umple.jar into the dist folder to replace the one causing a failed build and build again. It was only after I got all my test cases to be fixed that I noticed that umple couldn't compile itself still because of all the errors my version of umple was causing. That's where I am at right now, looking at some of the uml files and seeing what is being caught by my changes and how I can prevent them from being flagged as errors as they clearly are not (they never caused problems before).

February 19th, 2013

I think I am now heading in the right direction and starting to develop better habits, too. I analyzed the problem with issue 288 (on Google Code) and found that the example code provided gives errors in two spots. The errors arise from naming conflicts within a function and there is pluralization of an object when there shouldn't be. With the pluralization issue, there happens to be two lines of code that are identical except the first line that appears, the class object is pluralized when it shouldn't be. I first looked to see if it was defined somewhere in the code first to see if it makes sense that it should be there. The class definition shows that the object is defined in it's singular form (course, not courses).

Since this issue has to do with the java generation, I need to alter some file(s) in the UmpleToJava folder, which ones I am not sure. JET files apparently can only be compiled in Eclipse currently, so I went to see what I had in Eclipse (I don't work with Eclipse to compile, it's just a fancy text editor right now for me) and I don't have any .jet files anywhere. I then added the UmpleToJava folder to my Eclipse like described in the DevelopmentSetUp page (see step 3b or 4 --- I did step 3b). JET templates apparently compile automatically (if you've installed jet properly, fingers crossed I did because that's already more than a month ago).

Now that I have the project I need loaded into Eclipse, I need to know WHAT file I actually need to alter. I went through the folder and looked at the naming conventions of the files to see how things are split up. Then I went back to issue 288 (on Google Code) to see, what again is CAUSING this bug. I re-read the comments of the issue and saw that Tim said that the bug is caused by one single to many associations. I looked at Eclipse and there is a .jet template named association set one to many. That's probably a good file to start looking at.

Firstly, though I trust Tim's conclusion to what the bug is, but I should test ALL possible cases and make sure that isn't the only one causing it. Now I don't know how to write all the different kinds of associations so I'll consult the Umple User Manual and write up a file with different valid ways to write associations. Yay, test cases! So this is where I'm at. Consulting the manual and writing up and testing to see what does and does not flag this bug. From there, I'll be able to narrow down and tackle what file needs to be changed and run my tests again.

As I've kind of taken a step back to realize what I'm doing when I approach issues with this project, I do have something to share with other students that may one day stumble upon this log. I feel very pressured to move forward and try and accomplish things quickly with almost everything that I do programmatically speaking of course, but I'm doing it blindly and without a plan. Then I screw up and get lost and confused and stressed and want to give up. That's pretty easy to do with an approach that I've definitely picked up from school. With deadlines and stress, sometimes you just rush into things and end up wasting more time than you would if you took a deep breath and thought about things rationally. I think this new approach is heaps better. Firstly, stop being stressed about making leaps and bounds, because it's discouraging right from the start. It isn't helping. This course is about you, and working towards making you a better programmer, which ends up helping your project be a better project! Win-win! Maybe fixing bad habits, which I've found: not stopping and thinking the problem thoroughly, how to go about fixing it before diving in and trying to fix something I don't completely understand. I waste so much time, not knowing where to start and stressing out that I don't know the technical tools to complete my tasks. Don't stress about not knowing some of the technical stuff, it'll all come after. The most important part is that you can analyze the problem, think about a solution that could work and try and work towards making that solution a reality.

February 16th, 2013

Im looking at issue 288 (on Google Code) and trying to figure out what needs to be done. I've replicated the error and I understand what's going wrong, but it seems to be a little more difficult finding where I need to make changes and how to compile it from here. The wiki page on editing JET templates leads me to believe my changes will be done under one of the jet files under the UmpleToJava folder. I don't really understand how all these files work together in generating the language requested, but maybe when I finish this issue I'll have a bit more understanding of it. I read the Architecture page again to try and fill in those gaps. I don't get why we have an UmpleToTemplate folder, which only contains a mere few files, but I guess that isn't too important at this point. The next thing I did was open up a few .jet files to see what they look like. It's a bit intimidating. I'm not really sure how to even compile the JET templates so I tried finding that out through a little bit of trial and error and reading of course. The wiki page on templates says that the JET files need to be compiled through Eclipse and I've been trying to figure this out. I don't have any JET templates in my Eclipse project, all the template folders are in the same directory as the other projects I have loaded into Eclipse. I might have to add these into Eclipse then and try and compile them? I tried a few different things now and nothing yet.

February 10th, 2013

It seems I have been forgetting to update the wiki pages when I work on Umple, but I feel like there hasn't been much real forward progress anyways. I thought I had conquered issue 259 (on Google Code), which was correct to my understanding of keys, but then I found out through Tim that associations can also be included in key statements and thus making my patch a failed one. I have been trying to figure out ways to get past this issue and it still frustrates me because I know it's essentially done, except for figuring out how to obtain what I need as a data type (I know how to obtain a list of associations from the class, but I need a token).

I'll explain my last obstacle as I don't know what else to write about.

At first I set up the associations as I had the attributes, thinking they would be the same. This still didn't fix my issue and it ran essentially the same as it was before. I then through a println() in to see what was actually stored in association.getName() and it was printing out 'DY:stuff'. I'm still not sure what the lefthand side of the colon is from the syntax but my assumption is that it has something to do with the navigability of the association. The righthand side of the colon is what I want. I want stuff! From going through the code, I've learned that 'stuff' is the role name, but to which class it belongs I am unsure. I first thought that I could just parse the string based on the delimiter ':', but I thought I would ask Tim as I wasn't sure about my approach. I don't know every syntactically correct association definition, and how each of them would be coded. Maybe the first role name after the : is not the one I am necessarily after.

I'm looking at the analyzeAssociations() and seeing how the association is broken down. I've once again added a few println's to figure out exactly what is going on. Now that I have figured out what I need to do to obtain the roleName to check if it is a valid association, I've come to a small halt. The analyzeAssociation() uses the Token class to break down associations. I have an Association and need a Token. This is where I am not sure how to go about obtaining a Token to do what I need to do. And that's where I am, trying to figure out how to go about this.

On a different note, I finally made my own makefile, which was worth the small amount of time it took to put together to refresh my memory. I was tempted to just use Geoff's that he sent out to the team, but at the same time, I'm not learning anything if I just use someone else's files. That and I knew it wouldn't take a long time for it to all come back to me so it was something I preferred to do myself. I think I put it off for quite sometime because I felt a bit stressed to be making forward progress and that taking time away to do something that may not be directly working on the project isn't a priority. However, in this case, it just makes my life easier rather than copying and pasting commands from a separate document so I should've made it a priority considering how little time it took.

Update: Yay! I think I'm on the right track now! I took a look at the duplicateAssociations function and the AssociationEnd class has a getRoleName(), which at a glance made me jump for joy! So fingers crossed, it's what I need to finish up this issue. I'll keep you posted!

Update 2 Alright. So the first way I was attacking the problem was difficult because I was trying to do the same as what was being done in the analyzeAssociation(), which used Tokens to obtain the roleName. The way it's done in checkDuplicateAssociations() --I don't think thats the exact name, but its rather close-- is that it uses the AssociationEnd class. That class made things easier as it has a function getRoleName(). It was perfect! That and my fix went through. Happy sunday! Now on to some midterm studying!

January 29th, 2013

It has definitely been too long. Between coming back later from the code sprint, getting into a car accident, catching up with other classes, and working, I have been putting off finishing up issue 259 (on Google Code) until today. It was a bit slow coming back to code again on the project but I picked up the processes quicker than when I first started. I think what saved me was my notes that I took at the code sprint. I have a little cheat sheet of my own that makes sense to me that helped me get back into the groove of things. I also feel a bit more relaxed working on the project now that I have had a lot of help from Tim and my teammates after the sprint.

Today I finished up issue 259 (on Google Code) and I'll need to look for another issue to start working on. Hopefully my patch goes through and everything works well!

I still need to go over the user manual and review makefiles (which should only take me 30 mins max to play around with on my system because while copying a pasting the commands is easy, I can make it simpler with a makefile). It's not lazy programming, it's efficient programming.

I'll pick another issue to work on, get through my makefile tonight and maybe work on a document that I think helps students get up to speed that I can post in my blog later this week.

January 20th, 2013

It feels like I haven't written anything in a long time, but it's because we've been doing a lot of work! Our code sprint was January 18th to January 20th and it was one of the best experiences I've ever had. It was amazing to be around so many people and seeing what people accomplish over a weekend's duration. I was a bit disappointed that I didn't get as far as I wanted, but I feel like I still took a lot away from it at the same time. I got to know my teammates and got to struggle with getting my environment set up properly along with getting familiar with it, as everyone did! We got to bond over failed tests and frustrating moments and come along way as well. Our team was definitely one of the smaller ones at the conference, but not the smallest. There was a team of four! I already heard stories of people being disappointed in their mentors and I feel lucky. We have a mentor who is passionate about his work and being around that energy reminds you what it's like to build a project that means something to you. The energy is definitely contagious! It helps that another student is as into it as the teacher and he was more like a mentor than other team's mentors! So it was nice to laugh at each other's frustrations and be supportive in joyous victories.

As I worked through the day, I kept a sheet of notes and things I need to learn or look up after the sprint so I knew what came next. I got to ask questions about umple code and understand the file structure and how each thing communicates with one another. I learned a small portion of it and realize that I need to get much deeper in the code. And I will learn it as the semester goes on! It's a puzzle and I want to figure out how it works and I think people forget that about software engineering. Sometimes you can't just walk up to a project and know how it works, you need to take things apart, break things and you learn how it works by putting it back together. Software engineering involves reverse engineering sometimes for anyone to become an expert.

I had a good laugh after the sprint as a group of us went to Stanford to walk around and check it out. I mean, why not? We were essentially RIGHT next door to the campus. So we took a walk and there were tons of tourists taking pictures and people playing with their dog in the park. It was really beautiful. There was a tower there and we went up. Geoff and Benoit didn't come up. I wasn't sure why, it was only $2. It was a good $2 view. But as we were there, Geoff took out his computer and while we were all taking pictures, he broke and fixed umple! He was committing patches while we were sightseeing. It just made my day.

I wrote down a few commands this weekend and I need to refresh myself with makefiles as I haven't needed to use one in a long while. I'm going to write my own makefile so familiarize myself again, though it was cool another teammate sent theirs to us.

On my first day, I quickly picked up from Geoff his process of how he does testing and debugging and I was off. I first asked for some help to understand the problem because I hadn't gone though the umple manual or the grammar rules so I wasn't sure what the problem in the program meant. I then started to play around with files and look around. I made some changes and learned how to compile umple to obtain the umple.jar file so I could run my tests. The command for that is 'java -jar umple.jar nameOfYourFile.ump'. I copy that newly compiled umple.jar to my test directory and run the tests. I need to learn about jet files as I heard Geoff and Tim talk about them here and there as I was working on my own tasks. 'java -jar umple.jar nameOfYourFile.ump -c -', the -c means compile and the extra '-' means all jars.

Another a command I found useful was 'ant -Dmyenv=local -f build.umple.xml umpleSelf compile packageMainJar'. I don't really understand it completely, but I will take it apart and get it. To run my build against several test cases I run 'ant -Dmyenv=local -f build.umple.xml template.test' from my build directory.

I also learned a neat web interface that shows you your errors. This can be found at /trunk/dist/qa/cruise.umple/index.html. This was really handy! It helped arrow down my problems pretty easily.

Now All I have is to figure out my buggy code and why it's giving me problems in some other tests. I feel it's really easy and I should be able to catch it pretty quick. I felt maybe a bit distracted this morning as I felt there wasn't enough time to dig deep into the code. The music and talking didn't help over the weekend. It distracted my easily and I had to whip out my headphones to tune myself into what I'm working. I can focus on my work and have only one coherent noise in my ears instead of noise coming from every direction.

I have some time now that I can tune in and maybe get that last part of the issue fixed. I feel I am so close that it shouldn't take long. Just getting through another patch would be good practice now. I want to keep the learning going on consistent chunks.

Beyond umple, I felt inspired to hack. I think it's a good way to get creative and have fun with things. Because of Geoff, I want to try and install Ubuntu on my old laptop and see how it ticks. I've NEVER used Linux, but why not. I have a computer I don't use, and it's just collecting dust. I could use it to learn something new and that's what I want. I also felt inspired by another student from Quebec. He was talking about doing technical art installations. I didn't understand the first part because I wasn't in the conversation but I heard that they set up something where a person could blow into the microphone of their phone and the location had a screen with a picture of a bubble gum bubble was being blown and popped. I thought it was a neat way of maybe learning how things work if you weren't familiar. I neat use of technology. Hopefully I can do something like that too. I'll just have to think of something cool to do.

The sprint was inspiring all around! I got into the team and the project we are all doing, and I felt inspired in other ways. It was fantastic. So it was great to have people who were committed to the project. And maybe that's what makes our team awesome. I think everyone got into it in their own way.

January 14th, 2013

This one is a little delayed, but I figure I should summarize what I've been doing before I continue forward. I was having problems understanding why the svn command wouldn't work considering I had installed macports and Xcode previously. I reread the requirements for macports and it had mentioned something about installing command line tools. I had to re-sign up as a developer with Apple(changed my email address a while back and haven't done any iPhone programming a while) and get that package to install. After that was all said and done, I grabbed a copy of umple.

During the installation of the above, I started downloading the latest and greatest version of php and ruby as I started setting up a version of UmpleOnline to run locally on my computer. I started messing around with the apache config file(httpd.conf), which I had only done once before. Configuring web servers is something I'd like to know more about, and hopefully I'll gain a bit more knowledge about it once I get everything set up properly.

I did run into some documentation that made me a bit confused/weary if I did things correctly. Under SettingUpLocalUmpleOnlineWebServer it states that users may encounter an apache2 error and to fix this, a server name should be added to the config file. I haven't run into the error, and left that part out of my config file. I guess this is more clarification than confusion if anything. I stopped at step 4 to set the permissions of all the files, as I was concurrently working on getting umple to compile.

I did run into some random issues in getting umple compiled through the command line. Umple does not come with umple-read-only/dist and umple-read-only/cruise.umple/bin, these folders are created by any scripts (or in my case, me). I was getting a compiling error stating that these folders/files did not exist, so I created the folders hoping that would fix my problem. It didn't fix my problem.

I then followed an email from Tim trying a few things out and after running the full build command, I could run the quick build command no problem. Things are compiling now, so everything is good.

I haven't played around with any Eclipse compiling concerning Umple, which I am going to leave until I get to the code sprint. I am sure each of us on the team have started getting comfortable with a certain way of doing things and that I can pick up some tips from those of us using Eclipse to work on Umple.

I guess I'll continue setting up UmpleOnline locally and start having a look at what makes Umple tick. Here are the next few links I'll be reading up on to get a feel for Umple and get me started on the issue I've been assigned: http://code.google.com/p/umple/wiki/Architecture http://code.google.com/p/umple/wiki/ContributionProcessToUmple

And to note, php and ruby are still just downloads on my computer and haven't been set up quite yet. That's also on the agenda for today (Jan 16).

January 10th, 2013

Today I've still been setting up things it seems. I'm slowly coming to a better understanding of how things work. Once everything is installed and my environment is up an running things will go a bit quicker.

During our first hangout on Tuesday, one of the team members asked why we needed to download php. It would make sense that we would need some version of php to get php generated code. Since I had only compiled a .ump in Eclipse at that point and it automatically generated java, it had not crossed my mind how ruby and php would integrate themselves. From my understanding, that Eclipse can only generate java code when compiling any .ump files. It is through the command-line/terminal, where you can specify the language you wish to have generated files (along with UmpleOnline).

This is just a reminder for myself as I just downloaded macports: --> to keep macports up to date run this semi-regularly: sudo port -v selfupdate (taken from macports)

I'd like to get to compiling Umple tonight via the terminal, but I'm having some issues getting the svn command to work for me. Opening a new terminal didn't fix it, hoping now that a reboot will solve my issues, and hence my save on the blog (for now).

Well, looks like I won't get to compiling Umple tonight. I had upgraded my OS X from Snow Leopard to Mountain Lion as Umple requires Java 7 and I guess Snow Leopard doesn't make the cut. That being said, I need a new version of Xcode for Mountain Lion (somehow, the old version of Xcode has disappeared from my computer, maybe incompatible). Hopefully the downloading goes quick and I can move along. I'll look into Fink while that downloads to see if that will work with what I have installed on my computer right now.

Update: both macports and Fink, both need xCode. Looks like I will have to pick things up tomorrow.

January 4th, 2013

Alright. So things have been going pretty good. I've been playing around with UmpleOnline and I'm impressed with what I've seen so far. I've done example 0a and am still currently installing what is needed on my computers. If anything, the only road block has been downloading and upgrading OS X. I've been trying to move forward and getting everything installed and working for Windows 7 while I wait to do it all again for my mac. At this rate, I'll be quite familiar with what to do (and what not to do) when setting up to develop Umple. Once I get both computers up to speed tonight I'll have a go at compiling example 0a and move forward with the rest of the tutorials. More hands on experience will go a long way. Sounds like Geoffrey has really hit the ground running and I want to be right there with him. I'll post more about my journey with Umple and any other relevant information I see fit.

Clone this wiki locally