So I’m getting back to iCartographer.
I still haven’t been able to get advertisements on the site, and I think I’ve stopped trying. Maybe after I put a few more updates on, then Google will accept me into their evil empire. But at present there is no incentive for me to tell people about the site; I can’t monetize my friends. Yet.
So, I’m backing away from updating the website. Although I have started using php to support it. That should allow bots to troll it better.
I recently got a desktop atlas. The maps I’m making did not compare well with it. The land I generate is all greyscale, and let’s face it, kind of depressing. So I decided to do some experimenting. I took the exact colours (taking a digital colour picker to their website) from the book and started to use them in my program. This revealed two new problems.
The first problem is that the book’s colours were picked to allow named places to show up clearly; they are muted pastels. I never changed my ocean colours which are vibrantly blue. This makes it so that the land is actually hard to see as it is washed out. I could reduce the vividness of the oceans, but I like having colourful maps. I think I’ll have to acknowledge that the land colours need to be selected differently.
The second problem is that the colour is giving me a better idea of the actual elevations that my program is generating. In the atlas, huge tracts of land are below 500 meters above sea level. In my program, barely any is. If you look at an elevation histogram of earth you can see that land elevation is like a hockey stick (backwards in the linked picture). So I’ve started doing some new experiments with the program to better approximate that. I’ve found that putting the elevation to a cubed power and then scaled back down works fairly well. But this has revealed a third problem.
This new problem is a fundamental flaw with the program. Mainly that I do not understand how fractals really work. Most of my knowledge has come from a few books that just give me enough information to be dangerous. But at a fundamental level, I don’t know what I’m doing. This comes into glaring realization when I try and increase the granularity of an already generated map. If any modifications have been made to the map, there is a good chance the new granularity will not be at an appropriate scale.
This is something I’ve got to work on. I need to better understand my project.
Category Archives: Uncategorized
Surprise, surprise. I’m alive
Despite my best efforts, I appear to have survived and passed another Death Race. CDRX.
My big concern before this run was a possible injury in my IT-band. A week before the race, my hip started hurting after doing some stair training. It was persistent. A visit to a therapeutic massage helped quite a bit, and I had been taking ibuprofen to help reduce any inflammation that might have been happening.
But, let’s go through an analysis of my three attempts at this race. My results are this:
Rank | Leg 1 | Leg 2 | Leg 3 | Leg 4 | Leg 5 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Overall | Gender | Age | Denard | Flood | Grande | Town | Duck Pond |
Hamel | Ambler | Hell’s Gate Road |
Hell’s Gate |
Finish |
2008 | ||||||||||||
44/223 | 38/177 | 10/54 | 02:02:50 | 03:49:10 | 06:10:56 | 07:16:45 | 09:51:27 | 13:34:03 | 15:33:35 | 17:47:01 | 19:47:25 | 22:19:58 |
02:02:50 | 01:46:20 | 04:08:06 | 05:13:55 | 02:34:42 | 03:42:36 | 05:42:08 | 07:55:34 | 02:00:24 | 04:32:57 | |||
2009 | ||||||||||||
56/232 | 43/171 | 12/42 | 02:06:49 | 04:00:37 | 06:26:35 | 07:36:30 | 10:25:13 | 14:12:57 | 16:11:35 | 18:33:54 | 20:38:51 | 23:01:27 |
02:06:49 | 01:53:48 | 04:19:46 | 05:29:41 | 02:48:43 | 03:47:44 | 05:46:22 | 08:08:41 | 02:04:57 | 04:27:33 | |||
2010 | ||||||||||||
78/418 | 64/304 | 30/112 | 02:00:37 | 03:42:42 | 05:56:43 | 07:04:50 | 10:08:16 | 13:39:11 | 15:25:41 | 17:44:38 | 19:41:41 | 21:41:51 |
02:00:37 | 01:42:05 | 03:56:06 | 05:04:13 | 03:03:26 | 03:30:55 | 05:17:25 | 07:36:22 | 01:57:03 | 03:57:13 | |||
In 2010, leg three was extended by two kilometres, and leg four was reduced by the same amount. |
For each point on the race, the top number is the overall time to hit that course point, while the bottom number, in italics, is the time to reach that point since the start of the leg. For purposes of ranking (among other things) I am male and aged 30-39.
The rankings also don’t tell the whole story.
In 2008, there were 223 people signed up, but only 81 finished, and only 172 people got to the end of the first leg. That implies to me that only 172 people bothered to show up and attempt the run. The weather that year was good for running, with a high of 14 degrees. Nice and cool.
In 2009, there were 232 people signed up, but only 80 finished, and only 194 people got to the end of the first leg. I would say that 194 people showed up to run, but I remember seeing people dying on the first leg of that year. Almost literally; ambulances were involved. The temperature was 27 degrees that day which made it far too hot for most people. And as you can see, I was slower. I’m assuming the heat was the reason I got huge blisters all over my feet.
In 2010, there were 418 people signed up, but only 150 finished, and only 335 people got to the end of the first leg. Weather wise, I was thinking this year would be a lot cooler, but then looking at the predictions I found out that it was only two degrees cooler than last year. However, the clouds were much more forgiving. Annoyingly, the day before, and the day after, had great running weather; a day later, and I would have been running in clouds on Mount Grande. That would have been gorgeous.
I am consistently in the bottom half of people who finished. But considering that, on average, only 35% of people who sign up will finish, I’m okay with that. Heck, Jack Cook, running god that he is, who has won it three times, failed to finish it the past two years. I actually saw him throwing up on the top of Mount Hamel.
The first leg was the pretty much the same for every year. The goal is not to tire yourself out for the rest of the race. But because Grande Cache is so beautiful, I wanted to take pictures; I attached a camera bag to my waterbelt. Unfortunately, it slipped around my waist to position itself at my front, where it proceeded to bounce and hit parts of the anatomy that shouldn’t be hit. Eventually I got it to my side, where it still bounced. By the end of Leg 2 it was causing bruising, so I left it behind.
There was also a van “parked” in the middle of a creek bed on Leg 1. Someone was trying to use the ATV trails?
Leg 2 showed me the success of increasing the amount of stair training I had done. I found going up the mountains easier. And I never felt the need to stop and rest on the slugfest. At the rest station going up to Mount Grande, I was pulled aside and asked a few questions. A volunteer was concerned about me. I assured him I had been drinking lots of water. However I hadn’t been urinating, which is apparently an important procedure for continued health. I also told him I hadn’t been taking any ibuprofen. It would later occur to me that I had had some four days earlier and how would I know if it was out of my system. I would spend the rest of the run deeply concerned about any pains in my lower torso, sure that it was evidence my kidneys were failing.
I was trying a new strategy this year; eat more. In past years I would start losing energy in Leg 3, after covering 60km. From discussions, I figured it was because in the first leg I wasn’t eating anything (wasn’t hungry) and that was putting me in a deficit that I wasn’t getting out of. I figured out a way to make bottles of Boost much more convenient for drinking and was sucking them back for most of the course. However, the problem with eating more, is that you digest more. I should also have varied my food choices better (more protein). Leg 3 was where my body rebelled and I had to commune with nature.
Leg 3 was a very tough leg. It is often thought of being one of the easiest, because it is all downhill. But the footing can be treacherous, and due to the valley focusing the heat, and the time of day, it is hotter than it has any right to be. This year was especially bad, and lots of people dropped out after it. It was also two kilometres longer, and these kilometres were along a train track that seemed to radiate heat.
There was also administrative errors happening. Because Leg 3 was longer, the brochure stated that the cut-off time was extended by 15 minutes. That information didn’t get communicated to everyone, so some people got pulled off when they shouldn’t have.
According to the support team, many people came off Leg 3 looking terrible. I was not an exception. I needed quite some time in a chair to feel human again. But I knew that Leg 4 started with a long slow climb in the shade that would give me several hours to recover. The stair training made the climb easier than in past years. Don’t run the hills.
From the top down the sun started setting. (Wish I could have gotten a picture of it.) With foresight, I had taken my headlamp out early and was ready for it. It was still scary watching the person ahead of me NOT get their lamp out, despite going down “boulder alley” in increasing darkness. I had to tell him to let me pass because I didn’t want to be around when he injured himself.
When my lamp came on, I should have put my goggles on as well. But I quickly discovered that they were persistently foggy and impairing my vision too much. I decided to risk a branch in the eye just so I could see where I was going. Since I can still have both my eyes, it seems to have worked out.
The interesting thing about running in the dark is that it is so much harder to tell what slope the ground is at. There were many times that I was convinced that I was going uphill, albeit gently, and therefore an excuse to walk, when after looking at the elevation profile provided by my GPS unit proves I was level at worst.
By this time, last year, my feet were a mess of blisters. I had to stop off at one of the ambulances they had wandering around at Ambler and they put some protection over them, that really didn’t do anything. This year, I was mostly free of blisters. I had had a new strategy for them this year, which was: Don’t do anything. Previously I had used blister-proof socks, but I realized a few days before that I had not trained in them for many months. And the rule for races is to not experiment. I just used my regular socks, and didn’t worry about things. Now I only have blisters on my middle toes.
The run down Beaver Dam Road, all downhill, was not as fun as it sounds. I felt like I was going fast, but evidence proves otherwise. And at the end, my quads were in pain from all the braking. Lifting my legs was getting harder. But at the bottom, the start of Leg five, I was feeling much better than the start of Leg four. It was cool now.
While doing the fourth leg, I started to get a goal of finishing in under 22 hours. To do that, I would just have to shave fifteen minutes off my best time for Leg five; not outside the realm of possibility. While recovering at the transition station I figured I only needed to do 6km an hour.
Unfortunately, the first half of Leg five is brutal (brutal considering people have just run 100km.) It starts with a 100 metre climb followed by a long run through roots, rocks, and other tripping hazards that are hard to spot on a narrow path in the middle of the night. After an hour and a half, my GPS unit claimed I had only gone 6km. After the river crossing there is another steep hill, probably about 230 metres, followed by the “Root Route”, i.e. tripping hazards. But a funny thing happened; I found that if I actually ran, instead of shuffled along, it was easier on my quads and I didn’t seem to trip as much. I made excellent time, passing many other runners/walkers. It helped that I was convinced Mike would be right behind me; he always does better in the coolness of night.
I think the GPS was off, maybe it was only measuring horizontal distance? I crossed the finish line with thirteen minutes to spare. That got extended to eighteen minutes when they took into account the time it took to cross the river.
Go Death Racer!
Pre-Death Race
I’m in Grande Cache now. Tomorrow I run the Death Race once again. Today was great running weather, with it being fairly cool with cloudy periods. There were a few droplets of rain, but nothing serious. Tomorrow though, I hope the weather is the same. I’m not sure how I’ll feel about rain. Depends how hot it is.
Technically it is only going to be two degrees cooler than last year; last year was way too hot.
The hotel had told us that there would have A/C installed by this year. That was a lie. Apparently Toronto took them all because they had a heat wave there. This is why no one likes Toronto.
Corporate whore
I’ve finished up my program to the point where I’m not embarrassed by it. There are still many improvements, but I’ve applied the paint and screen doors so that it is usable. Since I have a good foundation, adding more features should be easy to do. Easier.
I realize I will never make any money off of this. Well, certainly not enough to make it worth my time. But it has been a good learning experience and I’ve enjoyed the act of creation. There is still a way that I could make money off of it. I read, long ago, that you can make money off of free programs if you place ads on the website where people can download it. That actually sounds reasonable. And until I get it to the point where I could feel it is worth charging money for, that will work.
So I went to Google and tried to figure out their system. They want to make money off of me, so I assume it wouldn’t be too hard. I applied, gave them my website, and waited. I didn’t wait long; the next day I got denied: Under construction.
I couldn’t argue with that; I wanted to get the ads before I made the website so that I could incorporate them nicely. Apparently that is backwards. At the time, I only had one page that admitted it was under construction. So I spent a day creating the website, giving it content. It was totally different. I applied again.
Denied: Under construction.
By now I’m figuring that the problem is that they are only looking at what is in their cache. If you searched for my website, and then looked at the cached version, it would only show the old page. I’ve waited a week, and now I can see their cache has some of the new pages. To even help the process along, I added more information and even documented my program.
Hopefully, I will have “Sold out to the Man” soon.
Stupid distance running
We decided to do our longest distance training run today instead of Sunday. That meant that I wouldn’t have to get up early on Sunday and I could go out to New City on Saturday night. That plan seemed so much more plausible before I pounded 62.5km over an eight hour period today.
My official excuse is that my party clothes don’t fit anymore. It looks like someone implanted contraband plastic bags in my legs. My waist is fine, but my thighs are grossly out of proportion. And I don’t have fat person pants.
This was the longest training run I’ve ever done. The planned route had an interesting concept; only cross two bridges. And the bridges were the furthest two that pedestrians can take in Edmonton; Rundle Park and Anthony Henday. Looking at the map, we left the city limits on both sides of Edmonton.
The weather, for the most part, was very good for running. It was overcast and cool. However, the weather report lied and it got sunny in the afternoon.
There was a 22km section where there was no place to refill water. So before we left, I went over my orienteering map for Laurier park and found where all the water taps were. The first one was broken; the top came off of it. I couldn’t find the second. The third one was fully operational. Unfortunately it was right next to a big picnic party. After 45km we didn’t care. Plowed right through it and tried to take over the tap. There were a lot of kids playing around, having water fights. They also kept cutting in line ahead of us. But eventually we were able to soak our heads and fill our water backpacks.
The last 15km was especially bad, because the sun really came out. We split up as we were all going different speeds.
I discovered that my shoes are only really good for 58km before they stop working. Better than my colleagues. The cushioning was gone by then. Still, I made it all the way back to our marshalling point. I actually tacked on half a kilometre extra so that I would be at one half of the distance of the Death Race. And now I can’t help but think that if I had run 800 meters further, I would have completed a marathon and a half.
Hypocrits
Planned obsolescence is not a good thing for consumers. It strikes me as something only villainous companies would do. And MEC has just sauntered into that category. I no longer believe their greenwashing.
Let me explain.
When I was in L.A. several months ago, I brought my two pairs of sunglasses with me. As these things are wont to happen, I lost one pair down there. So, in my household I only had one pair of sunglasses that now needed to do double duty between driving and running.
When I went to Florida a few weeks ago, I brought that one pair along. Due to me using my backpack as a pillow (word of advice, backpacks aren’t very good pillows) one of the lenses popped out and was lost. I scoured my backpack for it, but it was gone. Probably in an airplane or in the Toronto airport. In either case, lost forever. I was completely without eye protection.
Florida is very sunny. I think they may even advertise themselves as that. So, after a few attempts, I decided that sunglasses were a necessity and so I purchased a cheap pair from the hotel gift shop. With these, I was able to survive the Sunshine State.
When I got back home, I decided to try and get new lenses for my previous sunglasses. The only reason a lens was lost was because it was interchangeable. If they had been more solidly built, I would have been fine. Still, the lenses should be fairly cheap.
But planned obsolescence can be covered by discontinuing a model and no longer supporting the parts for it. I see no reason they needed to do this. The technology of frames has not significantly changed, and even if they had, interchangeable parts have not. So to spite them, I purchased two more pairs of sunglasses. (Yes, I realize that doesn’t make sense, but I’m bitter.) I know I’m going to lose a pair eventually, and I want a good backup.
Half a week later, while turning my backpack upside down, the missing lens showed up.
From zero to four sunglasses in a week.
With Great Power comes great responsibility
I’m continuing my development and things are shaping up nicely. Right now I’m focussed on cleaning up the code. With the sphere stuff mostly working, I’m concentrating on all the other basic features that the program should have and fixing bugs.
So it is actually starting to look like a real application. And this evening I put it through its paces. I slapped together support for printing, and I’m finding out what a monster I’ve written.
Here’s the deal: The program will generate a world map that is rather rough. These can be spit out very quickly. When you find a map you like, you should then start manipulating it. One of the basic manipulations is to make it less-rough. I call it “increasing granularity”. It adds more details, allowing you to zoom in more and still have a nice view. Since a printed copy is more detailed than the screen, it makes a better image for printing. But it also quadruples the size of the map.
So I found a world I liked, increased the granularity several times and then printed it out. This brought my printer to its knees. I have a nice laser printer, and it took 14 minutes to spit out the final map. One page. Simple maps come out easily, but this was a 12mb file.
I wish I could say that it looks gorgeous, but it doesn’t yet. It looks impressive. The problem is that I haven’t been doing as much with colour as I would like. The water is nice and vibrantly blue, but the land is in greyscale. So it looks rather bleak.
Still, I like looking at it and seeing all the coastal features that have shown up. There are a few interesting archipelagos that catch the eye.
But as much as I would like to get more colours in this, I want to finish cleaning up. Once I have done that, I’m going to put it online so that it can be downloaded by people who are interested in this. (Or, as I like to refer to them, “my testers”.)
Stuffed to the gills
I declared my home a unicorn-free zone because of the growing plethora of stuffed animals. I wanted to make a hard limit as to where the girly-ness could go.
It doesn’t help that when I come back from vacation I find that my stuffed dog seems to have acquired a friend. The new dog seems to be eyeing the ball of my old dog. So far no stuffing has been drawn, but I don’t know how long the peace will last.
Learning experience
While I was in the States, I purchased a 12-pack of Vanilla Coke. I prefer regular Coke, but every so often a change is nice and I can’t get them in Canada.
But a word of advice, don’t pack in a rush with barely any sleep. You might not put enough padding around delicate items.
My suitcases came out or the luggage carousal with a slight vanilla smell.
Overview of a vacation
I had a good time but I am still leaving disappointed.
On my last vacation to Jamaica I connected with someone, and it made the trip so much more awesome. I felt good about myself. I want that to happen on every vacation. I was hoping for the same thing this time; to be with someone who really does like me and shows it. (I’m probably going to get called on that last sentence, but I don’t have the energy to thesaurus-ize it. Please keep a clean mind and I do have friends who like me.)
So in comparison, I’m feeling lonely.
The trip started very well. When the shuttle to the hotel picked me up at the airport, it was already filled with friends I knew. We started catching up immediately. Poetically, at the end of the trip, I left totally alone in the airport shuttle. Apparently to sit in an airport and do nothing for two hours.
Now, if you can’t be with someone flirty, being with friends helps a lot. And I spent a lot of time with them. I saw the sun rise twice. There were several times where I only had one meal in a 24 hour period. (I may in another one of those right now.) The sun was blazing hot, and I got a bit of a burn at a great pool party. This morning/late last night, I met a group of Australians and got to know them as they analyzed my life for me. It meant a lot to me that when a friend was leaving, she called me up because she wanted to say goodbye personally. (Leaving me with one and a half hours of sleep today.) And I made people around me happy. I like that.
Early morning/late night
Okay, aside from the aforementioned typing problems, I really didn’t get a buzz this time. And I drank about the same amount of alcohol. But sleeping and eating have really improved me. I had no trouble staying up late. Or dare I say, early, because I do believe that is the sun rising over there.
Wish I could share this lovely day with someone.
Is their a medium-appropriate word for slur?
So to fortify myself for my nights out, I’ve gotten myself a economy-size (1.75L) bottle of lemonade Margarita. (I’m a girl-drink drunk apparently.) It is going down quickly.
Is it just me, or am I having a harder time typing?
Truth
Or it could be that I’ve only had one meal in the past 24 hours. Being hungry makes me cranky. Mostly with myself.
Stupid brain
It’s a bit sad when the highlight of your day was figuring out a programming problem. Well, it is sad when it happens on vacation. I’m continuing to assert that I like myself better after I’ve been drinking. Socializing with strangers is actually possible. Whereas after I’ve sobered up, it is just embarrassing.
And look, I’ve become introspective. All this, and my moody attitude, is probably because I have had barely any sleep. My vacation flight left at around 1:00 AM, on Friday. So I’m going to go to bed now and try to become a better me.
Recognition
The flight map indicating we were near Orlando. I looked out the starboard side of the plane and I saw something I recognized. Cape Canaveral! Over two years ago my family went to a beach near there and we saw the shuttle in the distance. That was enough to spot similarities and I was pretty sure I had it right. The pilot then came on the speaker and confirmed.
There were two rockets ready on the launch pad. Nearby was the landing strip where Atlantis came in for its final landing a few days ago.
Unfortunately I didn’t see anything take off.
Off again
Okay, off to Fort Lauderdale.
Didn’t I mention this?
While I was still employed I arranged to meet some friends down in Florida for this weekend. Plane ticket was already paid for, so I’m not going to back out now.
I really don’t know what I’ll be doing while I’m down there. I haven’t been planning this well. So far, my plan consists of staying out late and going to parties. I don’t know what to do during the day. I probably should go swimming on the beach.
I wonder if I can go running anywhere?
The last time I was there I came to the conclusion that Florida has the worst orange juice in the world. I mean it was really bad. I’m going to give the chamber of commerce a chance to change my opinion.
Squares into round holes
I had success today.
A few days ago I got great circles working correctly and displaying a bounding box. The big problem was that the corners weren’t hitting each other. There was either extra line or the lines weren’t meeting. I started doing hacks to get the lines to meet up better; the code got uglier and uglier.
I assumed the reason for the problem was that the computer wasn’t precise enough and the vectors and unit circles were getting a small rounding error that was turning into a very big, very visible line problem.
Today I found out the real reason. Once again, hidden in the low level code, I was using the wrong kind of number. An integer when I should have been using a real/floating point number. With that out of the way, the “square” is showing up quite nicely. I still need to clean up the code and make it more efficient, but that was a big hurdle.
A bigger hurdle is going to be to take that “square” and project it onto a plane so that I can actually make another map out of it. A lot is hinging on the square I used being the correct shape to project as a square. I hope I chose wisely.
Canines to the left. Felines to the right.
I need to do hill/stair training. I try and do that on Tuesday mornings, but I skipped it this week because it was too hot. I figured I would make up for it this evening. I changed, got ready, and stepped out the door. But between the front door and the exit to my building I got distracted by a neighbour.
It would have been a nice run except for the cats and dogs. The raining of them.
I still tried, and was out for about 25 minutes. I got thoroughly soaked. I almost thought it was hailing. By the time I came to my senses and turned around, puddles had grown exponentially. I didn’t even bother trying to avoid them; my shoes couldn’t take on any more water.
I thought I wouldn’t be needing my electric blanket for awhile, but it was a nice way to warm up after that debacle.
Trigonometry
One of the disadvantages about not working at an office anymore is that there is no air-conditioning. So, when it is in the upper twenties, I have to sweat it out. In other words, I’m not that productive these days.
But, if I ignore the 9-5 schedule, I can do better. It is nice and cool right now. (At least it is outside. The outside temperature hasn’t migrated to the indoors yet. But it is not baking.) In other words, take a siesta during the day and work late at night.
My contract job has been oddly silent and not giving me anything to do, so I’ve been working on my own program. There I’ve been struggling.
On Friday I talked to a gaggle of mathematicians and I got a good perspective on what I’m trying to do. The goal is for every map to allow a rectangle to be selected as either a new map or a sub-map. The problem I’ve been faced with is that spheres aren’t that happy about having squares on them. I’ve been using a Rubik’s puzzle of a sphere/globe to organize my thoughts. (Which I cannot find mentioned anywhere on the internet, so I have no way to easily solve it.) There is a sort-of-square on it, and so that is what I’m trying to replicate. The mathematicians were able to point out that the “square” is bounded by great circles. With that, I had a direction to go.
I started doing research with the graphing calculator that comes with every Mac. It’s been invaluable as a testing platform. I don’t think it is happy with me though; I’ve been bringing it to its knees.
Just now I finally got the math working and entered it into my program. It is correctly displaying a great circle going west to east that goes through the two points I wanted.
This whole project would probably have been easier if I had done it in second year university when I was taught about planes, dot products and cross products. I still have my text book from then, but it was a used one and has been very marked up. I’m also not that happy with the production value. It was published in, let me check…1976! Okay, updated in 1988, but still… That might explain why I had so much trouble finding out about dot products and cross products. I don’t think they were invented back then, at least not by those names.
Basically, the internet has saved me a lot of trouble.
Out and about
The semi-job that I have is continuing. A lot of the time I am waiting for information from my employers about what exactly they want me to do. When I get it, I can usually be fairly efficient in finishing it. But that does leave me with time on my hands.
I have a policy that I have to get out of my place at least once a day. But I think I may have to amend that. Yesterday, my one time out was to go do some stair-training. (I think it will help with the Death Race.) But by the end of the day, I felt rather squirrely; there was absolutely no socialization. So today, after the usual Wednesday evening run club, I made sure to join my fellow runners for dinner at Royal Pizza. I feel much more mentally balanced now.
Of course, yesterday, I didn’t even talk to anyone over the phone. In fact it was pretty much a day off for me, because I didn’t even work on my own program. Instead I played a game of Railroad Tycoon 3. I purchased the game a year ago, but never got around to playing it. When I finally did, I found it wasn’t exactly working with the latest operating systems and/or processors, and there were no official updates. Six year old game. Fortunately I found a torrent that had a version that did work. It even waived the requirement that the CD be in the drive. I don’t know about the ethics of this, but I did legally pay for the game.
Speaking of ethics though, the game doesn’t really promote good ethics. There is a separation between the player and the company he is running. Both have their own money. But there is absolutely no penalty for insider trading. In fact it is encouraged. One of the best ways for your train company to buy another company is to use the player’s cash to buy a lot of shares in it, so that when your company tries to buy it for an inflated price, the stockholder vote is more likely to go correctly. And then the player makes a good profit at the expense of his own company. And always buy stock in your own company before you make the company buy back its stock. Yeah, I feel like I’m with Goldman Sachs.
A man who has never gone to school may steal from a freight car; but if he has a university education, he may steal the whole railroad.
-Theodore Roosevelt
But I am continuing work on my own program. My current issue is that when I have the program fill in more details of an existing map (increase granularity, I call it) there are changes that don’t look right. I found a small peninsula was disappearing in the test map I was using. The increase in granularity shouldn’t be doing that. After adding in some debugging features I found the problem was that I was changing the heights of everything to be more within a set range, but I wasn’t including the sea level in that change. I have an idea of what I need to do to fix it.
Garter snake
I attended a wedding of a friend today. The church ceremony was nice, although I discovered I was an usher upon arriving. I had been warned this was a possibility, but I didn’t know for sure until I had crossed the threshold. On a good note, I didn’t burst into flames when I crossed that threshold; always a worry for me with churches.
The reception was also nice, but I didn’t know that many people there, mostly my running friends. Which of course meant we got stuck on talking about running. We are rather focussed on our hobby.
There was a single girl who I spent some time with. She arrived with someone else, so nothing was going to happen. Interestingly, when it was time to throw the bouquet, it came towards her. She didn’t catch it, and it landed on the floor. She looked at it like it was a dead fish. A small child picked it up instead.
In other news, I caught the garter. I’m not sure what that signifies.
Bearded
Lazy unemployed person or focused on growing facial hair. A little of column A, a little of column B.
I haven’t shaved my face for a week and a half. It started out as being lazy which I’m wont to do when I’m at my parent’s place. Then I figured I would try out facial growth.
I’m mainly wondering if I look good with facial hair. I can’t tell. I see pictures of men with a bit of growth, and since they are in magazines I assume there is some call for that level of scrufiness. But after this long, I am down to just a scruffy beard.
I polled my friends tonight on whether I looked good.
The results indicate I will be shaving it off before the wedding tomorrow.
Granularity in, garbage out
Okay, I found the problem with my program. You know, the one about increasing granularity instead creates garbage. Stupid mistake. First-year-university kind of mistake.
Essentially I was putting a long into a short. For the non-programmers reading this, let me explain. Integer numbers can (mostly) be stored in in either of two ways. They can be stored in a short, which means you are only allowed about five digits, or they can be stored in a long, which allows about ten digits. (This is GREATLY simplified.) If you try to put a ten digit number into a five digit place, it lops off all the higher digits. In other words, it becomes much smaller.
This problem didn’t really show up until I started quadrupling the size of a map by doing the increased granularity. A low level function was getting the size of the map and going through every height-point on it and converting it appropriately. Except it thought the size of the map was 257 times smaller than it actually was due to the long/short problem. So instead of doing the conversion, it was only operating on a small part of the map. The rest was unconverted and looked effectively like garbage.
Because I knew what to look for, I found a similar problem with my function that calculates the percentage of ocean coverage. (Probably because I copied the code from the first function.) Except in this case, it was only telling me the percentage of ocean coverage in the top few rows of my map. Not the same thing.
Whole lotta movies
I spent most of today looking at my computer, programming. Then at around seven o’clock I went out and rented two videos. I didn’t event bother going back home and instead drove to the theatre and saw How to Train Your Dragon. (Which I’m thinking may have been better than Avatar.) After it was over, I waited in line for over two hours and saw a midnight showing of Iron Man 2.
I think I’m movie’d out. And I need sleep.
Continued coding
So much for regular updating…
Last week I travelled to my parent’s place in the greater Calgary area. While there, a snowstorm hit and the power failed. This seems to be a recurring theme for me and that city. Power came on six hours later, but the internet was down for the entire day.
I find it harder to update my journal when I am at my parent’s place. It is out in the country, so there isn’t much happening. And less so if you are snowed in. I did do a lot of my own programming and have been steadily improving the application.
I did take a few wrong turns. I started working on getting waterflow calculated, but I later decided it wasn’t time yet. I think I need to create support for sub-maps first. It is something I should have implemented earlier, because they affect everything else. So I’m working on that for now. But there is something else in the way; sub-maps are useless if you can’t do any operations on them. So I am working on a feature to increase the granularity of a map or sub-map. Problems are showing up in that the images created are garbage if the original map was too large. I still need to figure out if this is a problem with the image generating code, or if the newly generated map has become defective.
I’m also working on my new job’s code. Right now my wage with them is fairly low; until I get over this probationary period. But because I’m only a contractor, I don’t feel emotionally involved with the code. I see parts that need rewriting to be improved, but if it isn’t something I’m told to work on, I don’t feel like sticking my neck out. Maybe that attitude will change later on, when I feel some ownership. We’ll see.
In a cubicle, you are never alone
Yesterday I went to a former co-worker’s home to help him with his current programming project. If I had still been employed, it is a problem I would have been working on. But apparently I can’t be hired back, even temporarily, without screwing up my severance. Still, I want to maintain my friends and network, and it was an interesting problem. It was actually enjoyable to work with someone else for awhile. Most of my programming these days has been just me and it is feeling lonely.
I then had the interview for the job. It wasn’t done in the time allotted and had to be continued today. My biggest issue with this job is that it seems to require Lotus Notes. I was forced to use Lotus Notes in my last job and it seemed to be one of the larger barriers to productivity. It is enough of a bone of contention that it is making me doubt whether I want this job. Still, I’ll give it a try and see if I like it.
The multi-hour meetings are not endearing.
On my own programming I got source control up and running. Now I’m working on getting the saving and opening of files to work. I’ve got a few memory problems I need to contend with. Hopefully I’ll get those sorted out quickly. Then I might feel confident enough to post it on a website and accept comments from other people.
I’m stuck in my home all day. I’m finding myself starved for socialization. It’s making me moody and a little down. I need to find some friends who want to go out and do things. I’d like to go see a movie in a theatre, but I can’t think of anyone who would join me.
For Science!
I went running this evening. That is hardly news, but tonight was special. Instead of warming up in the weight room, then stretching before driving to the Running Room, I just ran there and then did the stretching. Again, I’ve done that before, but what was special about this time was that I had a backpack on which had my runners in it.
That’s right! I used the foot gloves to run the 1.7 km. This was my first time out running with them. It was an interesting sensation. The pavement was hard to start, but I got used to it. Still, once I got out of Whyte Avenue and into the residential areas, I mostly stayed on the grass next to the sidewalk. Occasionally I did step on something uncomfortable, and once with real pain, but it never slowed me down.
The magic moment came eight minutes in. Then the muscles in my foot started to ache. I was training new/atrophied muscles! Fortunately my run was over within two minutes; it would probably have been a bad idea (when has that stopped me before?) to keep pushing it.
I changed my shoes at the Running Room and then went on my regular run. The first few minutes of that, I could feel my muscles still aching, although the ache had migrated to my lower leg. It went away soon enough.
I’m going to try this every Wednesday. Although I would like to go to a park and take a walk in them. Would that help?
Oceans are implemented. Lakes and rivers are still waiting.
Okay, that’s better. I’ve finished off my list.
Well, all the features are there, but I am not especially happy with the performance of the drawing of the relief view. It is especially evident if you change sea level quickly. There is a noticeable lag. But I’m more interested in getting the features in, and later working on improving speed.
Next up is using source control. It isn’t a feature of the product, but I’ve been wanting this for awhile. Basically, once it is installed, any time I make a change to the source code, it is recorded. I can undo the changes and go back to what the files looked like before. Whenever I want, I can “check in” the changes, and they will be saved to a repository with a note. I can then go through the repository and see what changes I have made to a file, and why.
This is something that real developers use. Usually in a team environment where there are a lot of people changing the files. I’ve been negligent, because I’m the only one modifying the source. But it is a wonderful system for keeping track of the work I’ve done.
Tomorrow though I have two other projects. I’m helping a friend with a programming problem he is having, and I have an interview with a possible employer. Because my social network got me this interview, it is feeling like fait accompli, but that is probably not true. It will require programming in a language I am unfamiliar with (but is very similar to two others that I do have familiarity with.) It’s also contract work, and I have never done that. I’ll need to do some research on what I need to do.
In any case, I think I can get all three projects done tomorrow. Help friend, interview, implement source control.
Continuing productivity
I have not been that productive lately. All those real world chores ate up too much time, yesterday and today. I did get a better percentage of water coverage on a sphere, but I’m not convinced it is accurate. I need to find a mathematician to help. I did discover another problem with my sphere generation algorithm, mostly that despite taking longer, it does not create a sufficiently granular map. I’m wondering if there is anything I can do to improve that. At least not without increasing generation time.
I sold my Apple stock this morning. It jumped after yesterdays financial results. I was actually expecting it to drop, as it is wont to do after good results. But I’ve had a good ride, and the stress of when-to-sell-and-not-feel-stupid has been getting to me. But I’ll be happy with a 91% return on investment.
I’d like to get back on the wagon, but I’m sure something will happen that will cause it to drop.
Day 1 of supervised programming
Things are looking up. I was much more productive today.
One of the things that helped was to play with parental controls on my computer. Those controls allow me to block certain websites and prevent me from wasting time with random browsing. I know the password to get around it, but usually the request for it is a good reminder that I shouldn’t be going there. Unfortunately, because it is PARENTAL control, it feels the need to block me from any adult sites, such as Facebook, YouTube, and LiveJournal. I just wanted to block digg.com, which I find to be my biggest nemesis for productivity.
But, in programming I finally got the sea level control window up and running acceptably. It failed its first UI test with an end-user, but I got valuable feedback. Thanks S.! I want to mull over the opinions and figure out the best way to implement them.
Tomorrow I have a few real world chores to do, but I also have a list of some features I want to get done:
- Get a correct percentage of ocean cover on a planet that is a sphere. (Yes, I realize that is most planets, but I do most of my testing with planets that are either flat or cylinders. They make better pictures.)
- Allow water to appear in shades according to depth, instead of a constant blue.
- Support the appearance of water in the relief view.
I think I can get those three things done. And if I can, I’ll feel good about starting to use version control.
I’ve been wanting to get to using that for awhile.