Recent efforts

Here are our recent efforts, you are welcome to be part of this open process towards future learning, which we think should be self-learning for everyone! In a way, the current discussions there help summarize what we have learned in Open Source Learning. And we believe it will soon turn into concrete implementation, which will be open source as well.

Posted in Uncategorized | Leave a comment

Why people don’t work hard with good social welfare

People often say that countries with good social welfare lose the drive for economy because people don’t have incentive to work hard anymore. The inherent assumption is people are naturally lazy so they don’t work if they don’t have to.

However, I always think good social welfare is probably not the cause. The cause might be the outdated education system. Because if you look at the kids, they work their asses off trying to be good at something although they are in very good social welfare–their parents take care of them. However, the education system, which is designed for the industrial age to serve mass production, take children’s curiosity away, together with their ability to learn. You need that for mass production because you need a lot of people to work on the assembly line to be part of the machine.

But times have already changed. We are already deep in an information age. And a lot of developed countries already have the luxury to provide good social welfare for its people. But their education system are still locked in the industrial age. They need a new kind of education, which lifts the scaffold that the current education system puts on people.

The current education system is like ancient Chinese footbinding bandages. It should be thrown away a long time ago. Let children learn and grow themselves. Keep their curiosity alive. Keep learning continuously. So I am sure they will continue to work hard even in a high social welfare country. Just like they have played so hard when in childhood.

I kind of think the great innovation in software in north European countries have a lot to do with the fact that people there enjoy lives better and have less pressure to make a living.

Posted in selflearning, Uncategorized | Leave a comment

New Generation of Textbooks

Recently I wanted to review the “knowledge” I have “learned” at schools. There is a lot of that kind of “knowledge” that was “learned” but never practiced. I am thinking that I need to review my old textbooks and notes. However, I don’t have them with me now. So I think I probably can just look them up online. They might be scattered here and there online. But I think that should be fine for me. I don’t have to learn them all at once. Also I only hope to gain a better overall understanding of what kind of things I have learned in the past. I have no intention to go very deep into any field without any hands-on project to practice with. So learning can be fragmented and layered. Fragmented is ok as long as you can achieve a layered understanding in a period of time.

And I feel the materials and my understanding gained along the process might just be a good collection of learning materials for others. So everyone can review their past “dormant” knowledge from time to time instead of having them locked in deep memory. Also this way can also be used to write new kind of textbook online. Nowadays the textbook has been extremely outdated with latest industry knowledge. For example, in the software field, the knowledge is updated so quickly that it is very hard for traditional textbooks to keep up. We need digitized knowledge and digitized process of knowledge production.

If we are able to digitize the kind of “knowledge model” that everyone is continuously constructing in their minds and testing against others’, the best quality of those models might be used as “textbooks”, and I can see this field in more fluidity and not as divided as it is now. For example, industry professionals can be knowledge producers as well, instead of waiting for those specialized professors to translate knowledge into textbook with very long production cycle.

Posted in Experimentation | Leave a comment

From Agile to Life Centers (Draft)

Dijkstra said in the 70s that the irreversible damage is done once we have named this subject “Computer Science”.

“…the topic became —primarily in the USA— prematurely known as “computer science” —which,actually is like referring to surgery as “knife science”— and it was firmly implanted in people’s minds that computing science is about machines and their peripheral equipment, which is not true””–from Wikipedia.

Now we see the damage.

Those of us who work in the software industry know that there is a huge divide between tech and product people.

There is a general distrust of engineers:
1. engineers cannot manage, not even manage themselves. So they need to be managed
2. engineers don’t care about products and don’t know about design

Both of these are not true. My experiences told me otherwise. Engineers dislike management, mostly because management doesn’t understand software and so the management is a lot of obstacles to software engineers. Since software engineers don’t see the hope of changing the situation, they would rather stay in their corner and be happy to just focus on engineering. I know this is true for a lot of software engineers.

