2015 was a life altering year for me. I embarked on new professional opportunities, changed my lifestyle drastically, and underwent some health set backs. With so much changing, I started to think about where my life was headed and what my next direction looked like. Although I am still learning and discovering, I know that there are a few things that I want, and others that I dont want.
“You don’t become a better athlete by moving up through the progressions you can’t do very well. You become a better athlete by taking the time to practice the progressions you can do well.”
Towards the start of 2014, Wendy introduced me to calisthenics and body weight training. We started watching videos, mainly by Frank Medrano, and we were very impressed with what someone can do with their own bodyweight; especially when we found out he follows a strict vegan diet!
I moved this blog from Tumblr to Github Pages, and it’s now built with Jekyll. Oh, and this is the first post of 2015, with no posts in 2014. Hopefully, things’ll be different this year.
AES/PKCS5 Perl ScalaAES/PKCS5 - encrypted in Perl::CBC and decrypted in Scala/Java
I constantly find myself digging through some of our raw data here at Mate1 looking for patterns or trying to figure out why we are seeing new ones. I usually sift through logs as well as user data and I join between a few tables. After I get most of my data I’ll apply transformations on the data, I group it, I compute aggregates, etc. At the end of this I’m usually greeted with MySQL’s usual tabular format which although is quite useful at times is also not the best format for showing trends and distributions. Most of this work that I’m doing is very adhoc and is not worth having any of the analytic team spend any amount of time on.
Yearly screenshot (=
I ran across one of my older screenshots from around 1999 running Enlightenment (DR14 I think) with Eterm, Electric Eyes, and XMMS.
I’ve been meaning to update the Typo install that runs this site but never got the chance to do it. I looked around for a bit trying to find a replacement and finally settled on tumblr. As a result of that choice I had to cobble up a way to export posts from Typo 5.0.2 to Tumblr.
Another quick hack I put together the other day was Akka 2.0 actors that use Kafka for durable mailboxes. It was more a learning exercise about implementing durable actor mailboxes for Akka than anything else. Perhaps I’ll put it to use one day soon.
One of the requirements we have for our chat service where I work is the ability to decide whether users are allowed to chat based on business logic that we execute in our permission system. This means that we need to ask the permissions system every time people start to exchange messages. To that effect we’ve implemented mod_msg_filter and figured we’d share it in case anyone else on the list has similar use cases.
This is a re-write of the original article that was here. Since then we’ve integrated Akka and Ejabberd.
Guzzler can now seek file and position, start, stop, and restart (from last good position) streaming from the binary log.
Guzzler now publishes binlogs and allows pattern based subscriptions using “dbName.tableName.opName” with wild-card support.
Guzzler allows you to stream MySQL binary logs from a master and lets you act on them using Scala actors (consumers). Consumers are configurable in guzzler.conf along with the rest of the required parameters. Included with Guzzler is a dummy consumer and a RabbitMQ one that will push queries into a RabbitMQ server for consumption.
This is my current home desktop running ubuntu/gnome. E17 lives at work right now (=
Been writing some Scala code, its fun, and one hell of a fantastic language. You should take a look at it some time.
++code ++work ++train
So I had to quickly whip up some graphs today at work based on values coming in from one of our database tables. Nothing better then Perl and GD (GD::Graph) for a quick and effective solution.
So here’s a quick python script I hacked out for folks here at work to set up and install the EFL and E17 from subversion.
After a night of solid clubbing, Wendy and I went for some breakfast at L’Avenue. While we stood in line waiting to go in, we decided to pick up a couple of pieces of cake from Premier Moisson because we were told there would be a 15 minute wait. After we finally got in there, we took a quick glance at the menu and ended up ordering 3 servings of egg benedicts for a grand total of: 3 plates of fruit, 6 eggs served on bagels and buns and 3 bowls of potatoes. The entire thing was around $50 and about 1000 calories per person. I haven’t eaten anything since (its 8:34 PM now).
I’m working on a new theme for this site. To force myself to finish it, I’m going to apply it directly, the result being, messed colors, fonts, etc until its done. Wee! (=
I was setting up my signature file (~/.sig) in Thunderbird today, and I thought to myself, “hmm, let me create a fifo instead, and pipe some output from fortune into it”. So I mkfifo’‘ed ~/.sig and wrote a little perl script to write out my signature into the fifo when Thunderbird asked for it. The script is pretty simple:
Yes, I’ve called it Frisk! Version 0.0.1 is ready, no public release yet, but I’m started to feel fairly happy with the solid foundations Frisk is being built on top. As it stands, there are 3 libraries (aside the other libraries from the EFL) that are being built: fkinetic, fthumbnailer, and fmultiscale. The first being a generic kinetic movement area, the second being a distributed thumbnailer and caching engine, and the third being the code display widget that lays out images and decides how to move them around and manipulate them.
I added some of my configuration files here. You can take a look at them in the configs page accessible through the menu.
I’ve been working on a new concept for an image viewing / searching application. For lack of a better name, it’s called Finder for now. The idea is the following. Say you want to find an image on your system; you know its mainly blue (of some sky), but you don’t remember its name, size, location, or when you got it. How can you go about looking for it? You fire up Finder, let it loose on your system, and ask it to cluster images by color. The end result is a big map of all your images, zoomed out, such that every corner of the image represents a color, and the closer you move from one corner to another, you see the colors converging into a gradient. So, naturally, you’d go to the blue area, use your mouse wheel to start zooming in and out, and “throw” the images around (using a kinetic energy panning approach) until you start finding something that resembles the image you’re looking for. You can then zoom in and out, and pan around, until you find your target image, at which point you can pick it up and use it. Right now, I’ve implemented the kinetic panning area, an LRU multi-layered cache system for the images, and the (huge) image grid widget that will hold those thousands and thousands of images. Some of the major challenges at this point are being able to handle the vast amount of data thrown at the application, scrolling it around, loading / unloading images, etc. The next major hurdle to jump over is going to be zooming in and out pretty fast (a problem that might be solved using mipmaps, but might require OpenGL, something I’m trying to avoid).UPDATE: Video here.
Off to the track! Soon! I was at qualifying yesterday, and seeing those F1 cars zoom, turn, and accelerate in front of me was awesome! I cant wait for the big race today (=
I added a small widget to the right sidebar that shows what music I’m currently listening to by pulling stuff from Last.fm. So far looking good, lets see what happens when I leave the music turned off at home and I listen to other stuff at the office (=
The last 2 weeks went by way faster than I wanted them to. I had my family over and it was just great. We had a wonderful time, got my place fixed up with all sorts of funky things, and over all spent quality time together. Nothing much to say, just thought I’d go for a small post to let everyone know where I’ve been lately (=
Why can’t most audio players (software and hardware) have a “repeat one” or “repeat selection” feature? I find myself, once and again, wanting to repeat a certain song over and over, either when working, or when I’m running or at the gym. The solution is usually to either place it in its own playlist or folder, or just keep hitting the back button every time its done. VLC has this feature, hey Audacious, wanna implement it? Rockbox too? You’ll sure as hell make my life easier and my listening experience more enjoyable.
I was running Ubuntu 7.10 since it got out on my box at home and its been treating me pretty nicely. Last night, I tried to use the internet updater to move to 8.04. After installing the system and rebooting to use the new kernel, I was greeted with a funky looking display. Everything was blurred, and looked like crap. After looking into it, apparently the version of X with Ubuntu 8.04 and the xorg intel video driver don’t work nicely together. I tried updating the entire thing from git, and still no dice. I so could not be bothered with it, i just cp -R’ed / into another directory, and decided to back to something I enjoyed using more, Gentoo, which is installing and updating world as we speak. It feels good to be back. (=
Is back!!! In all its glory too! Boring and semi static as usual - I need to find the best place to put the thing. The plan is to set up a couple of them eventually - I’ll need long USB cables though, or something of the sort.
So I moved to my new place yesterday, got things set up here and there. The place is still empty though - in dire need of some furniture and a BIG tv screen (= I managed to leech some internet from some random access point in the neighborhood. Not too bad, 500K/s, does for now. I stocked up my fridge with the needed nutrients (egg whites, cottage cheese) and my usual oat meal. Speaking of which, I’m hungry! (=
I’m moving in a few hours. The new place is much closer to work, and much more convenient. The only downside right now is that i will be offline for a period of time during the days on weekends, and during the nights on week days until my ISP “moves over” my connection there. Hisham TV will also be out for a while (=
Just when the weather was starting to clear up, and just after enjoying a sunny weekend, I got into the metro this morning, got out, and SWOOSH! Another nice windy snowy day! There was no way I was going to walk up to work form the metro in that weather, so I just waited (for around 15 minutes might I add) for the bus. Just another day in Montreal. (=
So was it any good? Actually, yes, it was, it made a lot of a difference at work… IRC was not too bad, since I phased it back in over the last couple of days, but IM was a major time killer. So whats a good compromise? Log onto IM during those times of the day where there isn’t a very heavy work load, like lunch, and right close to 5PM when we have our daily scrumm meeting.
I’m going to go for a few days without using IM or IRC during the day time. The point of the experiment is to figure out if IM and IRC have an effect on my work / productivity or not. Lets see how this goes… (=
So I was watching Lost (720p) yesterday on my PC, and that thing would drop frames like there’s no tomorrow. I started off trying it with Totem, then VLC, and then I got so upset with the quality of the playback, I installed and tried Mplayer. Wow… just wow… I used to use Mplayer on my laptop a year ago (on the FreeBSD install) but I haven’t tried it out since. Its amazing how well the playback quality was with almost no dropped frames at all. Tells you a thing or two about how different well written software is.
So I really needed to get a todo list up and running VERY quickly with minimal hassle. Rails to the rescue! With 2.0.1, you can do the following:
So I did some code and cosmetic upgrades on this blog. Testing it out for a while now before I roll it out completely. I’ve been doing some work on RFC 2812 in my spare time - the results should be public soon. In other news, more work, more gym, and just more life really. In terms of music, I’ve been enjoying some of DJ Code’s music - its quite good.
After lots of googling and documentation reading, I got a setup of mine to work properly with Tomcat 6.x, Hibernate 3.x, MySQL, and JNDI datasources. For what its worth, most of the resources on the web regarding setting this up with the versions I specified are worthless. To save myself the future hassle, and the lot of you who might be having a hard time setting this up, here are the configuration files and directives required.
'’Nuff said. (=
So whats the deal with people on Facebook having 65543 friends and whatnot? Well maybe not that much, but still, having a lot of friends.I have 61 friends, and I’m overwhelmed with all sorts of annoying feeds here and there and every-effin-where. I dont know who just played poker, I dont know who went to I dont know what event, someone just got bitten-axed-limbs-torn-up by I dont know who… That’s just silly. I could turn off all this sort of stuff by filtering most of it out, but, then again, (1) I can not be bothered setting up this stuff for every annoying feed type, and (2) I really do not care about this stuff (and most of the time, the people behind this stuff). So what am I going to do? Pretty simple and to the point, if your constant updates and feeds annoy me, I’m going to politely remove you off my Facebook profile. Don’t take this the wrong way, you’re just annoying me more than you’re making me happy knowing about your life by having you on Facebook. Message me or something if you ever want to talk. (=
This is one of the worst buses I have had to take in Montreal. I usually wait for it by the St. Laurent metro station, and boy what a wait. It gets worse every day. The latest trend is having the bus arrive only to have an “out of service” tag on it and it passes right by! Why would a bus pass on time, right by the queue of people, and have an out of service sign? As a matter of fact, I waited for around 35 minutes today. Both buses had an out of service sign, but the second one picked us up. I need to find a solution to all of this… -25 degrees and a 30 minute wait is not gonna cut it this winter.
Today was the first real snow storm for the winter. At -24 degrees celcius and constant snow (with lots of wind) I can barely see out of the window today. I woke up at around 9:00 AM and I thought it was the afternoon already. Today’s plan? Hot tea, laundry, and hacking code!
So what’s up with people writing crap and grammatically incorrect status messages on their facebook profile? “John Doe is I want to eat something” for example… Is it so hard to write “John Doe is hungry…” instead? For God’s sake people, come on! Use that thick lump between your ears a bit more and write proper English sentences…
Thanks to Amelia and Ted, I have a new couch (and other nifty things)!! You can check it out here. Now all I need is a movie to watch. Hmmm…
So what happens when a group of very motivated computer geeks exchange several emails at midnight? They meet up at 3:30 AM at a Second Cup and discuss the prospects of immensely crazy future work! Fantastic.
After getting myself a DA membership again, I decided to create a pastie for my latest submitted deviation (visible on the right hand side). DA should provide some form of API to let website builders integrate nicely with it, but I guess they wont. They want to stay in control of all of this stuff, and, more importantly, want people to have to pay money to use these services. I really need to rekindle my DA screen scraper project again. (=
I just got back to Montreal yesterday, and was greeted with a nice layer of snow. Very cool (in the metaphorical and literal sense of the word!). I’m going to have to get all sorts of things sorted out now (residency papers, insurance, social security, bank account, credit card, etc.) Taking it a bit easy today though, doing some work and unpacking my things. It feels good to be back. (=
Finally! Been here in Montreal for around 2 months now, and I’ve been sleeping on a sofa bed every night. My nice big new ultra comfy memory foam bed is here! Muwahaha! Long sleep-full nights are ahead of me!
So its 4 degrees outside, the sun’s up, and there’s a cool breeze in the air. What better time than to open up the windows, raise the blinds, and enjoy the weather! (=
So today I decided to work with Chris on some E17 code for adding context sensitive menus to E17’s file manager, EFM. I think we’ll be done with this by the end of the day with a working rigth click -> Set As Wallpaper for Edje background files. UPDATE: And that code is in CVS and working right now. Its applied for Edje files (backgrounds and themes) right now. The plan is to have an E17 module that allows the user to associate any mime / glob with a script / app on the system.
Well, I’m not depressed. Lately, everyone I talk to is either feeling down, or depressed. Tis the season? Autumn is depression season? Dunno, maybe, but I know one thing for sure. Its in your head, decide that you want to feel better, work towards it, and you will feel better.
Up for around 24 hours or so, lost track, and I can not seem to pass out and head into Snoozeville. I guess there’s no point wasting any more time, I’ll just start my day normally and see how it goes.
So I came back home today to find there was no internet access. WTF? After looking around for a bit, investigating the cable model, and trying everything aside the obvious, I found out the network card on my firewall died. Time for a new one, this blows.
So we were supposed to go out for sandwiches today, since we had a rented car… We picked a place up in Cote Vertu (bit far from down town Montreal), and decided to drive there at around 5:45 PM. The drive is usually a 15 to 20 minute one, assuming you know your way around (=. After around an hour and 15 minutes of endless roaming around, we finally got there, had our sandwiches, and started our journey back. Going back, for some reason, was extremely harder than going getting there in the first place!! We were almost outside Montreal, until we got some form of directions, and finally managed to find out way down town. The entire trip took us just over 3 hours. At least we got to tour Montreal a bit (=
So I’m off to La Ronde today! I hear its a pretty cool place, more info when I get back! The plan is to finish up, and get an uber steak and meat meal from Schwartz’s! Mmm… (=
Short message just to let everyone know that I’m in Montreal (= More news later!
I’m off to Canada tonight. I’ll be going through Paris. I’ll leave Beirut at 2 AM Beirut time (Thursday 23rd), arrive in Paris at 5:30 AM, then wait and fly to Montreal at 1:00 PM Paris time. I should reach my final destination at 2:40 PM (Thurs 23rd) Montreal local time. See you all on the other side!! (=
Why? I was performing a spider-man stunt over a 2 meter hight wall and landed improperly. As a result, I hurt my right ankle and I now need to use a cane for a short period of time. If you cant find CodeWarrior online, search for CaneWarrior. Adios! (=
So after years using Jed, I’m strongly thinking about switching over to gvim. Jed’s constant quirks like not working nicely with zsh and urxvt, artifacts, weird indents, and other crap are driving me away from it as a code editor.
So someone on irc (bmz from #etk) mentioned he wanted to do some drawings using the EFL and would like to be able to draw shapes and curves onto Etk widgets. After a couple of hours of tinkering about, I created the Etk_Cairo widget. This widget allows you to creae a “surface” on which you can use Cairo to draw. A short example would be like this.
Dale asked me for the Jed configs I use so I decided to put them up here for him (and others) to nab. You basically need to put raster.sl in /usr/share/jed/lib/colors/raster.sl and the other file can be appended to your ~/.jedrc.
So the past couple of days, without internet, have been pretty boring. While waiting for the ISP to get their act together, I coded a new Etk widget, the combobox entry. You can find a screenshot here.
Courtesy of Lucho (ManoWarrior), Evolve has replaced the gnome icons and now uses a set of fantastic new icons.Thanks Mano! (=
So I finally decided to give Zsh a try. I spent some time customizing my .zshrc, fixed the prompt, got everything the way I like it, and I must say, its pretty nifty. The auto-completion is very well done, and I certainly do prefer it over Bash’s. If you havent taken the time to look into it yet, I suggest you do.
Over the past couple of weeks, I have been working on Evolve. Evolve started out as a parser that can parse something like:
After a couple of server mishaps, I’ve decide to get this thing set up in a couple of places for redundancy and what not. I’m in the process of copying things over so its going to be a rough few days or weeks. Catch you folks on the flip side! (= UPDATE I’ve got a basic blogging engine up and running now, but without the data from the old posts or my files section.
Another year goes by - not much for now - more later. Can I have a knife and dice myself up for everyone to have a bit of? (=