diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml
new file mode 100644
index 00000000..3f4af4a3
--- /dev/null
+++ b/.github/workflows/hugo.yml
@@ -0,0 +1,31 @@
+name: github pages
+
+on:
+ push:
+ branches:
+ - master # Set a branch to deploy
+
+jobs:
+ deploy:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true # Fetch Hugo themes (true OR recursive)
+ fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
+
+ - name: Setup Hugo
+ uses: peaceiris/actions-hugo@v2
+ with:
+ hugo-version: 'latest'
+ # extended: true
+
+ - name: Build
+ run: hugo --minify
+
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ if: github.ref == 'refs/heads/master'
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./public
diff --git a/config.yml b/config.yml
index 0d4146fb..810573b4 100644
--- a/config.yml
+++ b/config.yml
@@ -19,7 +19,7 @@ params:
title: Enda Phelan
description: "Enda's blog"
keywords: [Blog, Portfolio]
- author: Me
+ author: Enda Phelan
# author: ["Me", "You"] # multiple authors
# images: [""]
DateFormat: "January 2, 2006"
@@ -33,7 +33,7 @@ params:
ShowCodeCopyButtons: false
disableSpecial1stPost: false
disableScrollToTop: false
- comments: false
+ comments: true
hidemeta: false
hideSummary: false
showtoc: false
@@ -69,7 +69,7 @@ params:
Content: >
Hi there. I'm Enda, a software engineer building open source projects with a particular focus on API design and developer experience.
Every now and then I will post here about my experiences in this field.
- I'm open to collaborating or chatting about anything, so if you want to you can reach me on [Polywork](https://www.polywork.com/endaphelan) [Twitter](https://twitter.com/PhelanEnda) ๐.
+ I'm open to collaborating or chatting about anything, so if you want to you can reach me on [Polywork](https://www.polywork.com/endaphelan) or [Twitter](https://twitter.com/PhelanEnda) ๐.
socialIcons:
- name: twitter
@@ -79,7 +79,7 @@ params:
- name: polywork
url: "https://www.polywork.com/endaphelan"
- name: instagram
- url: "https://instagram.com/enda.phelan"
+ url: "https://instagram.com/photosbyenda"
- name: linkedin
url: "https://linkedin.com/in/endaphelan"
@@ -93,7 +93,7 @@ params:
hiddenInSingle: true # hide on single page
editPost:
- URL: "https://github.com/craicoverflow/craicoverflow.github.io/content"
+ URL: "https://github.com/craicoverflow/craicoverflow.github.io/tree/master/content"
Text: "Suggest Changes" # edit text
appendFilePath: true # to append file path to Edit link
diff --git a/content/posts/getting-productive.md b/content/posts/getting-productive.md
new file mode 100644
index 00000000..f3203481
--- /dev/null
+++ b/content/posts/getting-productive.md
@@ -0,0 +1,77 @@
+---
+title: "Getting productive"
+date: 2022-03-25T11:30:03+00:00
+weight: 1
+cover:
+ image: "https://i.imgur.com/l0kphcM.png"
+---
+
+The past two years have been my busiest ever, both in my work and personal life. In two years I went from a junior to a senior software engineer, and with that came a raft of new responsibilities. In the same two years, I had some big life events which required long term planning, the likes of which I had never needed before.
+
+I used to cope just fine using my head to keep track of both the short and long term tasks and goals - because there weren't that many happening at the same time. Suddenly, and before I even realized it, this system had become no longer fit for purpose and it was unable to cope with my requirements. 2021 for me became a year of discovering, experimenting and adopting different methods that would enable me primarily to become more organized, which would, in turn, enhance productivity.
+
+The following list is not supposed to be any kind of ultimate solution that is guaranteed to work for you. These are simply the things that I found that have helped me get closer to fulfilling my objective.
+
+## Maximizing calendar usage ๐
+
+I used to occasionally put something in my calendar. Not because I needed to, I just liked the idea of it. My approach to calendar entry was not very systematic anyway so it just never felt very useful to me. As I got busier I began adding everything to my calendar otherwise I'd just end up forgetting things or having to retrieve the information from an email, text or WhatsApp message.
+
+I realized that I could do better. I created custom calendars to segment events by responsibility. One of my favourites is my **Events of interest** calendar. When I learn about an event I am interested in but cannot commit to attending until closer to the time then it gets added to **Events of interest**, keeping my main calendar as a hard landscape of my schedule. My partner and I have both shared our calendars for maximum visibility into each other's schedules. This has proved extremely useful as we now both have the autonomy of booking appointments while away from each other and not needing to worry about double bookings.
+
+Finally, I made sure to share my personal calendar with my work calendar. Given that I spend almost 1/3 of my waking hours at work it makes sense to be able to view my *complete* schedule from a single calendar view.
+
+## Inbox Zero ๐ง
+
+I've been a Gmail user since it was still invite-only in 2006. In all of those years once I opened a new email and "processed" I did not do anything to tidy it up. I just left it in my inbox, unread and cluttering my screen even though I had no plans to ever interact with it again. Slowly but surely my processed emails would make their way down my inbox, and eventually, they would leave my sight forever.
+
+If I was not ready to process an email I opened I did one of two things: snooze it **or** mark it as unread.
+
+* By snoozing it I was simply handing the problem to Future Me to take care of. Usually, I did not have a specific date/time that this email needed to be looked at so I'd pick something like `Today at 18:00` (deal with it after work) or `Monday at 09:00` (it's Friday, I'm in no mood for this now!). It was very unlikely that I would be in a position to process the email at these times either.
+* By marking it as unread I was ensuring that I would not forget about this email by making it appear as though I had not yet read it. This just created more work for me as I had both unread unread emails and read unread emails mixed together.
+
+Upon reflection, I see now that this approach to email processing is pretty archaic and also very inefficient, yet it's probably what > 99% of us do as it's just how most email systems are set up by default.
+
+I now follow an "Inbox Zero" approach to managing my emails. I archive or even delete emails that I have finished with. For emails that I need to do something with but not straight away I now use a label and filter-based workflow to place the emails into three clear categories: *Action Items*, *Waiting For* and *Read/Review*. These categories are also a feature of the Getting Things Done productivity system with I will talk about next.
+
+I followed this [Inbox Zero Tutorial](https://youtu.be/9ql1CQfxWxQ) by Jeff Su to implement an Inbox Zero workflow into both my work and personal Gmail accounts. I'm a big fan of Jeff's content - he gives great productivity tips and I recommend you check out the rest of his videos.
+
+## Getting Things Done โ โ โ
+
+My biggest productivity struggle was that I did not have a coordinated system in place to capture and subsequently manage all of my tasks and projects. I experimented with several ways to capture tasks - from simple pen and paper to using popular digital tools. These failed to be effective for so many reasons and I usually ended up falling back to using my head to bear the load of figuring out everything that I needed to do.
+
+I decided to give the [Getting Things Done](https://gettingthingsdone.com/what-is-gtd/) methodology a go after seeing it recommended on Twitter.
+At a high level it involves five simple steps to organization: _Capture, Clarify, Organize, Review,_ and _Engage_.
+
+The book was actually a light and enjoyable read and also extremely helpful. The great thing about it was I was able to slowly integrate the GTD methods into my life as I progressed through it - there was no need to reach the end before fully understanding it. You could start to use GTD without reading the book, but in my opinion, it teaches you so much more in-depth about the system than you would otherwise get.
+
+I now finally have a single system that is easy to use to track the multiple projects that I am working on at the same time. I don't forget about stuff like I used to because it's always there in front of me in my **Next Actions** list.
+
+## Todoist ๐๏ธ
+
+[Todoist](https://todoist.com/) is a feature-rich task management application that I have tried to use many times over the years but failed, simply because I did not have an organization system in place and I was unable to utilize the true extent of its power. I once again tried it out when I began using Getting Things Done. Thanks to its flexibility I was able to shape it to match the exact workflow that I was trying to create. It also has dozens of free integrations available such as Google Calendar two-way synchronization. I can safely say that if I tried to use pen and paper or Google Tasks with the GTD methodology I would have failed to keep it up.
+
+## The Pomodoro Technique ๐
+
+[The Pomodoro Technique](https://francescocirillo.com/pages/pomodoro-technique) is something that I sometimes use, and even then I am not strict about it.
+It is a very simple technique - set a 25-minute timer and focus on a single task, then take a five-minute break.
+I only call upon this technique when I need to have strong focus as my workload on some days could be a little less defined or be broken up with meetings where it would make little sense to use this.
+Other than the focus blocks this encourages, I also like to use this technique to remind myself to take frequent short breaks. On days when I don't use it, I can find myself losing track of time while stuck on something and I go far too long without getting up for a walk or stretch.
+
+## Closing distractions โ
+
+How often do you check your emails? Maybe you get a pop-up whenever one comes in? Or if you're like me your eyes frequently shoot up to the pinned email tab to see if it has changed from **Inbox** to **Inbox (1)**. I cannot leave something unread when I know it's there, so I will rip myself away from what I am doing and read the email. 90% of the time it's not something I need to action immediately, if at all. Yet I've still interrupted myself to go and read it and now must try to refocus myself on what I had been doing which takes time.
+
+So what's the solution? Recently I have started to close my email tab and check it at fixed times throughout the day. I get notified by my calendar when it's time to check, otherwise, they are out of sight and out of mind.
+
+Instant messaging services like Slack, Microsoft Teams are used heavily by most companies these days. They do give the benefit of enabling people to converse instantly and in and less formal structure than you tend to get with email. You are always just a quick message away from someone who needs you and that can be a fantastic tool for collaboration in a distributed team.
+What is a positive however can also be viewed as a negative and the problem is that you are always just a message away from someone. It can be very, very hard to keep focused on something when your messaging app frequently notifies you both visually and audibly when you have a message.
+
+I used to leave my messaging app always open, sometimes even dedicating my secondary monitor to it so that I would be highly available. These days, I close my chat application when the thing that I am doing requires my focus (like this blog post) and I have it open in between my "focus windows".
+
+## Conclusion
+
+In school, you learn the fundamentals in a broad spectrum of subjects that help prepare you for the next stage in your life, be that further education or in the workplace. In college/university you learn the fundamentals of your chosen discipline, along with some extras which are useful to land the job you want like interview preparation and how to write a CV. From then on the things you learn about are more or less down to yourself but there is no predetermined path created for you like you have had while in formal education.
+
+Productivity and how to be organized is not something we are all taught as a life skill. I imagine that f I had acquired even some of the skills, techniques and methodologies from this blog post earlier in my life then I would have been able to perform better, especially in college and in my first few years as a software engineer.
+
+This has been my productivity journey so far, and I am in no doubt that it's not yet close to the finish line. The key is to continuously reflect on what works and what doesn't work for you. I will continue to refine my system to make it better, and I won't be afraid to stop using something if I find an alternative that works better for me.
diff --git a/content/posts/post1.md b/content/posts/post1.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/content/posts/software-idioms-you-should-know.md b/content/posts/software-idioms-you-should-know.md
new file mode 100644
index 00000000..eba2c502
--- /dev/null
+++ b/content/posts/software-idioms-you-should-know.md
@@ -0,0 +1,54 @@
+---
+title: "Software Engineering Idioms You Should Know"
+date: 2021-12-15T11:30:03+00:00
+weight: 1
+cover:
+ image: "https://i.imgur.com/IaI0TZD.jpg"
+---
+
+I have been working as a software engineer for just over five years. Every now and then I encounter a phrase used to describe something during an engineering discussion, where its meaning is not obvious from the words themselves. These kinds of phrases are known as *idioms* - expressions that have a non-literal meaning attached to the phrase. "Break a leg" is a well-known idiom to wish a person good luck.
+
+Usually, I say nothing and pretend I know what it means, or quickly look up the meaning if I am by my computer. I talked to a few other engineers and asked them if they had heard of some of these phrases - and they didn't. I imagine there are many more of you out there.
+I decided to collect all of the idioms that I have come across in my job to share them with you along with a simple explanation.
+
+Have I missed any? Let me know in the comments below.
+
+## Bikeshedding
+
+Bikeshedding, or the **Law of Triviality**, describes our tendency to devote a disproportionate amount of our time to trivial topics. For example, a team might devote the majority of their time debating what colour a button on their website should be, rather than discussing what front-end framework best fits their needs.
+
+## Dogfooding
+
+Dogfooding, or **Eating your own dog food** is the practice of using your own products and projects internally. This is a good practice if you are able to do it as it means you are able to continuously validate that the product is functioning correctly. It can help to identify bugs, usability or feature gaps before being made available to your paying customers.
+
+## Boil the ocean
+
+To "boil the ocean" is when someone tries to undertake a project or task which would be almost impossible to complete.
+
+## Rubber duck debugging
+
+Rubber duck debugging is an analog method of code debugging, where an engineer would articulate a problem using natural human language, either spoken or written. Using an inanimate object such as a rubber duck can help with this method by providing an imaginary listener of the problem. The very act of speaking about the problem can help the engineer to identify the cause of the problem.
+
+## Drinking the Kool-Aid
+
+When someone "drinks the Kool-Aid", it means that they have heavily bought into something, sometimes ignoring the arguments against the thing. The "thing" is often a company or its leader, but is sometimes used when referring to software languages, frameworks or methodologies.
+
+## Skunkworks
+
+Skunkworks refers to a project that involves a specialist team working autonomously on an advanced or secret project, primarily for the sake of rapid innovation.
+
+## Yak Shaving
+
+Yak shaving is when you start a task but end up having to complete a number of other tasks before you are able to complete the original task.
+
+## Technical debt
+
+Technical debt is the implied cost of reworking an existing codebase or system. It is often incurred as a result of taking a quick and easy option now instead of a creating a better solution which would take longer.
+
+## Bus factor
+
+The bus factor of a project is the number equal to the number of team members who, if run over by a bus, would put the project in jeopardy. If a project overly relies on the contributions or knowledge of one person, then you could say that the project's bus factor is one.
+
+## Code smell
+
+A code smell is when any characteristic of a piece of code may be caused by a deeper problem within the system or architecture. A common code smell is a **bloater**, where a piece of code, which could be a component, class or method has increased to an undesirable size.
diff --git a/layouts/partials/comments.html b/layouts/partials/comments.html
new file mode 100644
index 00000000..3b11b09e
--- /dev/null
+++ b/layouts/partials/comments.html
@@ -0,0 +1,13 @@
+
diff --git a/layouts/partials/post_nav_links.html b/layouts/partials/post_nav_links.html
new file mode 100644
index 00000000..b988641b
--- /dev/null
+++ b/layouts/partials/post_nav_links.html
@@ -0,0 +1,19 @@
+{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
+{{- if and (gt (len $pages) 1) (in $pages . ) }}
+
+{{- end }}
diff --git a/CNAME b/static/CNAME
similarity index 100%
rename from CNAME
rename to static/CNAME