Monthly Archives: March 2011

Reading by selection

Reading Happiness

Before going to work, what is your choice of reading? Newspaper, blogs, facebook, twitter,… or nothing at all?


** Vietnamese: Bài viết trình bày ngắn gọn về việc lựa chọn thông tin nên đọc đầu mỗi buổi sáng. Bài viết hoàn toàn dưa trên cách suy nghĩ của cá nhân, và tôi sẽ rất vui nếu nhận được những ý kiến chia sẻ từ các bạn :) **

In our fast-paced society, the things that most people do at the very beginning of a day is consuming news. You can read local news from online new papers, industry news from famous leading-websites, information about your friends & relatives on Facebook, Myspace… But all those information are simply too huge for a single person to read: Digg calculate that everyday the world produce a year-reading for the fastest-reader. What will you read?

It’s worth noticing that not all the information is useful, truthful or even noticeable at all. So what is a good tactics to get the most out of things we read? In my opinion, the first tip is selective reading.

My list of choices for a simple morning:

  1. Inspired story: It’s my first choice. Simple, because I’m all tired with the hard work yesterday, and need replenishing the mind. Those stories also reminds me about what I believe, the motives for that I take actions, the true goal of my life and what should be done now. Philosophically, you may say, but it’s useful to me.
  2. Blogs of choice: following several blogs might be a good idea – I see many good people do this. I believe that following stories of your favorite people would give a big push in motivation. If you are a tech-guy like me, you might also interested in TechCrunch, ArsTechnica or InfoQ, those great sources of innovations, startups, blah blah… StackOverflow/Mailing lists is also a decent selection for a programming careers
  3. Facebook/Twitter: a quick glance for friends, family and so on… Twitter can also be the tools to follow the newest trends in your industry/hobbies, given that you follow the right people ;)
  4. Local News: the fact that until I’m writing this line, I remember that I have ignored this issue for quite a time. It’s not very good: but then I should consider re-organizing the little remaining time.
  5. Task lists: yes, this is indispensable. After reading this, we totally throw ourselves to a new day of work :)

How about your choices?

Suy nghĩ sau khi xem cuộc thi “Phương pháp học tập hiệu quả”

The English version  of this post can be found here.

Chủ nhật vừa rồi tôi có dịp đến vòng chung kết của cuộc thi “Phương pháp học tập hiệu quả” do Nhà văn hóa sinh viên tổ chức. Tuy thời gian quan sát rất ngắn ngủi, nhưng tôi cũng cảm thấy rất thú vị với sự sáng tạo của các đội chơi. Từ cách thể hiện chuyên nghiệp trên tập san, đến những câu trả lời dí dỏm và đầy thông minh trên sân khấu, đã cho thấy các đội đều đã nắm rất chắc những phương pháp học tập mà nhóm mình trình bày.

Cuộc thi kết thúc tốt đẹp với chiến thắng thuộc về đội “Đại năng nổ” của Đại học mở TP. HCM. Những nhóm học tập còn lại cũng tích lũy được thêm những bài học kinh nghiệm quý báu. Tuy thế, khi ra về tôi có một chút băn khoăn. Nhà văn hóa sinh viên tổ chức cuộc thi này để góp phần khuấy động phong trào cải thiện khả năng học tập của sinh viên. Nhưng liệu có thể làm tốt hơn nữa được hay không?

Từ lâu, báo chí đã nhắc nhiều đến việc những sinh viên mới than phiền mình không được hướng dẫn, bị sốc khi chuyển giao vào môi trường đại học. Nhưng tôi không chắc rằng trong số mấy trăm sinh viên ngồi trong khán phòng của cuộc thi này, có bao nhiêu phần trăm có thể áp dụng được những phương pháp được trình bày hôm nay.

Vì sao lại như vậy?

Bởi vì xét kỹ mà nói, bản thân việc “truyền đạt phương pháp” cũng là một việc không đơn giản.

Người ta vẫn thường nói truyền đạt tri thức, truyền đạt công nghệ, khoa học kĩ thuật… chứ chưa từng nghe đến “truyền đạt phương pháp”. Đó là vì tri thức là những kiến thức “tĩnh”, bất biến, có thể được ghi lại trên mặt giấy, ai đọc chịu khó ngẫm cũng hiểu được ít nhiều. Hoặc giống như các thầy đồ gàn xưa kia, không hiểu thì có thể học thuộc lòng. Kiểu như “một công một là hai” vậy.