As for caring about product, software engineers care about product and design greatly if you give them the chance. When I was working as CTO for a company, I had a design session that goes along with weekly meetings. The software team members take turns to share with others what they see as a good design or a bad design in their daily lives, and why it is good or bad. So engineers discussed toilet, road/subway signs, light switches, power sockets, organization structure, and so on. I take the opportunity to introduce to them various related design topics when we are discussing design of one thing. And engineers get very excited about design of various things, including organization management, social policies, and so on. Who said they don’t care about product? Who said they don’t know about design?

The engineers in the above example is from a conventional company that is going online. They have shown disinterest in company product and management, and are believed by the company management as cannot be trusted on responsibilities (sounds familiar?). They didn’t care because the management didn’t want them to care and didn’t give them the time to care. For a change, I let engineers take Friday afternoon off to just focus on product. I don’t assign any engineering tasks to them for that half day. And they just use the time to play with company product. And with inner source environment I built up, engineers can initiate projects that they deem important for company product. And we have important projects sprung up because of that. For example, an IM product/software for our eCommerce platform.

If you give them the chance, they will care, because that is what software programming is about.

These two assumptions are not true probably for all engineers. But particularly, it is not true for software engineers at all because of the uniqueness of software.

However, for the general public, people assume the above two misconceptions about software engineers, due to the misnaming of this subject—Computer Science, and more in depth due to the fact that software is complex and invisible. (You can only see it if you do hands-on practices. Very much like society or sociology is invisible, and you have to “see” it with your hands-on practices.)

“We have everything ready, we just need a programmer!” is the typical expression that reflects the common mass’ perception of software engineers.

When there is a divide, usually it is because it is difficult to possess both qualities. Since we called this subject “Computer Science”, it is believed to be a purely engineering major. So then there should be people who study liberal arts majors to manage these software engineers, because typically we believe engineers are narrow minded, not able to communicate well, and don’t care about management and product. And we know our schools taught these two groups of people like they are totally different, and there are generally no much coverage of liberal arts for engineering students.

Thus we have product people and engineering people in every company. And very often they fight each other. Surely a lot of decisions have to be made on the whole since product is one whole piece and is not separated by product vs engineering. So very often we see the boss or one of the founders sit on top to make the important decisions, even though s/he is not capable of making those decisions. It is assumed that it is easy to understand what is in software. And there is no understanding that great skills and years of experiences are needed to plan product and software together and it is very strategical for a company whether it can plan the software/product well.

“Dijkstra was the first to make the claim that programming is so inherently complex that, in order to manage it successfully, programmers need to harness every trick and abstraction possible. ”–from Wikipedia.

Complexity of software demands ability in both liberal arts and engineering. Society is complex and invisible, thus you need to do a lot of hands-on social practice and do very extensive reading to help you “see” things and understand human society. Similarly, as software is essentially a digitization and innovation of human society, it is also complex and invisible. You needs hands-on practices, e.g. coding to “see” things and understand it. Since it is about digitization and innovation of human society, you also needs a very strong liberal arts background. Not the kind of liberal arts education you get from college, but more street-smart liberal arts capacities achieved only by a lot of social practice and a lot of extensive reading. For a small example, knowing of the human history helps you innovate better.

So maybe now it is easy to understand why such a divide between product people and engineering people. We can say that is because product people are not really product people, they don’t possess the true liberal arts capacities, and cannot think logically. They are just chatty. And our engineers are not true engineers because they focus so narrowly only on the engineering aspect of the software programming, and cannot grasp the vast realities and possibilities outside of engineering domain. Or we can say we just need people who educated themselves in liberal arts and have a lot of hands-on experiences with coding. Since software programming is so big and encompassing so many things, it is challenging for an individual to learn all these things and be good at all of them. But it is reasonable to expect a general good grasp of both and be a little leaned towards one side or the other from time to time, with the ultimate goal of achieving the level of greatness in both regards.

And that is possible. We have seen great examples of people who have achieved that greatness, and we believe it is a path that everyone can try.

