Garo Garabedyan's Divergent Thinking Blog

Business trip in Finland

leave a comment »

I am on a 3 and a half week long business trip in Helsinki, Finland and I would like to share my impressions about Finns and their culture and lifestyle. My impressions prior visiting in person Finland, a Scandinavian country, can be expressed with the following drawing of a blonde young woman reading a book in a windy forest:

A blonde woman reading a book in the wind

I wanted to have a more detailed picture of how the Finns behave in life and work. I can happily share that Finns are very relaxed people who take things easy. What I can say for the short period I was in Finland is that Finns are little bit closed at least at the beginning of a friendship. In Finland the weather, except in July, is not for outside events and people stay most of the time in their homes.

Suomenlinna Sea Fortress, an island of about 15 min. with a boat from Helsinki, is a very beautiful place.

I was expecting a bad weather and I have took some university projects with me to finish them while being in Finland but happily the weather was excellent for trips in Helsinki and around it in spare time. At the picture from the island the wind blows very powerful but you can still come here and relax and have good time. We have got lucky visiting the island in a good weather and the place has that autumn beauty not seen for a while.

Working in a foreign country for such a short period of almost a month is not enough to get a general picture of how people work. The team I have joined are primarily technically oriented. Interestingly even the HR Manager has a second role in project management and a solid background of technical project management.

In Finland lunch is very fast because you pay a fixed price for it and eat as much as you need from an already cooked food. You do not wait for a waiter to take your order, the kitchen to prepare your lunch according to your wishes and later to take the bill and pay for it. Things are very simple and efficient.

In Helsinki Finns are proud of their high quality water. Here is more about it: http://www.hsy.fi/en/waterservices/drinking_water_and_water_quality/Pages/default.aspx

Finns respect their presidents. But it is very interesting that despite of the high respect towards the President he can be seen walking with a single bodyguard only going to shopping and no one will bother that the president is 5 feet next to him because presidency for the Finns is like every other job but for 4 years.

Finns are extraordinary direct. They have simply introduced the work to be done. We knew that good project managers are supposed to define the roles of the team members and leave them with as few as possible supervision. We knew that good managers should meet with all the people they manage (no matter if he/she is poor or good performer) and discuss their future in the company. These hard learned lessons of people management are the natural way of how Finns and maybe all Scandinavian managers work.

Advertisements

Written by garabedyan

October 11, 2012 at 11:02

Job interview tips

with 2 comments

I would like to share a few interesting tips I have discovered and came around during the several meetings I have attended and prepared for. Hope that they are useful. Please note that I am not a human resources professional but even if I was do not blindly follow advises about an important part of your career.

  1. Help interviewers picture you fitting the team. Wear the clothes for everyday work. The interviewers will try to picture you as part of the team. In case you can choose where to sit, try to take such place that all participants can see you without any extra effort. People who do not see you will have a more blur image of you.
  2. Be aware how your mind works: people like people like them. Interviewers who pretend that are tired at the end of the day are actually trying to trick you believing that they are like you with the aim to make you like them. When you go to many interviews you will meet a lot of new people and will be tired at the end of the day and this is something interviewers are aware of. People who feel bad, sick or tired are supposed to report to their boss who to replace them or cancel the meeting-this is something human resources experts and team leaders must know as part of their everyday duties.
  3. Release responsibility for areas outside of your control, including unforeseen circumstances. Activities rarely go exactly according to plan and often times, no possible scenario could make everyone happy. Your career decisions are yours only. Do not be trapped in trying to help someone else by changing your wishes because this is a defining example of manipulation when you are forced by your emotions triggered by irrelevant circumstances to take a calculated by the manipulator and mostly against your interests step.
  4. You are free to ask for a glass of water in the beginning of the interview as some websites advise. You can win some time for thinking about a tuff question by drinking water. But drinking water is not a solution for avoiding an interview question. Do not overreact with this. If you somehow skip the troubling question prepare for it because someone else can ask you the same question.
  5. Do not underestimate small-sized companies. They can offer you practical knowledge about clients’ expectations. The IT market like many other markets is very competitive and most of the clients are not motivated to make an extra effort in giving feedback in case they can easily migrate to other vendor which satisfies their needs. Clients are motivated to provide feedback about weak or lack of any features and this feedback is not a guarantee that there is a business potential in implementing the missing feature. Very few clients are motivated to recommend a particular feature of a product they are using.
  6. When leaving your current job make sure you have finished all tasks assigned to you and related to you in order to not make your colleagues feel bad that must do your work.

