Law Of Success: book review

May 14, 2010 Book Reviews, Success No comments

Today I finished listening to another book on success. It is called “The Law Of Success” by Napoleon Hill. Book is represented in 16 lessons.

I think that it worth to read or listen to this book. It shows up lot of different tips that you can use to achieve your strongly defined and be biggest goal of your life. I know that most of books on success talk about main goal of your life, but this one I think is the strongest on this requirement.

So it says that you need to define for yourself goal of your life, and… what is more interested… you should keep repeating its formulation every day few times. Hill just refers to autosuggestion as one of the key concepts on getting your results.

Honestly yesterday I tried to repeat for myself that I will wake up 2 hours early than I usually do, and it did not help… sad. Today I will have another try. So “I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8! I will wake up at 8 regardless of Saturday! I will wake up at 8am! I will wake up at 8! I will wake up at 8 and will be able to do what I have planned! I will wake up at 8! Guys, I will wake up at 8! I will wake at 8am! I will really wake up at 8am! I’m going to wake up at 8 o’clock tomorrow! I will wake up at 8 am! I will do that! I will wake up at 8! I will wake up at 8!”

Ok, I did what he asked, now I will see if it will really help me, and will share with you :)



No comments


Moving C# code to Java

May 9, 2010 C#, Java, MasterDiploma, Opinion 4 comments

Is CLR worse than JVM or it is just because my code is bad?

Today I had conversation with one man, who is great defender and evangelist of Java related technologies.

We talked about some algorithm implemented by me with C#. That is implementation of SOM algorithm and Concurrency stuff for it. My concurrency implementation doesn’t show time improvements unless grid size is big. He was able to achive better result with small grid sizes.

There could mean two reasons:

  • CLR concurrency model gives up in front of JVM concurrency
  • My implementation has gaps… which is more likely :)

Taking into consideration that I’m getting better results when grid is of bigger sizes I could suppose that in my algorithm there is code which takes constant (or near that) time and is not paralleled.

When I look at picture of Task Manager when my programm is executing I see that second processor has  gaps when it does nothing:

This could mean only one: I need to take better look what else is executed in one thread in my application and could be paralleled.

Converting C# code to Java

But back to that man and Java. I said to myself that it is possible to move my code to Java if something.

C# to Java Converter

Download C# to Java Converter demo version from here. Since it is demo you could not convert more than 1000 lines of your code. Order costs 119$.
Because of that I was forced to remove all not necessary code. I removed all concrete classes that I’m not using and GUI, but that did not help. I did not know how much should I delete more.

Number of lines in my project/solution

I googled for line numbers in C# and found this nice tool:

Now I know that my program has about 4000 lines of code. I left about 980 lines of code in two projects that I needed and was porting them to Java separately.

Converter GUI

And converted them to Java:

Is conversion an easy task?

Conversion could be painful if you have a lot of code that interacts with system, like threads, reading and writing to files, reading configuration file, etc.

Also it was not able to recognize ‘var’ keyword. It shows me this:

//C#
TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing
in Java:

var neuronsCount =
getNetwork().getNeurons().size();

I moved back to my C# code and changed all var to the explicit types. And regenerated Java code.

There were some troubles when I’m delivering from List<T> and doing some stuff around that.
This code:

                int a =
this[next];
                this[next] = this[i];
                this[i] = a;

I rewrote manually to:

                int a =
super.get(next);
                super.set(next, super.get(i));
                super.set(i, a);

Also Converter was not able to convert this:

Console.ReadKey();

The biggest challenge is ThreadPool and synchronizing threads tech-nicks. This requires lot of google search that shows me that instead of ManualResetEvent I could use CyclicBarrier and how to utilize thread queuing in Java.

P/S I need to find gaps in my code to show that at least CLR and myself are not so much bad things in this world :)


4 comments


Масштабування обчислень в SOM

May 7, 2010 MasterDiploma, Ukrainian No comments

