Tag: development

  • Siri-controlled DND 🎧 for my office room

    Siri-controlled DND 🎧 for my office room

    Pausing notifications on your phone is great. The iPhone’s Do Not Disturb (DND) feature is also great. Would it not be awesome if we had a DND for our room/office? Well, that was when I had an idea for a mini project.

    My nephews and I went to a local electronics store and bought some gadgets. I just bought the ESP32-C3, which has two USB-C ports.

    These were the steps I did in order. Of course, ChatGPT helped me every step of the way.

    1. I ensured the ESP32 was working by running a blinking sketch, which I created using Arduino IDE.
    2. I then created an on-off switch using the BOOT button on the ESP32. This would turn the LED to switch between Green and Red alternatively each time you press the BOOT button the the microcontroller.
    3. Then I connected the ESP32 to Blynk.
    4. Once it was connected to Blynk with the token, etc. I used three links:
      • One would turn the Green light on when a GET request is sent to it.
      • The other would turn the Red light on when a request was sent to it.
      • The third one would give the current status of the light.
    5. Then I did some configurations using Siri Shortcuts. They were:
      • Office Green: which would essentially visit the above link I spoke about followed by turning off Do Not Disturb on the iPhone/Apple Watch.
      • Office Red: which would essentially visit the second link above, followed by turning on Do Not Disturb on the iPhone/Apple Watch.
      • Office Switch: this would get the current status of the light. If the currentStatus was 1, it would run Office Green, otherwise it would run Office Red.

    The end result was something like this:

    In case you have any inspiring ideas for such projects, feel free to build on it and share to the world!

    If you find this post inspiring, I have done my job. If you asked yourself why not just close the door instead of this contraption? Well, then you have done your job of critical thinking.

    Cheers!

  • Create a “mini-app” using Core Gutenberg Blocks and some JavaScript

    Create a “mini-app” using Core Gutenberg Blocks and some JavaScript

    While it’s tempting to reach out to build a custom block every time you need custom functionality, it may not always be the best decision. Before committing to developing a custom block, it’s essential to evaluate the needs of your website.

    Custom blocks can offer flexibility and can provide a precise set of features tailored to your content. They can integrate with your site’s unique design system and provide custom experiences that generic blocks cannot. However, developing custom blocks requires time, expertise, and resources.

    You can use the core blocks alongside Gutenberg filters to customize its looks or behavior. You can also use block variations to create a slightly different way of utilizing the same core blocks. Or, if you want to change the look of the core blocks, you could employ block styles to achieve it.

    Having said all that, what if your requirements differ from the above? What if you want the flexibility of creating using the block editor, utilizing any color and style you want? But you also need to make that bit of HTML you built behave precisely how you want.

    The following is my take on using core blocks with some custom JS sprinkled on them to create a mini-app.

    Demo

    This is a Stopwatch mini-app that uses some blocks and JavaScript. You can play around with its functionality:

    00:00:00:000

    [wpcode id=”58153″]

    Now, let’s explore how I built this.

    The Blocks Used

    In this website, I use the Twenty Twenty Four theme.

    The above demo uses the following blocks:

    1. Group
    2. Stack (a variation of the Group block)
    3. The Icon Block by Nick Diego (not compulsory but used for aesthetics)
    4. Heading
    5. Row (a variation of the Group block)
    6. Buttons and the Button block

    The code for it looks like this (you may copy it to your WordPress site as you wish):

    https://gist.github.com/m-muhsin/d20b21c3765e5b913cd39b05a54b89b4

    You might notice I have used a few class names. This is so that I can use JavaScript to select those elements.

    After adding the above HTML and Block markup into this post, I wanted to add some JS.

    While I built the script locally using an enqueued .js file, I wanted to see if I could do it any other way on the website. Thinking about it, lead me to the WPCode plugin, which allows you to add a snippet of code at the place of choice.

    The JavaScript

    This is the JS I added via a Shortcode using WPCode:

    https://gist.github.com/m-muhsin/a685d5bed947020407dc802ecc0ffe4c

    That’s about it really!

    Some thoughts

    This idea that I presented is familiar in the WordPress world. We have used HTML generated using the classic editor coupled with enqueued JavaScript to power up custom experiences for ages.

    Also, this idea is excellent for when we need to add Google Analytics scripts, for example. We can have buttons with a certain class name and use a global script to target all those buttons to then add tracking scripts to them.

    Hope this small demo and explanation helps anyone out there!

  • What Makes up a Gutenberg Developer?

    What Makes up a Gutenberg Developer?

    This article contains 3 things:

    1. A brief introduction to Gutenberg and its purpose of existence
    2. Introducing the Gutenberg Developer and their skillset
    3. How to become a Gutenberg Developer

    Gutenberg, which started off as the codename for the new WordPress Block Editor has been used to define many things. The new editor has been built to replace the previously used TinyMCE editor which has been in WordPress for a long time. Gutenberg started off as a plugin and was merged into WP core in WordPress 5.0 which was 5 years ago. Time flies, right?

    Coming back to the point. Gutenberg has been used to define the following items:

    1. The plugin that was built to replace the “Classic Editor” also known as the TinyMCE editor. Unfortunately, it has a very low rating on the WordPress plugin repository. As a developer, it’s difficult to understand the hate for this plugin, but it is what it is.
    2. The “content editor” which replaced the post/page editor which was using TinyMCE.
    3. The Full Site Editor also known as the “site editor”.

    Now, Gutenberg has 4 phases:

    1. Content Editing, which was started in 2018 with WP 5.0
    2. Site Customization, which started last year with WP 5.9
    3. Collaborative Editing which is being worked upon
    4. Multilingual Support which is scheduled next

    Replacement for page builders?

    Although it did not start off as as replacement for page builders when first released, it has become so. Since the site editor allows you to replace every bit of the site using blocks, isn’t Gutenberg essentially another page builder? That’s what I believe so. It’s not “just another” page builder. But it is the de facto page builder that is built by the team building WordPress core. In other words, if you want to use the default way of page building / site building, you are best off choosing Gutenberg,

    Atomic in nature?

    Another important point we must realize is that Gutenberg has atomized the aspects of site building. The idea is that the site is broken down into smaller and smaller pieces of blocks until you get to the smallest “single block”.

    A group of blocks can be categorized as the following:

    1. Block Pattern (synced and unsynced)
    2. Block Template Parts
    3. Block Themes

    I first saw this idea in WordPress, but other CMSs (primarily Headless CMSs) also have adapted this idea of slicing up the site into atomic pieces or blocks (as referred to in WordPress).

    Gutenberg Developer 101

    This is a popular job role within the WordPress space. It is still a hot and trendy job title although it’s been over 5 years since we first heard of Gutenberg. So, what makes up a Gutenberg Developer? Let’s find out!

    I created this Venn Diagram to represent what I believe makes up a Gutenberg Developer.

    It essentially comprises of the skills of the following 3 job roles:

    1. WordPress Developer
    2. React Developer
    3. Frontend Developer

    You might think that’s a lot of things to learn just to be able to do one job role. Well, that is not the case so!

    How do I say that?

    For example, if you have rudimentary WordPress skills, but are very good at React, you can still do a lot by reading about the Gutenberg documentation and learning the WP REST API as well as brushing up on CSS.

    If you are a WordPress expert, but have basic React skills, that’s more than enough. Because building blocks requires little React knowledge to get started.

    Likewise, if you are a frontend developer strong in CSS and JS, you might have to learn some React and the WordPress knowledge necessary to build blocks or a block theme.

    In other words, you do not need to ace all 3 of these roles just to be able to build with Gutenberg.

    So, what skills do you need to get there?

    Gutenberg Developer skills

    Matt Mullenweg said in 2015, “Learn JavaScript Deeply”. It still stands true. You need to know JavaScript. I believe most WordPress developers and Frontend Developers already know JS. React Developers definitely know it since React is a JS library.

    Apart from JS knowledge you might need these core skills to work with Gutenberg:

    1. React
    2. Some basic build config knowledge like webpack and friends
    3. PHP
    4. HTML + CSS
    5. JSON

    How do I learn to become a Gutenberg Developer?

    There a few aspects to becoming a Gutenberg Developer.

    For example, you can build individual blocks or be able to build block themes, or plugins that house multiple blocks to solve specific problems.

    For example, the Jetpack plugin uses an array of blocks to solve niche problems with content creation. Twenty Twenty Four is an example of a block theme – a theme built entirely out of blocks.

    There are a few resources I can recommend to learn these:

    1. Gutenberg Blocks for WordPress and React Developers by Ali Alaa – this is a great course for someone who has knowledge of React and WordPress but wants to speed up their learnings with block building.
    2. The Block Theme Academy by Fränk Klein – this is an awesome set of courses to be able to build out block themes, the right way.

    I have taken both these courses and have found them to be very helpful.

    Getting a job as a Gutenberg Developer

    There are many companies hiring for this role. WordPress development agencies look for these folks with this skillset as they need to build client sites and apps that make use of Gutenberg.

    So are product companies looking for these roles. Product companies need to “blockify” their products sooner or later. If their products do not play nicely with the block editor, it could mean death to their product as more and more users adopt the new block editor and move away from the Classic Editor.

    Theme shops also need Guetenberg Developers as they start to replace classic themes with either hybrid themes or block themes.

    Mindset of a Gutenberg Developer

    As Gutenberg Developers, we need to think of future/modern WordPress sites as pieces of a blocks inside blocks inside blocks, up until we reach a single block.

    What makes up a block? They can be made using PHP or JS. The editor side is mostly written using React. The frontend uses a React-like structure, but is not, in fact, React that powers it. It gets serialized to HTML. You can also use PHP to replace the frontend code, which I quite like because of the power of PHP within the context of WordPress. I will stop here because speaking at length about this topic is cannot be covered in a single blog post.

    Having said that, it’s important to decide which language to use where. You can even use React by enqueueing it to the fronend and make use of its dynamic nature to build complex UIs. However, it’s better to use PHP and vanilla JS as much as possible before reaching out to React for the frontend.

    Here is an architecture diagram of a block:

    It looks quite complex to understand. But you will soon realize how it works once you start working with it.

    Some helpful resources

    Here are some resources that can help you start off in this journey:

    1. WordPress Builders playlist by WP Engine Builders YouTube channel
    2. Block Editor Handbook as a reference point
    3. Jamie Marsland’s YouTube channel
    4. Tutorials by Bill Erickson
    5. The writings of Rich Tabor
    6. The works of Nick Diego

    So, you want to become a Gutenberg Developer?

    If you have read up to this point and want to become a Gutenberg Developer, here are some steps you can take:

    1. Learn as much as possible from the courses and resources listed above.
    2. Build out a simple block using block.json. This is a helpful tutorial.
    3. Build more blocks!
    4. Build out a basic block theme
    5. Apply for jobs
    6. ???
    7. Profit

    Let’s keep in touch!

    I hope you found this piece helpful. Let me know if you’d like me to cover another similar topic, or something else you’d like to read!

    If you have questions about blocks or block themes or want to get in touch with me, feel free to reach out! I am also active on X and LinkedIn if you want to follow me over there. I also provide consultancy as a Gutenberg Developer, so feel free to get in touch!

  • Hello Sketch Block

    Hello Sketch Block

    Hello folks 👋

    This is me trying the new Sketch Block from the Gutenberg Block Experiments project.

    (more…)
  • Falling in love with boredom

    Falling in love with boredom

    I had a phone call yesterday with someone I admire. We were speaking about various matters. Then the discussion came down to my career and how I got to be where I am. We were discussing the significance of a college degree to a successful career in software engineering.

    (more…)
  • Footer to bottom of page

    We need the page footer to be at the bottom of the page. However, it should not always stick to the bottom of the page either i.e. when there is more than one page worth of content.

    Thanks to flexbox, this is not so hard after all.

    (more…)

  • Shortcodes and Meta Boxes in developing a WordPress theme

    I was fortunate to attend the meetup #4 titled ‘Meta boxes and Short Codes for Theme Development’. This event was organised by the WordPress Colombo Meetup group and held on 21 July 2016 at JKCS Auditorium, Colombo.

    WP meetup #4 (more…)

  • Risk Management in Software Development

    This is a report I wrote for a course at college. The reading that went into preparing and writing this helped me manage my own final project for college.

    (more…)

  • Hybrid Mobile Apps with JavaScript – a meetup

    The ‘JS in Mobile App Development’ meetup was held on 17 March 2016 at WSO2, and I was fortunate enough to attend this event with my friends.

    Ionic vs React

    (more…)

  • A quick look at the Onion Omega!

    Those of you who have worked with or heard of the Raspberry Pi know how awesome the tiny device is. The power of a full blown computer was literally in the palm of your hand, allowing you to experiment with cool projects and get your ideas and experiments to shape.

    Onion Omega package
    Onion Omega package

    (more…)