I believe Jeff Bezos, Larry Page, Steve Jobs, Bill Gates, Mark Zuckerberg, Linus Torvalds, Guido Van Rossum (for Chinese ones: Huateng Ma, Xiaolong Zhang, Lei Ding, Bo Yang from Douban…) are these good examples. And we also see many other smart creatives as touted by Eric Schmidt’s book “How google works”. I believe all great software companies understand this and know how to build up organization accordingly to tap into potentials of software engineers, such as google, amazon. And those who don’t, disappear after a while even if they can have a short period of success.

We have to bridge the divide. Without bridging the divide, there is no real solution for the industry. We have to point out a path and show the examples.

Without detailed elaboration, just let me briefly outline my understanding of this path:

  • emphasize caring of product, emphasize responsibility for full life cycle of the software like amazon has practiced (Douban as an example as well). Give developers dedicated time to care about company products. Give them rights to initiate products on their own (like Douban has practiced, and inner source environment can legitimize, empower and reward such behaviors.);
  • emphasize on programming as the core. Like the core curricular in college, programming should be the core skills you have to learn no matter you are developers, QAs, devops, product managers, and so on. In the words of facebook director of engineers, if you are doing any software related job, your best way to prepare yourself for that job is to learn how to program. Build up an inner source environment with rich projects of various scales and difficult levels that people can pick best projects that suit their current capabilities. People including non-engineers can be free to contribute to any inner source projects and learn various programming skills. Remove the artificial barrier that blocks communication between developers, QAs, devops and product managers;
  • emphasize on design skills training. Such as the design sessions that I practiced in my previous companies. Such design skills are inherently connected to architecture and management skills. In a sense, it is a more advanced level of coding;
  • give people ownership in those independent projects of various scales. That is how people learn of programming, design and management. They need to feel the whole and develop the sense of it. The wholeness is essential to programming and here I use the word programming as something that is very broad.

So we do have a path that can connect liberal arts with science/engineering and making them mutually benefiting each other. You don’t have to struggle between whether you should go product direction or engineering direction. You just try to be good at both, and make the two Ying and Yang of one whole body. They are parts of the whole thing of digitizing the world and making the world a better place with great and kind innovations, thus truly making software programming the greatest ever invention of human history, an invention that empowers us to break the long time barriers to equality and happiness of mankind.

One great person who has been trying hard to bridge liberal arts and science is Christopher Alexander, whose design pattern theories in the 60s, 70s have greatly influenced software community, and directly brought up the design pattern, OOP, extreme programming, and agile programming movements. However, during a speech of Christopher Alexander, when asked to comment on his influence on software community, he said that in his observation, software community has only scratched the surface of his theory, quote “Software Programming’s use of patterns have so far just been a neat format that is a good way of exchanging ideas about programming, but lack in the two other dimensions: MORAL CAPACITY in producing a living structure and the GENERATIVITY OF THE THING and that is capability in producing a coherent whole.” (http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=795104) His latest theoretic framework, as summarized in Nature of Order, has used concepts like life centers and degree of life to push his works to a whole new level. However, software community has barely touched on these and probably have no idea how to tap into it.

So by bridging the gap between product and engineering, and realizing the true nature of software programming, I hope not only that we can resolve the great divide in our software industry and help the industry grow more healthy (as we see software nowadays is really expanding to all corners of human society, literally “eating the world” according to Mark Anderson), we can also to bring up a new (real) kind of software engineering that seamlessly bridge liberal arts and science/engineering, tap into the great potential of Alexander’s great theoretic framework that bridge the gap between subjectivity and objectivity, and make complete the modern science.

Posted in Software | Leave a comment

Software is Unique

Software is the bridge btw the human world and the physical world. It is the bridge between human science and physical science. It is about giving ideas concrete forms. It is about digitization of life. It is about creating life.

  • Software is broad. You have a large variety of lives, so you have a large variety of software. Life manifests itself in different forms in various software. How many species of plants and animals you have on this planet?
  • Software is deep knowledge about human world. Since software is digitization of various life forms, if you understand software, you understand better of life.
  • Software takes many years of continuous hands-on learning.
  • Software is complex, just like life can be very complex. So we try very hard to make it as simple as possible, but not simpler. Software is about taming complexity.
  • There is no software architect who doesn’t do intensive programming anymore. Maybe it is ok in other disciplines to have architects who don’t do hands-on work anymore, but not in software.
  • Software planning is strategic. Like a soccer team needs a coach to plan things strategically and build up the team, so is a software team. If you have a software architect in the company possessing those comprehensive skills, cherish her/him, let her/him make the decisions and be responsible for them.