Còn “phương pháp”, tự thân nó là một tri thức động. Phương pháp được hình thành dựa trên sự kiểm nghiệm và cải tiến cách thức làm việc của con người sao cho tối ưu, có lợi nhất. Với mỗi môi trường và điều kiện, với mỗi con người khác nhau, phương pháp có thể cần được sửa đổi cho phù hợp.

Hãy nói về chuyện đơn giản nhất: viết chữ. 90% chúng ta viết chữ bằng tay, nhưng Nguyễn Ngọc Ký và không ít những người tàn tật khác lại viết bằng chân. Về việc học, có người học tốt nhất khi ở yên tĩnh một mình, người khác lại ưa học trong phòng đông người. Mỗi một phương pháp có những ưu điểm và khuyết điểm riêng, tất cả tùy thuộc vào người vận dụng.

Cũng giống như việc học võ, chẳng ai có thể học bằng cách đọc hay nhìn người khác biểu diễn. Tự bản thân người học phải luyện tập, cảm nhận được từng thế di chuyển, từng miếng ra đòn mới có thể áp dụng được. Để học một “phương pháp”, người học buộc phải áp dụng, thí nghiệm, lật đi lật lại để điều chỉnh phương pháp đó sao cho phù hợp với hoàn cảnh và tính cách của mình.

Vậy vấn đề đặt ra ở đây là: Áp dụng phương pháp học như thế nào?

Tôi đọc qua một số bài thảo luận trong cuộc thi, thấy trình bày về rất nhiều phương pháp ghi nhớ, phân loại, sơ đồ tư duy (mind-mapping) rất ấn tượng. Nhưng để áp dụng được nó thì vẫn còn là chặng đường dài. Và chưa kể, trong hàng chục hàng trăm cách cải tiến, thì ta nên áp dụng cách nào trước?

Theo tôi, khi muốn áp dụng một phương pháp học mới, người học cần chú ý những điều sau:

1) Các phương pháp học chỉ là các công cụ, không phải chìa khóa vạn năng. Ý tưởng này tôi “mượn” từ một quyển sách Quản lý dự án (“No silver bullet”).

2) Mục tiêu. Xác định được mục tiêu sẽ cho người học động lực. Đây có thể xem là điều quan trọng nhất, đóng vai trò định hướng giúp người học “đi đúng đường”, vượt qua những trở ngại trong quá trình học.

3) Chú ý đến thói quen. Thói quen dẫn dắt hành động, hành động định hình số phận. Hãy hình thành những thói quen lý tưởng mà bạn muốn có, chúng sẽ là tài sản cố định lâu dài của bạn.

4) Tính kỷ luật, tự chủ của người học. Lúc đầu sẽ rất khó để thay đổi. Ít nhất cho đến khi thói quen được hình thành. Kỷ luật là công cụ giúp hình thành thói quen tốt nhất.

5) Rút kinh nghiệm và tự điều chỉnh: Không có gì có thể hoàn hảo ngay từ lần đầu tiên. Phải kiên nhẫn làm đi làm lại, mỗi lần tự hoàn thiện cho tốt hơn. Kết quả cuối cùng sẽ là câu trả lời tốt nhất.

6) Học nhóm: sẽ rất tốt nếu có thể học hỏi được từ nhiều người khác nhau.

Load Testing with JMeter

**Vietnamese: mục tiêu của bài viết này là giới thiệu sơ lược về công cụ JMeter và cách áp dụng nó để kiểm tra tính bền vững của một website với số lượng truy cập lớn. **

The purpose of this article is to make a quick introduce about JMeter tool and how to apply it to test the performance of a website with high loading.

Why using JMeter for load testing

JMeter is a free tool, with a wide range of supported functions, and is very popular. Well, as I know (from several StackOverflow questions) there’s hundreds of popular web-testing tools out there. Just pick one, and this time I take JMeter.

Another notice is that this article won’t tell you how to configure Ant to use it along with JMeter. This tutorial is the guide to build a basic test plan to run with the JMeter GUI.

Build a test plan

First you need a test plan. For example, you want to test a Library Website when there are 200 users access at the same time. This is a very high load, given the fact that if your website has about 1000 users,  it’s very rare to see 10 of them access the website resource simultaneously.

