This post has been moved to blogspot. No further posts will be made to this location.
I blogged before about getting new head phones. I liked them, they felt great, but they had a really loud hiss that just ticked me off 'cause I had to keep the volume so loud to hide it. So then I went out and got even more expensive sony headphones. They hissed less, but they were uncomfortable. So I took those back too.
But the important thing is that I figured out why they hiss! I did this by comparing those sony headphones to ones that my co-worker just got. His were cheaper. His didn't really hiss at all. The secret is to look at the sensitivity. The higher the sensitivity, the more hiss I got. Having a higher sensitivity is a good thing, but not in this case.
So I went back to Futureshop again (third time is the charm!) and got cheaper headphones that are comfortable (but not as much as the first pair) with a lower sensitivity. Now they don't hiss. ;-) AND they block out what people are saying around me. Overall, it worked out well.
After a conversation with a co-worker, we were talking about "plain old objects". So, that meant we were talking about POO. I guess the "correct" acronym is POJO. But I like ours better. ;-)
Today is a link day. One of the funnest things I have seen in a while was covered on slashdot. Check it out. It's about 3.5 Mb though, so you might want to do it with a fast connection, and maybe not at work. ;-)
Just scroll down to the part on this page where you see /moo/. I didn't know for a yes / no question you had a third option. Interesting.
Something that Ryan has commented on many times is how you have to be careful about what you blog about. People have been fired over stuff they have put in there blog before, and I do not want to add myself to that list. I am careful not to talk about non-technical problems at work for a bunch of reasons, the primary one being that it is not professional.
Now having said that it doesn't mean that I not walked a fine line in the past. And what I have written doesn't really mean much to people outside of work, but when you are in the inside it becomes quite clear what / who you are talking about. Should I have my frustrations a public record? No. But it still leaves the problem where I have emotion / frustration inside. And I think that I tend to vent to people when I see them in person (I almost said meatspace). Now this adds another problem: that my friends / family think that I just bitch all the time.
There are always different solutions to getting rid of frustration, but I am finding that I am really enjoying running. I was never a big one for exercise in the past, but I feel great about myself now. I really wish that I had made the time to do it more while I was in school. Ah well.
Well, I've succeeded is messing up my leg. Last week on Monday and Tuesday we were doing speed training (took about 1 min / km off). We took it up too fast too soon. I've been trying to take it easy, but I think that it's still been too much so I am going to take a week off of running. :-( Which sucks. But if it is what is required to get me back to 100%, that's what I will do.
I was going to blog about another issue, but I think that I'll just talk about 'net connection. As I mentioned before, Laura and I are going to get EduNET which is the same as rogers "regular" high speed connection with a 3 Mb/s download. Why I am really looking forward to this you might ask? Well, it comes from the fact of being connected at 26.4 kbps right now. And that's the best that I can do out of four times of trying to connect. The other speed that I got was 9.6 kbps. Either way you look at it, I'm not going to connect to a torrent today... or any time soon. I'm just happy that my mail downloads right now.
The only reason why I think that this page loaded up okay is 'cause I have the whole thing cached. And just imagine, this used to be a good speed to be connected at... *sigh*
It's been busy, but Laura and I have most of the stuff ready for the apartment now. (She's done about 99% of the work... :-| ) It looks like everything is going smoothly *knock on wood*. This is great... it's just about all I can think about now. There are other things that I *should* be thinking about (like an upcoming family weekend), but it's hard when there is something else that I am so excited about. Ah well.
The other night Laura and I were trying to figure out where closest Tim Hortons will be to our new place. This of course is very important information. ;-)
We used Canada 411 to find it. Now this isn't worth a blog entry yet. What the cool thing is when I mapped it was that when you mouse over a place in the map, it gives you the address. I think that this is better than map quest when you have to type in the addess, it reloads, and puts the arrow where it is... I thought that canada 411 maps were much cooler and easier to use. ;-)
If anyone wants to go, Laura and I are going to see a movie tonight. All are welcome to join. ;-)
Laura and I are trying to figure out the best way to get high speed 'net access for the apartment. Today Laura found EduNET. Has anyone used them? Any good? Did I read the pricing right where you pay the whole year up front?
Looks good though 'cause it's cheap... but I am wary of things that look too good. There is usually a catch.
Something that my coworker pointed out to me (and I dismissed it as something that we couldn't use... oups) today is the sql truncate command. Right now at the start of our test suite it destroys all the tables, and then builds them all up again, followed by filling them in with the "minimum" data that we need in there for the app to work.
One problem is that we are only doing this at the start of the whole test suite. I changed a test class to select all the objects in the table (that corresponds to that object) and remove them all. Well this quickly ran into RI problems where the objects spanned many tables and it was just a pain.
What I think that we should do for the tests now is have a method that clears all the tables with data from the tests on each setup method. Now, the problem that I can see with this is that at after you have run the tests, all the tables have been cleared out so you can't see what is actually in the tables. Maybe if we just have a switch on if it will clear out the tables or not. But the problem that I see with that solution is that the tests would probably break if you didn't clear them out between each test.
It would be good if I could isolate the db from the rest of the app like Andrew talks about, but the data persistence is so important to our app that I feel cutting it out too much would be too much of a risk. Right now I am willing to have slightly slower tests because they actually contact a db in the hope that we'll find integration problems earlier. No surprises. (that's actually a team motto. ;-) )
When signing up for our new place, part of the application asked us for our SIN number. Laura's dad made a big deal of them not needing it, and he was right. There is no need for places to ask for and keep your SIN. It's an easy way for people with "customer" data to link it across db's and figure out way more about you then you would have thought possible.
Tonight Laura and I were trying to get a phone line from bell and it was asking all kinds of info that I can't see them needing like student numbers (school and grad date), SIN number, driver's licence, ... Stuff that we really weren't comfortable giving to them, especially without the use of https.
What personal info do you give out? Do you have a comfort level, or could you just care less? I didn't really used to care, but now I'm working on web apps I wonder just why they need this, and how secure it really is.
I have never gotten a "real" apartment before and getting this one has gone smoothly. Almost. To be able to figure out if you are able to pay for the place, they wanted a pay stub. No problem there. But since I am a contractor, the cheque had my name on it, the stub just had the invoice number. So they had no proof that it was actually for me since I had no uncashed cheques hanging around.
Okay, so then I got a letter from my contracting company that says who I am, how much I make per day, and the length of my contact. Then the lady (not the nice one) at the rental place tells me they don't know how many days I work. Well, it depends on if I work over time, take time off, get sick, ... Grrrr... but when I was talking to the nice woman she told me to just fax back the sheet and write on it how many days (on average) I work per week. For some reason, that was good enough for them. Whew. I'm glad to get that behind me now. One less thing to worry about. At least this place didn't require a criminal check like another one we looked at. ;-P
Well the orange goatee has been shaved off. This in spite of the fact that whenever anyone saw it, they would say 1) how good it looks 2) that I should keep it 3) it makes me look "older".
Now, I don't know if getting rid of it makes me look ugly and "too young". I am not sure why it was a good thing that I look older. Maybe now people are going to give me a ball and tell me to go play in the park. Who knows. But it's gone.
This last weekend Laura and I saw the I, Robot movie. Now, I can't say that I thought that it was bad, but I can't really say that I thought that it was great either. It is exactly what I expected of a movie that 1) is about robots that kill 2) has Will Smith as the lead 3) uses the book's title to draw people in, rather that using the book's story or developing at story of it's own.
I'd say that it's more of a renter, but what I think will draw a lot of people to the theatre (including me!) is that you should really see a movie like this on the big screen.
I just posted a page with some pics of our new place on it. Not too many of the other pics would be too good to post. They are mostly shots of halls, empty rooms, and the kitchen. All crooked of course.
In the first pic (it was 3 I put together), you can see the tennis courts, and in the middle at the bottom there is a path that goes by the play ground (if you can make that out). And lots and lots of trees. It'll be great in the fall and winter. I really love that view. :-D
Today I have been listening to Inquisition Symphony by Apocalyptica. It's pretty cool... It's a Metallica cover band, but they use cellos. Definally a change, and I would recommend it to people who tend to like harder music. It's pretty good for listening to while working. Check it out. ;-)
Well, I finally did it. I took off my winter tires. Just in time for summer too. :-P I got 15 inch steel rims. Now I just have to get some hub caps 'cause my other ones are for 14 inch wheels. I guess that's another stop at Wally Mart or Crappy Tire.
Oh, in case anyone is interested where our place is, you can check out OC's map. It's between Hurdman (at the "T") and the next one south-west-ish. A bit closer than Carp. ;-P
I just got some new head phones. It's been like 10 years, so I figured that it was time. The thing that I find funny is that the cord is like 10 feet long... I can go like 2 cubes away and still be listening to music. Too funny...
btw, I'm getting more and more annoyed at the people at futureshop. Every time I am in there, the sales people are trying to sell me the most expensive things ('cause they make commission). They aren't too good at it either. And the damn warranty plan! Aggghh! Before showing me products they want to sell me the warranty for anything. I have to tell them to stop and wait till I figure out if I want to buy anything... Maybe I'm just not dealing with the sharpest knives in the box when I go there. *shrug*
I found an interesting comment on the latest slashdot poll. The poll is about "girlfriends" and what the best qualities are. You can guess what some of the comments on /. are then... Anyways, the short summary of the comment is it is easier to have a common enemy than similar friends. Interesting thought. (Please don't read deeply into this anyone, I just thought that it was interesting 'cause it's like the flip side of "regular" wisdom)
I am finding it harder and harder to keep track of all my friends, what's happening with them, and tell them what is happening with me. I find that I am relying on reading their blogs rather than phoning, emailing, IM'ing, seeing them in person, ... Sometimes it's so hard to schedule time with people, meet at a place, and then try and talk while some loud music is playing in the background.
Blogs are easy, fast, and I can get caught up pretty fast as long as they blog. That's the catch. Otherwise it gets to be a one way street... people know lots of what's happening with me, but I don't have such a good idea the other way. I think that I'll just have to make a better effort the other way.
One thing that I would love to have would be the ability to click on one JUnit test and just run that one. Then when I got that working, run all the tests in that "TestCase" class. When that works, run the suites.
Now, with the frustration above, I thought "maybe they already have this and I am just not using it". Well, that's the case here. In WSAD / Eclipse, go to your JUnit dialog, look at the "Hierarchy" tab / view / whatever, and then right click on it and do "Rerun". Ta-da! So you can run a "TestSuite", a "TestCase" and a method within a test case class. Three levels of granularity.
I wish that I have been using that long ago... damn. The tools are there, but learning them takes time etc. Mostly it takes itch to scratch for the change in behaviour to happen.
Something that I didn't know "back in the day", but MS Visio can "reverse engineer" your db structure. You just have to set up a ODBC datasource, point to it (using the correct driver of course) and it will generate a schema for you. Mind you, it might not be the prettiest looking one, but it's a up to date schema without having an expensive tool to do it for you. I love tools that generate documentation...
Well, the lease has been signed and we get the keys Aug 14th. I'm so excited it's not even funny... since it's just such a short time away, we have a lot to do in that time, but I think that it's all good. ;-) Now we just have to figure out things like layout, internet, phone, furniture, ... Busy, but fun.
Today is also my sister's b-day... she's a lucky 7. Every time I seem to be away from the house, she looses a tooth... that's like 4 in the last month. Maybe we should have gotten her a blender for a present 'cause at this rate she won't have any teeth left!
I was trying to fill out some forms at ciisd online and wasn't able to log in. I got a page that said "the link you are going to is broken" from the splash page. I was like wtf? So I sent in a "your thing is broken" email. I got a reply from the help desk. Apparently they don't support 'cause Mozilla "isn't secure", but they support Netscape 7. uhh? The lady told me that I couldn't use Mozilla or follow their link from Hotmail because that isn't secure. I don't follow, I tried to explain why I didn't understand, but she just didn't get it. *sigh* I hate tech support... mostly when I have to use it.
Update: that's pretty funny with things like this happening
Today is the first time where I actually cared when I have gone apartment shopping. It's only the second time in my life. It went well I think, but more tomorrow. The first place we looked at was wonderful. If it wasn't the first place, we might have just stopped there. There was one place that we had an appointment for tomorrow but we're going to cancel. It's mostly 'cause I know a guy that lives there with a few complaints about them.
In case this didn't really come out before, but I am moving out with Laura. I'm very excited about this. It'll let us see so much more of each other. This means no more less having fallen asleep in someone else's house and being woken and sent home at 3 am. It means being happy more. And I think it also means having grown up some too. But that doesn't mean I'll start acting like an adult! That sure would be silly... ;-)
It can be pretty funny what people call classes when they get frustrated. I found this one with autocompleate today. hee hee... and it's an interface too! So people have to implement it. Too funny...
I just came across an interesting tool for publishing code on the web. I have not tried to play around with it too much, but I'll try it next time I am showing code. I figure that it would be better than using <pre> tags.
Well after some discussion, it looks like I will be moving out. (Everything on good terms, no worries). It's probably way past the time when I should have, but I wasn't in any rush. I think that it will be a great experience and I'll be able do more "downtown" things and not have the long commute home. I'll actually be able to take a bus or cab home. Of course this depends on where we'll actually end up, but right now we're considering some places, one of which being this one (2nd one). And yes, I said "we" 'cause I have a roommate lined up. :-D
Now, my question 'cause I have not really looked at apartments before is does anyone have any special advice or "make sure you check out for xxx because I didn't and I got screwed" kind of thing? I've got a couple already like: make sure there's laundry in the building; and make sure the kayak fits in the elevator. We'll, I don't know about the second one.
My dad's advice is to not install a phone land line, but share a plan with 2 phones (with free evenings and weekends...). I'll have to look at this more, but it sounds like good starting advice. Now it's your turn.
I had thought that the movies they they showed on Sparks St. were always on Sparks. I was mistaken. It's really "Centretown Movies Outdoor Film Festival". They have a schedule posted. It's "free" to go and see movies... they just pass around a donation box to try and collect money to pay for the costs. It looks like this year we'll be sitting on the grass which actually might be a lot better compared to being on Sparks where people are walking by all the time and getting in the way.
We just have to figure out what movies we are going to watch now... maybe a horror one, I don't know. Laura didn't think that was scary idea, but I did.
Yes, I am really lazy. I have started to use the plain blue style. I didn't even bother to play around with it at all. I'll see how I like it. It's pretty close to what I had before, but *shrug*.
Heather had sent me an image with some colour suggestions. I'll have to play around and see if I can make something like that. Personally, I like sites with lighter colours rather than ones with really dark ones... just personal preference I guess.
Something great happened today. My co-worker said "guess what? I'm writting the tests for class abc". I went "so?" to which he responds "I have not started the class yet".
One of my fears is getting to a point where it's too hard to add automated tests and having to do everything manually... *whew* Baby steps, but we're getting there. ;-)
Now it's your turn it vote!
On the off chance that anyone else is using StrutsTestCase out there, you might want to download the new version. They fixed a bunch of bugs, but I was most happy about something where you had to restart the server / app to use a normal browser after running the tests. This fix has saved me lots of time now that I don't have to be in "junit" mode or "using the gui" mode. I can now do both. ;-)
It's sort of funny. We have moved from an early version of our db structure to a more "engineered" and flexible one. (don't worry, the db group is doing the design, not me). I think we had like about 6 tables when we went to them, and now we have 40+.
And that's why I love our tests. They allow us to make changes lower down and find out if we have broken things or not. (Unfortunately we don't have true unit tests... they connect all the way down without mock objects). That's one way that we've been able to stay agile. Another is to have the container manage persistence. We're more concerned about the business logic and don't have to do as much of the annoying part. ;-)
Now to just start using other methods that will enable us to stay even more agile and pick up mistakes early.
I feel that it's time for me to change the look of this site a bit. I'm getting bored with the gray / blue-gray colours and the default look. I took a hard look at my site after seeing how pretty itsy's site is with the green / yellow colours. (Laura you should check it out, you'll love the pig).
So, does anyone have any suggestions for colours / layouts? If you find something nice, please post a link. I'm not going to make the site all pink, but other than that things are pretty open. Hell, I will consider pink if it looks nice enough. Just don't bother linking to those "worse web sites" as a joke... there are enough of them out there without people meaning for them to be a joke.
Anyone have a fav. css editor? I think that I have an older copy of dreamweaver around here somewhere, but I'd have to install it. I'm just wondering if it's worth my time using something other than textpad.
When I first started to blog, it was to vent whatever was bothering me. It was just a release. Its evolved into so much more now. Blogging helps me give my friends an idea of what's happening with me. It allows me a place to record events so that I can reference them later. It's a place for me to "talk" out loud and get feedback. But it's also helping me with my communication skills and that's what I am going to talk about.
Now, communication hasn't always been the best for me. Sometimes I have a hard time expressing exactly what I mean, or doing it in the clearest way possible. A lot of the things that I blog about I have gone over in my head before I actually sit down at a computer. I have an idea, and then I think about how to effectively get that idea across who ever reads it. It allows me to practise my written communication in a non-work env. It's better to look a bit dumb to friends than your co-workers or your boss. And I feel that it's a positive feedback loop: the better I communicate, the easier it is, the better I communicate. ;-)
Just note that I have been talking about "communication", and not grammar or spelling... I've almost given up on those. :-P
There are some problems that I have run into today. They were a pain in the ass to find, and I just wanted to pass along the knowledge in case anyone else runs into them anytime soon.
*sigh* We get paid to figure out the hard stuff. Sometimes I wish that wasn't the case.
Update 2: the problem was because we were calling the action on a GET and it was more than the maximum of 2,048 characters allowed. We have decided to use a different solution rather than just using a post.
One of the interesting things that my uncle was telling me about the other day was how the US dept of defence does bidding for contracts. Whenever they have a contract, a bunch of different companies bid for it, and one wins. Well, there's always a second place company as well. So what does the military do? They hire both.
Sounds silly? Maybe, maybe not. The first place company is hired to actually do the work. The second place company is to make sure that they do it right. Think of it as pair programming on a much larger scale. The second company has people in all the meetings. They are performing constant reviews of the other's work by making constant critique of the work done.
Following our programming example, the returns out way the costs and on average help to keep quality up with costs down. Hiring more people to do the work to keep overall costs down might be a bit counterintuitive, but it seems to work. And again like pp, the people who "drive" the work change, it's not always the same. So each party gets a chance to be the reviewers and doers in turn.
Maybe if the Canadian gov't would have followed a similar process, we might not be dealing with a $1 billion gun registry. How could they be over their budget by like 10x? I just can't figure out how hard it would be to do that app... how involved is putting down who owns what gun and the make etc? I can see that it would be hard to tie into all the other systems, but that's just insane.
Short answer: it's cheaper to have a proactive auditor rather than to have someone from the Auditor General's office to come in afterwards and go "yep, you sure wasted a lot of money..." It's better to plug the holes in a ship that it taking on water rather than watch it sink to wait to figure out where the best place to put the plugs would have been.
I was really excited when I learned of the I, Robot movie coming out. So I got the book and read it. It was really interesting. They taught us in our robotics class about how Isaac Asimov came up with the 3 laws of robotics. The book was interesting because it had interesting stories how robots had conflicts and almost logic loops trying to obey these at different times. They never hurt people, ever. So much that they would not even hurt peoples egos. Really cool.
They the other day I saw the trailer. It's got robots attacking people and totally kicking ass. What the hell happened to the first law? Maybe I'll have to see the movie to understand, but it sure looks like they are attacking people to me.
In the book I don't remember any guy getting killed and a cop after a robot. So, from the trailer I think that the similarities with the book would be as follows:
One of the things that has been bothering me is how to maintain easily the ActionForms that we are using. They are classes used in struts that are pretty "dumb". They are just entity classes that may have a validate method. They are what the info that comes from the clients web request get put into.
Now why would I really care about the equals, hashcode, and toString methods you ask? Well, I started to follow what I read in Effective Java. At first I just overrode them by getting them to throw an UnsupportedOperationException, but then there were instances where we needed them. *sigh* It sure sucks to have to build those methods for classes that have 30+ fields. It's dumb, boring, easily messed up work. Something that the computer should do for me, not the other way around.
And than what happens when we add another field? Well, it's easy enough to add more getters and setters (since you can't use it till you do), but what about the equals? For each member you add, you'd have to modify 3 methods plus somehow remember to keep your tests all in sync too. PITA
This has a bigger impact than you might think at first. When you have your entity classes, how do you make sure that as you change your app all the new fields are actually getting persisted down and then back up? Most likely in your tests you are calling .equals() on them but this only works if your equals contains the fields you just added! And that you have put (with your test) a non-default value into the field.
Realistically, you know anyone would screw this up at some point and it could be a long time after it was in production before anyone actually starts to try and make reports or look for those fields.
At work on Friday I made a first step: I made a test method that if you passed in an object, it would fill in all the fields with a setter method with a "random" string. So at least the testing problem would be addressed.
Today I wrote a class (and some tests of course) that contains reflexive toString, equals and hashcode. Please feel free to use it and report back any problems that you see. If you can think of anything that is seriously wrong with it, let me know.
I keep on thinking that this is almost too good a solution. Why have other people not used this before as a somewhat lazy way to maintain some of your objects? My only guess right now is that it is a performance hit when you do things like this. I'm going to check it out later (tomorrow) and post what the results where. If it's not super slow, I think that I'll use these files to make my life easier.
Update: After doing some tests, my dynamic impl of equals is about 65 timers slower, hashcode about 50 times slower, and toString about 3-5 times slower. I've updated the classes online.
I'll follow up with more details later, but I just wanted to say that I finished my first event, and I was in the top 10 for my category (male, age 20-29). It sounds more impressive than it is, but that's not the point. :-P
I can't seem to find any details on the ncra's website, but when I do, I'll post it.
Update: I have found out where the results are. ;-)