Одним із найважливіших завдань для  реалізації масштабування обчислень є знаходження частин алгоритму, які можна та які є оптимально розбити на деякий набір незалежних обчислень.

      Велика  кількість роботи по розробці масштабування  обчислинь алгоритму SOM була зроблена за останні роки. Взагалі кажучи існує два основних підходи, якими є розбиття гратки (map-partitioning, MP) та розбиття даних (data-partitioning, DP).

      В MP, SOM є розподілена поміж декількох потоків, таким чином, що кожен потік обробляє кожен вхідний вектор і модифікує свою частину гратки. Такий підхід зберігає порядок оновлень записаних у формулі [осн. формула оновлення]. Найбільшим недоліком цього методу є велика ціна синхронізації потоків, потоки повинні бути синхронізовані опісля кожного разу, коли був знайдений нейрон-переможець, а також кожного разу, коли пройшло оновлення. Таким чином MP є ефективним для хардверної реалізації або ж для систем із спеціальною архітектурою для паралелізації.

      В DP, вхідні дані розподілені поміж потоками, так, що кожен потік містить частину вхідних даних та проганяє її на своїй копії гратки. Як бачимо цей підхід не вимагає частої синхронізації, таким чином це є перевагою над MP. Проте такий підхід не відповідає формулі оновлення, що змушує використовувати його із варіаціями SOM, зоокрема batch SOM. Та навіть попри це batch SOM не є популярним методом, із-за двох основних причин:

         1. Він вимагає щоб усі вхідні вектори були наперед відомими, що не є завжди можливо.
         2. Насправді дуже важко отримати добре структуровану карту на відміну від класичного алгоритму.

      Існує також багато інших розробок. Для прикладу в одній із таких автори пропонують підхід схеми Master-Slave, яка базується на тому факті, що із часом радіус, у якому ми модифікуємо нейрони зменшується, а тому два послідовні нейрони-переможці можуть не мати спільних областей. Таким чином можна обробляти ці нейрони разом із частиною матриці в паралельних потоках. Master потік слідує за основними кроками класичного алгоритму, а Slave пробує здійснити обчислення в паралельному потоці для наступного нейрона переможця якщо області не перетинаються.

      Мною  була здійснена реалізація MP підходу до розпаралелення алгоритму із невеликими відмінностями.

      Основною  відмінністю є те, що в стандартній  реалізації MP гратка розбивається на декілька підграток, скажімо на n частин. Опісля для заданого вхідного вектора ми шукаємо нейрон переможець у кожній із підграток в паралельних потоках. Як тільки він був знайдений, ми запускаємо модифікацію на тих самих частинах гратки. Якщо глянути на рисунку нижче, то можна побачити, що в такій ситуації для модифікації ефективно використовується лишень четвертий потік, перший та третій швидко впорюються із роботою, а другий потік взагалі простоює.

      Я пропоную знайдену множину сусідів  знову поділити на рівні частини, як це зображено на наступному рисунку, проте із певною відмінністю. Якщо множина нейронів для модифікації є більшою за число M, то я розбиваю цю множину на ту ж саму кількість що й розбивав гратку, і запускаю оновлення в різних потоках (перевикористовуються вже існуючі). Якщо число нейронів для модифікаціх менше за M, то модифікація проганяється в одному потоці. Число М має залежати від ціни синхронізації і ще потребує додатковго дослідження.


Такий підхід дає помітні покращення коли гратка є дуже виликих розмірів.


No comments


Book review: How to Win Friends and Influence People

May 1, 2010 Book Reviews, Success 2 comments

I just listened to one very interesting audio book. Book title is “How to Win Friends and Influence People”. And I think that it worth to read, or listen to it as I did, because it teaches you how to interact with others. If you are going to grow in your career you indeed need such stuff to know.

This book is of psychological type and author (Dale Carnegie) is talking about interaction with other people. Mainly it talks about how to correctly behave when you want someone to be on your side.
Book could be very useful for managers and for people in their lives. For developer it could be useful in future when you are going to drive few people in your team. If you just starting as a senior developer you already should have some experience driving junior stuff. When you are Technical Leader you need to drive whole team, you need to establish correct processes in your team and one of the hardest tasks in all of this is to make others work on tasks you assign them in the way that they will want to work on that.

Sometimes there are situations when you see somebody’s mistakes and there should be a way to show them this, but at the same time not make them your enemies – they should look at you as at friend, who wants to help.

Book has a lot of different examples from real life when you convince others to do what you want, but for them it looks like they really want to do it, because it seems useful for them.
There are a lot of rules in book. You could go and see contents of the book.
Go to this wiki page to see main points of book. (I recommend).

But now I will try to list down what I remember:

  • Honor others for the smallest they did.
  • Show that they are valuable – all people indeed what to be valuable.
  • Start conversation with what people want and make them answering with “YES” on your questions, only then you could give bad news.
  • Smile to others but don’t bluff.
  • Build reputation for mentees in eyes of others. So your mentee will do everything he could in order to prove what you said about him.
  • Really think about how to walk in his/her shoes.

