Feeds:
Posts
Comments

Microsoft Oslo

Actually, this is not about Microsoft Oslo. If you want to find about it, please go and find at MSDN or other useful web sites. This is just an ironical events encountered personally.

Last friday, I was sitting wordless in the meeting room at my office, listening talks about issues of Telerik ORM from different perspectives of different people. That’s not the only meeting arguing about it. It has been a couple of meetings talking seriously about Telerik ORM without satisfied answers or conclusions. I was included since I was included when we did evaluation for choosing a third party Object Relational Mapping components to use in our project. I recommeded it over other components like devert, Linq To SQL, as it is the best tool for using with Oracle database. Now, we are having arguments not because it is bad product, it’s because it doesn’t solve our requirements and architecture or perhaps, low level design. Telerik seems perfect fit for simple and 100% Telerik depended design.

Today, I has just finished installation of VS 2010 beta on my PC, to give it a try in private :) . It took almost half day to finish custom installation using web bootstrapper. The installation was smooth anyway. Once I started VS 2010 after two restarts, the first thing I saw was very nice splash screen, and then VS start page. Unintensionally, I followed this link http://msdn.microsoft.com/en-us/library/ee424598.aspx and I found the article about Microsoft Oslo. Very cool project and the article was quiet interesting. Surprisingly, the authur was one of Telerik Chief. :D I just can’t help to share the article with my team. They must be interesting. :( But, I am still hestitant to do it. It could be insulting them, or making them more arguments. So, I think what would I do with the link I copied in my clipboard. It would be the best blogging about it. :D

Half a cup of water

When we talk about positive thinking, we use the story of half a cup of water very often. In that story, some people (we assumed them as negative people) say half empty, some people (we assumed them as positive people) say half full. Is that a matter seeing half a cup of water in different point of view? I am sure. But I do believe that positive thinking really makes positive effects to people, such as feeling better, no depression, being active etc. I have experienced that before, by just trying to think myself everyday is a good day. Most of the problem seems smaller and when we think those smaller, we have encouragement to handle it properly.

Today, I tried to remind myself about it again. I really want to make myself changes for better. Then I realized that, it’s not quite right to think half full of really half a cup of water. I really had some doubts about that thinking is really positive. For example, what if I were in a middle of desert alone, with that half a cup of water, I won’t really be ok with that less of water. what if we are a group of people with that half a cup of water, who are really thirsty. There are a little more cases I can say for that half a cup of water in different situations.

I don’t know, but I think I need to understand that positive thinking example in different ways. May be, I can’t just live with that half a cup of water, I need to find some more water, or I need to drink up that water right now to save my life, or I need to save that water when I dead thirsty, or I need to share that with others.

So, here I changed my point of view for half a cup of water. There is no need to waste thinking half a cup of water as half full or half empty. I just have to see the truth. Half a cup of water is just half a cup of water. It just need to think what and how to do with that water. So if my life is still half a cup of full potential, I would need to fill with more potential day by day. This is my positive thinking.

Hiring People

No, I am not hiring people. My bosses do. I have been here in my new company for around 4 months now. I was hired after interviews with my first architect and other two bosses, with mere two phone interviews and one face-to-face interview. It was amazing they just hired me by phone interviews. As I know, these days, most of the company didn’t do it by phone interview normally. It was one of the reason, I moved to here without any further consideration. It really caught me excited.

Since my team is still lacking a couple of hardcore developers, my bosses are being busy with hiring processes the whole time. It is really fantastic to get people in team. But, I think, something is a little making me feel awkward, though, to see them doing it. I just don’t like it. I learnt something about hiring from blogs and podcasts. Especially, how important is hiring and retaining good people. I agree it’s best to have good people in team. And some hiring strategy like “Hire Slow, Fire Fast”. It’s quite nice lesson too. But then, now what I see is when my bosses are hiring developers, they are doing so called “technical test” with a few questions on paper. Mostly are programming related, mostly about programming language on that paper. Guess what, most are failed. I can guess they have been losing some great people slipped. Personally, I hate those kind of testing. To judge my well developed skill and knowledge with a few questions I had never interested, just because that’s too trivial and nothing to do with my productivity, my program and my team. Because of those testing, I couldn’t even have a chance to talk about my “CAN-DO” attitudes by saying “Yes We Can” :) sometime. May be this is a little personal. But here what I think it is not good. Especially, judging developer with a couple of stupid questions on paper.

