Thursday, April 7, 2011

Quick and Easy Development with Git

This article just summaries the workflow I have on git.

Suppose that you have bug 444444 to fix.
  1. Check out into a new branch.
    git branch -b 444444 origin/HEAD
    The additional origin/HEAD makes it track the remote origin everytime git pull --rebase is done, to prevent it from yielding any errors even when you are not in master
  2. Code. Modify. Debug. Etc. Don't be afraid to commit the changes which you think would be important milestones in your patch/development. Do git commit -a whenever you think, or even whenever you like. You will see why later
  3. So you've done all the hard work and you are ready to push the patch. You need to merge all the changes into 1 commit before pushing it, right?
    git rebase -i HEAD~N
    With N being the number of commits that you intend to merge. This command is very powerful. You will be presented with an preformatted plaintext in your favorite editor.
    pick 7e95944 Require and build against Mutter 3.0
    pick a73f02a Add NEWS file with 3.0 contributors
    pick d6c3868 Bump version to 3.0.0
    pick b9828bf StScrollbar: clean up properly when unmapped during scroll
    pick 89de3a8 Bump version to
    # Rebase d25418b..89de3a8 onto d25418b
    # Commands:
    #  p, pick = use commit
    #  r, reword = use commit, but edit the commit message
    #  e, edit = use commit, but stop for amending
    #  s, squash = use commit, but meld into previous commit
    #  f, fixup = like "squash", but discard this commit's log message
    #  x, exec = run command (the rest of the line) using shell
    # If you remove a line here THAT COMMIT WILL BE LOST.
    # However, if you remove everything, the rebase will be aborted.
    In the above example, I chose git rebase -i HEAD~5. The commands are pretty self-explanatory: just choose whichever commit you wanna merge into(the previous commit), changing the word which starts the corresponding commit 'pick' with 'squash'. When you close the editor, you will have a chance to edit the final commit message before the final change in the affected commits is being applied.

    Note that git rebase destroys/changes history, so it may be a problem if you want to track a particular change which you did which introduced a new bug. What I usually do is that I only merge tiny changes into one big commit which fixes a feature of the bug. Just make sure that your 'squashed' commits will focus on one atomic change so you can track what you did. Thanks Caio Tiego for mentioning this.
So what do I do now? Just create the patch with git format-patch and you are good to attach that patch!

I noticed git rebase is a damn useful set of commands git has. Feel free to take a look at its man page to see other tips and tricks!

Tuesday, March 29, 2011

Flower Hacking

No I ain't evil. =( I didn't hack flowers with a rake.

Oh... I meant hacking gnome-shell with flowers! I must be darn bored today.

If you guys didn't know yet, the $GNOME_SHELL_DIR/data/theme contains all the files needed to make your gnome shell look like, well how it look like. So I had an idea.

