Monday 30 April 2012

Software Construction

So I am reading this book that my colleague recommended, Code Complete by Steve McConnell. It's supposed to contain the best practices of software engineering, without which, not only your software is mediocre, it's also very expensive.

The book makes it clear early on that it's only about the Software Construction part of the software development life-cycle, but does talk about what to assess before doing construction. So it does talk about what're the steps before it.

Here's the life-cycle as the book mentions it:
  • Problem definition
  • Requirements
  • Architecture
  • Construction
  • Systems Testing
  • Future Improvements

What I was surprised to learn is that problem definition really has to be just the problem. It can't contain any solution in it, and it can't contain any technical terminology. It should state the problem, as faced by the User, in User's words. Only then can the requirement analysis be unbiased and most suitable. 

From the book:
A problem definition defines what the problem is without any reference to possible solutions. It’s a simple statement, maybe one or two pages, and it should sound like a problem. The statement “We can’t keep up with orders for the Gigatron” sounds like a problem and is a good problem definition. The statement  “We need to optimize our automated data-entry system to keep up with orders  for the Gigatron” is a poor problem definition. It doesn’t sound like a problem; it  sounds like a solution. ...

Suppose you need a report that shows your annual profit. You already have computerized  reports that show quarterly profits. If you’re locked into the programmer mind- set, you’ll reason that adding an annual report to a system that already does quarterly reports should be easy. Then you’ll pay a programmer to write and debug a time-consuming program that calculates annual profits. If you’re not locked into the computer mind-set, you’ll pay your secretary to create the annual figures by taking one minute to add up the quarterly figures on a pocket calculator. 
— McConnell, S. (2004) Code Complete.

Tuesday 24 April 2012

Rehmat

Yeh teri he rehmat hai Aay Mere Allah! Meray Rab! Meray Malik! Kay tou nay apnay kutton k kutton ko bhi woh izzat di jo tere walion ko milti hai!

Ae Allah! Humain us izzat k laaiq bana day jo tou nay humain ata ki! Humain na shukri se bacha, humain ghaflat se bacha!

Ae Raheem Allah! Humain us mohabbat k laiq bana de jo tounay hum se ki aur humain us mohabbat ka takaza pora karnay wala bana!

Ameen!

Monday 23 April 2012

Shaykh Kamaluddin Ahmed

Shaykh Kamaluddin Ahmed was born and raised in Manhattan, New York City. He recieved a BA in Political Science and Arab & Islamic Civilization from the University of Chicago. Shaykh Kamaluddin then spent many years in Pakistan, studying full-time the classical disciplines of Islamic learning including tafsir of the Qur’an, Hadith, Arabic grammar, law and legal theory. He recieved the ‘alimiyyah degree as well as formal authorization to transmit legal opinion (ifta).

From 2005-2010, he was a lecturer in Islamic Intellectual History, Legal Theory, Spirituality and Ethics at one of Pakistan’s leading universities. Currently, he is a postgraduate student in Islamic Intellectual History and Legal Theory at the University of Oxford.

For over seventeen years, Shaykh Kamaluddin has consistently remained in the close company of the highly respected Shaykh Zulfiqar Ahmad, and was granted ijaza by him in tasawwuf (islamic spirituality) in 2002. Since then, he has continually tutored seekers on the path to becoming closer to Allah. Shaykh Kamaluddin divides his time between the UK and Pakistan, guiding students and delivering lectures at masajid, universities and institutions of learning.

 The Shaykh and his respected wife have also established Zaynab Academy, an Islamic educational institute which offers free online courses for women the world over.

Thursday 19 April 2012

Tahoma

Tahoma is one good font. Looks great for bodies of text, when your body text is 8 pt. For example,
In the central portion of the great North
American Continent there lies an arid and repulsive
desert, which for many a long year served
as a barrier against the advance of civilisation.
From the Sierra Nevada to Nebraska, and from
the Yellowstone River in the north to the Colorado
upon the south, is a region of desolation and silence.
Nor is Nature always in one mood throughout
this grim district. It comprises snow-capped
and lofty mountains, and dark and gloomy valleys.
There are swift-flowing rivers which dash
through jagged canons; and there are enormous
plains, which in winter are white with snow, and
in summer are grey with the saline alkali dust.
They all preserve, however, the common characteristics
of barrenness, inhospitality, and misery.