First, some people capabilities are not built by their memory about some stupid-never-used keywords and libraries in their programming. Such as, asking garbage collection code in Microsoft .NET framework, while you can rely garbage collection 100% on Microsoft .NET garbage collector, unless your system are zero lowest level .NET program. (I had got this kind of question in an interview for hiring developer to do a real high level line of business programs) Believe me, some people are just a real hacker. Please let them try by giving a connected browser with a great indexer called “Google”. Let’s see who can really hack for your project. Let them use their cognitive abilities. You really don’t need people with a little knowledge tank, who always keep holding it firmly and never let go off it for new technologies and rapid changes in programming world.

Second, some people really bring in a great attitude and long lasting energy for your project. Not just 10 little fingers to type some stupid code while you are standing back at them and one giant big mouth speaking every little pieces of their great codes when you are standing in front of them. I mean, you need people who can trust while you are busy with a real important matter for your business and who let you relax when you are tired. At least, you might reduce spending on having a large ratio of managers over a couple of your developers.

Third, some people bring in a real good self-management skill for their own productivities. They are just smart. They always know how to make your project successfully finish on time. You can even have loyal managers when you are successful with your product. Good?

Fourth: some people bring a great people skill which can make your team gain a great team spirit. If your team is consulting team, they can make your deal done successfully with your customers either. You can get rid of your headache again for hiring a great sale person who knows every part of your product, one day.

This is a mere facts, what I, an average developer, think is important, for hiring developers. Feel wired? I admit it’s a little influenced by my recent frustration. I want to talk more about bad hiring that can make our team and your project bad too, but I have not enough knowledge about this topic so far and I am so done with this. I hope you find great posts about it all on web.

If I were in his shoes

It’s been since a couple of months ago, since the day I joined to this new team, I saw we got a little problem. It’s a new software development team, freshly formed to develop a product, that might hit the market next years and makes my bosses earned a big lottery possibly. Since this was a new team, people were joining from different places with different experiences and different point of views, speaking different languages (at least different accents of official english). But then, it’s been built up to reasonably big team.

I still remembered my boss interviewer said we are going to be in agile team, working rapidly in real flat organization. On my first day, my supervisor said they welcome and appreciate for any feedbacks. I was too excited about it. And now feedbacks are almost evaporated.

Today, I got a little disappointment about my dream team was becoming a nightmare. People were arguing about the same problem in every weekly project meeting again and again, and having no solution at all. The real problem was no significant progress and everything were in a mess. PM, he was under stress and kept wearing broken smile all day long. I were just becoming a little fly flying in a room, like my colleague said.

Anyway, a couple of days ago, I was thinking that if I were in his place, what would I do to improve this situation. Honestly, no answer for 2-4 continuous days, even though I tried to find it seriously. I saw my PM in these days that he was filling with more people to team to solve project schedule problem, and it even seemed to me like that’s the solution. But who knows it is one. I strongly believe in that the solution is changing processes and attitudes, not pushing each other in blaming session.

I tried to forget it, since that’s none of my business, but still didn’t want to quit because I didn’t want to be a quitter and this practice must be useful for my future. But mostly, I could replace with other thoughts. Then, I couldn’t believe that I found my brain was kept looking for the answer in stealth mode. So, wired brain found what I think was answer while I was listening to @ericries talks at ecorner.stanford.edu..