I know that you heard about that a hundred times. But when you will spent 10,5 hours on listening to this book and when author talks about this during all the time. This will ensure that you remember it and probably will force you to try it in real life. You could start with your team members or with you wife. I think that I will try with my girl just today… or even before I will meet her, since I’m now disconnected from internet and typing this in bus road to Lviv. So will be able post this in evening.

I would recommend this book if you have time for such things or if you could get audio version as I did.

P.S. I tried today some tips from book – it works! You should try.



2 comments


Exam 70-536: TS: Microsoft .NET Framework – Application Development Foundation – PASSED

April 30, 2010 Certification, Success No comments

Why would I need to pass that exam at all?

There are many arguments to pass the exam. Most of them are simple bureaucracy. First of all, your resume will have additional strength if you will add few certification records on the bottom. Secondly, many companies are interested to have their employees to be certified, or maybe they want to make you promotion road more hard :) so to allow you to be promoted you need to pass some set of certificates and cope with lot of other requirements. At least this is situation which I have in my company.

Why would I need this exam for my blog?

Very easy: when YOU are on my blog first time, you read something and create your thought on topic you just read and then you decide to subscribe or not to subscribe. Question is following: what is guarantor that it worth to subscribe to my blog? And answer is “Nothing”. But what will be your reaction if you will see MVP logo at the top-right of my blog? Are my chances better? Or course they are.

Why else would I need this exam?

Following point is very important but honestly I could not put it above (I will describe why). The point is to enhance you knowledge and learn something new. Of course during preparation to exam you read some books and search over MSDN on topics you are interested and which will be measured. But in real life you could be experienced .NET developer and still have difficulties to pass exam. In other words I have doubts if 10 years experienced developer could pass exam without at least some special preparation to it.

What else did I miss?

Of course – self-confidence. In order to be successful you need to feel yourself confident in things you do. In order to grow you should have something behind you, that could you help stand when you are with people who have certificates. And plus to that it is always very enjoyable to know that you know more then others. But a secret: do not show them that. It is very important. Do not praise yourself, let others do it instead.

How to prepare and how did I prepare?

You could find a lot of very interesting posts over internet on how to prepare.

I like this one:
http://lukecummins.me.uk/2009/08/70-536-my-tips-for-this-microsoft-exam/

I even found other blogs that are about certification. 

My recommendation number 1: google on how to prepare… and you will find a lot of interesting stuff.
Also while you are trying some demo tests on MeasureUp or tests from TrainingKit and if you are not confident about answer do not try to remember it – go and figure answer in depth!

Also I wrote some tips on how to read TrainingKit. At least this works for me:

  • Read accurately but quick if theme is familiar to you.Skip “Real
    Word” and pay attention on “Important” and “Exam Tip”, try to remember
    it!
  • If there are boring explanation and then code, switch first to code
    and analyze if you understand everything there, and if that is true,
    don’t return back to text.
  • Do not execute Labs unless you do not understand what you had read.
  • If there are difficult chapters try to read them twice – I did this
    with Application Security.

How was it?

Night before exam I felt confident about exam, but was still worrying.. so I was preparing till 3am. In the morning I came to work as usual and did few things… reviewed ones code, checked e-mails… expressed my thoughts on demo we should have today and wrote e-mail to team members that I will be out for about 2 hours. My company is Microsoft’s parner so I do not need to move to other location – just get down 5 floors.
First couple of questions I was nervous, but then I felt that I’m confident with most of questions. I marked only 2 out of 40 for additional review. When I finished I got message saying that I PASSED EXAM with score 907. This means that I answered incorrectly for about 4 questions. I think that this is very good result.

Picture which I get is like following:

My next target is probably 70-505. Passing it is point of honour, because I already failed it twice because of overflow of confidence.

Also as I’m active in preparing developers meeting for developers from my project and I’m thinking to teach our developers in order to get certification – covering some areas from exam.

Express your thoughts on passing this exam.


No comments


Today’s English Lesson

April 28, 2010 English No comments

Today’s lesson was not usual. My usual teacher is in vacation, so we have conference calls and we are trying to imitate different situations during conf. calls.

Situation
Initially there was an agreement with the Client for a particular scope of project.  After some time the Client adds more features that require additional time for investigation and execution – in particular he wants to change the user interface (UI) from HTML to FLEX. It’s high time to start working on user interface but the Client is silent regarding reconsideration of the agreement terms. Project Manager has to take charge of conducting a negotiation with the Client and decides to invite Tech Lead, QA and Senior Developer for that.