Sunday 8 April 2012

Excellence

The other day I was reading an article (that was really good) on a blog, and I figured really, what we really want is less of the fleeting pleasures that we so crave! That we so are addicted to...
Speed is a source of stimulation and fleeting pleasure. Slowing down is a route to depth, more enduring satisfaction, and to excellence.
source: blog.hbr.com - Slow Down, You're moving too fast. 

Sunday 18 March 2012

The revered to-do list revisited

Before the last quarter of the last year, I published a to-do list. It was a list of things I wanted to accomplish before the year ended. Those three months passed, and then six months of the next year also passed! And I haven't completely accomplished those things :) Well - one reason is that though those were desirable goals I wanted to go towards, I wasn't really driven, because nothing visible depended on them. Anyway, I was saying, though I haven't accomplished those things, there have been other developments that I wanted even more badly, that I hadn't written there, that God made to happen! They were so unlikely, so impractical, that I didn't even write there. Yet they happened. More about them later :)

But now,  the list from last year:


  1. Spend some time in tableegh
  2. Make a facebook app
  3. Learn C and C++
  4. Write a Compiler!
  5. Study Operating Systems
  6. Learn to read and research
  7. Lose weight
  8. Read books
Okay - now that I think about it, it wasn't that bad. Let's take a look again:
  1. I did go on two occasions and spend a few hours on each. Though it's less than the planned three days, it's still something. And secondly, I went for the annual ijtema at jhang, which is not a substitute for this, but it is time spend travelling for the same cause. 
  2. Well no. There were two motivations behind it, first I needed to download all my previous data from facebook, actually just the status updates, and secondly, I wanted to develop the skills that are required for it. So - facebook itself developed a feature which allows one to download all of one's personal data as a zip file. So there you go. Secondly, the skills required to develop this are very specific, and it's very likely that I do this at my new job. So why do something for free, when you can get paid for it? ;)
  3. Hmmm... I would say it's coming along nice. Though learning C and C++ is no more my goal, as of now. I am focusing on C++ - because again, though learning to write in C would make me an even better programmer, I would have to do all the effort once again for C++! So I am going in descending order according to the importance and value of the language here. 
  4. This was more of an ego thing (It still is!) Since in my Compiler's course, I didn't really exert, and came out not much educated, I wanted to do this thing so I can both learn, and have a creation to my name. But again, I can do that, after I learn C++.  Because starting this before completing that, would just make this seem more daunting. As you require knowing those languages for writing a compiler. 
  5. Nope. Wasn't motivated for it. Still a'int. 
  6. I don't even know what was I thinking then! I mean duh! I worked  as a researcher! Got paid for it! I was low on self esteem that time cause there was a pile of books on my table that I had to read, and couldn't get myself to start. Which I have now started to read, so yeah, I know how to read for leisure, and how to read course books, and how to read research papers. Though I still take twice the time reading Urdu books and books that are written to train and educate, but that's understandable. They key is to go on. 
  7. hehehehe...
  8. Hmmm.... I can say I have started that. 

The Cure for Loneliness

I recently read an article about ways of curing loneliness. Now loneliness is not a disease per se, but people who have it do seem to have some defficiencies. Those deficiences may be biological, but one of them is the distortion of perspective. I read in the article that people who are suffering from loneliness tend to associate negativity to any doubt or ambiguity they encounter. That is to say that in any instace, where there is no or little evidence of explicit positive response, they will assume that there is a negative response for it. 


From the article itself:
 In ambiguous social situations, lonely people immediately think the worst. For instance, if coworker Bob seems more quiet and distant than usual lately, a lonely person is likely to assume that he's done something to offend Bob, or that Bob is intentionally giving him the cold shoulder.
This is the article I am talking about. And I found this article to be very helpful, especially this last part about maladaptive thinking. What I found even more remarkable was that, once I tried to force myself to stop making this thinking mistake, I was feeling a lot better! I started to feel worthy; as earlier my sense of worth, unfortunately, was being lowered by the perception that I am not worth liking, now it began to stop depending on an ungrounded assumption, and started shifting towards other, more real things.