Written by garabedyan

September 7, 2012 at 19:39

Posted in Uncategorized

As ACTA was rejected by the EU parliament music publishers can try using friend referral (internet social media) as an active way of promoting new music discovery

leave a comment »

As a music consumer it is very hard to find new music. Radio, You Tube and various artist sites are providing the user with fresh music content while social networking technologies are considered as a continuation of file sharing which violates copyright law and is alleged to hamper the financial development of good artists.

It is the mainstream opinion that the music industry has sought to isolate rather than socialize the music experience. Playing music in public was charged by the music copyright owners despite of the obvious fact that social events encourage listeners to buy the played songs and popularizes the performers among the audience and encourages them to participate in future concerts, if any.

While people enjoy publishing links to new songs or songs they currently listen or would like their friends to listen to uploaded in YouTube in social medias like Facebook, Skype, My space, Twitter, IRC, etc., the music industry has a long way to go to popularize the music in social medias.

The Anti-Counterfeiting Trade Agreement (ACTA), was rejected by the European Parliament today, and hence cannot become law in the EU. 478 MEPs voted against ACTA, 39 in favour, and 165 abstained. While debating whether to give its consent to ACTA, Parliament experienced unprecedented direct lobbying by thousands of EU citizens who called on it to reject ACTA, in street demonstrations, e-mails to MEPs and calls to their offices. Parliament also received a petition, signed by 2.8 million citizens worldwide, urging it to reject the agreement. ACTA was negotiated by the EU and its member states, the US, Australia, Canada, Japan, Mexico, Morocco, New Zealand, Singapore, South Korea and Switzerland to improve the enforcement of anti-counterfeiting law internationally. Today’s vote means that neither the EU nor its individual member states can join the agreement. (Press service of the EU Parliament, European Parliament rejects ACTA)

Written by garabedyan

July 4, 2012 at 19:20

Posted in Uncategorized

Following graduation

leave a comment »

March was a very dynamic month for me and my colleagues in Technical University-Sofia, studying Computer Systems and Technologies. In March, 5 we have received our diplomas in a spectacular ceremony led by the rector of our university, Prof. Ph.D. eng. Marin Hristov.

In a similar graduation ceremony but in 2005 in Stanford Steve Jobs advises the graduates to live every day like it is the last of their life. Jobs is widely quoted saying “Almost everything, all external expectations, all pride, all fear of embarrassment or failure, these things just fall away in the face of death, leaving only what is truly important.” Jobs’ advise is to have passion for technology in order to be ready to face failures without giving up. We all should have passion in our jobs because we face people who succeed with little than our devotion and diligence.

 

Among the best characteristics for a developer is his pragmatic attitude and the ability to follow strict rules. A Turing award winner in 1999 for landmark contributions to computer architecture, operating systems, and software engineeringFrederick P. Brooks devotes an entire chapter in the first ever book about software project management, The Mythical Man-Month: Essays on Software Engineering (1975), about the psychological preparations to erase the first thing that you engineer. In chapter titled “Plan to Throw One Away” Brooks argues that in most projects, the first system build is barely usable. It may be too slow, too big, awkward to use, or all three. There is no alternative but to start again, smarting but smarter, and build a redesigned version in which these problems are solved. The discard and redesign may be done in one lump, or it may be done piece-by-piece. But all large-system experience shows that it will be done. Chemical engineers learned long ago that a process that works in the laboratory cannot be implemented in a factory in only one step. An intermediate step called pilot plant is necessary to give experience in scaling quantities up and in operating in nonprotective environments. Programming system builders have also been exposed to this lesson, but it seems to have not yet been learned, writes Brooks in 1975. Project after project designs a set of algorithms and then plunges into construction of customer-deliverable software on a schedule that demands delivery of the first thing build.

