Weblog
Bert JW Regeer: I broke what? Taking over maintenance on existing (well loved) projects.
Talk by Bert JW Regeer at the Plone Conference 2017 in Barcelona.
Existing code needs love too! Look at the truth behind open source apps on commitstrip. You can help open source projects by becoming a maintainer. I became maintainer of WebOb.
What I was told: don't mess it up. There was no existing maintainer at the time. It was handed over to the Pylons project for maintenance, but no single person was responsible for it. They all stepped back.
Side-track: imposter syndrome. See Denys Mishunov's talk yesterday. Usually you get extra responsibility gradually: for example first commit rights, then release rights. You may think you are not good enough for extra responsibility, but probably you are.
You have all these nice ideas and good intentions. You push out some alphas and betas, all seems okay. You make a full release. Then a bug report comes in because you removed something that you did not expect anyone to use.
Code grows over time. All kinds of code is there because it fixed an actual problem for an actual user. So you are faced with backwards compatibility. How much of it do you do? It depends on whether you are using a library or a tool. Libraries need to maintain more backwards compatibility. For a command line tool, the only API is the tool, not its internals.
Can you afford to lose your users? Someone can fork your code and maybe rename it and create an alternative tool.
Testing: if you have 100 percent test coverage, and you change something and a test breaks, then you can more easily see what is wrong. Does the test simply need to be rewritten for the new situation? Or is the test breakage a hint that something will break for a user, letting an old bug resurface?
You sometimes have to make a breaking change. Give a deprecation warning then.
Joel Spolsky: 'Single worst strategic mistake: rewrite the code from scratch.' This was about NetScape 6, and allowed Internet Explorer to catch up and take over. It is an option, but probably not the best.
So. You took over. You are now the gate keeper. You are a temporary guardian. Eventually someone else is going to take over. You should start looking at mentoring opportunities. Find ways to engage others, engage the community. Create pull requests instead of pushing to master.
Reach out to other communities, consumers of your code. Can you help them?
People may ask or tell you to just accept this pull request. Just push out a new version. Just is a bad word. Push back and insist on them following the standards of your project. If you require 100 percent test coverage, don't review the pull request.
I have received bad bug reports, so now I myself write better bug reports. I push myself to do better. Maybe even try to provide a fix for a bug upstream.
Be friendly when someone does crazy or seemingly stupid things in a pull request. A good question to get clarity is: 'What are you trying to accomplish?'
Twitter: @bertjwregeer.
Mark Pieszak: Rendering JavaScript on the Server? Welcome to Angular Universal.
Keynote talk by Mark Pieszak at the Plone Conference 2017 in Barcelona.
[Sorry Mark, I came in late.]
SSR = server side rendering
Create an app.module.ts and an app.server.module.ts
- Static SSR is done at build time.
- Dynamic SSR is done at run time.
SSR gotchas:
- If you use window or document, the server does not know what to do: this only lives in the browser. If you must, create a WindowService and use dependency injection to provide different versions. Use isPlatformBrowser() as much as possible. Hide things from node. Not all parts need a server version.
- Be careful with timeouts, because they will let your server wait.
Conclusion:
- Universal makes SEO possible.
- Universal gives really fast initial painting of your app, and you keep the interactivity. Can be two to three times faster on mobile.
- Be mindful of browser-specific things you might be using in your code.
- Choose third party libraries carefully, as they need to be mindful of the pitfalls as well.
- It takes a bit of work, but it is worth it
Further reading:
- Code: https://github.com/angular/universal
- Twitter: @MarkPieszak, which will get a link to the slides soon.
Annual membership meeting Plone Foundation
Annual membership meeting of the Plone Foundation at the Plone Conference 2017 in Barcelona.
Plone Foundation president Paul Roeland presents the report of the past board year. Documents can be found on plone.org.
There were lots of sprints, most of them sponsored by the Foundation.
Eric Steele was interviewed by podcast init, which you should listen to.
At http://smile.amazon.com you can by stuff from Amazon and have Amazon give a percentage to the Plone Foundation, at no cost to you.
Sad is that long time Python organiser Jean Ferri from Brasil passed away.
Financials. Summary: we are doing fine, and can afford to spend a bit more. We would like more sponsorships, like providers on plone.org.
The entire current board nominate themselves for the new board, and there are unfortunately no other candidates, so we can have an easy vote.
Erico motions to approve the candidates. Maurits seconds this motion. Philip and Alexander abstain. Otherwise everyone says aye. The old board is hereby the new board.
Erico: Is the Foundation supporting bitcoin donations? The Free Software Foundation does.
Paul: Not at the moment. Depends on our bank account.
Matthew: Does the Foundation have an environmental policy?
Paul: We have recommendations. For this conference it does not really work, also because we have a caterer.
Paul: We may want to open up the Plone Foundation to family and friends, like guillotina and Pyramid. Pyramid lacks a legal framework currently. This needs careful reflection before we do anything, but the board is initially open and positive to it.
Paul: We are sometimes in difficult discussion with the Zope Foundation, which does not technically exist anymore, linked to the Zope Corporation, which technically does not exist. So the situation is unclear. We are working on it.
Philip: At Zope sprint in Halle there was consensus to unwind the Zope Foundation and incorporate everything in the Plone Foundation.
Alexander motions to adjourn the meeting and go party. Fred seconds. All say aye.
Thank you and have a great party. Party responsibly and be there tomorrow at nine for the keynote speaker.
Oh, there were two proposals for the next Plone conference. The board did due diligence and found that only one was viable. It will be announced tomorrow.
Lightning talks Thursday
Lightning talks on Thursday at the Plone Conference 2017 in Barcelona.
Andreas Jung: Plone and the blockchain
Blockchain is the base technology behind bitcoin, but it is not bound to crypto currencies. It is a distributed data structure, usually based on peer to peer. No central entity of control.
Each block has a hash of its previous block, timestamp, transaction root, and a nonce.
Use cases: auditing, financial transactions, logistics, QA, legal, automotive, others.
What does this have to do with Plone and CMS? Some ideas:
- revision safety
- audit trail
- verification of content integrity and authenticity
Our use case: collaborative editing environment. So we created SmashDocs. Using Plone and BigChainDb.
Erico Andrei: Websauna
Websauna is a web framework based on Pyramid. https://tokenmarket.net is created with that, also with blockchain BTW. Miko says hi!
I am using it too, and helping him. We want you on board as well, and we can sprint on it. Also we want to improve Pyramid. Move Websauna to Pyramid 1.9. Documentation. User testing.
See https://websauna.org.
Alexander, Anton: Ploneconf and PyconWeb
Why don't we make a PyconWeb conference? We did that last year. Next one starting on 9 June 1918. See you at https://pyconweb.com
Fred van Dijk: Music to your ears
Confession: I am a bit of an audiophile. When I talk with people about how they listen to music, I get sad. Lot of people use a ten euro headphone. "I don't hear a difference with more expensive ones." I am convinced that a better audio setup helps you work better.
What is the weakest link? Music source (up the settings), D/A converter (underestimated component), cables (spend twenty euros, that's the sweet spot), headphones (ten euro and you expect quality?).
If you divide the costs over the number of hours you listen music: I came at six cents an hour.
Especially the D/A converter (USB) really helped me.
Nejc Zupan: A few Pyramid goodies by Niteo
- pyramid_force_https
- pyramid_redirect
- pyramid_heroku
Releases are on PyPI, enjoy!
Manuel Reinhardt: Giesing 2060
Science fiction writing project about an area of Munich in the year 2060. Using Plone, two content types, snippets that give links to other story snippets, different story lines, you can read through it in various ways.
If you like reading or writing science fiction or Python code, or both, have a look at http://giesing2060.de
Alexander Pilz: Ten years of Euphorie
A Plone success story.
This is a software to guide employers and employees for mandatory health and safety risk assessment. In 2007 Euphorie was created by Wichert Akkerman and Cornelis Kolbach, with the NuPlone interface (currently still working on Plone 5 actually). In 2008 adopted by Europe. In 2016 interest by an industry client of ours.
Why was this successful with Plone? Customisation and enhancement was made easy. Good security. Open source. Now they no longer need to cary kilos of paperwork to factories.
Jens Klein: Alpine City Sprint
I invite you to come to Innsbruck to work with us on the next Plone. Today on an open space we discussed that we may be using Zope 4 on Plone 5.2, and we can work on that.
Welcome January 2018 in Austria. We always visit a special place as well, now a space lab, with simulation for Mars missions.
Denys Mishunov: debugger; for Developers
Keynote talk by Denys Mishunov at the Plone Conference 2017 in Barcelona.
It's been a long time since I have been in the Plone community. Good to see so many old friends! Literally old. :-)
I am Denys and I have a problem. I am a developer. Should I use Angular or React? Plone? I am not going to talk about that. I am going to talk about us as humans.
Goldman's dilemma, phrased in 1982: 'If I had a magic pill and it would let me win every match for the next five years, and then kill me, would I take it?' A lot of people would do that, for five years of success. There is no such pill, no single road to success.
As developer your life begins, you read a first book, you do a first project, you get your first job as developer, things look good. But: our program starts raising errors. When that happens, you stop, debug, and fix.
Perfectionism
One of the bugs is: perfectionism. 'Denys, your work style is like champagne. The company that we merge with, their style is more like prosecco. Less good, but at a party no one notices the difference.'
Perfectionism can be really good and bad. It can be healthy and unhealthy, positive and negative. Steve Jobs was a perfectionist. That worked out good for consumers, but he could be hard to work with, having problems picking the perfect beige color.
Several perfectionist problems:
- Perfectionist paralysis. This can be one reason for procrastination, waiting for an ideal moment to start with an ideal project. Fear of failure: not getting a perfect result. They want perfect tasks, where they know they will succeed.
- Picking a detail.
- Unnecessary task. 'This can be improved. It is not hard, it would not take more than fifteen minutes.' And you spend a day on something that does not give value, or even makes things worse. Perfectionists never know when to stop.
So stop being a perfectionist? No, make your perfectionism positive. Henry Ford was a perfectionist, constantly improving the design, and never going in production. He failed at two companies before investors stopped him.
Think: 'My product should be perfect. And this release/feature/commit moves me one step closer to this perfect result.' Stephen Hawking: 'Perfection simply doesn't exist.'
Imposter phenomenon
- You think that your success is due to luck/timing/etc.
- You think that others might discover that you are not as skilled as they think you are
- You think that others are more intelligent than you are.
Will Smith: 'What people think is my self confidence, is actually my fear.' Lots of people have this. Among them very successful people. Both men and women have this, also in science, shown by studies.
I read websites, Twitter, news feeds, RSS, I get a lot of information, but I cannot read everything. And I still have to work. So I stopped reading them. I may skim the titles, and open a few browser tabs, and leave them open for a few days. I did not want to read it, but my imposter syndrome wanted to read it.
What do we do about it?
- Embrace imposterism. When you are about to read yet another news story: stop and enjoy. You are learning.
- Measure yourself with your own yard stick. That is a good comparison.
- Communicate your fears. Writer Neill Gaiman met Neill Armstrong. 'If he feels like an imposter, maybe everyone else does.'
Long hours
Have you ever worked long hours? Once? Regularly? Did the code work the day after?
A regret of many people before they die is: why have I worked so hard?
Long hours happen. It can be temporary, which can be normal for a hard worker. But it can also be permanent, which is a signal for a workaholic. It is hard to spot the difference. Hard working people have some balance. Are you working and thinking of skiing? Or the other way around?
If you normally work 40 hours, and you work 20 hours more, then this raises productivity for three to four weeks. After that, it drops. Why? Our brain gets tired. So we make errors. So we lack accomplishment. So we make long hours to fix those bugs. And we are in a loop.
The Japanese have a word 'karoshi': death by overwork. Same for 'Guolaosi' in Chinese: 1600 deaths a day.
When the brain detects stress, it sends signals: the chemicals adrenalin and cortisol. This couple is essential for our well being. But when applied for a prolonged period of time, things go wrong: premature ageing of our brain, drop in learning abilities, weakened memory. So it leads to mental disability: you work long hours, and you end up with dementia or alzheimer.
How do we prevent stress?
Look at Harvard University, established 1636, home to 133 nobel laureates and 8 presidents. Students asked if they could do a four year study in three years. Answer: 'Slow down. Get more out of Harvard by doing less. Take a year off.' It helped those who returned after a year. 'College can help you learn how to think, more than what to think.' We need room to think.
Our lives have only version 1.0. We need to fix bugs live, in production.
We need more healthy and happy developers. Acknowledging a problem is the first step to mental health. Debug yourself often and stay healthy and happy. Thank you.
See also my article in Smashing magazine which was published yesterday.
Trust me: at thirty five, either you start thinking about health, or health starts thinking about you.