2014/12/19

Mass 'rename' with Linux

Tình huống: Đổi tên, theo pattern nào đó, với nhiều file đồng thời.

Lệnh:

​rename 's/Screenshot from/Practical Advice for Agile Planning and Collaboration/' *.png

rename -n will just display the result after renaming, not actual rename the files.

2014/12/10

A case study on applying Scaled Agile Framework (SAFe)

Tóm tắt:
Bài viết này tóm tắt một số ý quan trọng khi triển khai Scaled Agile Framework (SAFe) ở mức team, dự án, program (chương trình) và tổ chức (company level)

Bối cảnh:
Áp dụng trong một công ty cỡ trung bình,
tổng số nhân viên vài ngàn người,
tổng số nhân sự IT (phát triển, testers, quản trị dự án...) là vài trăm,
với nhiều tiểu dự án, dịch vụ (online) chạy song song.

Mô hình quyền quyết định và budgeting là top-down.
Hệ quả là, tư duy top-down ngay cả trong cách chạy dự án IT cũng là top-down và rất waterfall.

Thách thức:
Áp dụng mô hình Agile vào tổ chức này như thế nào để làm "đẹp lòng" lãnh đạo (cao cấp) trong khi các dự án IT vẫn chạy tốt?

Cách tiếp cận:
- Agile tới từng team, dự án, chương trình, mục tiêu (portfolio) và tổ chức,
- Áp dụng những Agile toolkit cơ bản, có lộ trình,
- Việc áp dụng Agile toolkit ở mức team (5-10 người) được phó mặc cho Project lead, scrum master.

Lựa chọn scaled Agile framework:
Tôi chọn SAFe thì mô hình này vẽ đẹp, trực quan, dễ dàng dùng hình để thuyết phục lãnh đạo.
Iteration là một Agile practice được mô tả đơn giản, chia theo các mức lãnh đạo, phòng ban trong tổ chức có thể dễ dàng áp dụng.
SAFe tập trung vào quy trình, thích hợp hơn ở mức tổ chức

Tôi có tìm hiểu qua các scaled Agile framework sau nhưng không chọn:
  1. RAP (Real Agility Program)
  2. DAD (Disciplined Agile Delivery)
  3. LeSS (Large Scale Scrum)

Lộ trình tiếp cận và áp dụng SAFe:e

  1. Áp dụng Agile toolkits cho các nhóm phát triển. Đối tượng áp dụng là scrum master, tester, developers...
  2. Áp dụng Agile toolkits cho các dự án, mục tiêu lớn. Đối tượng áp dụng là lãnh đạo ở mức trưởng phòng, product manager,
  3. Áp dụng Agile toolkits ở mức C-level (CEO, CFO, CTO...). Điều quan trọng là thay đổi mindset, chuyển đổi nó từ tư duy truyền thống sang tư duy Agile.

Trong đó, việc budgeting, được quyết định chính bởi CEO, CFO là tối quan trọng. CEO và CFO là những người khó thay đổi nhất.

Một số nhận định chung về SAFe:

  1. Áp dụng ở mức tổ chức, chứ không phải chỉ cho một team nhỏ dưới 10 người,
  2. Thích hợp với tổ chức có nhiều phòng ban, tổ chức, dự án, chương trình chạy song song,
  3. Q: SAFe có thực sự là Agile không? A: SAFe là Agile ở mức team và cũng là Agile ở mức program, tổ chức dù điều này hơi khó nhìn,
  4. Q: SAFe liên quan gì tới Scrum? Scrum là một Agile toolkit. SAFe là một mô hình Scaled Agile. Do đó, việc so sánh SAFe và Scrum là khập khiễng. Trong mô hình SAFe, ở mức team, hoàn toàn có thể áp dụng Scrum như một toolkit hoặc nhiều toolkit khác,
  5. Q: Vì sao ít người (nổi tiếng) ủng hộ SAFe? A: Vì họ thường chỉ làm dự án ở quy mô nhỏ, trong khi SAFe áp dụng ở quy mô lớn (hơn),
  6. Q: SAFe có phải là chiến lược không? A: Đúng, nó là một chiến lược, cách tiếp cận đúng để thay đổi tư duy cổ điển của lãnh đạo sang Agile,
  7. Q: SAFe có định nghĩ rõ độ dài của sprint không? A: Không. Độ dài sprint hoàn toàn tùy thuộc vào tình hình thực tế. Với mức team < 10 người, độ dài sprint có thể là 4 tuần, 1 tuần hay thậm chí một vài ngày. Với C-level, "sprint" là 1, 3 hay 6 tháng và có sự điều chỉnh (retrospect:ve) khi cần thiết.

