At office, we used wiki to share knowledge about projects and technical things. It's a good way to keep, organize and share the information. So I decided to install a wiki on my PC for personal usage.
Take a look around on open source wikis, I decided to install ScrewTurn Wiki on my PC (Windows 7). The reason I try it because it's included in Microsoft Web Platform Installer, so maybe it's good enough.
There are two ways to set up ScrewTurn Wiki: via Microsoft Web Platform Installer, and manually. I tried with Microsoft Web Platform Installer first because it's simpler way to install, just select and click a few options and buttons, and you should have something works. So I did it but had 500.19 error. Then I tried to set it up manually, but had the same problem.
Look into the error message and I finally found out that removing the whole 'configSections' section in web.config help to resolve the problem. Damn it, when there is an installer, I expect that after I click Finish, the software should be on and running.
Anyway, the wiki is running now and I will dig into it.
Showing posts with label work. Show all posts
Showing posts with label work. Show all posts
Saturday, March 20, 2010
Monday, March 08, 2010
How do you organize your build configurations?
I'm using TeamCity for the first project I tried to apply CI and I created build configurations as below:

How do you organize your build configurations?
- Trunk
Development build configuration, it will run if files are checked into trunk. No code coverage, no artifact, it should run as fast as it can - Nightly
It will run nightly and produce code coverage and artifact - Release
As its name, just for releasing. It also supports to deploy the release to remote server