We need to specify what a typical user do when accessing our website, for example:

  1. The user login
  2. The user browse books in library
  3. The user review some page of the book

To perform those actions, the user (unconsciously) send HTTP request to web-server through the browser. Assume they are:

  1. {server-address}/user/login
  2. {server-address}/books/browse
  3. {server-address}/book/preview/{page-number}

To achieve a list of requested links (and their parameters), you may use proxy server of JMeter, or an intercepting program like Fiddle2. But we don’t go into details of that issue here.

Get your test plan to JMeter:

After opening jmeter.bat, it makes a blank test plan ready for you. Here’s a screenshot:

JMeter screenshot

JMeter screenshot

Add a thread group: a thread group is the simulation of a user (a thread). In this thread group, we will add many HTTP Sampler Request – the action that the user will perform. Several important parameters of thread group is:

  • Number of thread(user): the number of thread will run simultaneously. For example, if you want to run 100 user at a time, this number is 100.
  • Loop: the number of times the thread will repeat.
  • Ramp up time: the time for the system to increase the thread number to the value specified by “number of thread”. If ramp-up time is 100s for 100 users, it means the time for JMeter to start 100 thread is 100s. If not specified, the system will try to start all the thread at 0s, which may cause overloading for the machine running JMeter.

Add a HTTP Sampler Request: this is a fake HTTP request, to an URL specified. You may select the request type (POST/GET), include data in parameter table or by specifying an included file.

Add custom variable: Not all request to web server is static. Some of them maybe dynamic, based on the previous request. Hence JMeter supports perl-like syntax to include variables in request URL.

Extract information from response: JMeter support extracting value from response to put it in local variable (which may be used in following requests). The value can be extracted by XPath or Regular expression.

Add a listener: To view and do statistics on the results, you will need a listener. In JMeter, there are lots of Listener type for you to choose. Basically, “View result tree” and “View result table” listeners is used to check the server concrete response; the others are statistic reporters that summarize the result of the load-test. The most important reporters are Aggregate Report and Summary report.

User think time: An easy-forgettable parameter in building test plan is user think-time. It bases on the fact that a user can not request as rapidly as a computer, but rather, having time to think(inputting forms, viewing items,…). JMeter has various timer object to have a request delayed for a specified (maybe dynamic) time.

Estimation:

Mostly the estimation is rather subjective, based on parameters like:

  1. Error rate
  2. Average response time
  3. Max response time
  4. 90% Line
  5. CPU/ RAM usage of server

I don’t go into details of all those parameters here. But maybe it’s a subject of another post.

Learning from Japanese: Kanban for software engineering

This post is dedicated for Japanese and Sagisou, the flowers I love most. Hope for the recovery of Japan after the disaster 03/2011.

**Vienamese: Phương pháp Kanban là một trong những sáng tạo của ngành công nghiệp Nhật Bản. Phương pháp này được ứng dụng rất thành công trong hệ thống phân phối của Toyota, và dần trở nên phổ biến trên thế giới. Nói một cách ngắn gọn, Kanban là một tập hợp các nguyên tắc dẫn đến sự tối ưu hóa dần dần của tiến trình công việc, dựa trên việc kiểm soát số công việc tối đa tại một thời điểm của tiến trình.**

What is Kanban?

Kanban is one of the brilliant invention of Japanese industry. The method was first applied successfully in the famous parts-delivering system of Toyota, before it got recognized and became popular among the world. In short, Kanban is a set of principles which make the work process better day-by-day, based on the pull-system & the control of maximum work-in-progress at one time.

Kanban in software engineering world

In software-engineering, Kanban(signal-card in Japanese) is often visualized by the image of the card-board: a board of the processing-work. A “card” represents a work that need to be done, and there are many card to put on the “queue”, that’s the development process

To make things simple, we can think about a simple queue: units of work are input in one end, through many steps of the process, and the results yield from the other. But the pulling process must follow three main principles:

  1. At a time, there should be a limited amount of work in the system(restricted by maximum Work-in-progress, called WIP)
  2. If the max WIP is reached, the additional work must wait until one of the processing works complete. Then it can be pulled in the system to process. This fact make Kanban a pull system (the people take the tasks to process when they are ready), not a push system (the tasks are pushed in whether people are ready or not)
  3. The process and its policy must be visualized. This requirement is often be made  by a card-board.