Một số Agile toolkit:

# (mà tôi) khuyến nghị sử dụng ở mức độ công ty, cho các vị trí khác nhau.

  1. Agile for project managers
  2. Agile portfolio management
  3. Scaled Agile Framework
  4. User Stories
  5. Agile Kanban
  6. Iteration Planning
  7. Definition of Done
  8. Agile Quality
  9. Agile Planning
  10. Agile for Executives
  11. Scrum
  12. Planning poker
  13. XP (eXtreme Programming) (use with care :D)
  14. Kanban
  15. TDD (Test-Driven Development)
  16. CI (Continuous Integration)
  17. CTDD (Continuous Test Driven Development)

Topics khác:

(liên quan tới việc triển khai SAFe, hay scaled Agile frameowork nào đó)

  1. Hiring (đúng người đúng việc)
  2. Performance evaluation (đánh giá, đây là việc cần làm trong tổ chức (lớn)
  3. Communications (thông luồng liên lạc, không quá quan liêu, không quá thưa)
  4. Reporting (Hơi đi ngược lại với nguyên tắc Agile. Báo cáo là cần, dù ngắn, không để "báo cáo" trở thành gánh nặng)
  5. Organization structure (Định nghĩa lại sơ đồ tổ chức khi áp dụng SAFe, cùng với RaR)
  6. Project structure (cơ cấu tổ chức ở mức dự án)
  7. Training (Đào tạo tư duy Agile, từ lãnh đạo tới nhân viên)
  8. Authority (Chơ chế quyền quyết định thay đổi khi áp dụng Agile)
  9. RaR (Roles and Responsibilities) definition
  10. Skillset (Năng lực cần và đủ của các vị trí thay đổi khi áp dụng Agile)
  11. Governace (Không có thì móm à)

Tham khảo:

  1. unSAFe at any speed http://kenschwaber.wordpress.com/2013/08/06/unsafe-at-any-speed/
  2. The Horror Of The Scaled Agile Framework http://neilkillick.com/2012/03/21/the-horror-of-the-scaled-agile-framework/
  3. Large-Scale Agile Design & Architecture: Ways of Working http://www.infoq.com/articles/large-scale-agile-design-and-architecture





--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

"凡", "buồm" in Korean and Vietnamese. Credit to Anh Dũng Phan for pointing out the similarities.

"凡", "buồm" in Korean and Vietnamese. Credit to Anh Dũng Phan for pointing out the similarities.

--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

2014/12/04

How to run an effective meeting (updated #1)

*​​Để chạy một cuộc họp hiệu quả, cần làm gì?*

- Có mục đích rõ ràng
- và được chi tiết hóa hơn bằng agenda
- Tập trung vào agenda, không đi lệch chủ đề chính
- Càng ngắn càng tốt. Thời gian cho một meeting nên không vượt quá 25 phút.
- Chỉ định người take note
- Tất cả những người tham gia có sự chuẩn bị trước về mặt tinh thần và nội dung
- Chỉ định người điều khiển cuộc họp, điều chỉnh cuộc họp theo các tiêu nói nói trên: Tập trung vào agenda, không lệch chủ đề, chủ động ngắt phát biểu nếu quá dài.

Một số biểu hiện của cuộc họp không hiệu quả:
- Thời gian quá dài
- Không đi vào nội dung chính
- Không rõ mục tiêu của cuộc họp là gì
- Có người ngủ hoặc/làm việc riêng trong khi họp
- Không có kết luận, danh sách TODO/next action sau cuộc họp

*Tham khảo bài dưới đây: *

There are good meetings and there are bad meetings. Bad meetings drone on forever, you never seem to get to the point, and you leave wondering why you were even present. Effective ones leave you energized and feeling that you've really accomplished something.

So what makes a meeting effective?

Effective meetings really boil down to three things:

    They achieve the meeting's objective.
    They take up a minimum amount of time.
    They leave participants feeling that a sensible process has been
followed.

If you structure your meeting planning, preparation, execution, and follow up around these three basic criteria, the result will be an effective meeting.

*1. The Meeting's Objective*

An effective meeting serves a useful purpose. This means that in it, you achieve a desired outcome. For a meeting to meet this outcome, or objective, you have to be clear about what it is.

Too often, people call a meeting to discuss something without really
considering what a good outcome would be.

   1.     Do you want a decision?
   2.     Do you want to generate ideas?
   3.     Are you getting status reports?
   4.     Are you communicating something?
   5.     Are you making plans?

Any of these, and a myriad of others, is an example of a meeting objective. Before you do any meeting planning, you need to focus your objective.

To help you determine what your meeting objective is, complete this
sentence:

At the close of the meeting, I want the group to ...

With the end result clearly defined, you can then plan the contents of the meeting, and determine who needs to be present.

*2. Use Time Wisely*

Time is a precious resource, and no one wants their time wasted. With the amount of time we all spend in meetings, you owe it to yourself and your team to streamline the meeting as much as possible. What's more, time wasted in a meeting is time wasted for everybody attending. For example, if a critical person is 15 minutes late in an eight person meeting, that person has cost the organization two hours of lost activity.

Starting with your meeting objective, everything that happens in the
meeting itself should further that objective. If it doesn't, it's superfluous and should not be included.

To ensure you cover only what needs to be covered and you stick to relevant activities, you need to create an agenda. The agenda is what you will refer to in order to keep the meeting running on target and on time.

To prepare an agenda, consider the following factors:

   1.     Priorities – what absolutely must be covered?
   2.     Results – what do need to accomplish at the meeting?
   3.     Participants – who needs to attend the meeting for it to be
   successful?
   4.     Sequence – in what order will you cover the topics?
   5.     Timing – how much time will spend on each topic?
   6.     Date and Time – when will the meeting take place?
   7.     Place – where will the meeting take place?

With an idea of what needs to be covered and for how long, you can then look at the information that should be prepared beforehand. What do the participants need to know in order to make the most of the meeting time?
And, what role are they expected to perform in the meeting, so that they can do the right preparation?

If it's a meeting to solve a problem, ask the participants to come prepared with a viable solution. If you are discussing an ongoing project, have each participant summarize his or her progress to date and circulate the reports amongst members.

Assigning a particular topic of discussion to various people is another
great way to increase involvement and interest. On the agenda, indicate who will lead the discussion or presentation of each item.

Use your agenda as your time guide. When you notice that time is running out for a particular item, consider hurrying the discussion, pushing to a decision, deferring discussion until another time, or assigning it for discussion by a subcommittee.

An important aspect of running effective meetings is insisting that everyone respects the time allotted. Start the meeting on time, do not spend time recapping for latecomers, and, when you can, finish on time.
Whatever can be done outside the meeting time should be. This includes circulating reports for people to read beforehand, and assigning smaller group meetings to discuss issues relevant to only certain people.

Download our free agenda template here, and use this as a starting point for creating your own agenda.

*3. Satisfying Participants that a Sensible Process Has Been Followed*

Once you have an agenda prepared, you need to circulate it to the
participants and get their feedback and input. Running a meeting is not a dictatorial role: You have to be participative right from the start.

Perhaps there is something important that a team member has to add. Maybe you have allotted too much, or too little, time for a particular item. There may even be some points you've included that have been settled already and can be taken off the list for discussion.

Whatever the reason, it is important you get feedback from the meeting participants about your proposed agenda.

Once in the meeting, to ensure maximum satisfaction for everyone, there are several things you should keep in mind:

    If certain people are dominating the conversation, make a point of
asking others for their ideas.
    At the end of each agenda item, quickly summarize what was said, and ask people to confirm that that's a fair summary. Then make notes regarding follow-up.
    Note items that require further discussion.
    Watch body language and make adjustments as necessary. Maybe you need a break, or you need to stop someone from speaking too much.
    Ensure the meeting stays on topic.
    List all tasks that are generated at the meeting. Make a note of who is
assigned to do what, and by when.
    At the close of the meeting, quickly summarize next steps and inform everyone that you will be sending out a meeting summary.

After the meeting is over, take some time to debrief, and determine what went well and what could have been done better. Evaluate the meeting's effectiveness based on how well you met the objective. This will help you continue to improve your process of running effective meetings.

You may even want to get the participants' feedback as well. Depending on the time frame, this debriefing can be done within the meeting itself or afterward.

Finally, prepare the meeting summary. This will be forwarded to all
participants and other stakeholders. It is a record of what was accomplished and who is responsible for what as the team moves forward.
This is a very crucial part of effective meetings that often gets
overlooked. You need a written record of what transpired, along with a list of actions that named individuals have agreed to perform. Make sure someone is assigned to take notes during the meeting if you think you will be too busy to do so yourself.

Key Points:

Running an effective meeting is more than sending out a notice that your team is to meet at a particular time and place. Effective meetings need structure and order. Without these elements they can go on forever and not accomplish a thing.

With a solid objective in mind, a tight agenda, and a commitment to
involving the meeting participants in the planning, preparation, and
execution of the meeting, you are well on your way to chairing great
meetings.

Given the frustration most people feel when their time is wasted, gaining a reputation for running efficient and successful meetings is good for you and your career.

Tham khảo:


--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

2014/12/01

OpenBSD: No More Loadable Kernel Modules

"no more lkm": OpenBSD đã quyết định không hỗ trợ Loadable Kernel Module. Độc quyền, tự kỷ và paranoid về bảo mật như thế này đã được gọi là bá đạo chưa? https://bitbucket.org/braindamaged/openbsd-src/commits/all?search=lkm

--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

Compare distributed version control system (Git vs. Mercurial)

Kết quả so sánh distributed version control system (Git vs. Mercurial)

In terms of implementation effort, Mercurial has a clear advantage due to its efficient HTTP transport protocol.

In terms of features, Git is more powerful, but this tends to be offset by it being more complicated to use.

ref. https://code.google.com/p/support/wiki/DVCSAnalysis

--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

killall does not work with Java

vuhung@d330:~$killall freemind
-> Freemind was not killed ;)

vuhung@:~$ps -ef | grep java
vuhung   14071     1  0 14:43 ?        00:00:05 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -Xmx256M -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D -Dfreemind.base.dir=/usr/share/freemind -cp ::/usr/share/freemind/lib/freemind.jar:/usr/share/java/SimplyHTML.jar:/usr/share/java/gnu-regexp.jar:/usr/share/java/jibx-run-1.1.6a.jar:/usr/share/java/xpp3.jar:/usr/share/freemind/lib/bindings.jar:/usr/share/java/forms.jar:/usr/share/freemind freemind.main.FreeMindStarter /home/vuhung/Downloads/file.mm
vuhung   14187  6891  0 15:03 pts/1    00:00:00 grep --color=auto java

vuhung@:~$kill -9 14071
You died.

--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.

Size of Facebook's source code


​As of 2013:

17 MLOC (17 million lines of source code) is the size of FB system's *main* source code - that is many times larger than even the Linux kernel.

44k is number of files in source code.

(D)VCS used in Facebook is Mercurial: https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/


--
Best Regards,
Nguyen Hung Vu [aka: NVH] (in Vietnamese: Nguyễn Vũ Hưng, グェン ヒュン ウー, 阮武興)
vuhung16plus{remove}@gmail.dot.com , YIM: vuhung16 , Skype: vuhung16plus, twitter: vuhung, MSN: vuhung16.
vuhung's facebook  Nguyễn Vũ Hưng's blog on Free and Open Source, Blog tiếng Nhật, Vietnamese LibreOffice, Mozilla & Firefox tiếng Việt

Disclaimer: When posted to social networking groups include, but not limited to Linux Users' Groups, Free and Open Sources forums, mailing lists, the above is my personal opinion and is *not* the opinion of my employer(s), associations and/or groups I join.