<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>Amirul Abu</title>
	<subtitle>I am writing about my thoughts and experiences</subtitle>
	
	<link href="https://mirul.xyz/feed/feed.xml" rel="self"/>
	<link href="https://mirul.xyz/"/>
	<updated>2026-05-31T00:00:00Z</updated>
	<id>https://myurl.com/</id>
	<author>
		<name>Amirul Abu</name>
		<email>blog@mirul.xyz</email>
	</author>
	
	<entry>
		<title>Hello World</title>
		<link href="https://mirul.xyz/posts/hello-world/"/>
		<updated>2020-05-08T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/hello-world/</id>
		<content type="html">&lt;p&gt;First blog post. Hello World!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>2019 Résumé Review</title>
		<link href="https://mirul.xyz/posts/2019-resume-review/"/>
		<updated>2020-05-09T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/2019-resume-review/</id>
		<content type="html">&lt;p&gt;Let us review my 2019 résumé before I quit my job at PetChem. I did this résumé following this very concise guide from &lt;a href=&quot;https://www.freecodecamp.org/news/writing-a-killer-software-engineering-resume-b11c91ef699d/&quot;&gt;freecodecamp blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://mirul.xyz/img/resume2019.jpg&quot; alt=&quot;résumé 2019&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As I am changing my career from a non-tech to a software engineer, I want to emphasize what can I do by listing my projects first. My advice for Computer Science graduates, better put your qualifications on top, do not follow me.&lt;/p&gt;
&lt;p&gt;HabitBot was an idea from my friend, who needs to be disciplined by having a telegram bot remind his everyday schedule. The habits can be added via the web application or by the bot. The bot was taken down since I am not using that bot anymore.&lt;/p&gt;
&lt;p&gt;The work process dashboard was one attempt to simplify my daily task at my previous job. I need to track a lot of documents in various stages, therefore I built a web application with a dashboard to easily report to management.&lt;/p&gt;
&lt;p&gt;So far both of these project I built using Django, because that time, I just finished the Python Crash Course book and was familiar with Django. Belajar Python Bot, now in its 3rd iteration, previously was using Serverless framework, then I rewrote it using Flask with Zappa and deploy to AWS Lambda. BelajarPythonBot is the longest Python project, that is still up.&lt;/p&gt;
&lt;p&gt;I also got some little gigs for doing static websites for short rental houses (homestay). This demonstrates that I already have the basics of HTML, CSS, and JS in place.&lt;/p&gt;
&lt;p&gt;Then I continue my résumé with my job experience. I did not put any description on my job at PetChem since it would be not related to any jobs that I was applying to. For the part-time online seller, I put that in, just to show I have that entrepreneurial experience and as a side project, I did while I was in Uni. I also got a side gig to build a website for a printing shop. Surprisingly, the website is still up an alive till today. I occasionally log in to the admin area and update some plugins here and there. The owner of the printing shop still contacts me from time to time. However, I do think the years I work as a web developer is somewhat misleading since I did the website while having an end of semester holiday during Uni. That&#39;s why I put the job title as a part-time web developer.&lt;/p&gt;
&lt;p&gt;To summarize my skills from my projects above, I list down all the keywords that I deem important to emphasize for the person looking at this resume. My current thoughts today is, I still have a lot to learn about Linux Server Administration, and should not list that there.&lt;/p&gt;
&lt;p&gt;Lastly, the education section, where I back up my skills and instill a bit more confidence to the recruiter that I am capable to become a software developer. I completed the CS50 course(and bought the certificate) and did most of Freecodecamp&#39;s front-end javascript challenges.&lt;/p&gt;
&lt;p&gt;About the web development boot camp, I was lucky since they were just starting up and I am their 2nd or 3rd batch. I also got sponsorship by MAGIC to learn web development, so I joined the class right after I finished my degree in Uni. Although nowadays I do not use Ruby on Rails, through this boot camp I have the confidence to start programming, learn more programming things by myself, and build pet projects.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Update: May 2020</title>
		<link href="https://mirul.xyz/posts/learning-update-may-2020/"/>
		<updated>2020-05-26T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/learning-update-may-2020/</id>
		<content type="html">&lt;p&gt;Starting this month, I want to record and track all my learnings in this blog. I have been learning so many things, but I did not track or wrote it down systematically in one place. This is my attempt to capture all my learnings or at least what are the subjects that I read or practice.&lt;/p&gt;