Here is what I think, like Eric Ries said, training is the solution. Yes, that’s it. We need to be educated to get a better team and productivity. When I said education, I am not talking about school education or technical training at all. Those had been done a long time ago. It’s team education. Share what an architect think and have a clear same vision in team such as what he mean by MVVM, how we would use it, share what a project manager wants to practice in team, such as agile development method, scrum etc. and even how to have productivity and what should be our team culture. These are education we need to have right away. We just can’t sit and wait for magical solution, even though people will learn slowly about how we are going to work as a team. We need to have dedicated session and bulleted points to gain those education faster.

But, one thing.. official leader need to initiate though, once we know that we are caught in waterfall again unknowingly. I am surprised how much we’re familiar with that waterfall. :)

Solution Room vs War Room

I has written some blogs on my device, some are still merely titles. But, in facts, I am really hold back to post them online, even after I can say it’s complete. I know it’s because those are more about telling what I don’t like, what I couldn’t have and my complaints. I don’t want to mess with my blogs posting with those nagetive stuffs. Although not much people are reading my post, I want to make it useful for people who accidently visited to my link and myself, though.

So today, I am writting a post which I think is someway good for visitors and myself.

So, every company got meeting rooms for their head to head discussions, and they give named to each rooms. Some give beautiful name like Paris, Tokyo. Some give strong names, some give simple name such as room one, room two and so on. Although those name of rooms are not important, I want to compare two meeting rooms I’ve ever attended. Those named solution room and war room respectively. Those are in different companies, which are at my current company and my previous company I recenlty left.

War room is where I visit every day for my current project, but solution room was I visited some months ago just to solve challenging problems which made us delay to lunch our system, and that name actually was given by my previous project manager.

Coincidently, the discussions and results came out from each rooms were reflected to those names. I’d noticed that when I went into war room, we were some way fighting, arguing and blaming each other, and the result are a little undesirable, sometime no obvious result at all. From solution room, the results were quite memorable for me and I really couldn’t forget how I got happiness. Those results were pragmatic and make me feel proud of the sulution I achieved. In that room, my project manager, my architect and we are brainstorming for solution by fixing, rescheduling, reporting and making agreement with our customers and supporting each other.

Actually, we know that those names are doing nothing for us, but our attitudes and team spirits. We need to have our clearly positive attitudes and objectives since we stepped into meeting rooms. We shouldn’t be fighting each other, we are just to fight against with problem we had. That is the reason we are gathering around that meeting rooms. We must achieve our objectives.

PS: the war room is very organized and decorated conference room, but the solution room was a store room where damaged chairs and tables were placed, where my project manager booked for long hours discussion and chosed it to avoid not to disturb other people meeting schedule.

Last week, I had a chance to write some code that allows users to execute their formula/equation on the properties of domain objects. I realize that their requirements are not too clear and they want most flexibilities. I couldn’t have any excuses but have to come out with the initial version which tease them to spell their requirement.

I don’t want to write complex engine, which is built with long if-else statements, for that though. So I googled what I can do in my C# program. I found that CodeDomProvider could help me someway. I have to admit that I didn’t know those powerful framework component was already existed since 1.0, but no wonder it’s existence because the whole framework had been built on that component. It’s incredible that I can even compile my code into an assembly in memory and execute for my users. And there are tons of useful stuffs way more than I can use.

But I got started to concern about the power of it. Since user can write programming language on their formula, how could I help them to do less mistakes. They won’t be having IDE like us. The only thing they are going to have is my stupid dumb textbox and a few predefined stuffs. And even if I could give them some validation on their text, how could I point the exact error location. And how could I turn that feature to simplest thing for them, which doesn’t make them feel like they are not coding and using just a textbox with natural mathematics language, to build their formula.

So let me have answer or solutions, before I quit doing that.

see the microsoft .net code dom here.
http://msdn.microsoft.com/en-us/library/system.codedom.compiler.codedomprovider.aspx

Just a few lines of codes more