If you need a Kanban-visualized story, there’s a very interesting one here: One day in the land of Kanban.

How effective is Kanban?

Kanban is merely a tool. It help visualizing the process, so that we can improve it. By controlling the WIP, the team identify the bottle neck, the characteristics of the work flow; therefore they can make appropriate regulations. It leads to Kaizen - continuous improvement, another philosophy of Japanese industry.

But wait, you are not here to read theory, right? Well, there’s some good reasons to apply Kanban. As a tool, Kanban fits in any kind of process: you may combine it with Scrum, or whatever process of your organization. In many situations, the effective-tuning mechanics of Kanban leads to Agile.

Putting aside lots of successful stories outside of software development, there are also several stories in our field right now. Most of them are positive, though. Pawel Brodzinski found it make his team improve unconsciously. Not working in a team? There’s Kanban for individual.

The summarization of Kanban principles [1]

  1. Limit Work-in-progress (WIP)
  2. Pull value through
  3. Make it visible (visual control)
  4. Increase throughput
  5. Fixed Kanban backlog
  6. Quality is embedded in

Resources:
[1] Kanban for software engineering
[2] http://www.personalkanban.com
[3] Convert a Scrum team to Kanban
[4] Lean software engineering
[5] Why Kanban
[6] Kanban 101


Flock vs. Rockmelt – It’s a new age for Social Browser?

Flock & Rockmelt

Flock & Rockmelt

**Vietnamese: trong bai viet nay, toi gioi thieu van tat ve 2 trinh duyet web co tich hop tinh nang mang xa hoi hien nay.**

They are two so-called brand new browsers which change the user-experience toward social-perspective. I have prepared some materials to present about them, but it seems I can’t for now, so just experience it yourselves. Maybe that will be even better!

Flock:

Flock was first released in 2005, based on Mozilla engine (like Firefox). Then it’s ported to chromium platform. Flock support several social platform, include Facebook, Twitters… You must register a Flock account to use its social features.

Experience: Very simple and user-friendly. I am surprised when I use it the first time. Nice concept & good design, in short.

Flock browser

Flock browser

Rockmelt:

In 2010, Rockmelt was born on Chromium platform. Later than 5 years, but it has a better interface compared to Flock(color combination & notification system are much better). When first saw it, I must says “wow”. The bad side is that it requires you have a facebook account to start, and you must give Rockmelt nearly full control of that account. And the long time it took to start may count, too.

Rockmelt browser

Here’s a short comparison list of these two browsers (maybe a bit out-dated).

Thinking about the keyboard

** Suy nghĩ linh tinh về bàn phím máy tính **

Circle Keyboard

** Bài viết trình bày một cách sơ lược về lịch sử  của bàn phím máy tính, đồng thời giới thiệu các loại bàn phím thông dụng hiện nay**

While writing this line, I’m very irritated by the fact that my new Acer’s laptop keyboard is too suck. The keyboard is small, constructed by strange placement (at least for a long time HP-user like me):

  1. The arrow buttons is VERY small and hard to stroke
  2. The numpad is BIG but I nearly never use them.
  3. Re-placement of End/Home/Delete button, compared to the HP.

Yeah, I know this comparison is unfair, but what’s the heck that every laptop manufacturer needs re-inventing the keyboard design? Do they know that every time a user switch to a new brand laptop, he need to learn using the keyboard again?

In short, what’s wrong with the IBM keyboard model, which all of us already getting familiar to?

With that idea in mind, I scrawl the web a little to see what had happened with the keyboard through history. And what I found shock me a bit: the designs of computer keyboard do varies greatly, along with the time as well as their functions.

The very first keyboard of the world is invented by Christopher Sholes and Amos Densmore in 1875. It’s often called the QWERTY keyboard, due to the fact that those letters are the top-left buttons of this kind. Why didn’t they make , says, an ABC keyboard instead? It’s about typing speed. At that time, the typing machine is not as good as ours today, so if the user types too fast, the function will break and results in bad printed-paper. Hence the keyboard is made, with difficult combination of letters, to make people type more SLOWER. Kind of strange.

Coming for today, the QWERTY is still the most common and we all learn to type on this thing, though the problem of printers no longer exists. Have you had bad time learning to type fast on the slowing-keyboard? Well, now at least you know you need to blame whom. ;)