Roles has been assigned to students. And initially I got TL role, but when we dialed up we discovered that 3 of us are not present, so teacher decided that I could take 3 roles in one time.

Roles are following:

Tech Lead: You do not know FLEX and you do not have time to study it because it is time consuming. But you believe that it is possible to fulfill all the requirements if your PM can find a specialist in that technology and make him TL of that part of the project.

Senior Developer:  You have used FLEX before. You are not an expert in it but you can do the task. However, you require more time (you have your own tasks which you have to finish in time) and you also need more people.  Anyway, there should be reconsideration of the agreement terms.

QA: You know that whenever a new feature is added, it always involves adding test cases and plans rewriting. You are 100% sure that this change will require extra effort for testing. Besides, the integration of a new feature will lead to the additional integration testing.

I was trying to be in all of them and I would say that I succeeded in those.One of interesting things about this is that I was dialing from my desk, and one of the colleagues was really confused about what I’m talking out there… Maybe he was concerned if I’m not mad, but teacher said that it was tremendous :)

I got a lot of fun and I really appreciate that my company game me possibility to learn English in lot of fun and enjoyable ways.


No comments


Brainbench Master Certification in C#

April 27, 2010 Certification, Success 8 comments

It turns out that I’m eligible to pass exam 70-536 for free – my company will pay for me, but before I’m required to pass Brainbench C# exam with higher than 4.0 score.

And I just did it – my score is 4.03.

You could see my results using following link: http://www.brainbench.com/transcript.jsp?pid=9108054

So now I could use this logo on my blog (see somewhere on the right):

Also in e-mail which I got is following information:

You are eligible for a certificate! Would you like to receive it?
Printed paper certificate suitable for framing $14.95 Get
Electronic Certificate $4.95 Get

How do you think should I pay for that? Please let me know.

Also following information says that I have weak areas in implementing Services and Data Consumers. Need to check-out in more details about that.

Test: C#
Date: 27-Apr-2010
Score: 4.03
Weights: 100% C#
Elapsed time: 46 min
23 sec

C#
Score: 4.03
Percentile: Scored higher than 90% of previous examinees
Demonstrates a clear understanding of many advanced
concepts within this topic. Appears capable of mentoring others on most
projects in this area.
Strong Areas
  • Grammar
  • Object-Oriented Programming
  • Value and Reference Types
  • Delegates
  • Properties, Indexers, and Fields
Weak Areas
  • Developing Data Consumers and Services
  • Methods

Guys, it is quite easy to pass this. And don’t loose chance, this exam is free till 30 April.


8 comments


MCTS 70-536 Application Development Foundation book review

April 26, 2010 Book Reviews, Certification 2 comments

What can I say about this book? It is specialized for passing specific Microsoft Exam. If you are going to pass 536 exam you 100% need it. If you just want to learn some core things about developing applications with .net, book is not best choice. It will lead you through big portion of class names, different methods and enumerations, which could be easily seen in MSDN documentation up to date. I would even say that books like authors took everything possible from MSDN that is related to exam. Also book have mistakes, which I think should not be in such books. Plus to that book is dry to read, but you can read it fast if you know how.

How to read book:

  • Read accurately but quick if theme is familiar to you.Skip “Real Word” and pay attention on “Important” and “Exam Tip”, try to remember it!
  • If there are boring explanation and then code, switch first to code and analyze if you understand everything there, and if that is true, don’t return back to text.
  • Do not execute Labs unless you do not understand what you had read.
  • If there are difficult chapters try to read them twice – I did this with Application Security.

I would recommend this book if you are going to pass exam, if not just check-out maybe there are some interesting things that you should know, but do not read book whole end-to-end.


2 comments


It is time to get Microsoft Certification

April 26, 2010 Certification, Success 4 comments

When is it time to be Microsoft Certified?
My company is developing new certification model, named abc (I’m not sure if I can use original name), which includes few levels such as abc Certified Junior, abc Certified Intermediate, abc Certified Senior… and so on… To become Senior developer after you are Intermediate you first need to get abc Intermediate certification.

Each of the levels has some requirements like industry experience, some number company-wide presentations, passed performance appraisal with strength area marks, passed knowledge evaluation, but what is important here is that each next level also requires some external certifications. For example, to be abc certified intermediate level in .NET desktop you need to have 2 certificates: 70-505 and 70-536.

