Updates, News and New Implementations

Even though I have been quiet for a while, things are a lot busy.

I have been spending a lot of time on preparing myself to get a PMI certication and become a PMP. I had classes with the PMBOK while at College, I participated on several training courses after that, I have read many books… and even then, I don’t feel ready to apply for the certification.

It is part of my daily tasks, but what makes me believe I am not ready are the subtleties of things and some of the questions I remember from College, when studying that and thinking about applying for the certification.

On the IT field, I have been playing more with org-mode and I am almost ready with making it “talk” to my Google Calendar. Here are some hints for that:

http://emacsworld.blogspot.com/2011/05/integrating-emacs-org-mode-and-google.html

http://thread.gmane.org/gmane.emacs.help/80824

http://code.google.com/p/googlecl/

And, I am also happy with finally being able to enable the transparent background on Emacs. I have added this code to my .emacs (actually, I use org-mode to manage it as well, so the process was a bit different, but the idea is the same):

(defun djcb-opacity-modify (&optional dec)
  "modify the transparency of the emacs frame; if DEC is t, decrease the transparency, otherwise increase it in 1%-steps"
  (let* ((alpha-or-nil (frame-parameter nil 'alpha)) ; nil before setting           (oldalpha (if alpha-or-nil alpha-or-nil 100))
          (newalpha (if dec (- oldalpha 1) (+ oldalpha 1))))
    (when (and (>= newalpha frame-alpha-lower-limit) (<= newalpha 100))
      (modify-frame-parameters nil (list (cons 'alpha newalpha))))))

 ;; C-8 will increase opacity (== decrease transparency)  ;; C-9 will decrease opacity (== increase transparency  ;; C-0 will returns the state to normal (global-set-key (kbd "C-8") '(lambda()(interactive)(djcb-opacity-modify)))
(global-set-key (kbd "C-9") '(lambda()(interactive)(djcb-opacity-modify t)))
(global-set-key (kbd "C-0") '(lambda()(interactive)
                               (modify-frame-parameters nil `((alpha . 100)))))

The source for that is available at http://emacs-fu.blogspot.com/2009/02/transparent-emacs.html

The original code had the steps move in steps of 10%. I have changed the code a little to make it move in 1% steps.

And, finally, this weekend it was Valentine’s Day here in Brazil. It was really cold – with some ice on the glass ceiling from my neighbor – what contributed a lot to the romance and for my wife and I spending the time together.

Every time I am able to spend some time like this, I stop and think about how many times I am doing that and if it is not something that I need to improve. It is hard to manage all the work tasks, studies, and still get some free time to spend without worrying, but I am sure that my Number One priority should be my family.

I think that these updates were not enough for the time I didn’t post, but I am trying. This blog already has more – relevant – posts than anything I was able to keep before (maybe Multiply had more posts, but it was a different time in my life).

Advertisements

Customizing your Emacs Colors

The best thing besides using the best text editor – that is really the one you adapts better, in my case it is Emacs – is being able to make it look like how you want it to look.

The first step is always customizing colors in a manner that doesn’t get you tired after some hours of work as well as in a manner that integrates it with your desktop environment.

Here are two suggestions of websites where you can take a look at different profiles and customize colors in Emacs:

GNU Emacs Color Theme Test – Perl

Emacs color-theme creator

The second link – color-theme creator – is the best one to create unique themes.

Implementing and Monitoring

Most of us, people from IT, forget about the post-implementation process.

It isn’t just supporting the application, but providing means to monitor the system health.

Lets say you deploy a web system and for that you have to install the webserver, the database server and your own code. You guarantee that your system will work based on several tests you have coded and perharps some techniques to restart the application in case it fails or reach some limits. But what about when your application stops because of the web server? Or the database server?

If the customer has a team to support them, it is understandable that it is this team’s responsibility to install, monitor and keep the infrastructure needed by your software. If they don’t, a failure on any of those components is a failure on the functionality you provided them.

You can make agreements, draw the component structure, etc. but when things fail, it is your software that has become unusable to them.

Other than that, as time passes, disks fill up, hardware starts showing issues (some of them are SMART – hint! – enough to provide you with alerts) and that dedicated server to a single task is not “so dedicated” anymore (again, if you manage the infrastructure you can have some control over it, otherwise their IT will have to take care of what goes where for them).

One great thing that can be done – and should be done – is documenting certain thresholds on your system and providing alerting and monitoring tools to the customer. Put that in written form and say that when certain threshold is reached they should take some corrective or preventative actions (automate it if you can!) and for other components you can show them that new hardware is needed.

We are so focused and worried with delivering things that we forget about keeping it running.

Putting things on the cloud helps reducing some of your concerns, but shouldn’t be an excuse for not monitoring and reporting things.

A last reason to monitor: know your system requirements. Do you know how much memory your system requires with 10 simultaneous users? With 50? What about 1000? What is the required hardware to recommend your customer to upgrade to?

Monitor. Report. Follow on.

Serendipity

Just a quick note on something I found out by accident (see Serendipity at Wikipedia):

  • if I don’t change the date of the draft that I started writing with org2blog, then the publishing date becomes that of the draft

It is interesting that I can change the date of the publication by simply changing something on my own copy of the post. And it is more interesting that this change reflects on the archives and publishing dates that are visible on the main page of the website.

After some time, updates!

I’ve been doing a lot of things lately.

After my annual leave was over, I got back to work and had to deal with the huge backlog. It doesn’t matter if another person works on keeping your things up to date, you still have to go there and review items that need some follow up, take notes of processes that changed, etc.

I have also been working on developing some global strategies for my projects. This takes a huge effort and a lot of time.

At home, I have been playing with Emacs, Python, ExtJS and of course reading email and news.

I have found a very interesting article on Emacs keybinds. It is worth reading it. If not for the knowledge, at least for the templates.

I still have to “play” with Protovis. It looks like a great library for charts on the web.

I also had issues – again – with some magazine subscription that I wanted cancelled after they billed my credit card on an automatic renewal. I got reimbursed and they lost a customer that is now telling everybody how they didn’t stick to our agreement of not having the subscription automatically renewed.

I had my performance evaluation last week. Lots of things to think about, other things to keep tracking. Overall, a good thing.

Looking for new challenges as well…

As you can see, there are too many things going on.

And I still want to find some time to go back playing with electronics and microcontrollers, after all, I’m an engineer. 🙂

Updates on Personal Development Environment

IDEs

I have tested several IDEs lately and in the end I came back to Emacs.

Since last week I have also started to fix my Emacs customization. I have moved to using org-mode to manage my startup files and started the process based on the configuration done by Kieran Healy on his Emacs Starter Kit for the Social Sciences.

I chose this starter-kit instead of the other options – they are listed on Kieran’s code – because it already added some scientific packages that I am interested on.

I am still fixing my customizations to different org files and adding comments to them. It is amazing how messy they were before and I could even find some duplicate / conflicting definitions.

Doing some review from time to time should be a lot easier now. I hope that maintaining the code should also be easier.

There are some drawbacks, of course, but I prefer addressing them on a case by case basis. One of them is not being able to use the customize tool from Emacs and adding the customizations to my .org files. So, I use the customize tool, test and when things are working as I want them, I move the file to the correct .org file.

Javascript Library

I have also changed from using jQuery to using ExtJS. ExtJS provides me with faster deployment rate and is also more aimed towards the type of application that I am writing.

It is not an easy change, as I was used to work with jQuery and had a lot of logic already implemented. I’m running both in parallel while I convert to using ExtJS alone.

One of the main reasons for the change was that with jQuery I kept glueing code from different plugins and that had different “quality standards”. Using ExtJS I can also add different plugins, but the base library already provides a lot of what I need. Actually, I did not add any external plugin yet (only for testing purposes).

All in all, it is being a good change.

Documentation

I have also switched the method I use to document the systems I work on.

There are two different types of documentation: code and system documentation. For code documentation, I am still using comments on my code along with some complimentary design notes.

For system documentation (user manual, system API, reference, etc.) I am using org-mode.

Org-mode with org-babel allows me to add diagrams, formulas and other external images that help me on describing the processes and the inner workings of the systems.

I have moved from first writing code to make what I need work and then documenting as I go to first documenting the exact needs, define the API, draft sketches, etc. and only then writing code.

Coding speed has increased, with a better quality documentation. The whole process, though, takes a bit longer but is more pleasant to the end user as things are better thought and the interface is more consistent.