Mysterium Vancouver?
Okay, I’ve been promising a bunch of updates about a bunch of things on here. Sorry, maybe later… :P
This post focusses on an idea that has slowly been growing since Mysterium 2009 with the live video feed. With the announcement that Mysterium 2010 would be in Minneapolis (and a number of people wouldn’t be able to attend), I thought about it a bit more, got some feedback from Odo, and decided to put this out for review.
Would people be interested in a Mini-Mysterium in Vancouver (BC, Canada)? One weekend, probably offset just before or after the official Mysterium. Consider it an alternative Mysterium for people who aren’t able to travel from the northwest out to the east for a convention.
Feedback, ideas, etc.?
Rewriting pidgin-cyanchat
When I first wrote pidgin-cyanchat over a year ago I had no idea what I was doing. Quite honestly, my knowledge of C was whatever I had picked up reading samples or flying back and forth in IRC conversations. I drew heavily from existing plugins (to the libpurple irc-prpl devs: you are pretty much the only reason this thing works).
I’ve fixed bugs here and there, added a few new features… but I wasn’t really happy with the overall design of the plugin. There were a few inherent issues, and as I was using the IRC plugin as my base, these issues are mainly due to differences between CyanChat and IRC:
- CyanChat has only a single room/channel
- CyanChat requires that you connect to the server, and then join the room/login… you cannot have PM conversations without joining the chatroom
- CyanChat has no user auth, no way to verify that a user is who they claim to be
In the existing implementation, I worked around those issues in a variety of ways, some of which weren’t even fully supported by Pidgin.
- I manually add a chatroom entry to the Pidgin buddylist when a CyanChat account is enabled, and manually remove it when the account is disabled. This prevents the user from setting a “friendly name” alias on the chatroom, and prevents it being moved into a group of the user’s choice.
- Essentially, the code is just full of checks to see if we are logged into the room before allowing PMs to be sent. It’s quite possible to type a number of lines to a user, and have them not sent due to not being logged in.
- I copied from the Bonjour plugin here (which as dynamic buddies across a LAN), and removed the add_buddy function to simply not add a buddy. However, Pidgin still gave me an “Add Buddy” option on all chatroom users. There is an existing bug report for this issue, with an expected resolution in Pidgin 3.0.0.
Wanting to do better, I started this week to rewrite libcyanchat. I split it into multiple files to make editing less of a nightmare, and I actually used comments this time :P
My new implementation is quite different than the existing one. The biggest difference is that one account can connect to multiple servers.
I decided to extend things a bit by making each CyanChat server act as a chatroom in Pidgin. So you create a CyanChat Account, and use the “Join a Chat” menu to specify a server, port, and nickname. A chat opens, which can be added to the buddylist the same way as an IRC channel, or a Jabber MUC. It’s a very nice, clean, easy system… until you remember that CyanChat supports PMs.
Now, a bit of background on the CC protocol… users are sent to the client in the following form
[1 digit user level][nickname],[IP address hash]
Although the server is supposed to prevent users with the same name, the user levels and IP hashes make it relatively simple to identify users. Each user is unique… until you add multiple servers. While there are only two official servers, they use the same IP hashing algorithm, whereas 3rd party servers use a different hashing method. The problem here is that if Bob is logged in on both official servers and I’m having a PM conversation with him, it would be impossible for Pidgin to tell which server I was using to chat with him, because the user ids on both servers would be identical.
So I devised a solution to ensure unique usernames… After the IP hash, add @server:port (thanks Jabber!). That would create a full user id of
[nickname],[IP address hash]@[server name]:[server port]
This works quite nicely for nearly everything. Yes, nearly… because now in a PM conversation with Bob, I get a huge behemoth complicated username sending me chat, rather than simply the nickname. This isn’t a problem in the chatroom, only in PM conversations.
Edit: The user level should not factor in as it would mean messages from ChatServer are spread across two windows due to varying user levels.
So how does on fix that issue? Well, one can’t. Pidgin (libpurple) doesn’t seem to have any way to alias a user who isn’t on the buddylist. So I have no way to simplify the display of Bob’s full id into the simple nick of “Bob”.
I would definitely appreciate feedback on this, especially if someone knows of a workaround for this issue. The biggest problem is that I don’t see any existing protocols which would need to do something like this, and hence I have no examples from which to draw ideas.
Vacation!!
Yes, I know I haven’t updated recently… Here’s a basic summary:
Oh noes! Grad cut-off and chaos!
SSGH fun.
w00t! Graduation!
Geography exams make me a sad llama.
BBQs are awesome.
Anyways, I’m heading off camping again. :D Tofino for a week (leaving tomorrow), and then Barkerville for a week after that. Both are a lotof fun, and both should yield some amazing textures :P
Victoria, Day III
The 3rd day is always the least eventful, and involves a lot of travelling. We walked to Timmies early this morning, and then got on the bus to head to Fort Rodd Hill. We spent close to two hours at Fort Rodd before heading to the ferry to get back to the mainland. The best part of these trips (especially Connections trips) is sitting up near the front and listening to the teachers talk. This is how one learns interesting things, such as the taste-saturating abilities of ketchup.
Overall, the trip was great, and I had a lot of fun again :D
Victoria, Day II
Woke up early this morning (although not quite as early as yesterday) in preparation to head out to visit Frances Kelsey, the only other self-directed school in the province. Stopped at Timmies for breakfast (<3) and went to FKSS. Got a tour by some of their leadership students, played a bit of capture the flag, and then ate pizza with their grade 12 cooking students. I was also introduced as an “invaluable and crucial developer of [my school]’s website” and gave my name to some teachers at FKSS who were hoping to start their own website using the Moodle Project. FKSS is very different from our school, and yet so similar. They have two blocked classes for every subject, and then fewer “flex” times. While our school has a number of very large work areas, FKSS has many smaller work areas, and many more seminar rooms (interesting politics behind that… very interesting politics, that I often see mirrored at our school). We headed back to downtown Victoria afterward, and the grade 11s started the Amazing Race. Jessica, Maggie, and I walked up to Craigdarroch Castle and spent about an hour touring it. Still as wonderful as ever, and still where I one day dream of setting up my residence ;). Then we caught a bus up to UVIC. Not just any bus… a double decker bus! It was amazing to feel so high and superior to all of the other cars on the road, while actually using public transit. Jessica loved the bunnies at UVIC, and she spent 10 minutes or so futilely trying to pick one up in hopes of taking it home. We caught the bus back downtown and grabbed a snack before meeting Godfrey in Bastion Square. Ah, the annual “Food Eating Contest” where each team tries to find something absolutely disgusting and eat it. One team this year had gone to a market in Chinatown to buy their foods, and misheard the cashier say “semen fungus” in place of “persimmon fruit”. I swear Godfrey was howling with laughter for almost half an hour. After the contest, which was filled with its own surprises (btw, congrats Mallika for eating her own, and everybody else’s concoctions). We went to Earl’s for dinner, which was good food, but rather slow service. Then Mallika, Maggie, and I went to take more photos in HDR :D. Came back to the hotel and had a small, short-lived game of football, before heading in for the night.
Victoria, Day I
Woke up at an entirely unreasonable hour (4:30) today to be at school for the bus. Trip to the ferry was rather uneventful, although filled with delicious candy. Ferry trip itself was a bit boring, a number of us were hoping for wireless Internet on the boat, but unfortunately there was none to be found. A few of us played cheat for a while after heading up on the deck. Arrived in Victoria and had some free time for lunch (food court of course! :D) and then a tour of the legislature buildings. The tour this year was much better than last, and I learnt a few things that I hadn’t known before. Then we headed back to check into the hotel, and get things organized. We went out for the group dinner, which unfortunately was to a Chinese buffet-style restaurant. I, alas, am not a big Chinese-food eater. We then walked around downtown for a bit, where Mallika and I took some of the most amazing photographs with Mr. Biggar’s D300 camera. HDR is so definitely FTW! Ghost tour started soon after, and was much like the tour last year, although slightly less exciting IMO. Got back to the hotel, and did a quick Timmies run before bed.
Random fact time: There is only one flavour of ketchup, because ketchup reaches all of the taste areas of the tongue, and in fact saturates them entirely. Ketchup cannot be more “ketchupy” because it’s already overloading the taste sensors in your mouth. This is also why ketchup is so perfect for disguising foods that you don’t like.
Lost in Eternity
Okay, a few reason why my blogging ability fails:
- I have Twitter, which is great for those short things that I want to share. Blogs are fairly boring when each post is only 140 characters…
- Although I often want to respond to Uru forums posts or other blog posts (such as vaaht’s recent post) I generally don’t (especially forum posts, since people seem to take offense to my criticising of their stupidity) or give my thoughts over IMs.
- I have issues with getting my thoughts onto a tangible medium in a way that keeps them intact. I make abstractly logical associations in my head that don’t communicate well… anywhere outside of my head :P
- Usually anything personally ends up in IMs, because I have this fear that my blog will turn into an emo-fest. That, and my personal stuff always seems so mediocre and meaningless in the long run.
So, the past two months in recap? $cat < /dev/dox
Melissa got me hooked on A Softer World; and just yesterday Chacal posted a link to Sequential Art. Those are likely two comics that I will follow irregularly, along with my devotion to XKCD.
I’ve decided/discovered that my favourite time was my grade 10 year, the year I started this blog. Despite what it might seem, that year was a lot of fun and if I could build a time machine, you’d find me in spring 2007.
Grad is coming up, and my ambivalence to the world is apparently an issue for some people. I do care about things, just evidently not the things that I’m supposed to care about.
School is both amazing and boring me to death. I’d really like nothing better than to sit in 2029 all day with friends and read cracked.com, but some people seem to think that my marks aren’t good enough to merit enjoyment and fun. I’ll be spending the next week in physics.
I’m passive aggressive. Deal with it.
I can fill in the entire periodic table on sporcle.com in under 4 minutes. Spring break didn’t go entirely to waste. :P (Incidentally, my friend use spring break to learn all 53 countries of Africa on sporcle.)
I’m doing some work on Ahra Pahts, and there are some days that PyPRP makes me want to shoot myself.
I have 3 computers in my room, with RAM sticks on the floor like candy wrappers. Streaming media server: here we come!
Some days, everything seems blurry and disconnected… like it’s impossible to focus on one thing for very long, or pay attention to conversations… Sometimes I like that, and sometimes you go through a day hearing all the conversations that just catch in your mind and won’t let you think.
Æternity
This is the regret which once brought you down,
drowned you in silent insanity;
Locking you out of both kingdom and crown,
Feel the trials of inhumanity.
How obvious this irony, we dream
of lies to ignore our fate, realize
this world will never be part of your scheme.
The life you wanted, you idealize.
Did you hear how every breath stole your mind?,
eroding you, as you lay in the night.
The cries that never left your lips will find
eternity to haunt you and incite.
I am the dark that brings you to your knees,
I am the storm that silences your pleas.
Day 3
Headed back home today, fairly uneventful trip back. Didn’t get stuck on any turns with the bus this time :P. Stopped in the old mining town of Hedley to wander around for a bit. I personally love the little town, although it’s mostly dead. Lots of cool things and crazy people. Someone built a domed roof out of car windshields, which is a pretty cool thing to see. Stopped in Princeton again for lunch, and then drove pretty much all the way home without stopping. It was a very fun trip, lots to see and do, but I am glad to be home where I can sit down and have a cup of tea in an actual cup (as opposed to a bowl or mixing container).