Hey, but I’m already promoted to be intermediate, but do not have certificates… At least it is one of the reasons why I cannot become Senior (another one is that I need about half a year more experience and improve my knowledge). And this makes me bit sad.
Actually I tried to get 70-505 exam immediately after I get promoted (summer 2009). First time it was free attempt, and I failed it. Shit, but that was so easy, I got 670 out of 1000 with required 700.

Why did I fail it? There are few reasons:

* Exam 70-505 includes features from the 3.0 framework, which I did not ever use. For example it includes easy question regarding the Linq. I did not know Linq at that moment. It included question regarding installing and deploying strategies. Which I did not ever try. Stop. Am I so bad? I knew design patterns; I had experience in developing desktop applications. But I was interacted only with actual developing of easy things; I was not familiar with whole lifecycle of our product. To be honest we have so complicated lifecycle that nobody knows it well.
* I was too much self-confident about the exam.
* I did not spend a lot of time on preparing, maybe half a day.

I know that there are other ways to successfully pass exam, I think you know what I mean, but I did not see in internet actual tests for my exam, and besides that is not good way to pass it. I saw some people that passed with 1000 score other exams. Why? They found exact test in internet.

Let’s suppose that I was not ready and I did not know how to pass such exams.

Ok. Do you know Roosevelt? His words: “Never, never, never, never…give up!” And I did not give up. I tried again with the same exam month later. And you know – I field it with score less than 500. I was pure sure that questions will be similar, and they were. I was too much confident that I will pass it, but I did not. So I blew 50$. Holly shit.

Was it needed to pass Microsoft exam? Tips are following:

•    Get resource to learn from it. Best choice is Microsoft Training Kits.
•    Be aware what does your exam include, if there are some unknown technologies for you, ask yourself if this is correct exam for you.
•    Ensure that you interacted with each technology meant there in real world, if you have not interact, just write simple applications when preparing to exam.
•    Do not schedule exam, if you are not self-confident in your knowledge.
•    Do not be too much self-confident in your knowledge. Most of exams are dry tests, which include some monkey questions that could be easily forgotten.
•    Train, train, train… and never give up.

Getting MCTS for me is very important step in my career. (See picture below).
I’m going to achieve this with passing 536 and 505 in short terms.


4 comments


My presentation on the Service Oriented Architecture

April 23, 2010 Opinion, SOA, Success 4 comments

Yesterday I executed my presentation on the Service Oriented Architecture. It was awesome. I got good portion of emotions.

People

I was really surprised how many people have come to listen to me. As per me it was supposed that this local Architecture Group (AG) is for couple of people, who have desire to spend their free time on talking about SOA, but for my great surprise almost all team came, I mean developers from whole enterprise project where I work. Guys, there should be something that I don’t know about intent of this group?

Rehearsal

Before presentation I as usual did my rehearsal. First it was presenting to my friend, who is also developer. We call this ‘Turbulent Developers Community‘ where we sit in the evening with beer and talk about different interesting IT things. So he brought few interesting questions for which I was now ready to respond. Also, I had my *.ppt at my phone, so when getting to my work I was trying to replay presentation in my mind. І на останок, вже безпосередньо перед презентацією я розказав її своїй дівчині в скороченому режимі – це зайняло близько 20 хвилин. Дуже тобі дякую за це!

Presentation

So, I started with plan which I have in this blog post. People were listening with attention and that is very appreciating. Also, what was enjoyable is that they had a lot of different comments on what about I was talking. They even spoke to 3 of my slides instead of my… OMG.

How was it?

… asked I, and got an answer: “It’s a great success! … can we now get money out of that?.. :)”. Those are words of my colleague with whom I work on the same piece of software. I really hope that other also enjoyed what I did.

Conclusion

For myself I have discovered that I learnt more about how to provide a good presentation. I do not say that this is my best presentation. I this the best I had is presentation on DDD, but anyway… having more experience in that area is very good achievement.

Keep in mind – you will die someday

What is the intent of my life? I spend my life at work, so that is a very big part of it. If above said it truth, why don’t then do the best at work and in your growth? For me it is mandatory. If you don’t like you work – just change it. Just do it!

Everyone have to die some day. Think about what you do and what you want to achieve. Have super large dreams. Often why I’m getting to the work at town vehicle many people talks and as I understand the intent of their life it to find a good job, to have a car, home and family. I don’t say that family is bad, BUT why to put such trivial task in front of you? You have one life and then death!


4 comments