If this list is too short, I hope people can keep it in their minds to contemplate on constantly when working with software, and I hope this list is enough to turn around people’s common misconceptions about software.

Posted in Software | Leave a comment

Software Management

I am trying to summarize a short list of what I deem the most important for software management.

  • Management is about the right people making decisions. It is about forming the trust and delegate chains.
  • Emphasis on programming skills. Everyone should try to learn programming.
  • Break the boundary. People should not be separated way too early into testing people, system admins, developers. They should try to learn the comprehensive programming skills, which include how to do testing and how to run servers and do deployment. Testing people and system admins are encouraged to learn programming.
  • Programmers’ time is the most precious.
  • Empower programmers instead of putting various kinds of restriction on them. Give them the best tools. Let them fly!
  • Programming takes a lot of learning. Understand this! Value employees’ learning! Build up a rich learning environment! Have architects who can mentor people.
  • Rich projects to build up a comprehensive learning environment. Projects of different size and difficult levels, many of which are independent projects that are not tangled with other projects. So every individual in a software team can find projects that fit her/him to improve step by step.
  • Emphasis on product. Everyone in the software team should care about the software that s/he is building. Thus everyone should care about the product. Dedicated time (for example, Friday afternoon) is allocated for software team members to do nothing but playing with the product.
  • Emphasis on design skills and cultivation of programmers’ architect skills. Design sessions are scheduled regularly, when team members take turns to tell what s/he has found in her/his daily life that has a good design or bad design and why. Various design topics will be covered during such design sessions.
  • Do pair programming and code review very often to help programmers improve programming skills.
  • Software planning is strategic. Like a soccer team needs a coach to plan things strategically and build up the team, so is a software team. If you have a software architect in the company possessing those comprehensive skills, cherish her/him, let her/him make the decisions and be responsible for them.
  • Hiring is an important window for a software company. Tech director should be in charge of hiring of engineers and pay attention to the details in the hiring process. Tech director should have the directions in how s/he wants to build up the team and how to build up a good public image of the company as a tech company in order to attract talented engineers.
  • There is no software architect who doesn’t do intensive programming anymore. Maybe it is ok in other disciplines to have architects who don’t do hands-on work anymore, but not in software.
  • Everyone is building stuff. Everyone is a builder. No one is just a talker, doing management only. This is from Spotify founder Daniel. And I understand it as an important way to cut down communication cost in software management. I think at least for software management, this should be enforced. It might seem radical to enforce this at the whole company level. But I would love to see that happen, and I tend to believe that should be a very good thing for the software company.

This list might not be comprehensive. They are what I can think of off the top of my head. Maybe they are what I deem most important. Or it might just be related to my recent experiences. Time will tell, I think. If it is short, I hope people can keep it in their minds and constantly get reminded in their management of a software company.

Posted in Software | Leave a comment

Management and life centers

Management is about the right people making decisions. It is about forming the trust and delegate chains. It is about hierarchy. Don’t be afraid of hierarchy, because life is full of centers. To have something that is full of life, life centers need to be formed naturally. To have an organization that is full of life, life centers also need to be formed. The forming of life centers in an organization is exactly about “right people making decisions” and “forming the trust and delegate chains”.

So don’t be afraid of hierarchy. Every organization has hierarchy. The right question is how many levels of hierarchies there are in an organization, there are too many or too few, whether there is natural flow btw hierarchies, whether there is transparency, whether there are still channels of communication across hierarchies, and etc.

This hierarchy is totally based on individuals’ ability to make the right decisions in this domain. And it it about making decisions and taking responsibilities for your decisions. It doesn’t extend to to your personal life (this part is usually quite difficult for people coming from the oriental world to comprehend).