I created a .. flower..
in GIMP. And export it as a GIMP brush. Then I created a 52x52 pixel GIMP file with transparent background and I arranged my flowers on it.
I saved it as flowercorner.png. Then I place the file in $GNOME_SHELL_DIR/data/theme/. After which I changed gnome-shell.css codes to refer to the new image instead.
.ripple-box {
    width: 52px;
    height: 52px;
    background-image: url("flowercorner.png");
After restarting gnome shell ...

Okay that's all for now. Who knows... I may make a 'flower and bee' theme for gnome-shell wahahaha.

Friday, March 25, 2011

End of the Internship: Resolution

It's been a long time since I last blogged; or at least... making a 'willing' blog post. I sure would've a lot of things to blabber about, but with so many 'other things' going on in life I just totally didn't have time nor the mood to do it.

I've been writing things, in a way, for the intended audience, which is just so not my style of blogging. Maybe it's because the fact of how 'potential employers' may have come across my blog and I want them to have a good impression. I have my own perspective, opinions, and things that I believe in, and I think it should be time for me to start writing that way.

Private stuffs aside, I must say that this internship is a huge success in its aims to educate how women are able to participate in free software projects. I may already been self-educated about what 'free as in libre' software means, lots of jargons, the motivation behind free software and etc, but I had yet discover a way to get involved, until this internship. I learned a lot of things in these 3 months, and that includes learning javascript(actually from scratch) and git. (I am now using git together with my personal stuffs like .bashrc .vimrc... it's really a great piece of software.) Of course, not to mention that valuable experiences that I've learnt which will help me in my future.

Personally, I love Gnome Shell. I mean seriously and I ain't just saying that because I am a Gnome Shell developer. It makes interacting with the desktop a lot easier, comparing to using the classic Gnome 2 desktop. I remembered there were certain negative feedback about it but you just can't expect things to be perfect... I mean, it's a complete rewrite. People are scared of changes, and since Gnome Shell has changed tremendously over its ancestor, it'll be only natural there are haters to it. I am however a person who's flexible and I totally like how Gnome Shell is designed to be used.

I think there's all for now or I may be going out of topic :p.

Sunday, March 6, 2011

Status Update


  • [Bug 639468]Changed default icon for contacts without an avatar for empathy
    • [Patch]Posted on 17/02/2011, Committed on 17/02/2011


  • [Bug 636680]Implemented suspend function in statusMenu.js
  • [Bug 636838]Separate Banner and Summary Modes
    • [Patch 182203]Incoming notifications will only be shown if there is no focused tray items. Posted on 16/02/2011, Overwritten by [Patch 181092]
    • [Patch 181092]Incoming notifications will only be shown if there is no focused tray items, Unread summary items are marked with a glow. Posted on 17/02/2011, Reviewed on 17/02/2011
  • [Bug 617224]Message Tray Design Update
    • [Patch 180685]Added right click menu for summary items. Posted on 11/02/2011, Reviewed on 25/02/2011

Awaiting for review

  • [Bug 636838]Separate Banner and Summary Modes
    • [Patch 182203]Unread notifications(including summary notifications) are marked with a glow. Posted on 01/03/2011


  • [Bug 630937]Enables navigation using arrow keys in notifications with buttons
  • [Bug 617234]Notifications from telepathyClient are aligned towards the left and grouped together
  • [Bug 630942]Notifications with CRITICAL urgency are no longer timed out
  • [Bug 630934]Chats should jump to the top of the notification queue
  • [Bug 630767]Increase the timeout for hiding the tray if the mouse didn't move far from it

Saturday, February 5, 2011

I want to buy a new computer..

So this has been circling in my mind for months, when apparently I bricked my desktop about 2 months ago. The reason of this bricking is in fact due to overclocking. This was my desktop(right out from my memory):

  • Phenom II X4 940 Black Edition (Deneb)
    • Stock was 3.0GHz
    • Stable OC was 3.4GHz with via unlocked multiplier with no change in anything else. 
  • MSI KA790GX-M Motherboard
    • AMD 790GX Chipset
  • 2 X 2 GB Kingston HyperX DDR2-800
    • Stock was DDR2-800 4-4-4-12
    • Stable OC was DDR2-1066 5-5-5-18
  • Asus EAH4670 1GB
    • ATI HD4670 Graphics
  • FSP Group 450W Power Supply Unit
That was the last stable configuration because I was using the stock cooler. It was very stable: I've used it without any hiccups for a year or so before I bricked it while intending to overclock it higher. Reason was because that I bought a new cooler; and I read on the web that Deneb processors can easily reach a 4.0GHz OC on air. All the while I've however forgotten about the wattage of my PSU, and hence that lead to a catastrophic failure of the motherboard and PSU(maybe processor... I don't know yet).

I was only stress testing the system at 3.6GHz with a slightly OC-ed Southbridge and Hypertransport, and a little over-voltage . The temperatures actually hovered around 62 Degrees before the system suddenly suddenly blacked out(as if somebody pulled the plug)

So my motherboard actually came back from warranty(my mum insisted on sending it for warranty), I've yet have a chance to test anything yet(I don't have a PSU with enough 12V wattage to try to power on  that 125W TDP Processor).

That happened, unfortunately, when my internship was about to start. So I went to buy a cheap(really cheap 50-60USD?) Intel Atom motherboard and have been using this system since.

When I build gnome shell on my old system it only took about 25 minutes to complete building. However, now it takes like 3.5 hours! =_=..

So I am kinda like all bent to buy a new computer. However I didn't have enough money for that, not until recently Gnome Foundation just paid me ._.

With the new Intel Sandy Bridge Processors released not long ago, there are emerging laptops with Sandy Bridge processors as well. I originally considered the new Alienware M11X; however I've just identified a better system at a cheaper price. Which is why I am making this post trying to ask for some feedback from you guys. This laptop is Acer Aspire AS 5750G-2634G64Mnkk. Specifications are as follows:

  • Intel Core i7-2630QM (Quad-Core Sandy Bridge)
    • 2.00GHz, Turbo Boost up to 2.90GHz
    • 6MB L3 Cache
    • 45W TDP
    • Intel Graphics HD3000 (12 EUs)
      • 650MHz, Turbo Boost up to 1100MHz
    • DMI 2.0
    • Up to Dual Channel DDR3-1333
  • Intel Mobile HM65 Express Chipset
  • Genuine Windows 7 Home Premium 64-bit
  • 640GB SATA HDD
  • 4GB DDR-3 RAM
  • 15.6" HD 1366 x 768 resolution, high brightness(200-nit) Acer CineCrystal LED-backlit TFT LCD
  • Nvidia GeForce GT540M
    • 1024 DDR3 Dedicated VRAM
    • Nvidia Optimus (seamless switching between Intel Graphics HD3000 and Discrete)
    • Nvidia CUDA
    • PhysX
    • PureVideo HD
    • OpenEXR High Dynamic-Range (HDR) technology
    • Shader Model 5.0
    • Microsoft DirectX 11
  • Integrated 8X DVD Super Multi Plus Drive
  • Multi-in-1 card reader
  • Acer Crystal Eye Webcam
  • 1-Year Limited International Traveller Warranty
  • Exclusive Designed Traveller Bag
This is priced at MYR2899(USD952). I've yet to find any reviews on this laptop so I am asking for some comments. :(

I've quite a lot of blog drafts awaiting for publishing(ie. I will talk again soon =D)

Saturday, January 22, 2011

Status Update


  • [Bug 630937]Enables navigation using arrow keys in notifications with buttons
    • [Patch]Posted on 20/01/2011, Reviewed on 28/01/2011, Committed on 01/02/2011
  • [Bug 617234]Notifications from telepathyClient are aligned towards the left and grouped together
    • [Patch]Posted on 30/12/2010, Reviewed on 30/01/2011, Committed on 01/02/2011


  • [Bug 630937]Enables navigation using arrow keys in notifications with buttons
    • [Patch]Posted on 20/01/2011, Reviewed on 28/01/2011
  • [Bug 617234]Notifications from telepathyClient are aligned towards the left and grouped together
    • [Patch]Posted on 30/12/2010, Reviewed on 30/01/2011

Awaiting for review

None at this moment


  • [Bug 630942]Notifications with CRITICAL urgency are no longer timed out
  • [Bug 630934]Chats should jump to the top of the notification queue
  • [Bug 630767]Increase the timeout for hiding the tray if the mouse didn't move far from it

Tuesday, January 18, 2011

GNOME Outreach Program for Women Internships - Status Update

    [Bug 630934]--------------------------------
    [Patch]Committed on 5/01/2011
    [Bug 630942]--------------------------------
    [Patch]Reviewed on 6/01/2011
    [Patch]Commited on 11/01/2011
    [Bug 630937]--------------------------------
    [Patch]Reviewed on 13/01/2011
Awaiting for review
    [Bug 617234]--------------------------------
    [Patch]Posted on 30/12/2010
    [Bug 630767]