One of the things that have built leaders like Steve Jobs is disruptive innovation. Disruptive innovation is not a breakthrough but transforms a product that is too expensive and complicated that only few people with a lot of money and skills can use it into a more affordable and accessible and a much larger population can have an access to it. In the beginning of the computer industry there were only mainframe computers that only big universities can have one and from then there were a lot of disruptive innovations turning computers to desktops, to laptops and to mobile phones. Disruptive innovation democratizes the product to the point that everyone has an access to it and targets new larger markets.

Written by garabedyan

March 31, 2012 at 09:54

Posted in Uncategorized

2011 in review

leave a comment »

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.

Here’s an excerpt:

A San Francisco cable car holds 60 people. This blog was viewed about 3,300 times in 2011. If it were a cable car, it would take about 55 trips to carry that many people.

Click here to see the complete report.

Written by garabedyan

January 2, 2012 at 14:16

Posted in Uncategorized

World Community Grid: The Human Proteome Folding project

leave a comment »

The Boinc software application (http://boinc.berkeley.edu/), developed in the University of California, Berkley, allows every personal computer to use its unused computational power to solve tasks automatically downloaded from the Internet from projects benefitting humanity like the World Community Grid (supported by IBM http://www.worldcommunitygrid.org/). Global statistics about the WCGrid can be found at http://www.worldcommunitygrid.org/stat/viewGlobal.do.

WCGrid is a virtual supercomputer who’s power will help address whole range of humanitarian concerns from healthcare, AIDS, cancer, finding better strains of rice that are more nutritious. It is an amazing opportunity for people to get involved in humanitarian issues. WCGrid is doing a study of all of the proteins in rice to come up with stronger strains of rice to improve the World food supply.

IBM’s innovation technology allows people to donate the unused power of their individual computers to address problems in the world and this is a new level of contribution-donating something that costs nothing to the donors, that they do not use and can make change in the world.

A huge work is invested to secure the widely open volunteer system. There are people in IBM called “ethical hackers” who are paid to try to hack the open access grid.

WCGrid is harvesting spare processing time from computers around the world using that computing power to accelerate research. One half of a million years of computer time has been already donated to important research projects in the WCGrid.

Explaination about World Community Grid by IBM’s How it works at http://www.ibm.com/podcasts/howitworks/021307/index.shtml

Human Proteome Folding Explained

YouTube channel of WCGrid

Written by garabedyan

October 26, 2011 at 21:33

Posted in Uncategorized

Crockford: JavaScript’s bad and good parts

with 2 comments

Douglas Crockford, a programmer involved in the ongoing development of JavaScript, popularizing the JSON (JavaScript Object Notation) data format and currently a senior JavaScript architect at Yahoo!, have wrote a book and gave talks about the good and bad parts in JavaScript proving that most of the professional developers using JavaScript are not aware of the beauty of a programming language hosted on more virtual machines than anything else on the planet—on every fully-capable web browser. With a series of interesting examples Crockford outlines the most common problems in developing JavaScript applications, provides workarounds and outlines the good practices.

ECMAScript is widely used for scripts executed on the client (Internet applications separated between the server and the client) in the form of well known dialects like JavaScript, JScript and ActionScript. There is a project to the ECMAScript’s dialect JavaScript as a server-side engine (Node.js).

JavaScript is criticised by advanced developers in other programming languages for its weak type system and lack of raising proper exceptions, but it is irrefutable that there is no such programming language in the world like JavaScript, which to be used by such a wide range of users- starting with copy-and-pasters to professional software developers using JavaScript for scientific purposes.

ECMAScript supports object-oriented programming. Objects in ECMAScript are values with named properties. Object properties that are functions can be called as methods. ECMAScript functions are objects and can be stored as properties, passed as arguments, and returned as results. This powerful idiom from functional programming allows your functions and methods to import functionality from their caller in a simple and flexible way. ECMAScript objects inherit properties from prototype objects. Prototype-based programming facilitates easy delegation and flexible overriding of object behavior. [About ECMAScript. http://www.ecmascript.org/about.php]

Crockford’s experience reveals that JavaScript is a language that people use without bothering to learn it first.

JavaScript’s Bad Parts

  • Global variables: Due to the lack of a linker in JavaScript, compiling took place in a global namespace where any variable can collide and interfere with each other. XSS attacks are fundamentally enabled by JavaScript’s use of global variables.
  • Operator + adds and concatenates: This overloading in a type-unsafe programming environment causes problems.
  • Semicolon insertions: JavaScript tries to put semicolons instead of the programmer in order to make the C syntax easier for beginners. When the compiler gets an error, it goes back, looks for a line feed and replaces it with a semicolon.
  • Operator typeof: JavaScript typeof operator returns for the type of an array object and for the type of null object.
  • With statement: slows the execution too much.
  • Eval function: mostly misused function in JavaScript.
  • Phony arrays: While in most languages arrays are linear sequences of memory divided into regularly spaced buckets where easily an address can be computed to the element in the array, in JavaScript arrays are essentially hash tables in which the keys are turned into strings. Due to this behavior arrays have a terrible performance in JavaScript, but makes the programming model easier as an array’s dimension is not set.
  • == and != do type coercion.
  • Too many bottom values like false, null, undefined, NaN.

Consequences of type coercion of the double-equal operator (very strange and ruled by a complicated rules- http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262%20edition%205.1,%20June%202011.pdf Section 11.9.3  The Abstract Equality Comparison Algorithm):

'' == '0' //false
0 == '' //true
0 == '0' //true
false == 'false' //false
false == '0' //false
false == undefined //false
false == null //false
null == undefined //true
" \t\r\n " == 0 //true

JavaScript has a triple-equal operator which checks types in making a comparison. The triple-equal operator is highly recommended.

The for in operator is troublesome as it makes a deep dredge on the all members of the object.

Blockless statements, expression statements, floating point arithmetic, ++ and — operators, switch operator are a bad heritage. Switch statement is replaced by advanced JavaScript developers with an object encapsulating the possible cases of the switch block (http://www.sitepoint.com/google-closure-how-not-to-write-javascript/).

JavaScript’s Good Parts

  • Lambda.
  • Dynamic objects: At any time a property can be added to an object. Developer does not need to add the property to a class. Dynamic objects turned out to be amazingly powerful. A form of reflection occurs in JavaScript when you ask an object about the value of a property which it has not-JavaScript returns undefined.
  • Loose Typing.
  • Object Literals: a very nice notation for describing objects. JavaScript’s object literals were the inspiration for the JSON data interchange format.

Inheritance in JavaScript

Inheritance is object-oriented code reuse. There are two schools: classical and prototypal. Prototypal inheritance is class-free where objects inherit from objects. In JavaScript an inherited object contains a link (named __proto__) to the parent object. This inheritance is called Delegation or Differential Inheritance.

Below is a pattern of object creation with inheritance in JavaScript:

function myPowerConstructor(x) {
    var that = otherMaker(x); /* create an object by Object literal,
                                 or with new keyword,
                                 or Object.create,
                                 or call another power constructor */
    var secret = f(x);
    that.priv = function () {
        ... secret x that ...
    };
    return that;
}

Variable called “that” (without the quotes) is used to contain the new object. Please note that “this” (without the quotes) is a reserved name. The variable “secret” (without the quotes) is private. Method called “priv” (without the quotes) is a closure and, thus, has access to all private variables and can be invoked by the outside world. Closures are functions referencing the environment in which they were created (their context).

Right-curlies (“block {” all on the same line) is the only acceptable style in JavaScript. Due to the insertion of semicolon on every line returning an error a return clause must be followed on the same line with a right-curlie or a value.

JSLint

JSLint is a code quality analyzer for JavaScript code freely available at http://www.jslint.com/ . JSLint defines a professional subset of JavaScript. It imposes a programming discipline that makes developers much more confident in a dynamic, loosely-typed environment.

Written by garabedyan

July 5, 2011 at 20:33