We, developers, always want to have, everything automatically or readily, when we are working on the frameworks or components we are using. Such as .net, j2ee, cocoa etc. I understand it, because we are another users of those frameworks while we are solving our users and customers’ problems. So, there is no strange if we claim to have everything ready from our suppliers like our users want from us.

But the problem is if we tried what we can’t achieve, and wasting our valuable times without writing a line of codes, even sometime it is obvious to us that it is not possible. Sometime, we request for help from components vendor and wait for the solution they provided, even though it is not quite ok for a long terms, since our application are kept improving with changes, and their solution is just to fix our questions. Their sample are definitely useful though.

But take a break and think about it a little, by standing out from our owned problem. You’ll realize that sometime, it is obvious that we just need to work a little harder with the other ways around to solve the whole problem. We shouldn’t stick into the same solution for the same problem, again and again. With my experiences, It’d been multiple times I had been solved that kind of problem with a little different attitude, a little different point of view and a little different method. Yes, sometime, something trying ourselves take a long way to go and waste our valuable times. But, sometime it just works. Sometime, no way apart from getting help from vendors.

So, the thing is, we just need to take a break every time we encountered difficulties with technologies we are using, and find a better way to solve. Thinking should lead coding. Then we’ll be happy.

My email below to my folk.

Hi Guys,

For those of you, who get annoying with build/compile failure of domain projects by Telerik ORM, let me fix the problem since I made it from the start. In fact, the build is failed everytime we made some changes to domain objects, because Telerik OpenAccess try to connect to database server. That is because we made the configuration at the wrong projects. The configuration is Update Database = True. See picture below.

OpenAccess

Actually, I had to do it at the first time, because I am working only on domain project and want to see the mapping result in development database. There was no separated ORM project host. Now we got separated ORM project, and we actually don’t need to set the value True for domain projects. We just need to build ORM project, which is set reference projects to domain projects, and database update is going to be managed by that ORM project. See the Telerik OpenAccess documentation for deep understanding.

UpdateDatabase
If the value of the UpdateDatabase property is set to “true”, it specifies that the database will be updated during a Visual Studio build.

A create or update sql script file will also be created in the assembly output directory (bin\Debug) of your project during Building / Rebuilding your project, if this property is set to “True”. The script file name will start with Schema_Creation or Schema_Migration followed by the backend and the timestamp (“Schema_Migration_mssql_2006-04-10_12-41-39.sql”).

If it is the first time that you are Building / Rebuilding your project, with the database property set to “True”, then another .sql file using the default naming convention, i.e, Database_Creation_Driver_DateTime (for e.g. Database_Creation_mssql_2006-05-31_16-45-46.sql) will also be generated, which will contain the SQL DDL command: CREATE DATABASE DatabaseName (Refer to Schema Generation for more information).

Online help http://www.telerik.com/help/openaccess-orm/project-properties.html#IDH_IDDOTNETUPDATEDATABASE

Cheers!!!

Regards,

Han

FYI: If you don’t know too much about MVVM and how to work with it, study a development block called Prism. That is a.k.a Microsoft Composite Application Guide or Layer. You can find more about this and source code for block/library at msdn patterns and practices web site.

Anyway, here is a good web site to learn about it and understand more. http://development-guides.silverbaylabs.org/

Very useful if you are wandering for more information about MVVM.

This is another scenario of using dependency property and attached property to solve binding. You encountered a problem while you are doing binding with controls in your application with your data source in WPF. You are given warning/error while you build your code by saying the control property is not dependency property or not bindable.

Here is my way, don’t think too long. It says it needs dependency property. There are two types of dependency property to solve this. One is dependency property itself and another is attached property. The solution is, create your own dependency property for your binding. You only need a few minutes to complete all since VS already have code snippet for that. Hints are if you can inherit the control and create your custom control, use dependency property. If you can’t, use attached property. Then implement appropriate callback method for your dependency property and assign your data to control’s property. Cool?

There are lots of information and sample code about those property. Please go on with internet. Take a little more time to learn framwork element metadata options too. very useful.

Older Posts »