I have seen startups where bosses seem to be afraid of hierarchies. They are afraid to delegate any responsibilities and authorities to other people. It seems they are trying to maintain a flat structure, but in reality, the bosses often become the sole authority in the company and make decisions on every level. A lot of micromanagement indeed.

Finding the right hierarchy, having the right people at the right positions and at the same time maintaining natural flow between hierarchies and transparency are what management is all about. In short, management is about center of lives.

I often say that software is about creating lives. Thus you can see why I say software and management are inherently connected. I don’t see a software engineer as a good software engineer if s/he cannot do good management. However, what we often see in the industry is that a lot of people tend to think that software engineer cannot do management, and thus management belongs to people who can not do software. It sounds bizarre. However, that is how many software companies are run today. What a tragedy if you run a company like that!

Posted in Scientific Study | Leave a comment

How I did my annual review

中文版
Many of my friends love doing yearly review of their learning. Ever since the end of last year and till this Chinese New Year, their reviews have been coming out one by one. I also did a yearly review during the holidays of Chinese New Year. Since I have been using my online notebook for my learning, this yearly review is also done on that notebook. Although it is a bit late now, I would like to share with you how I did my yearly review with this online notebook.

First of all, there was a total of 3,176 notes in my notebook last year, with 2,007 snippets, 647 bookmarks, 515 scraps, and 7 knowledge frames. It also counts the most frequently used tags of the year, the new tags for the year, and so on. For this statistical page, another article will be written on it.

Through the statistic over the year, I can have a quick review of the year’s learning. And then with the notebook, I can only display the notes of the last year. By quick browsing through, I can identify several big topics for this year, such as management, software management, product management, and tech (including topics like git, python, shell, database), osl work, notebook design and development. Then for each topic I can use combination of tags to review the relevant notes.

The whole process is to first determine the topic, then quickly gain the big amount of experiences, fact and data I have accumulated on this topic, dive into details, try to build up understanding and knowledge of the whole. Lastly, run through a checklist of what need to be done and have a complete review and enhancement on the notes and knowledge.

Within these topics, for management, because I have been summarizing it up during the year, and knowledge has been formed already, and several blog essays have been written from it. Whole knowledge and deeper understanding have been achieved. Here is the Chinese blog for reading these essays:
http://blog.sina.com.cn/happystone2009

In tech, a lot of piratical experiences and small pieces of important info need to be collected (such as those tagged with cheatsheet and tip) before the complete review can be done in order to form understanding understanding of the whole. For example, I did a review of git, and were able to come up with a whole understanding of it. Also from those drops of experiences and facts on shell, the systemic knowledge of shell also comes into being.

For big topics such as OSL or notebook’s design and development, various sets of tags need to be used to review different aspects of the topic, to summarize what have been learned and to plan the next stage of working and learning. Smaller topics such as product design, software design and travel have also been reviewed and comprehended.

The experiences and thoughts during this yearly review process were also noted down as snippets, with yearly review tag, for the future reference and review.

Using notebook to review those Significant Experiences accumulated over a long period of time is really a very effective learning method.

First, you can notice those often appearing things over a long period of time, and they reflected something important for that period, and thus provide a foundation for self-reflection. Secondly, you can notice certain things you were not aware during that period and can re-evaluate it more objectively. Thirdly you can compare different environment during different periods, and you might have some interesting discovery.

Last, because notes are used to capture the exact experience at the moment, and to write it down objectively, you don’t have to rely on your fuzzy memory at the end of the year to do the yearly review. And all experiences have become text displayed visually in front of you, it lessens the burden on your mind and brain, so you don’t have to recall memory buried deep in your brain and do the analysis and comprehending at the same time.

Below I am going to give some cases for each of the above 4 points.

For the first one, for those repeating over and over again over a long period of time, I discovered that I wrote often in my notes that my attitudes on life should be as brave and optimistic as when I was young. The frequency of these notes is high, so I realize that it is because I am approaching mid-age, and thus there is some change in my mind.

