summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHui Lan <lanhui@zjnu.edu.cn>2020-03-18 18:20:36 +0800
committerHui Lan <lanhui@zjnu.edu.cn>2020-03-18 18:20:36 +0800
commitb81f0663aa044958def4b022811dcf680444b5d9 (patch)
tree2d5dc9754861dc6c38db6524472dc0f179eca81c
parent04128d6ccf1d176c81106c0f14d3930941f14910 (diff)
DialogOnSoftwareProjectManagement.rst: lecture notes on 9 March 2020..
-rw-r--r--DialogOnSoftwareProjectManagement.rst850
1 files changed, 850 insertions, 0 deletions
diff --git a/DialogOnSoftwareProjectManagement.rst b/DialogOnSoftwareProjectManagement.rst
index f067190..0051b19 100644
--- a/DialogOnSoftwareProjectManagement.rst
+++ b/DialogOnSoftwareProjectManagement.rst
@@ -16,6 +16,856 @@ Preface
This book contains a series of special lecture notes in a dialog form on software project management during the Great Lockdown period due to the outbreak of 2019 novel coronavirus.
+Monday, 9 March 2020
+====================
+
+
+Morning section
+----------------
+
+*Sustained efforts - How to earn 1b 10 years later - Software licenses - Copyleft - Non-copyleft - Commercial - Non-commercial - Proprietary - Non-proprietary - Quiz*
+
+
+蓝老师(1348141770) ===================================================
+
+蓝老师(1348141770) Morning guys. Could you type your student number?
+
+2020-03-09 10:36:06 ibrahim(1525200991) 201732120159
+
+2020-03-09 10:36:06 201732120167 Clive妈妈(3321692247) 201732120167
+
+2020-03-09 10:36:07 软英171周仙龙(1748153603) 201732120130
+
+2020-03-09 10:36:08 201732120141--AHAMED SABUJ妈妈(2686217157) 201732120141
+
+2020-03-09 10:36:08 201732120168_Golden(2984538488) 201732120168
+
+2020-03-09 10:36:08 201732120127 张滨(2350711965) 201732120127
+
+蓝老师(1348141770) It is useful for me.
+
+2020-03-09 10:36:11 201732120134_Michelle(3304952232) 201732120134
+
+2020-03-09 10:36:11 201732120165 MJH MOHAMED(2751595398) 201732120165
+
+2020-03-09 10:36:15 软英171高增(1520653544) 201732120117
+
+2020-03-09 10:36:16 李佳兴(421281726) 201732120118
+
+2020-03-09 10:36:16 201632120150-Ashly(1661411131) 201632120150
+
+2020-03-09 10:36:16 软英171 吕伊豪(745291576) 201732120120
+
+2020-03-09 10:36:17 nainezz(2407048879) 201732120173
+
+2020-03-09 10:36:17 叶涵涛(2289316051) 201732120125
+
+2020-03-09 10:36:24 201732120170-Tamene Robel妈妈(3287975278) 201732120170
+
+2020-03-09 10:36:29 Saeed : 201732120146(446571011) 201732120146
+
+2020-03-09 10:36:49 201732120157 hossain arif<charif19282@qq.com> 201732120157
+
+蓝老师(1348141770) Let's wait 4 minutes for more people to join in.
+
+2020-03-09 10:37:06 Saeed : 201732120146(446571011) ok
+
+2020-03-09 10:37:12 软英171包振丰(984456043) 201732120111
+
+2020-03-09 10:37:19 应宇腾(1356633192) 20732120126
+
+2020-03-09 10:37:24 软英171陈伟超(937202326) 201732120113
+
+2020-03-09 10:37:33 陈真赐(1312502742) 201732120114
+
+2020-03-09 10:37:58 软英171郑洪宇(1633787262) 201732120128
+
+2020-03-09 10:37:59 系统消息(10000) 201732120165 MJH MOHAMED邀请201732120165_Mohamed_Jifry_Hazzaly加入了本群。
+
+2020-03-09 10:38:14 谢佳聪(1249923715) 201732120123
+
+2020-03-09 10:38:17 郑晓钰(280768265) 201732120110
+
+2020-03-09 10:38:22 软英171 郑可富(1924773187) 201732120129
+
+2020-03-09 10:39:01 ALBOROM WARD-201732120143家长(3279308836) 201732120143
+
+2020-03-09 10:39:11 201732120135 玛莎(3534763826) 201732120135
+
+2020-03-09 10:39:25 软英171 陆博业(2794513466) 201732120119
+
+2020-03-09 10:40:06 SPM软件项目管理-蓝老师(1348141770) [Announcement] We will have a pop-up quiz, near the end of today's lecture.
+
+2020-03-09 10:40:15 Tarmom 201732120166(2104297320) 201732120166
+
+2020-03-09 10:40:35 1n(2835813510) 201732120102
+
+2020-03-09 10:40:36 SPM软件项目管理-蓝老师(1348141770) Make sure you can login LRR.
+
+2020-03-09 10:40:54 Saeed : 201732120146(446571011) yes
+
+2020-03-09 10:40:58 SPM软件项目管理-蓝老师(1348141770) There is a recent story about LRR.
+
+2020-03-09 10:40:58 软英171戴泽荣(975336710) 201732120115
+
+2020-03-09 10:41:00 Tarmom 201732120166(2104297320) laoshi I can't
+
+2020-03-09 10:41:10 Saeed : 201732120146(446571011) try now
+
+2020-03-09 10:41:23 Tarmom 201732120166(2104297320) ok
+
+2020-03-09 10:41:33 Npl.(593635848) 201732120121
+
+蓝老师(1348141770) (Tarmom, you should first sign up.)
+
+蓝老师(1348141770) Ashly updated LRR so that a CRITICAL bug is gone.
+
+蓝老师(1348141770) I think most of you guys encountered that bug before.
+
+蓝老师(1348141770) That is, you were unable to sign in immediately after sign up.
+
+2020-03-09 10:42:46 LUL GUOBA RUOT (2217724540) 201632120161
+
+蓝老师(1348141770) This bug makes the software essentially not usable.
+
+蓝老师(1348141770) A really bad bug.
+
+蓝老师(1348141770) You had to recover your password by email (which did not always work).
+
+2020-03-09 10:43:37 Samantha 201632120140(2459455104) 201632120140
+
+蓝老师(1348141770) It is absurd that we require people to recover their password immediately after they sign up.
+
+蓝老师(1348141770) Ashly fixed that.
+
+蓝老师(1348141770) Suddenly the software looks much better.
+
+蓝老师(1348141770) Where did Ashy learn PHP?
+
+2020-03-09 10:45:27 201632120150-Ashly(1661411131) Personal projects Laoshi
+
+蓝老师(1348141770) There are a lot of existing talents. A manager's job is to recognize them and cultivate them.
+
+蓝老师(1348141770) That is a Great Fix.
+
+蓝老师(1348141770) But that fix introduced a new problem.
+
+蓝老师(1348141770) The old users were no longer able to login, which is almost equally bad.
+
+蓝老师(1348141770) This is an example of failed regression test.
+
+蓝老师(1348141770) The new fix breaks old, functional work.
+
+蓝老师(1348141770) That is quite normal.
+
+蓝老师(1348141770) The old, legitimate users saw a Blank Page after they logged in, leaving them totally perplexed.
+
+蓝老师(1348141770) How to solve that?
+
+蓝老师(1348141770) It turns out the fix is really simple.
+
+蓝老师(1348141770) [图片]
+
+::
+
+ // verify the hashed password and unhashed password
+ if(password_verify($password, $row["Password"]) or ($password = $row["Password"])){
+
+
+蓝老师(1348141770) Just relax the conditional test by adding an OR condition: ($password = $row["Password"]).
+
+蓝老师(1348141770) The reason is that the old password is not hashed (encrypted).
+
+蓝老师(1348141770) We must hash people's password by law.
+
+蓝老师(1348141770) Hash is like a one-way function.
+
+蓝老师(1348141770) Hash('secrete') gives you a 64 obfuscating characters.
+
+蓝老师(1348141770) But you cannot recover 'secrete' even if you know these 64 characters.
+
+蓝老师(1348141770) That is my understanding of one-way.
+
+蓝老师(1348141770) This small fix solved a Big problem.
+
+蓝老师(1348141770) That is a great start.
+
+蓝老师(1348141770) I can even say Ashly is done on the course project.
+
+蓝老师(1348141770) However, I still hope he could do a bit more.
+
+2020-03-09 10:53:08 Tarmom 201732120166(2104297320) laoshi still I can't sign up on LRR it's not working.
+
+蓝老师(1348141770) (Fine. I will create one for you during the break.)
+
+2020-03-09 10:53:46 Tarmom 201732120166(2104297320) thank you
+
+蓝老师(1348141770) Returning to storing password in LRR, can we hash all existing, old passwords so that we can remove the additional OR condition: ($password = $row["Password"])?
+
+蓝老师(1348141770) Simpler code.
+
+蓝老师(1348141770) Is it worth doing that?
+
+蓝老师(1348141770) We have more than 200 accounts now in LRR.
+
+蓝老师(1348141770) Let us take a 5-minute break.
+
+2020-03-09 10:55:31 Saeed : 201732120146(446571011) ok
+
+2020-03-09 10:57:17 Tarmom 201732120166(2104297320) ok
+
+2020-03-09 10:58:46 LUL GUOBA RUOT (2217724540) Me too I can’t login
+
+蓝老师(1348141770) ===================================================
+
+蓝老师(1348141770) That is interesting. You two guys could sign up again. I believe it should work now.
+
+蓝老师(1348141770) What have I learned from this improvement process?
+
+蓝老师(1348141770) Good software takes time.
+
+蓝老师(1348141770) Sustained efforts are required to build something that is really great so that people would pay to use it.
+
+蓝老师(1348141770) You need at least 10 years.
+
+蓝老师(1348141770) But after 10 years, you will be good, earning billions of dollars a year.
+
+蓝老师(1348141770) Here is an article I want to share with you.
+
+蓝老师(1348141770) https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/
+
+2020-03-09 11:05:51 Npl.(593635848) 很多人看不到这么远 一年就够呛的
+
+2020-03-09 11:06:18 Npl.(593635848) [表情]
+
+蓝老师(1348141770) Yes. That is true. That is why we have very few companies which have a yearly revenue of billions.
+
+蓝老师(1348141770) I doubt LRR could sustain such a long period.
+
+蓝老师(1348141770) Look at QQ, which started around 1998.
+
+蓝老师(1348141770) How many years have passed?
+
+蓝老师(1348141770) More than 20 years!
+
+蓝老师(1348141770) The current QQ is much better than the original QQ (which is a clone of OICQ).
+
+蓝老师(1348141770) I would say most people who have not taken this course don't realize that.
+
+蓝老师(1348141770) Software is hard. And hard things need time. As simple as that.
+
+蓝老师(1348141770) [图片]
+
+.. image:: lotus-note-user-pool.png
+ :height: 100
+ :alt: number of installations of the Lotus Notes over the years
+
+蓝老师(1348141770) User pool of Lotus Notes.
+
+蓝老师(1348141770) It hit 55 million users in 1999.
+
+蓝老师(1348141770) 55 million users means lots of money and great influence.
+
+蓝老师(1348141770) 12 years have passed since the author(s) wrote the first line of code.
+
+2020-03-09 11:11:47 ibrahim(1525200991) most people dream that thier software blow up like Facebook did
+
+蓝老师(1348141770) The problem of China software industry is exactly Lack of Time.
+
+蓝老师(1348141770) Desire of Success + Lack of Time = ?
+
+2020-03-09 11:13:06 Npl.(593635848) failure
+
+蓝老师(1348141770) [图片]
+
+蓝老师(1348141770) How much money has Oracle made?
+
+蓝老师(1348141770) Billions of dollars at least.
+
+2020-03-09 11:14:01 Npl.(593635848) [图片]
+
+蓝老师(1348141770) The Oracle database system was there in 1970's.
+
+2020-03-09 11:14:02 Npl.(593635848) 复利曲线
+
+蓝老师(1348141770) (Oh, really. That is a good observation.)
+
+蓝老师(1348141770) This gentleman, Joel Spolsky, the founder of Stack Overflow, is good at writing.
+
+蓝老师(1348141770) He is a very prolific author.
+
+蓝老师(1348141770) Produced more than 1000 blog posts over a period of 10 years.
+
+蓝老师(1348141770) I think you should read his "Top 10" posts.
+
+蓝老师(1348141770) Let's take a 5-minute break.
+
+2020-03-09 11:17:41 系统消息(10000) Npl.撤回了一条消息
+
+2020-03-09 11:22:01 Npl.(593635848) I’ve looked through several his books (his blogs sets, more currently), he thinks most programmers are not true programmer. And it would be good if these “fake programmers” been fired(filter out).[表情]
+
+2020-03-09 11:23:39 ALBOROM WARD-201732120143家长(3279308836) [表情]
+
+蓝老师(1348141770) Npl seems like a motivated learner. We need more self-driven learners.
+
+蓝老师(1348141770) ===================================================
+
+蓝老师(1348141770) Writing is Thinking. Writing is Communicating.
+
+蓝老师(1348141770) You must sharpen your writing skills before you graduate.
+
+蓝老师(1348141770) Programming is more like a liberal and arts subject.
+
+蓝老师(1348141770) Think about that.
+
+2020-03-09 11:26:26 Npl.(593635848) “Talking” with the computer
+
+蓝老师(1348141770) If you could earn 1 billion dollars 10 years later by focusing on developing one thing, and leading a very frugal life in these 10 years, would you do that?
+
+蓝老师(1348141770) I think many people will do that.
+
+蓝老师(1348141770) That is about 100,000,000 dollars per year.
+
+蓝老师(1348141770) However, since there is no success guarantee, many people would choose to be a less disciplined person.
+
+蓝老师(1348141770) We talked about software licenses last time.
+
+蓝老师(1348141770) One question.
+
+蓝老师(1348141770) What kind of free license would you use if your software is an online application, i.e., you do not send people installation packages?
+
+蓝老师(1348141770) Apache, GPL, or MIT?
+
+2020-03-09 11:30:46 ibrahim(1525200991) MIT
+
+蓝老师(1348141770) License for online application, things like Simple Note, One Note.
+
+蓝老师(1348141770) I think MIT is a good one. It is simple and permissive.
+
+2020-03-09 11:31:25 ibrahim(1525200991) or AGPL
+
+蓝老师(1348141770) I want to mention Affero GPL.
+
+蓝老师(1348141770) Exactly.
+
+蓝老师(1348141770) Affero GPL has an extra clause designed specifically for online applications.
+
+蓝老师(1348141770) Are GPL-like licenses MIT-compatible?
+
+蓝老师(1348141770) Or Are MIT-like licenses GPL-compatible?
+
+蓝老师(1348141770) GPL is a copyleft license, while MIT is a non-copyleft license.
+
+蓝老师(1348141770) What does "copyleft" mean?
+
+蓝老师(1348141770) Copyleft is an interesting word.
+
+2020-03-09 11:33:30 ibrahim(1525200991) your code can't be used by proprietary software
+
+蓝老师(1348141770) I don't know that before yesterday.
+
+2020-03-09 11:33:39 ibrahim(1525200991) I guess
+
+2020-03-09 11:34:05 Dean Majaya201732120164爷爷(3623840484) 201732120164
+
+蓝老师(1348141770) The exact meaning of copyleft is that all its derivative work under the copyleft license must be copyleft too.
+
+蓝老师(1348141770) MIT license does not require that.
+
+蓝老师(1348141770) If you use the code that is under the MIT license, you could apply a proprietary license to your software.
+
+蓝老师(1348141770) That is why we say MIT license is a permissive license.
+
+蓝老师(1348141770) The point of copyleft is ensuring that the subsequent (or derivative) work is also free.
+
+蓝老师(1348141770) However, the danger is that people would rather not use your code in the first place if they think they don't agree with this condition.
+
+蓝老师(1348141770) A rule of thumb is that if you do not care how your code is to be used, you could use either MIT or GPL or Apache.
+
+蓝老师(1348141770) If you do not wish proprietary software to use your code, use GPL-like licenses. They are more restrict on ensuring subsequent freedom.
+
+蓝老师(1348141770) Note the difference between proprietary and commercial.
+
+蓝老师(1348141770) They are not the same thing.
+
+蓝老师(1348141770) A commercial software can be non-proprietary.
+
+蓝老师(1348141770) A proprietary software can be non-commercial.
+
+蓝老师(1348141770) Proprietary emphasizes "Owner",
+
+蓝老师(1348141770) while commercial emphasizes "Money".
+
+蓝老师(1348141770) [Announcement]
+
+蓝老师(1348141770) "Decide areas for improvement" is due today.
+
+蓝老师(1348141770) You need to finish reading Chapter 2 by the end of this week.
+
+蓝老师(1348141770) Let's take a 5-minute break.
+
+2020-03-09 11:44:36 ALBOROM WARD-201732120143家长(3279308836) Laoshi how about course scheduler would you let me manage it as my course project?
+
+蓝老师(1348141770) ===================================================
+
+蓝老师(1348141770) My main concern is that there are tons of Course Scheduling applications out there.
+
+蓝老师(1348141770) Your efforts will be wasted on just producing yet-another Course Scheduling application.
+
+蓝老师(1348141770) Anyway, we could discuss that more after class.
+
+2020-03-09 11:51:24 ALBOROM WARD-201732120143家长(3279308836) ok laoshi
+
+蓝老师(1348141770) You need to finish reading Chapter 2 by the end of this week.
+
+蓝老师(1348141770) I could finish reading one chapter in one evening.
+
+蓝老师(1348141770) I don't know your reading speed.
+
+2020-03-09 11:52:23 KELVIN Chimtengo(3110702155) One week is enough.
+
+蓝老师(1348141770) You can use lots of aids that are available online, such as the Bing translator.
+
+2020-03-09 11:53:01 ALBOROM WARD-201732120143家长(3279308836) i can finish it in 3-5 hours
+
+2020-03-09 11:53:34 201732120151 Barkay sanoussi(3178573723) reading is not a big deal but understanding is ..
+
+2020-03-09 11:53:57 Saeed : 201732120146(446571011) yes
+
+蓝老师(1348141770) To understand it, repeat the reading process.
+
+蓝老师(1348141770) Repeat it at least three times.
+
+2020-03-09 11:54:26 ibrahim(1525200991) do you want us to just read it, or understand and highlight some points, if the later then that takes some time
+
+蓝老师(1348141770) I think the most important purpose of reading is understanding.
+
+2020-03-09 11:55:14 ALBOROM WARD-201732120143家长(3279308836) yeah that's why i said 3-5 hours including highliting and understanding
+
+蓝老师(1348141770) Otherwise, Microsoft Edge could read it for us.
+
+2020-03-09 11:55:27 Npl.(593635848) There is no reading speed, only understanding speed
+
+蓝老师(1348141770) I will post a new, longer reading: The Cathedral and the Bazaar.
+
+蓝老师(1348141770) http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html
+
+蓝老师(1348141770) It discusses 2 development modes.
+
+蓝老师(1348141770) You don't have to read all, only a few selected sections.
+
+2020-03-09 11:56:45 ALBOROM WARD-201732120143家长(3279308836) that would be better
+
+蓝老师(1348141770) I want to maximize the usefulness of this course while minimizing your workload.
+
+蓝老师(1348141770) I will post the required sections.
+
+蓝老师(1348141770) Quiz time.
+
+2020-03-09 11:58:36 ibrahim(1525200991) wish most teacher follow your theme
+
+蓝老师(1348141770)
+
+::
+
+ [True/False] Free software means zero-cost software.
+ [True/False] Zero-cost software cannot be proprietary.
+ [True/False] If the source code is visible, then the software is open source.
+ [True/False] Open source software cannot be used for commercial purposes.
+
+蓝老师(1348141770) You select two of them to answer.
+
+蓝老师(1348141770) Submit it at LRR (under Quiz 3).
+
+蓝老师(1348141770) Before 12:15pm.
+
+蓝老师(1348141770) Bye.
+
+2020-03-09 11:59:39 ibrahim(1525200991) what if i answer all of them ?
+
+2020-03-09 11:59:46 nainezz(2407048879) Bye
+
+2020-03-09 11:59:53 ABDALMUHAYMEN 201730210234(1071107298) Bye
+
+2020-03-09 11:59:59 Saeed : 201732120146(446571011) ok
+
+蓝老师(1348141770) Please just answer two questions.
+
+2020-03-09 12:00:18 1n(2835813510) only true or false or explanation also
+
+2020-03-09 12:00:21 KELVIN Chimtengo(3110702155) We should post answers here? Or ?
+
+蓝老师(1348141770) The two which you feel most confident about.
+
+蓝老师(1348141770) Just True or False. No explanation.
+
+2020-03-09 12:00:43 1n(2835813510) ok
+
+2020-03-09 12:00:43 ALBOROM WARD-201732120143家长(3279308836) Submit it at LRR (under Quiz 3).
+
+2020-03-09 12:01:40 KELVIN Chimtengo(3110702155) Okay cool
+
+2020-03-09 12:01:56 KELVIN Chimtengo(3110702155) 201632120149
+
+2020-03-09 12:02:51 201732120170-Tamene Robel妈妈(3287975278) LRR not working
+
+
+
+Afternoon Section
+-----------------
+
+*Project management tools - Kanboard - Swim lanes - Rhythm of releases - Sustained efforts - Joel Spolsky - Software licenses*
+
+Lan Hui(1348141770) ===================================================
+
+Lan Hui(1348141770) Good afternoon.
+
+2020-03-09 15:41:41 Guedalia Youma (3014432207) Good afternoon professor
+
+Lan Hui(1348141770) Could you type your student number? It is useful for me.
+
+2020-03-09 15:41:59 NGOUNOU家长(438499151) good afternoon laoshi
+
+Lan Hui(1348141770) I am going to get some hot water.
+
+2020-03-09 15:42:05 Guedalia Youma (3014432207) 201925800221
+
+Lan Hui(1348141770) Let's wait a few minutes for more people to join in.
+
+2020-03-09 15:42:26 NGOUNOU家长(438499151) 201925800180
+
+2020-03-09 15:42:36 Marie(2928285277) 201925800173
+
+2020-03-09 15:42:36 NGOUNOU家长(438499151) OK
+
+Lan Hui(1348141770) Where were we last time?
+
+Lan Hui(1348141770) I've talked about an important management tip: Don't THROW AWAY YOUR CODE.
+
+Lan Hui(1348141770) This tip was given by Joel Spolsky, founder of Stack Overflow.
+
+Lan Hui(1348141770) Also Trello, a $425m product for project management.
+
+2020-03-09 15:45:29 Kumson爸爸(3157209053) 201925800166
+
+Lan Hui(1348141770) I was thinking about using Trello.
+
+Lan Hui(1348141770) There are many project management tools out there.
+
+Lan Hui(1348141770) Trello, JIRA, Microsoft Project, etc.
+
+Lan Hui(1348141770) I should choose a simpler one.
+
+Lan Hui(1348141770) So I choose Kanboard.
+
+Lan Hui(1348141770) https://kanboard.org/
+
+Lan Hui(1348141770) Have you checked that?
+
+Lan Hui(1348141770) I can show you in a moment.
+
+Lan Hui(1348141770) [图片]
+
+.. image:: TIM20200316180248.png
+ :height: 100
+ :alt: Kanboard for undergraduate thesis supervision
+
+Lan Hui(1348141770) You can see many cards, in different colors and in different swim lanes.
+
+Lan Hui(1348141770) We've got 4 swim lanes, representing different project stages.
+
+Lan Hui(1348141770) The leftmost is **TODO**.
+
+Lan Hui(1348141770) Followed by **Ready**.
+
+Lan Hui(1348141770) Followed by **In Progress**.
+
+Lan Hui(1348141770) Followed by **Done**.
+
+Lan Hui(1348141770) To avoid multi-tasking, we should minimize the number of cards (tasks) in the **In Progress** swim lane,
+
+Lan Hui(1348141770) which seems to be not the case in my Kanboard.
+
+Lan Hui(1348141770) That is why I feel exhausted.
+
+2020-03-09 15:51:19 Nicole Rutagengwa (1403962700) 201935800169
+
+Lan Hui(1348141770) We can move the cards (tasks) around.
+
+Lan Hui(1348141770) I plan to ask you to use Kanboard (in our course).
+
+Lan Hui(1348141770) I will create accounts for you within one week.
+
+Lan Hui(1348141770) I've also talked about rhythm of releases and the importance of having and keeping that rhythm.
+
+Lan Hui(1348141770) In the beginning, we should release early and often.
+
+Lan Hui(1348141770) But when our product becomes more mature, releasing too often is a bit annoying to users (once in a half year is good enough).
+
+Lan Hui(1348141770) Sometimes people just do not need that many new features if the product has already satisfied their daily use.
+
+Lan Hui(1348141770) [Announcement] We will have a pop-up quiz, near the end of today's lecture.
+
+Lan Hui(1348141770) Make sure you can login LRR (Lab Report Repository).
+
+Lan Hui(1348141770) There is a recent update for LRR.
+
+Lan Hui(1348141770) Last lecture I mentioned a CRITICAL (even BLOCKER) bug in LRR.
+
+Lan Hui(1348141770) A new user could not login immediately after sign up.
+
+Lan Hui(1348141770) That bug was fixed by Ashly, an undergraduate student in the morning section.
+
+Lan Hui(1348141770) Suddenly, the software looks much better.
+
+2020-03-09 16:00:21 Marie(2928285277) So do we need to sign up again
+
+Lan Hui(1348141770) You don't have to recover your password by email, which does not always work, and is quite absurd.
+
+Lan Hui(1348141770) (No.)
+
+Lan Hui(1348141770) But that fix introduced a new problem.
+
+Lan Hui(1348141770) The old, legitimate users are no longer able to login, which is equally bad as being unable to login immediately after sign up.
+
+Lan Hui(1348141770) The fix failed that Regression Test.
+
+Lan Hui(1348141770) Failing a regression test is quite normal.
+
+Lan Hui(1348141770) Two old users reported that they saw a Blank Page after they logged in, making them totally surprised.
+
+Lan Hui(1348141770) Let's take a 5-minute break.
+
+2020-03-09 16:07:43 Guedalia Youma (3014432207) Alright
+
+Lan Hui(1348141770) Where is Pacifique?
+
+2020-03-09 16:12:59 系统消息(10000) Twizere Pacifique 唐平撤回了一条消息
+
+2020-03-09 16:13:12 Twizere Pacifique 唐平<pacitwizere@hotmail.com> 201925800174
+
+Lan Hui(1348141770) Thanks, Pacifique.
+
+Lan Hui(1348141770) ===================================================
+
+Lan Hui(1348141770) How to solve the newly introduced "Blank Page" problem?
+
+Lan Hui(1348141770) It turns out the solution is really simple.
+
+Lan Hui(1348141770) Just tweak a conditional test a bit.
+
+Lan Hui(1348141770) [图片]
+
+::
+
+ // verify the hashed password and unhashed password
+ if(password_verify($password, $row["Password"]) or ($password = $row["Password"])){
+
+Lan Hui(1348141770) Just relax the conditional test by adding an OR condition: ($password = $row["Password"]).
+
+Lan Hui(1348141770) The variable $password stores the password you entered through the LRR web form.
+
+Lan Hui(1348141770) $row["Password"] contains the pre-stored password which you entered during sign up.
+
+Lan Hui(1348141770) Of course, they have to be equal before LRR would allow you in.
+
+Lan Hui(1348141770) Then, you may ask, what is the point of having "password_verify($password, $row["Password"])"?
+
+Lan Hui(1348141770) password_verify is a built-in function in PHP.
+
+Lan Hui(1348141770) Well.
+
+Lan Hui(1348141770) This function takes password stored in a human-readable form (e.g., 'secret'), hashes it and compares the hash result with the pre-stored password $row["Password"], which is also stored in a hash form.
+
+Lan Hui(1348141770) Why bother with hash?
+
+Lan Hui(1348141770) The point is that we, the software developers, do not want, or are not allowed to store users' password in a plain form.
+
+Lan Hui(1348141770) By law we should not do that.
+
+Lan Hui(1348141770) We should never, ever store users' password in a non-encrypted form because of risk of leak and the consequent liability.
+
+Lan Hui(1348141770) Yahoo made that mistake a few years ago.
+
+Lan Hui(1348141770) We must hash people's password by law.
+
+Lan Hui(1348141770) For example, if my password is 'secret', then its hashed form, '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b', should be stored in our application.
+
+Lan Hui(1348141770) Holy cow. Who can understand '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b' even if he gets that?
+
+Lan Hui(1348141770) Here is a hash calculator that you can play with.
+
+Lan Hui(1348141770) https://www.tools4noobs.com/online_tools/hash/
+
+Lan Hui(1348141770) A great attribute of hash function is that it is a one-way function.
+
+Lan Hui(1348141770) You cannot recover 'secret' from '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'.
+
+Lan Hui(1348141770) Therefore, even when '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b' is now in a bad guy's hands, it does not matter that much, since it will take him hundreds of thousands of years to get the 'secret'.
+
+Lan Hui(1348141770) A wise bad man won't do that.
+
+Lan Hui(1348141770) The additional OR conditional test is for backward compatibility.
+
+Lan Hui(1348141770) A bit awkward.
+
+Lan Hui(1348141770) Perhaps we can get rid of that conditional test in the future, to make the code simpler.
+
+Lan Hui(1348141770) To do so, we need to hash all passwords that are stored in plain form.
+
+Lan Hui(1348141770) Is it worth doing that?
+
+Lan Hui(1348141770) We have more than 200 accounts now in LRR.
+
+Lan Hui(1348141770) I think there is a programmable way to do that.
+
+Lan Hui(1348141770) Anyway, that is future work.
+
+Lan Hui(1348141770) Let us take a 5-minute break.
+
+Lan Hui(1348141770) ===================================================
+
+Lan Hui(1348141770) What have I learned from this improvement process?
+
+Lan Hui(1348141770) Good software takes time.
+
+Lan Hui(1348141770) LRR started in Fall 2018 as a graduate course project: http://lanlab.org/course/2018f/se/homepage.html
+
+Lan Hui(1348141770) One year and a half have passed.
+
+Lan Hui(1348141770) Sustained efforts are required to build something that is really great so that people would pay to use it.
+
+Lan Hui(1348141770) Sustained efforts require great focus and self-discipline.
+
+Lan Hui(1348141770) You need at least 10 years of sustained efforts.
+
+Lan Hui(1348141770) That is actually a rule of thumb in almost all areas of business.
+
+Lan Hui(1348141770) But after 10 years, you will be good, earning billions of dollars a year.
+
+Lan Hui(1348141770) Breathtakingly worthwhile.
+
+Lan Hui(1348141770) That is about 100,000,000 dollars per year, for the previous ten years.
+
+Lan Hui(1348141770) However, you need to lead a very frugal life in these 10 years with no guarantee of success.
+
+Lan Hui(1348141770) Below is an article I want to share with you.
+
+Lan Hui(1348141770) https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/
+
+Lan Hui(1348141770) “The Oracle RDBMS has been around for 22 years now. Windows NT development started 12 years ago. Microsoft Word is positively long in the tooth; I remember seeing Word 1.0 for DOS in high school (that dates me, doesn’t it? It was 1983.)”
+
+Lan Hui(1348141770) Look at QQ too - it started around 1998.
+
+Lan Hui(1348141770) How many years have passed?
+
+Lan Hui(1348141770) More than 20 years!
+
+Lan Hui(1348141770) The current QQ is much better than the original QQ (which is a clone of OICQ).
+
+Lan Hui(1348141770) I would say most people (who have not taken this course) don't know GOOD SOFTWARE TEAKS 10 YEARS.
+
+Lan Hui(1348141770) Want to be a billionaire overnight? No way.
+
+Lan Hui(1348141770) Except Facebook.
+
+Lan Hui(1348141770) Software is hard. And hard things need time to polish. As simple as that.
+
+Lan Hui(1348141770) [图片]
+
+.. image:: lotus-note-user-pool.png
+ :height: 100
+ :alt: number of installations of the Lotus Notes over the years
+
+
+Lan Hui(1348141770) User pool of Lotus Notes.
+
+Lan Hui(1348141770) It hit 55 million users in 1999.
+
+Lan Hui(1348141770) 55 million users means lots of money and a huge impact.
+
+Lan Hui(1348141770) 12 years have passed since 1.0.
+
+Lan Hui(1348141770) Yet people have already spent 5 years to arrive at 1.0.
+
+Lan Hui(1348141770) It is important to keep a healthy body as a programmer.
+
+Lan Hui(1348141770) It takes very long time to be successful and you should enjoy that day when it arrives.
+
+Lan Hui(1348141770) The problem of China software industry is exactly Lack of Time.
+
+Lan Hui(1348141770) Desire of Success + Lack of Time = ???
+
+Lan Hui(1348141770) Crap.
+
+Lan Hui(1348141770) How much money has Oracle made?
+
+Lan Hui(1348141770) Billions of dollars at least.
+
+Lan Hui(1348141770) The Oracle database system was there in 1970's.
+
+Lan Hui(1348141770) Joel Spolsky, the founder of Stack Overflow, is a prolific author good at writing.
+
+Lan Hui(1348141770) He has produced more than 1000 blog posts over a period of 10 years.
+
+Lan Hui(1348141770) He must have been thinking and thinking.
+
+Lan Hui(1348141770) Writing is Thinking. Writing is Communicating.
+
+Lan Hui(1348141770) I think you should read his "Top 10" posts.
+
+Lan Hui(1348141770) Let's take a 5-minute break.
+
+Lan Hui(1348141770) After that we will talk about licenses.
+
+2020-03-09 17:01:19 Marie(2928285277) Okay sir
+
+Lan Hui(1348141770) ===================================================
+
+Lan Hui(1348141770) One question.
+
+Lan Hui(1348141770) What kind of free software license would you use if your software is an online application, i.e., you do not send people installation packages?
+
+Lan Hui(1348141770) License for online applications, such as Simple Note, One Note.
+
+Lan Hui(1348141770) Affero GPL.
+
+Lan Hui(1348141770) Affero GPL has an extra clause designed specifically for online applications.
+
+Lan Hui(1348141770) I think MIT is good too. It is simple and permissive.
+
+Lan Hui(1348141770) In contrast, GPL is a copyleft license, less permissive.
+
+Lan Hui(1348141770) Copyleft is an interesting word.
+
+Lan Hui(1348141770) The exact meaning of copyleft is that it requires all its derivative work to be copyleft too.
+
+Lan Hui(1348141770) Some people think this is a way of defending freedom.
+
+Lan Hui(1348141770) ===================================================
+
+Lan Hui(1348141770) Quiz time.
+
+Lan Hui(1348141770) This is limited-time quiz which you have to submit before 5:35pm today to LRR.
+
+Lan Hui(1348141770)
+
+::
+
+ [True/False] Free software means zero-cost software.
+ [True/False] Zero-cost software cannot be proprietary.
+ [True/False] If the source code is visible, then the software is open source.
+ [True/False] Open source software cannot be used for commercial purposes.
+
+Lan Hui(1348141770) Select two and only two to answer.
+
+2020-03-09 17:10:23 Marie(2928285277) I still can’t login to LRR
+
+2020-03-09 17:10:26 Guedalia Youma (3014432207) Where should we submit it ? By email ?
+
+Lan Hui(1348141770) Bye.
+
+
Friday, 13 March 2020