How do you organize your build configurations?
Monday, March 01, 2010
Updating 2010 plan progress
I made a plan for 2010 and after 2 months I decided to update the progress. It will help me to keep on track and focus on what I planned.
- TeamCity - In progress
- ASP.NET MVC - In progress
- ExtJS - Stopped, don't know when to resume
- MSBuild - Stopped but maybe I will resume it next week
- NHibernate - No progress
- Castle ActiveRecord - No progress
- Castle Windsor - No progress
Sunday, January 24, 2010
Being a father and a chance to update the plan once again
My wife is pregnant and I expect to become a father this September. So it's a great chance to update the plan for 2010 once again.
Seems I had a long list for the tools/frameworks I want to be proficient in last time, but becoming a father (and a good father) is a more important thing. So sorry, some of you can wait for next year.
Here is the updated list of tools/frameworks I want to be proficient in this year:
Seems I had a long list for the tools/frameworks I want to be proficient in last time, but becoming a father (and a good father) is a more important thing. So sorry, some of you can wait for next year.
Here is the updated list of tools/frameworks I want to be proficient in this year:
- TeamCity
- ASP.NET MVC
- ExtJS
- MSBuild
- NHibernate
- Castle ActiveRecord
- Castle Windsor
Thursday, January 21, 2010
Plan for 2010 (updated)
The plan I made here seems not clear, so after a few days, I decided to update the plan for 2010. And here is my plan for 2010:
Be proficient in these tools/frameworks
Read these books
Be proficient in these tools/frameworks
- TeamCity
- WPF
- Silverlight
- ASP.NET MVC
- ExtJS
- MSBuild
- NHibernate
- Castle stack (ActiveRecord, MonoRails, Windsor)
Read these books
- ExtJS in Action (Manning)
- Growing Object-Oriented Software, Guided by Tests (Addison Wesley)
- Inside the Microsoft Visual Studio Build Engine (Microsoft Press)
- Illustrated WPF (Apress)
- Pro Silverlight 3 in C# (Apress)
- Continuous Integration in .NET (Manning)
Tuesday, December 29, 2009
2009 & 2010
In 2009, I did 2 important things:
And in 2010, I planned:
- Changed the job. Now I'm working in GIS team of a Danish company
- Got married, sure, it must be one of the most important things in men's life
And in 2010, I planned:
- Be a master of TeamCity and MSBuild
- Learn ExtJS as much as possible
- Learn a new language (F#, Scala, Boo are considering)
- Spend more time for software architect and agile development
- Have something RUNS
Wednesday, September 02, 2009
Sorry, Denmark
I have an opportunity to work in Denmark in a few months. I really like it because it helps me to have a chance to live in Denmark, and maybe, visit Europe. But because of a big personal plan, I decided to reject it.
Sorry, Denmark, maybe next time.
Sorry, Denmark, maybe next time.
Wednesday, March 18, 2009
Quite busy
These days I didn't update my blog 'cause I'm quite busy with my job. If you're care about my work, thanks, I'm working on an internal project which uses ASP.NET, Castle ActiveRecord and, maybe, Castle Windsor.
And there is a surprise news to you, JetBrains will start the EAP of their issue tracker soon. Looking forward to try it. And if you want to take a look on it, check out here.
And there is a surprise news to you, JetBrains will start the EAP of their issue tracker soon. Looking forward to try it. And if you want to take a look on it, check out here.
Wednesday, January 21, 2009
Case sensitive - a headache experience
In a few days, I met some problems relate with case sensitive. The first one is with PostgreSQL and the second one with Subversion. These problems happened on Windows, even it is not a case sensitive OS.
When I create a table (or a field) which its name is not in lower case, example: User, FirstName. PostgreSQL will create the name with double quotes (User -> "User", FirstName -> "FirstName"). When you execute "SELECT * FROM User", it will not work. The correct statement should be "SELECT * FROM "User"". Please note that User must be bound by double quotes.
The same problem happend with a Subversion repository. If you create a "BlahBlah" repository, and checkout or update with "blahblah" in URL, it works fine. But it doesn't work when you commit.
When I create a table (or a field) which its name is not in lower case, example: User, FirstName. PostgreSQL will create the name with double quotes (User -> "User", FirstName -> "FirstName"). When you execute "SELECT * FROM User", it will not work. The correct statement should be "SELECT * FROM "User"". Please note that User must be bound by double quotes.
The same problem happend with a Subversion repository. If you create a "BlahBlah" repository, and checkout or update with "blahblah" in URL, it works fine. But it doesn't work when you commit.
Friday, January 16, 2009
Goodbye Korean - Hello Danish
Today is the last day of the first week I work for a Danish company. Even my general director is a Vietnamese (and most of my colleagues are Vietnameses), I'm working under management of a Danish guy.
We have a small IT group with 7 people. 6 of them are Vietnameses, included me, and we are almost at the same age. The working environment is open, I like it. Even we have some problems in start up, but I think it will be better in the future.
We have a small IT group with 7 people. 6 of them are Vietnameses, included me, and we are almost at the same age. The working environment is open, I like it. Even we have some problems in start up, but I think it will be better in the future.
Saturday, November 01, 2008
Help yourself to stand out of the crowd
When you want to apply a new job, what will help you to stand out of the crowd? For sure, it's your resume (or CV). The employer will read it to find out what you've got and done (experience, knowledge,...), and to know that you're suitable for the job or not.
When you write your resume, you can learn many tips from the books which teach you write it. Example: Use short but clear statements, use active voice, use the verb in past participle when describe about your experience,... But, IMO, they're not enough. What you should do is making the difference, and the difference will help you to stand out of the crowd.
How to make the difference? Actually, it's up to you and your creativity. But I can give you one example I applied and received a good result at the first time I used it. Usually, in your resume, you will list the projects you worked for with a short description and your responsibility. I did the same thing but I ONLY list the projects I was interested in with the title "MOST INTERESTING PROJECTS". Yeah, right, the title is thing which makes the difference.
When you write your resume, you can learn many tips from the books which teach you write it. Example: Use short but clear statements, use active voice, use the verb in past participle when describe about your experience,... But, IMO, they're not enough. What you should do is making the difference, and the difference will help you to stand out of the crowd.
How to make the difference? Actually, it's up to you and your creativity. But I can give you one example I applied and received a good result at the first time I used it. Usually, in your resume, you will list the projects you worked for with a short description and your responsibility. I did the same thing but I ONLY list the projects I was interested in with the title "MOST INTERESTING PROJECTS". Yeah, right, the title is thing which makes the difference.
Thursday, July 31, 2008
A painful experience with Windows Vista
Yesterday, I downloaded Microsoft SQL Server Management Studio Express and installed it on Windows Vista but I had a error code 29506 message (What the heck!). I've never seen this problem with Windows XP.
Today, I gave it another try (re-download, re-install) but I had the same problem. Try to google, I found that many people have the same problem. And someone can install it with some tricks. Here is the resolution (at least it works for me):
PS: Thanks for the resolution.
Today, I gave it another try (re-download, re-install) but I had the same problem. Try to google, I found that many people have the same problem. And someone can install it with some tricks. Here is the resolution (at least it works for me):
1. Click the Start icon.
2. Type CMD into the Search box.
3. Right-click on cmd.exe then select Run as Administrator.
THIS IS IMPORTANT!
4. On the Command window, use the cd command to change the
directory to where the file you want to install is located.
(NOTE: It must be on a local drive—I tried entering a UNC
path to the server where it was located, but got a message
that ‘CMD does not support UNC paths as current directories’;
I also tried the mapped drive letter, but it didn’t like that
either!)
5. Type the location and name of the executable or MSI file
(e.g. C:\Users\\Documents\ ),
then press Enter.
6. The installation will happen as normal, except this time it
will work!
PS: Thanks for the resolution.
Wednesday, July 09, 2008
Introduce about yourself - The first big step in an interview
When I do an interview, I usually ask the candidates to introduce about themself. Maybe you feel strange, and tell me "Hey, you've got their resumes, just read them". But I don't think it's a good way to know about the candidates. Actually, when I ask them to introduce about themself, I give them an opportunity to expose themself. If they can do it fluently, it means they have enough self-confidence to expose their ideas and opinions, the first step to get the job done.
And what will you need to do to introduce about yourself? IMO, you need to introduce:
+ A little about your information (name, which major and university you graduated,...)
+ A little about your position and your responsibility in the current company
+ And, again, a little about your current project (if you don't need to keep it in secret)
And what will you need to do to introduce about yourself? IMO, you need to introduce:
+ A little about your information (name, which major and university you graduated,...)
+ A little about your position and your responsibility in the current company
+ And, again, a little about your current project (if you don't need to keep it in secret)
Monday, June 16, 2008
The revolution of the API and the lack of knowledge in the API
About 2 years ago, I developed an application which supports user to "draw" rectangle and line by mouse at runtime. They need to handle some events (like double-click, right-click), also user can change its background color, set its background image, and do something else. At that time I made them as user controls 'cause I found that Microsoft didn't provide Rectangle and Line controls.
The revolution of API (Why do they make it lately?)
A few days ago, I found that in .NET Framework 3.5 SP1, Microsoft will provide several vector shape controls (Rectangle, Line, Oval,...) for all languages.
And the lack of knowledge in API
Also a few days ago, I found that Microsoft already provided Rectangle, Line controls but only in VB.NET (Microsoft Visual Basic 2005 Power Packs 2.0). If I could found it long time ago, I would not need to spend too much time in creating the user controls. (Yes, I know I can use them in C# even they are for VB.NET)
The revolution of API (Why do they make it lately?)
A few days ago, I found that in .NET Framework 3.5 SP1, Microsoft will provide several vector shape controls (Rectangle, Line, Oval,...) for all languages.
And the lack of knowledge in API
Also a few days ago, I found that Microsoft already provided Rectangle, Line controls but only in VB.NET (Microsoft Visual Basic 2005 Power Packs 2.0). If I could found it long time ago, I would not need to spend too much time in creating the user controls. (Yes, I know I can use them in C# even they are for VB.NET)
Friday, June 13, 2008
"I don’t afraid a new technology..."
When you see the title of this post, you can imagine some funny things. Exactly! When I read it, it made me laugh and I couldn't stop. It's a statement in a resume I had just received yesterday. (The full statement is "I don’t afraid a new technology, for me a few time I can work with any technology.")
I know many Vietnamese lack of knowledge and experience in English, even me. But it's not just about grammar, it's about the meaning of the statement. What is the point of it in your resume? Are you trying to excite yourself?
When you write down some fucking things in your resume, you should understand what you're fucking doing. If you couldn't understand what you're fucking doing, how could you get your fucking job done?
You "don't afraid a new technology"? Yes, you "don't". But I "do" afraid of you :-D
I know many Vietnamese lack of knowledge and experience in English, even me. But it's not just about grammar, it's about the meaning of the statement. What is the point of it in your resume? Are you trying to excite yourself?
When you write down some fucking things in your resume, you should understand what you're fucking doing. If you couldn't understand what you're fucking doing, how could you get your fucking job done?
You "don't afraid a new technology"? Yes, you "don't". But I "do" afraid of you :-D
Wednesday, March 05, 2008
GS1 Check Digit Calculator
I wrote a check digit calculator, maybe somebody will need it.
public static class CheckDigitCalculator {
public static int CalculateCheckDigit(string input) {
int sum = CalculateSum(input);
int checkDigit = CalculateCheckDigit(sum);
return checkDigit;
}
private static int CalculateSum(string input) {
int factor = 3;
int sum = 0;
for (int i = input.Length; i > 0; i--) {
sum += Convert.ToInt32(input[i - 1].ToString())
* factor;
factor = 4 - factor;
}
return sum;
}
private static int CalculateCheckDigit(int sum) {
if (sum % 10 == 0) {
return 0;
} else {
int nearestEqualOrHigherMultipleOfTen =
(sum / 10) * 10 + 10;
return nearestEqualOrHigherMultipleOfTen - sum;
}
}
}Note: The perfect one should check for the input string only contains numeric values.
Sunday, January 28, 2007
Sự phá sản của một ý tưởng
Cách đây vài tháng tôi đã có một ý tưởng về việc phát triển một hệ thống gọi là SSRSS (Synchronized System for RSS). Hệ thống này nhằm cung cấp một server cho phép người dùng sử dụng đồng thời nhiều máy tính có thể đồng bộ hóa newsfeed của họ một cách dễ dàng. Ví dụ, tôi có 2 máy tính, một ở nhà và một ở công ty. Tôi có thể sử dụng 2 feed reader khác nhau ở 2 máy nhưng đều được đăng ký các feed như nhau. Chẳng hạn tôi đã đọc tin A ở công ty, nó đã được đánh dấu đã đọc. Nhưng khi về nhà, feed reader ở máy tính tại nhà lại không thể biết rằng tôi đã đọc tin A và nó hiển thị tin A như là một tin mới. Việc đồng bộ hóa sẽ cho phép tôi khi về nhà, bật feed reader lên và tin A sẽ được đánh dấu đã đọc.
Để có thể giải quyết được vấn đề này, điều quan trọng nhất, theo tôi, đó là làm thế nào để blog server biết được rằng người dùng đã đọc tin. Khi đó server có thể đánh dấu các tin (đã được cache). Nhưng điều này chỉ có thể thực hiện được nếu feed reader implement API riêng biệt nào đó có nhiệm vụ tương tác với blog server (điều mà trước đây tôi đã ảo tưởng có cách vượt qua), giải pháp này đã được Bloglines sử dụng. Nhìn vào đó chắc hẳn các bạn đã thấy được hạn chế của nó: Nếu feed reader không sử dụng API của tôi nghĩa là không thể synchronize (thông qua server của tôi).
Cũng có một giải pháp khác, đó là feed reader hỗ trợ cache. Nghĩa là feed reader sẽ lưu trữ thông tin về các tin và upload lên một server mà các máy tính của người dùng có thể truy cập đến. Dựa trên các thông tin này, feed reader sẽ đồng bộ hóa các tin để xác định nó được đọc hay chưa. Giải pháp này đã được một số feed reader sử dụng (ví dụ RssBandit).
Trong khi đó thị trường feed reader, theo tôi, đã bão hòa với quá nhiều sản phẩm có các tính năng hấp dẫn. Việc tôi phát triển một feed reader để phục vụ cho SSRSS là hoàn toàn không thực tế.
Chính vì các lý do trên, tôi quyết định dừng việc phát triển SSRSS. Hy vọng rằng trong tương lai gần tôi sẽ có một ý tưởng mới hay ho, hấp dẫn và thực tế hơn.
Để có thể giải quyết được vấn đề này, điều quan trọng nhất, theo tôi, đó là làm thế nào để blog server biết được rằng người dùng đã đọc tin. Khi đó server có thể đánh dấu các tin (đã được cache). Nhưng điều này chỉ có thể thực hiện được nếu feed reader implement API riêng biệt nào đó có nhiệm vụ tương tác với blog server (điều mà trước đây tôi đã ảo tưởng có cách vượt qua), giải pháp này đã được Bloglines sử dụng. Nhìn vào đó chắc hẳn các bạn đã thấy được hạn chế của nó: Nếu feed reader không sử dụng API của tôi nghĩa là không thể synchronize (thông qua server của tôi).
Cũng có một giải pháp khác, đó là feed reader hỗ trợ cache. Nghĩa là feed reader sẽ lưu trữ thông tin về các tin và upload lên một server mà các máy tính của người dùng có thể truy cập đến. Dựa trên các thông tin này, feed reader sẽ đồng bộ hóa các tin để xác định nó được đọc hay chưa. Giải pháp này đã được một số feed reader sử dụng (ví dụ RssBandit).
Trong khi đó thị trường feed reader, theo tôi, đã bão hòa với quá nhiều sản phẩm có các tính năng hấp dẫn. Việc tôi phát triển một feed reader để phục vụ cho SSRSS là hoàn toàn không thực tế.
Chính vì các lý do trên, tôi quyết định dừng việc phát triển SSRSS. Hy vọng rằng trong tương lai gần tôi sẽ có một ý tưởng mới hay ho, hấp dẫn và thực tế hơn.
Groovy syntax file for EmEditor
Yesterday, while waiting for the football match between Manchester United and Portsmouth in round 4 of FA Cup, I created a Groovy syntax file for EmEditor. This syntax file can help to highlight Groovy's keywords, class name in Groovy library and functions name.
You can get it here then import it into EmEditor.
Cheers to develop with Groovy!
You can get it here then import it into EmEditor.
Cheers to develop with Groovy!
Sunday, December 10, 2006
My daily tools
These days I'm working in a project using .NET and Firebird and also I decided to use UML to support modeling. So I need to find some tools to have me can do my work better. And here are them.
UML modeling tool: Actually I don't like UML tools are made by Java, they look ugly (application and symbols for modeling). So I want to find a UML tool it has a native look (in Windows). On my way, I found UMLStudio, it's really very small, only 3MB. But it's not free. Do more searching, I found StarUML. It has a native look, runs fast, free and open source. Even though it has some bugs but it's good enough to use to model.
Developer and DBA tool for Firebird: As I found, I have 2 options. One is EMS SQL Manager for InterBase/Firebird and another choice is IBExpert. After a try, I really fall in love with IBExpert. If you are familiar with TOAD (actually TOAD does not support for Firebird right now), IBExpert can do better than that. And IBExpert has a personal version, it's free.
And one more thing I cannot forget, it's SmartSVN. Visual Studio has AnkhSVN but I don't like it very much, it's really heavy. Another choice is VisualSVN but it has less features than AnkhSVN and it is underlying on TortoiseSVN. So I decided to use a SVN client rather than a Visual Studio add-in and SmartSVN is my choice.
UML modeling tool: Actually I don't like UML tools are made by Java, they look ugly (application and symbols for modeling). So I want to find a UML tool it has a native look (in Windows). On my way, I found UMLStudio, it's really very small, only 3MB. But it's not free. Do more searching, I found StarUML. It has a native look, runs fast, free and open source. Even though it has some bugs but it's good enough to use to model.
Developer and DBA tool for Firebird: As I found, I have 2 options. One is EMS SQL Manager for InterBase/Firebird and another choice is IBExpert. After a try, I really fall in love with IBExpert. If you are familiar with TOAD (actually TOAD does not support for Firebird right now), IBExpert can do better than that. And IBExpert has a personal version, it's free.
And one more thing I cannot forget, it's SmartSVN. Visual Studio has AnkhSVN but I don't like it very much, it's really heavy. Another choice is VisualSVN but it has less features than AnkhSVN and it is underlying on TortoiseSVN. So I decided to use a SVN client rather than a Visual Studio add-in and SmartSVN is my choice.
Friday, December 08, 2006
What the hell is going on with my combo box?
These days I'm very busy with my works. But I found a problem and it can take me about 3 minutes to have a break and I use it to write this post.
The problem I found relates with ComboBox control in .NET Framework 2.0. A ComboBox control has a DataSource property which accepts a List<T> as value. And then you can specify value of ValueMember and DisplayMember for it to use as value and text in combo box.
I have a Tag(int id, string name) and ofcourse a List<Tag> (it is not empty). I filled the list to a combo box, use "id" as ValueMember and "name" as DisplayMember then set SelectedIndex is 0 to make sure that I always select at least one item on the list. When I click the arrow of combo box, the drop down list appears but I don't select any item from list. Then I've got SelectedIndex is -1 while my expected value is 0. At this time I want to crazy 'cause don't understand why it happened.
But later I found that, the problem is the DisplayMember's data. If the first item of the list has a "name" is an empty string, you will have this problem. Seems M$ implemeted to select text value to get the index. But if it's an empty string, the returned index will be -1.
Thanks M$ to make me crazy ;-)
The problem I found relates with ComboBox control in .NET Framework 2.0. A ComboBox control has a DataSource property which accepts a List<T> as value. And then you can specify value of ValueMember and DisplayMember for it to use as value and text in combo box.
I have a Tag(int id, string name) and ofcourse a List<Tag> (it is not empty). I filled the list to a combo box, use "id" as ValueMember and "name" as DisplayMember then set SelectedIndex is 0 to make sure that I always select at least one item on the list. When I click the arrow of combo box, the drop down list appears but I don't select any item from list. Then I've got SelectedIndex is -1 while my expected value is 0. At this time I want to crazy 'cause don't understand why it happened.
But later I found that, the problem is the DisplayMember's data. If the first item of the list has a "name" is an empty string, you will have this problem. Seems M$ implemeted to select text value to get the index. But if it's an empty string, the returned index will be -1.
Thanks M$ to make me crazy ;-)
Subscribe to:
Posts (Atom)
