What I learned in work this week - collegiality, productivity and AST's
Getting Things Done
This week, I attended a workshop on Getting Things Done (GTD) which introduced me to some of the concepts from the book by David Allen. The workshop covered several important points, including:
- The importance of capturing and organizing all of your tasks and projects in a reliable system.
- The need to prioritize tasks and projects based on their level of urgency and importance.
- The "two-minute rule," which suggests that if a task can be completed in two minutes or less, it should be done immediately.
- The "someday/maybe" list, which is a list of tasks or projects that you want to work on someday but are not currently a priority. I will start doing this in relation to learning. I often come across things I don't have time to learn but look interesting. When I get time to study, I could draw from this list.
Collegiality
I attended a workshop about communication and work culture where I learned about the importance of knowing the people you work with. The speaker put us on to a TED talk which is very interesting, Margaret Heffernan - "Forget the pecking order at work". As someone who tends to be private by nature, I realized that I need to make a conscious effort to build stronger relationships with my colleagues, as this can lead to more effective collaboration and better outcomes for the team.
Reflecting on my recent work, I realized that trying to overachieve caused me to not seek as much input as I could have from my more experienced teammates, probably slowing the task down and not implementing the optimal solution for the task. Going forward, I hope this will be something I get better at.
AST
An AST is a tree-like representation of code, that compilers and transpilers use. For example, the popular transpiler Babel uses AST to transpile ES6 code into older versions of JavaScript.
This site, Codu, uses a markdown editor called Markdoc for writing blog posts. Markdoc uses AST to transform the blog we write into a valid html. have a look at this AST representation of an anchor tag or link node as its known to markdoc to get an idea.
"type": "element", "tagName": "a", "properties": { "href": "https://www.mysite.com" }, "children": [ { "type": "text", "value": "link" } ] }
The transpiler uses this AST representation to output the HTML representation of the anchor tag:
<a href="https://www.mysite.com">link</a>
Here is an example of a custom node which alters how anchor tags are rendered.
import { Tag } from '@markdoc/markdoc'; const link = { children: ['text'], attributes: { href: { type: String, required: true }, title: { type: String } }, transform(node, config) { const attributes = node.transformAttributes(config); const children = node.transformChildren(config); const href = attributes.href; if (!/^(f|ht)tps?:\/\//i.test(href)) { attributes.href = 'http://' + href; } return new Tag( 'a', { ...attributes, target: '_blank', rel: 'noopener' }, children ); } }; export default link;
In the future, this will hopefully enable Codu articles that use links to open in a new tab.
Speaking of which, Codu is an open-source project and I encourage you very much to contribute to its development. The repo is here: codu repo
All the best,
Daniel.