But wait, as I said, there’s a lot of other kinds of keyboard. Here they go:

1. The ergonomic keyboard

Ergonomic Keyboard

Coming from the fact that the slow-down keyboard is no longer fit user needs, the ergonomic keyboard was born. Its purpose is to make typing easier for human, lessen moving actions when typing, comfort our hands… Such many priority compared  its ancestor, but it still can’t get the market. Why? Maybe because people don’t want to change old habits, and even forget why they adopt that habit in the first place. ;)

2. Portable keyboard

Portable keyboard

Not about different keyboard layout, but this kind of keyboard is interesting in its mobility. You can fold, wrap and take it everywhere! They use USB port, radio wave, or even light interceptor. I think its a good replacement for my laptop.

3. Mobile device keyboard

A new era of mobile device has just begun. Along with thousands of phone, PDA and tablet has been sold, there are also hundreds kinds of keyboard layout. Not mentioning the minor variations, I have seen:

Standard keypad: nothing much to say, we are all familiar with it.

Standard keyboard

Standard keyboard

2. QWERTY-like keypad: This kind looks just like a standard computer keyboard. A typical representative of this model is famous Black Berry. With the mini-keyboard at hand, the cell phone is more powerful, but its user also had a hard time to navigate through the tiny buttons. The needs to have a different type of interface, which ease the pain of mobile users gave birth to a masterpiece of technology world, the iPhone, and then iPad and other tablets.

QWERTY-keyboard of mobile device

QWERTY-keyboard of mobile device

Blackberry keypad

Blackberry keypad

Touch and feel – and still, the virtual keyboard

The massive success of iPhone and iPad has become a shock through out the world. They change the way we think about a PDA: touch & feels. Now, no more poor buttons, just manipulate it with your own fingers very naturally. With iPhone & iPad, Steve Jobs and Apple has changed the game and take a strong hit in improving user experience.

So now, what about our keyboards? Not all the functions of an advanced mobile device can be achieved without some way of typing letters. We need to type emails, enter URL for browsing the internet. And yes, manufacturers found a very interesting way to do: the virtual keyboard.

When you hit any textbox in an app on iPad, a virtual keyboard automatically appears. The things I like about it is that it’s not like a normal minimized keyboard. Actually, it’s a simple version which only have BIG button of letter characters, not number. And there’s a switch button that change this keyboard to a simple version of number characters.

Virtual keyboard of the iPad

Virtual keyboard of the iPad

Up to this time, I have come through several “design patterns” of the Keyboard. Well, it may not mean that much, but as I see, that’s a gradual improvement process overtime. Our life nowadays is built up day by day by these process.

Cảm nghĩ về Hịch tướng sĩ

Ta và các ngươi sinh phải thời loạn lạc, lớn gặp buổi gian nan

Thời của Trần Hưng Đạo là lúc “ngó thấy sứ giặc đi lại nghênh ngang ngoài đường”, lúc nền độc lập của nước nhà bị đe dọa nghiêm trọng. Vua tôi nhà Trần một mặt phải tăng cường củng cố nội trị, mặt khác lại phải đối phó với dã tâm xâm lược của đế quốc Mông Nguyên hùng mạnh. Khi mà vó ngựa của kị binh Mông Cổ mang khói lửa chiến tranh tung hoành khắp châu Âu, châu Á; khi mà cả liên quân Nga-Áo lẫn đất nước Trung Hoa rộng lớn đã bị khuất phục, ai có thể nói được đất nước hình chữ S nhỏ bé sẽ không chịu cùng số phận?

Vậy mà người Việt Nam thời ấy, họ lại làm được điều không thể.

Vì người Việt Nam thời ấy biết lo, biết nhục. Nhục cho quốc thể bị ngoại bang lăng mạ, lo cho số phận gia đình, đất nước khi giặc dữ xâm lăng. Họ đồng lòng gạt bỏ những thú vui, lợi ích cá nhân, vì “nếu có giặc Mông Thát tràn sang, thì cựa gà trống không thể đâm thủng áo giáp giặc”; họ gạt bỏ những mâu thuẫn và nghi kị nội bộ (Vua Trần và Trần Quốc Tuấn), cùng dồn sức “huấn luyện quân sĩ, tập dượt cung tên, khiến cho nhà nhà đều là Bàng Mông, người người đều là Hậu Nghệ”.

Vậy còn bây giờ thì thế nào?