Another example, when I was reviewing my experiences in management, I realize one common reason for many different problems: the organization becoming too large is the root of all difficulties. The solution? One is to split the company into smaller ones, and restore the free market mechanism; Another solution is to use internet to make the company small again.

For the second point, through comparison in different companies, I can see each company has its own problems. So I can be more open minded, and no need to complain too much of the current environment.

For the third point, I compared the three companies I used to work. I filtered notes by the date range of each period. These companies belong to different industries, and thus their organizational culture and software environment are all different. Also their sizes differed. The first is the smallest, only around 30 people. The second has around 100. The third is huge, with over 160,000 people. The first is pure internet company, founded by returnees from Sillicon Valley and has some reputation in the industry. The second and the third are relatively traditional companies, so I viewed working there as an effort to evangelize and spread internet. Putting all the experiences in these different periods together is really a very interesting discovery process.

For example, when I was browsing through the notes, I realized suddenly that the management of the first and that of the second companies are two extremes. The first company’s culture is very much like American ones. It puts emphasis on equality and openness in its culture. Employees, department heads and boss call each other by plain names. The boss even doze off and snore by the desk at the noons. The companies registration files and accounting files are all open in the closet without lock. So it is a quite open culture. But I feel no any hierarchy (when things get complicated, at least some hierarchy is needed, otherwise there will be hidden ones) based on trust is built up, which can be an issue. There is not much frequent conversations and discussions among the department heads. And all issues start with open discussion in the whole company level. For the second and the third company, there are the traditional hierarchy, and they like to add ‘zong’ (meaning “in charge”) to the last name when calling each other, and there are heavy cultures of tasting and flattering. But the professional hierarchy is very rigid and locked, there is no hierarchy based on trust (in term of professional skills and qualities).

When I was browsing my management experiences in the first two companies, compared with the last, it made me feel deeply the difference that comes from the companies’ sizes. For example, in a small company, it is easy to feel the sense of responsibility because everything is visible in front of you. In a big company, even for those who previously have a strong sense of responsibility, it can be hard because the company is so big that you only see a very small part of it. In a small company, you can feel everything, and thus have very concrete feelings of management. It is hard to have such kinds of feelings in a big company. Of course, after you realize this, you can bring the sense of responsibility you have in a small company to the large company, and also try to turn the big company into a small one by using the power of internet, making everything happens under the same roof. These comparisons help me to bring my experiences of management in small companies to the big companies.

So by comparing different periods, you can discover the real opportunities in your career, and your growth in each period, and thus have a clear idea of how you want to develop your career. Each environment gives you something different. If you aim high, you should accumulate rich experiences in various environments.

After review, I will give a score for each aspect in each period, and compute the sum, then I can evaluate the growth in each period. For example, the snippet below:

2013,2014 achievement: tech 3; paas 3; inner source 3; profession of digitizing 3; travel 3; management:11; media and publishing industry: 1; translation industry:2; commerce: 4; medical 3; big company culture 2; SUM: 38.

So by filtering via time range or tags, you can focus on a time period or a certain aspect. It is highly effective to do review this way. Actually I do annual review often in the past. It is because I discovered that a notebook can make the review process more efficient I developed the notebook.

Memory is not reliable, especially for things a long time ago. Normally you can remember well things within a week. Beyond that it can become a bit blurry. During this review with the notebook, I am able to find memories that are not quite correct. So lucky for me I found back the right memory.

Further, the life decisions you have made a long time ago, you must have a lot of considerations to reach them. After that long time passed, and you also have passed through the long journey, do you still remember your choices at the time? For example, in recent two years, I especially want to have more experiences in business and product management, and also in team management and company management. Now I look back, I have achieved them. I now have the confidence that I can build a very strong team, can manage a company that is in a few hundreds. Now what I need is to be more focused on technologies, go deeper and broader and fulfills my self-expectation when I started. When you remember how you started and know clearly how you have grown, you know clearly where you are going next.

I share this article with my friends who love learning. We are all self-learners! Let’s make self-learning easier!

