diff options
author | Hui Lan <lanhui@zjnu.edu.cn> | 2020-03-18 18:20:36 +0800 |
---|---|---|
committer | Hui Lan <lanhui@zjnu.edu.cn> | 2020-03-18 18:20:36 +0800 |
commit | b81f0663aa044958def4b022811dcf680444b5d9 (patch) | |
tree | 2d5dc9754861dc6c38db6524472dc0f179eca81c | |
parent | 04128d6ccf1d176c81106c0f14d3930941f14910 (diff) |
DialogOnSoftwareProjectManagement.rst: lecture notes on 9 March 2020..
-rw-r--r-- | DialogOnSoftwareProjectManagement.rst | 850 |
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 |