&lt;p&gt;Since this is the first in this series, I want to record things that I have learned since Jan 2020.&lt;/p&gt;
&lt;h2 id=&quot;serverless-framework&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#serverless-framework&quot;&gt;Serverless framework&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I did an endpoint using &lt;a href=&quot;http://serverless.com/&quot;&gt;serverless framework&lt;/a&gt; with NodeJS runtime. It does have quite tight integration with AWS Lambda so deploying to AWS is as easy as running a deploy command.&lt;/p&gt;
&lt;h2 id=&quot;nuxt.js&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#nuxt.js&quot;&gt;Nuxt.js&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nuxt is a Javascript frontend framework using Vue. It does have interesting modes to suit your use cases. Assuming your content is stored in a database, here are some of the modes and use cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Server Rendered (Universal SSR)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Loads content in the HTML then served to the client.&lt;/li&gt;
&lt;li&gt;Usually picked to improve SEO.&lt;/li&gt;
&lt;li&gt;Suitable for user-generated content, new content will be available instantly.&lt;/li&gt;
&lt;li&gt;Deploy as a separate service alongside your backend API.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Single Page Applications (SPA)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Loads an empty HTML, then populates the content via Javascript, some web crawlers might have a problem recognizing the content.&lt;/li&gt;
&lt;li&gt;Suitable for user-generated content, new content will be available instantly.&lt;/li&gt;
&lt;li&gt;Deploy as static file, less complexity.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Static Generated (Pre Rendering)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;nuxt generate&lt;/code&gt; command to generate all the content in the HTML when deployed.&lt;/li&gt;
&lt;li&gt;Suitable for content that does not change frequently and/or user-generated. Any changes in content need to regenerate the web app.&lt;/li&gt;
&lt;li&gt;Deploy as static file, less complexity.&lt;/li&gt;
&lt;li&gt;Cannot use dynamic routes eg. &lt;code&gt;example.com/product/:id&lt;/code&gt; (&lt;a href=&quot;https://medium.com/js-dojo/how-i-generated-dynamic-routes-for-different-nuxt-js-pages-ce2ee6972743&quot;&gt;well you can&lt;/a&gt;, but need to keep in mind the changes is only reflected when you regenerate the web app).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;graphql-subscriptions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#graphql-subscriptions&quot;&gt;GraphQL subscriptions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Made a simple project to test out GraphQL subscriptions. It is kinda a twitter clone that live updates the feed.&lt;br /&gt;
Code is done using VueJS SPA as frontend with Vue Apollo for integrating GraphQL in Vue, and GraphQL Yoga as backend.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/amirulabu/twotter&quot;&gt;https://github.com/amirulabu/twotter&lt;/a&gt;, &lt;a href=&quot;https://twotter.mirul.xyz/&quot;&gt;https://twotter.mirul.xyz/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;strapi-cms&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#strapi-cms&quot;&gt;Strapi CMS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I did a side gig for my friend and decided I do not want to build the backend from scratch using KoaJS, so I tried using Strapi CMS instead. It very fun to work with and I would say Strapi is quite flexible to add functionality. Among additional features I have added for the project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ReCaptcha for the contact form&lt;/li&gt;
&lt;li&gt;Facebook login to save long-lived page access token for background tasks&lt;/li&gt;
&lt;li&gt;send telegram message when new content is added.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;clean-code&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#clean-code&quot;&gt;Clean Code&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I started reading and watching the video series Clean Code, right now I am at chapter 4, Function Structures. I was very glad I started reading Clean Code since there are lots of gems that I can apply for my day to day task as a software engineer. I probably will write a separate blog post on the summary and my opinions on Clean Code.&lt;/p&gt;
&lt;p&gt;Now I realize why certain frameworks and libraries write code in a certain way. Why they have certain naming, and how to pick a good name for a class, variable or function.&lt;/p&gt;
&lt;h2 id=&quot;eleventy&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-may-2020/#eleventy&quot;&gt;Eleventy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This blog is made using Eleventy. It is always a good idea to start with a starter project rather than starting from scratch with any static site generator.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Learning Update: Jun 2020</title>
		<link href="https://mirul.xyz/posts/learning-update-jun-2020/"/>
		<updated>2020-06-30T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/learning-update-jun-2020/</id>
		<content type="html">&lt;p&gt;This is my second month doing learning update, I&#39;ve learn a lot this month, this month also includes some of the things I started in May and completed in June.&lt;/p&gt;
&lt;h2 id=&quot;coursera%3A-intro-to-cs&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-jun-2020/#coursera%3A-intro-to-cs&quot;&gt;Coursera: Intro to CS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I joined this course since May 2020, and I found this course a bit different from Havard&#39;s CS50. For starters, the course is from Princeton University and it is thought in Java. So I think this would a great exposure to Java since Java is one of my language bucket list. As per any intro to CS MOOC, their grading system for assignments is automated, and quite good. It has been a while since I grind myself doing algorithm questions, but so far so good.&lt;/p&gt;
&lt;p&gt;One immediate impression I have for Java is, the language is pretty strict in structuring the program. Each file must contain one class, and very minimum opportunity for programmer to do things their way. Since I come from a JS background, this impression is expected.&lt;/p&gt;
&lt;h2 id=&quot;google-cloud&#39;s-cloud-run&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/learning-update-jun-2020/#google-cloud&#39;s-cloud-run&quot;&gt;Google Cloud&#39;s Cloud Run&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I walk through &lt;a href=&quot;https://twitter.com/ernsheong&quot;&gt;Jonathan&#39;s&lt;/a&gt; ebook &lt;a href=&quot;https://gumroad.com/joncloudgeek&quot;&gt;Deploying Node.js on GCP&lt;/a&gt; and followed the step by step commands to deploy to cloud run. The ebook is pretty tight since it shows all main methods for deploying a nodejs application on GCP and highlights the pros and cons. Here is some of the topics you will learn in the ebook:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deploy to App Engine&lt;/li&gt;
&lt;li&gt;setup CI/CD (or in simple words, auto-deploy when you push to git master)&lt;/li&gt;
&lt;li&gt;deploy to Cloud Functions&lt;/li&gt;
&lt;li&gt;crash course on dockerizing your application&lt;/li&gt;
&lt;li&gt;deploy to Cloud Run&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the &lt;a href=&quot;https://magnoliav2-7zu4pzjkva-uc.a.run.app/&quot;&gt;result&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://mirul.xyz/img/magnoliav2screenshot.jpg&quot; alt=&quot;magnolia v2 screenshot&quot; /&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>2020 Résumé Review</title>
		<link href="https://mirul.xyz/posts/2020-resume-review/"/>
		<updated>2021-01-28T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/2020-resume-review/</id>
		<content type="html">&lt;p&gt;I was on a job hunt in early January 2021, so it&#39;s time to revise my resume. As per the last resume review, I did this résumé following this very concise guide from the &lt;a href=&quot;https://www.freecodecamp.org/news/writing-a-killer-software-engineering-resume-b11c91ef699d/&quot;&gt;freecodecamp blog&lt;/a&gt;. But this time, I also paid a friend that is quite senior in the IT industry to review my resume. He asked me to highlight more on achievements rather than just work that is done. Follow &lt;a href=&quot;https://www.inc.com/bill-murphy-jr/google-recruiters-say-these-5-resume-tips-including-x-y-z-formula-will-improve-your-odds-of-getting-hired-at-google.html&quot;&gt;the X-Y-Z formula&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://mirul.xyz/img/resume2020-1.png&quot; alt=&quot;resume 2020 part 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My friend also advises me to add a summary. Honestly, I did not put much thought into it, I just write up a quick paragraph summarizing my background and what are my strength. It is quite easy for me to know my strength since at Vase we have one-on-one sessions where I can ask for feedback.&lt;/p&gt;
&lt;p&gt;Working at Vase or possibly any early to mid-stage startup is recommended if you want to get your hands dirty on multiple things at once. For most of my interview sessions, I can talk a lot about my experience, challenges, what new things I learn, and how I contribute to the company. I am proud of working at Vase and will be forever thankful they took me when I have no professional experience in software development.&lt;/p&gt;
&lt;p&gt;Another part that I am excited to share with the interviewer is my projects. I did several pet projects but it is just for experimentation. But then, a friend of mine, a real estate agent told me his problem dealing with leads from Facebook leads, then I pitched him my idea to simplify his workflow. From that, comes the Faizal Property website, where it is a landing page for him to collect leads, with custom CRM. I enjoyed doing the work from planning out the features, to deploying it to production and see it being used. The other projects are a bit old now, I just bring them forward from my 2019 resume.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://mirul.xyz/img/resume2020-2.png&quot; alt=&quot;resume 2020 part 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I added an open-source and talks/activities section after reviewing some online resume samples from resume subreddits and also exchanging resumes with my friends. I believe it demonstrates that I am always open to learning something new and share my knowledge.&lt;/p&gt;
&lt;p&gt;On the training and education section, there are not many changes since now I am on the road to be a senior developer and tech lead, so usually, I learn using online resources and also learn on the job.&lt;/p&gt;
&lt;p&gt;I maintain the skills section as a catch all keyword section for online submissions, but also a summary of the technologies that I am familiar with.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Hello 2025</title>
		<link href="https://mirul.xyz/posts/hello-2025/"/>
		<updated>2025-11-11T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/hello-2025/</id>
		<content type="html">&lt;p&gt;Time for a new resume update.&lt;/p&gt;
&lt;p&gt;Since I joined SEEK, I did not write here much 😭. I spent my time on day to day work, so public posts stopped.&lt;/p&gt;
&lt;p&gt;Now I am updating my resume to include the work I&#39;ve done for now.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://mirul.xyz/img/resume2025-1.png&quot; alt=&quot;resume 2025 new parts&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I passed the AWS Solutions Architect Associate certification. It was challenging for me because I needed to balance work time and study time. But it was really worth it. I managed to fill some AWS knowledge gaps: main AWS services I did not really know before because they were not relevant for my past work or I never had a use case. I highlight this certification in my resume to show I can use cloud services, which now is a must-have skill for every web software engineer.&lt;/p&gt;
&lt;p&gt;Next, I added my SEEK roles and achievements. SEEK is the biggest company I have joined so far, and I learned a lot there, especially about working with people. Soft skill is harder to write, so I hope to show my maturity working with people during interviews and conversation. I also included some highlights from the SEEK teams.&lt;/p&gt;
&lt;p&gt;SEEK is mostly TypeScript, Node.js, and React, so I felt at home coding. The main part I needed to catch up when I joined was understanding how all the services work together. This takes a big part of planning a feature because we must make sure all related teams are on board.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>New Look for the Site</title>
		<link href="https://mirul.xyz/posts/redesign-2026/"/>
		<updated>2026-05-31T00:00:00Z</updated>
		<id>https://mirul.xyz/posts/redesign-2026/</id>
		<content type="html">&lt;p&gt;I finally gave this site a visual refresh. Here is what changed.&lt;/p&gt;
&lt;h2 id=&quot;the-background&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/redesign-2026/#the-background&quot;&gt;The background&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I drew a grass field in SVG and set it as the background wallpaper. It sits behind everything, fixed in place, with a gentle sway. In dark mode it dims so the text stays readable. I want the site to feel calm, like writing outdoors.&lt;/p&gt;
&lt;h2 id=&quot;the-design&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/redesign-2026/#the-design&quot;&gt;The design&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I stopped using Simple.css and wrote my own stylesheet from scratch. The layout is simple — a centered column for reading, a clean header, and not much else. Every color and spacing value comes from a small set of variables at the top of the file, so changing the whole look is just a few lines.&lt;/p&gt;
&lt;p&gt;The site now uses the Inter font, which is designed for screens and easy to read. It also has dark mode that follows your device setting automatically.&lt;/p&gt;
&lt;h2 id=&quot;other-small-things&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/redesign-2026/#other-small-things&quot;&gt;Other small things&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tags are now small pill shapes instead of rectangles&lt;/li&gt;
&lt;li&gt;Post summaries on the homepage are longer and do not cut off mid-sentence&lt;/li&gt;
&lt;li&gt;Code blocks look nicer with a card-style background&lt;/li&gt;
&lt;li&gt;I added Prettier so the code stays formatted&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-did-not-change&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;direct-link&quot; href=&quot;https://mirul.xyz/posts/redesign-2026/#what-did-not-change&quot;&gt;What did not change&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Eleventy still builds the site. GoatCounter still tracks visits without cookies. The RSS feed is still there. All the old posts and links work the same as before.&lt;/p&gt;
&lt;hr /&gt;
</content>
	</entry>
</feed>