“Người Nhật là kiên cường lắm, dù cho có bị thiên tai động đất cũng sẽ vươn lên mạnh mẽ. Còn người Việt Nam mình, hễ hơi một tí là hoảng loạn, chạy giẫm đạp lẫn nhau”

“Ôi chào, Việt Nam mà, sao nói chuyện ý thức văn minh được”

“Ồ đường Hàn Quốc sạch sẽ, xa lộ thông thoáng đến thế, chẳng bù cho Việt Nam, đào lên lấp xuống quanh năm”

… Không biết mọi người nghĩ thế nào, nhưng tôi cảm thấy những điều trên chẳng khác gì giọng “người Việt là giống man di, cần được khai hóa” hàng trăm hàng nghìn năm trước của các đế quốc mang quân xâm lược.

Vậy mà, tất cả những câu nói ấy đều là của người Việt Nam… có đau lòng không, có nhục không?

…Nay các ngươi, thấy chủ nhục mà không biết lo, thấy nước nhục mà không biết thẹn… Hoặc lấy việc chọi gà làm vui đùa, hoặc lấy việc đánh bạc làm tiêu khiển; hoặc vui thú vườn ruộng, hoặc quyến luyến vợ con…

Nếu có giặc Mông Thát tràn sang, thì cựa gà trống không thể đâm thủng áo giáp giặc, mẹo cờ bạc không thể dùng làm mưu lược nhà binh,.. lúc bấy giờ ta và các ngươi cũng sẽ bị bắt, đau xót biết chừng nào?.. Chẳng những thân ta kiếp này chịu nhục, đến trăm năm sau tiếng nhơ khôn rửa, tiếng xấu còn lưu, mà cả đến gia thanh các ngươi cũng mang tiếng là tướng bại trận. Lúc bấy giờ có muốn vui vẻ phỏng có được không?

Zotero : A simple but useful organizing tool for documents

It’s kind of a little surprise to myself that I’m still able to be here and writing.

The first time I got my first computer, I have developed a bad habit: collecting hundreds of ebook that will never be read. Well, to me that’s not too big a problem. As time pass by, my “library” grows bigger and bigger, and the directory system no longer satisfies my needs. So I have done some research about how to organize documents.

Yeah, you may already heard about a bunch of document-organizing system. Some are tools to classify ebooks, file type conversion & collecting their information on the Internet, like Calibre. Some allows users taking note, organizing their notes by tags and category, then sharing with others (a brilliant example is Evernote). But there’s another kind of tool that people often forget, that’s the bookmarking system of every browser!

Zotero is somewhat the combination of all above things. It’s only an add-on for Firefox browser and the functions it provides, in my opinion, are not special. But its simplicity is the thing which matters:

Zotero - quick save web page

1. Quick save & take snapshot of any website you want: this things is quite good. If you are working on some kind of researching, very likely you must gather information little by little from arbitrary sources: blog posts, papers, articles… And even if you take the time to save the URL for reference, it’s a good chance that when you come back the resource doesn’t exist anymore. With this function, those problems disappear at ease (1).. Besides, you can take note with the saved documents and tagging them. Like a mini-evernote on your browser, right?

2. Share and browse the Zotero library:

Sharing to friends & the world

With a Zotero account, you can share yourdocuments with the remains of the world! Just joking, but you can do that. You can even browse the favorite documents of other Zotero users. Zotero Groups, which is formed by people that share common interests, or discipline. This maybe more useful than you can imagine: let say you have a group of friends, which are interested in photographing techniques. There are too many article on this field, good or bad, how can you tell? How can you have the time to read it all? Instead, you can browse the documents of friends who is master at photographing (or even they are not your friends); isn’t that better?

3. Sync among many computers: this maybe trivival, but to some it’s important. Like many people, I have 2 computers: one for home and one for work. This function helps me continue my research seamlessly, like a little Dropbox for documents.

Above are 3 main reason that I feels Zotero is useful. Up to now, the only thing that I complaint is some kind of javascript error when Firefox start. It’s trivial, though.

If you want to start with this great tool, you may want to take a look at here. This gives you some more details about what Zotero can provide.


(1) This is also exactly the things that Evernote Chrome/Firefox plugin provides. But to my experience, Zotero works just better and faster. Still, Zotero doesn’t require you to install a big app at client side to view the documents offline.