Another article will be posted to introduce the learning statistic features.

Posted in selflearning, Usage Demo | 1 Comment

New features

We have a few new features released to help you better manage your daily learning:

Swapping of book:

If you go to a note list page, for example
http://3exps.org/social/leon/bookmarkbook/notes/?q=t%3Atip+%7C+t%3Acheatsheet+%26+t%3Agit&all=
, you can see on the right upper corner of the page, there is a dropdown list of book names in red font, you can try switching it to another book name such as note, you will be directed to
http://3exps.org/social/leon/notebook/notes/?q=t%3Atip+%7C+t%3Acheatsheet+%26+t%3Agit&all=
It will swap out the book name part of the url while keep the rest the same.
Screenshot available soon.

More date range filters:

First when in a note list page, press alt+p to open up the display filter. You will see that now you can view notes of last year. You can also view by a date range, by entering a request parameter in the url like this date_range=2014-08-20—2014-12-29. Date range filter is set for the session. So for all note list (snippets, bookmarks, scraps, frames, notes, personal or social) you will have this filter applied. To reset it, simply choose date range to all.

Clicking on desc to expand and collapse a note:

In a note list page, you can click on the desc (description) part (it is the second part. So it can be url part for bookmarks ) to expand the note. Clicking on it again will collapse it. For personal notebook, for now you can only expand it. For social and group notes, you can expand and collapse.

Support for passing page_size parameter:

In a note list page, you can pass the parameter page_size to change the default page size. The maximum you can set is 200. This is also stored per session. So you have this page size for all note list pages.

Fixed menu bar

In a note list page, the menu bar of the notes will become fixed to the screen when you scroll down enough. So it will be convenient for you to select some notes for bulk edition without having to scroll back to the very top.

Screenshot available soon.

Simple frame display:

For frames that has no child frame, we build a simplified template for displaying. So it looks better. For example, you can view this frame (in Chinese):http://3exps.org/social/leon/framebook/notes/note/9174/

Posted in New Features | Leave a comment

Inner Source Software Development Environment

Inner Source, basically is to bring Open Source inside a company. The Open Source software development platform and process allow programmers across the world to work on the same project at anytime, and produce very high quality software that is well documented. It is a higher standard of software development. This platform and process can be brought inside a company for members in a company to participate in software development process seamlessly. It is “Open” to all people inside a company.

  • Like open source software projects (for example Linus in Linux project, Guido in Python project), inner source respects project ownership as well, at the same time allows for very open discussions and inputs without losing efficiency. So every project will have an owner, whose role and responsibility is just like an open source project owner.
  • Flat learning curves for competent new developers. When new developers join, they don’t need to ask here and there to get to know all the resources. The environment should be built up to allow new developers to start contribute to the projects soon, just like in open source projects.
  • Programmers participate in a project just like how they participate in an open source project: normally they start from debugging or working on TODOs inside the code, and submit pull requests. And they move up the ranks by making contribution and demonstrating skills.
  • New official projects will be listed under new projects page. These new projects need to be “owned”. Programmers can apply to own these projects.
    Programmers can start their own projects as well in company code platform (github currently). However, these projects have to demonstrate its usefulness and quality to be recognized as “official” projects.
  • Programmers’ work and contribution will be evaluated based on the official projects that programmers work on. The evaluation will be based on professional experience and judgement instead of superficial numbers. After all, software process is a complex process. Numbers will be used to help analysis.
  • There is no boundary of programming and programmers. There are certain percentage of tasks that will be assigned and arranged by team leaders. Additionally, programmers can work on any project that they are interested and feel they can make a contribution. So devops people, QA people can work on programming projects as well. Non tech team members can also work on programming projects. But the acceptance of pull request will be the right of the project owner.
  • With official and unofficial projects, we intend to build up a rich environment with many projects that people can participate in and learn various programming skills step by step. All projects are following the open source standard, with flat learning curve and easy to participate and contribute. Thus a learning environment for software programming will be built up, which will be essential for us building up a strong software team.
Posted in Software | Leave a comment