Customizing WordPress to work like Confluence

The image shows a smooth transition from the blue and white confluence logo, which consists of two overlapping circles and a letter C, to the blue and white wordpress logo, which consists of a stylized W inside a circle. The image conveys the idea of changing from one platform to another, or integrating them together.

At Homeville, when we started active product development, JIRA and Confluence were our go to tools. As the technology team grew from a 4 member team to a 65+ member team, one of the things that became a slow burn for me was to see the monthly user-wise licensing model for both of these tools.

JIRA was free for the first 10 users, then for the next 40 odd users that we added, we were paying roughly 400 USD per month! Similarily, Confluence was free for the first 10 users, but at a team of 40 or so, our bills from Atlassian was matching our bills from AWS!

Shifting from Atlassian

One of the quickest shifts we did was to find an open source self hosted version of JIRA. OpenProject was the perfect solution. The benefit of self hosting these systems was that access to all the proprietary analysis and research in the form of features and requirements was now within our AWS account and thus in a much more secure environment. The added benefit of localization within the country also meant any form of regulatory compliance was also much better aligned.

It took some scripting, but using a python script to connect to JIRA and OpenProject (OP) both, we were able to import the projects, tickets and sprint informations from JIRA to OP.

Wiki or independent system

One of the key decision that we had to undertake was to see if the documentation was to be done within the OP, or was it to be hosted separately? One option was to continue with Confluence albeit under a smaller user base.

We finally decided to try things with a self-hosted WordPress. However, we did tweak quite a lot of things, listing all of these.

Customizing WordPress

Going into this project, I knew that this would be a continuous evaluation and test work. Sort of a rinse and repeat exercise. Hence, choosing WordPress was the obvious choice.

Custom Taxonomies

We setup PODs because of its ability to quickly add custom post types, custom taxonomies and easy relationships between the two. Using this we could easily keep a separate taxonomy for our credit platforms and systems.

Authorization and Access

Since we were on Microsoft o365, we setup an active directory plugin to enable tech team users to login using their o365 credentials. This also seamlessly created their user ids on WordPress and enabled access without the trouble of invites and importing users.

We also wanted a login gate to enable authorized access to our content. Thus a simple membership plugin to restrict content access was setup.

Similarly, we also setup a plugin that disabled the REST API so that the content wasnt available over unauthorized REST API calls.

We also setup a NACL rule on our AWS to prevent access to the system outside the office premises.

Integration with OpenProject

We also setup easy shortcodes that would pull data from OpenProject agile sprints and display those within a post, allowing for product teams to create east release notes followed by the sprint backlog with links to the OpenProject stories.

This was done using a custom plugin integration that we wrote. Obviously this could not have been possible without OP not having a REST API.

Document Templates FTW

This entire process would not have been successful without the new WordPress editor and its ability to create document template types within the post.

We took our most commonly used Confluence templates and set them up exactly in the same manner in WordPress. This enabled our product teams to seamless shift from Confluence to WordPress.

The fact that most discussions can also be captured as minutes with the exact time of publishing as the time when the meeting occurred also meant that we could also have a temporal view of our product development.

Thus with these simple and easy tweaks we shifted from Confluence to a self hosted WordPress.

WordCamp Ahmedabad 2023

After attending WordCamp Mumbai this year, I decided to keep attending more WordCamps throughout India. As luck would have it, Ahmedabad was just around the corner and I did my booking. WordPress is also used as a quick fix for landing pages in advertising, and hence I thought it would be a good exercise for Harshaja to attend, hoping that she meets some competent (and affordable) WordPress agency to handle the development side of things at 13 Llama‘s end. That, and the super interesting schedule that Ahmedabad had put up.

Getting to Ahmedabad

We chose to take the early morning flight to Ahmedabad. That just meant that the day of the event would be super long for us. Since we hardly knew any folks in the city, this was an easy decision to make. I personally wanted to stay and do some site seeing in this city, but no harm – we could always hop by on one of our annual trips to Vadodara.

The flight was short and getting off the airport and into the cab was one of the smoothest exits we have had. Carrying everything in an overnight handbag does have its advantages!

Venue: Babasaheb Ambedkar Open University

One of the supercool things that struck me during this event was the way Babasaheb Ambedkar Open University (BAOU) was setup. Within a 30 minute drive from the airport, the venue is a sprawling university campus that had access to multiple halls, classrooms, and a great open space where the attendees could congregate in.

I honestly cant imagine the cost of such a large sized venue in Mumbai.

Attendees

We thought that instead of checking-in at the hotel, we would directly attend the event and during the breaks in the afternoon do a quick run to the hotel and finish the checkin process. Thus we directly stopped over at the BAOU campus.

At a little bit earlier than 8am, I was expecting the organizers to be just about gathering and deciding on how they want to execute the rest of the day. To my surprise, there was the beginnings of a crowd already gathering.

What ended up as a small crowd quickly grew to a large congregation, with over 1100 attendees, the WordCamp Ahmedabad 2023 was the second largest WordCamp in Asia, second only to WordCamp Asia!!

I could not help but compare this large audience to what we had in Mumbai. This was more than double the audience of Mumbai and then some!

Talks and Speakers

One thing that always strikes me is that every WordCamp I learn something new. Something that helps me in the future years. Even this time, one of the highlights of the event was the last talk by Nirav Mehta. This one was on public speaking and one of the reasons why I had made sure that the both of us were there to attend.

Some of the other notable talks were on Link Building by an agency owner, Custom Blocks by Amartya Gaur, Yoast’s acquisition by Chaya Oosterbroek. It’s uncanny that even when my functional domain has completely changed, I still took a bunch of learning back from the event!

Ahmedabad, you beauty!

As the day came to an end, I could not help but get overwhelmed with the vibrant PHP developer community that I could see in Ahmedabad. It’s definitely larger and more vocal than the Mumbai community and thus would always be one of the factors for us if we were to open a secondary development office. In fintech, I am seeing more companies shift their technical operations to T2 and T3 cities like Ahmedabad and how!

આવજો

WordCamp Mumbai 2023!

Back in 2015, when Mumbai WordPress meetup was kicked off with enthusiasm, I did not dream of this thing catching on and becoming something special. It was a good gathering of some pretty cool folks enthusiastic about WordPress. In 2014, my own understanding of WP was pretty smattering and thus it was with a bit of trepidation that I decided to attend a meetup in 2014.

This was our second year at 13 Llama, and it was pretty much the time when we had chosen to focus on WordPress as our primary stack. Earlier, we had done some development projects which were all over the place – Node, Core PHP, Smarty, Yii, Cake … we were all over the place and having found WP, it really did feel like home.

Mumbai WP Junta

Over the period of a decade, there are some familiar faces which have remained as part of this WordPress meetup. Some who have moved on and some who have faded into oblivion. But there are those few who have been a steady set of community leaders and built this friendly community of WordPress fanatics.

A whole lot of them are directly working with WP, but a bunch of these cool people just happen to use WP and have built some pretty cool things with it.

The hiatus

After we closed down 13 Llama Studio and the development arm, one of the things that I did miss is the conversations around WordPress and this community. Over the years, as I was busy in building out the technology at Homeville, I steered away from WP. At Homeville, we were using WordPress as a headless content management system (CMS). That’s it.

As our CMS requirements grew more complex, we kept stretching what WordPress could do for us. Over the next 5 years or so, a strong solid conviction grew that having a headless CMS is pretty much a no-brainer for most product organizations. It saves so much of time!

After COVID, most of the meetups and WordCamps had come to a stand still, however, this year the community reached out and setup a meetup and the organization for Mumbai WordCamp 2023

Mumbai WordCamp 2023

Coming back to attending WordCamps after so long was a great experience. Most of the organizers and regulars are known faces and thus, catching up with them after close to a decade was like meeting old friends and making some new ones!

The one thing that this community has taught me is that there are so many things to learn about a topic that you would want to include pretty much everyone in the conversation instead of just speaking to the devs! I remember the early days of this community when there used to be some pretty heated debates on who is better – the maker or the user! Thankfully people have matured :)

This year, I thought I would speak about our headless CMS and the pros and cons for the same. The talk went well – honestly, I thought that this topic would be considered a done and dusted kind of thing, however, much to my surprise a fair number of attendees were hearing for this for the first time.

Always learning

One great thing that I love about attending WordCamp is that you always get to learn something new! This time around, there were discussions on template parts, custom templates, how to contribute to WordPress without writing a single line of code, how to do public speaking (super useful!) and also an insight into the recent DPDP Act of India!

Seeing this trend continue, I decided to ensure that instead of focusing on financial technology only, attending these events and then applying the learning would help!

My slides on headless CMS

Now on to WC Ahmedabad!

How to setup Microsoft Word to post to WordPress

For those bloggers who publish directly to WordPress, life has been good. Especially after the Gettysburg editor, users got a live site, rich text editor which just worked. The user experience is very much like the much loved Medium editor and for quite some time this was the default mode in which I used to publish. Not that I write frequently these days! In fact, this post is after an hiatus of more than a year! One pet peeve I have with the existing WordPress editor is that in the aim of making writing easy, a lot of the advanced options have been hidden. Somehow it ticks me off and I haven’t been able to write as much as I wanted to.

Perhaps it was writers block, or a busy schedule, or just being plain lazy. I have no excuses for this and in future will try and be much more regular. However, this post is not about my lack of writing, its about this cool feature that I recently found about in the MS Office suite. Microsoft Word has always been a major editor for most individuals (be it a student or a professional). Would it not be super cool if we can somehow directly publish to our blog from MS Word? Let’s find out how!

Step 1: Create a new document

Open your MS Word (as long as its higher than version 2007), and search for a new document type – blog post. You will find this in templates and more if you haven’t earlier done this. Once you find the template, you will notice that there is a Create button.

When you set this up, Office will prompt you to setup your blog. Click on Register Now. This is where its going to get a bit technical, but don’t panic.

Step 2: Register your blog

In this list, choose WordPress. Now, you need to know the URL of your self-hosted or WordPress.com website as well the username and password that you use.

Add these details and make sure to click the Remember Password, else every time you try to publish to your WordPress site, you will be asked to key in the password.

Step 3: Write a draft

You are now done! Start writing your blog post, and once you are done, hit publish!

The post would then be submitted to your WordPress site with your credentials. That’s all there is to it.

Why ChatGPT is going to change inbound marketing

AI content creator generated using DALL-E

GPT-3 (short for “Generative Pre-trained Transformer 3”) is a language generation model developed by OpenAI. It has the ability to generate human-like text, which means it could potentially be used for a variety of purposes, including inbound marketing. However, it’s important to note that GPT-3 is still a tool, and its effectiveness in any given situation will depend on how it is used.

One potential use of GPT-3 in inbound marketing is to generate chatbot responses. Chatbots are automated programs that can communicate with customers through chat or messaging apps. They are often used to provide quick, convenient responses to customer inquiries or to help guide customers through a process, such as making a purchase.

With GPT-3, it’s possible to train a chatbot to generate more natural, human-like responses to customer inquiries. This could make the chatbot more effective at providing helpful information and improving the customer experience. It could also help to improve the overall efficiency of inbound marketing efforts by allowing businesses to handle a larger volume of customer interactions.

However, it’s important to note that GPT-3 is not a replacement for human interaction. While it can generate human-like text, it is not able to fully replicate the nuance and depth of understanding that a human can bring to a conversation. In addition, it’s important for businesses to carefully consider the ethical implications of using AI-powered chatbots and to be transparent with customers about the fact that they are interacting with a machine.

Overall, GPT-3 has the potential to be a useful tool for inbound marketing, but it should be used thoughtfully and with the appropriate safeguards in place.

Safeguards to consider

When using GPT-3 (or any other AI tool) for inbound marketing, there are a few key safeguards that you should keep in place to ensure that you are using the tool ethically and effectively:

  1. Be transparent: Make it clear to customers that they are interacting with a chatbot or AI-powered tool, rather than a human. This will help to avoid misunderstandings and ensure that customers are aware of the limitations of the tool.
  2. Set clear boundaries: Define the specific tasks that the chatbot will be responsible for, and make sure that it is not able to engage in inappropriate or sensitive conversations.
  3. Monitor and review: Regularly review the chatbot’s responses to ensure that they are accurate, appropriate, and helpful. This will help to identify any potential issues or areas for improvement.
  4. Seek feedback: Ask customers for their feedback on their experience with the chatbot, and use this feedback to make any necessary adjustments to improve the customer experience.
  5. Stay up to date: Keep up with developments in AI and chatbot technology, and be mindful of any ethical concerns or best practices that may emerge.

By following these safeguards, you can ensure that you are using GPT-3 (or any other AI tool) in a responsible and effective way to support your inbound marketing efforts.

Conclusion

In conclusion, GPT-3 is a powerful language generation model developed by OpenAI that has the potential to be used for a variety of purposes, including in inbound marketing. It can generate human-like text, which means it could potentially be used to improve the efficiency and effectiveness of chatbots and other AI-powered customer service tools. However, it’s important to use GPT-3 (or any other AI tool) thoughtfully and with appropriate safeguards in place, including being transparent with customers, setting clear boundaries for the tool, regularly reviewing and monitoring its responses, seeking feedback from customers, and staying up to date on developments in AI and chatbot technology.

PS – This entire article was generated by ChatGPT. Not a single word in this is mine. Enough said.

Nitropack review

Those of you who are running some sort of a content management system (CMS) for your websites would be familiar with the problem of improving the site loading speed through different methods. From the age old caching methods of using op cache module, to using an application specific caching method such as WP-Supercache for your WordPress installations, the sheer variety of solutions out there is a lot.

For a non-tech webmaster (these days, this term seems like a conundrum!), it becomes difficult to choose. At the end of the day, what one ends up going for is how fast the website is loading and more importantly how is the web performance of the site.

Let’s take a look at what are some of the common factors that any webmaster would like at for their caching solution.

Server site rendering time

This is effectively how fast is your server giving the response on the browser. Let’s say that you are running a blog on a small instance or a shared hosting solution. This would usually have limited resources associated with it, be it computing or memory. For instance, currently, these pages are being served off a 512 MB droplet.

Needless to say as your traffic increases, these limited resources are then not enough to address the entire traffic and thus, the response time for all your visitors starts to increase. A simple solution for these problems could be to bump up the hardware and increase the computing and memory being made available for the server. The computing speed is obvious, but why the memory you might ask? Well, since most web servers are softwares running on servers (for e.g Apache or Nginx are the servers most commonly used for WordPress), these software processes have to run on the server. The more the traffic, the more the number of processes.

If you are running WordPress and are facing a load of traffic, and if you are running your database on the same server, then you might sometimes be seeing images like the one below –

MySQL error with WordPress

Seems familiar? A common reason for this is when there are too many apache2 processes and not enough memory to handle all of them. The server promptly terminates the other processes, including the MySQL daemon.

Caching to the rescue

This is where server side caching comes to the rescue. Take this blog post for instance. How many times in the week am I going to edit this? Not many right?

In which case, instead of the PHP script executing every time, why can I not serve the static (HTML pre-rendered) version of this post?

WP-Supercache does a good job as a plugin to do this, however, in this case, for supercache to execute, the WordPress PHP scripts are still executing. How can we stop those?

Another option would be to run caching at Apache or Nginx’s level. This is a much better approach since instead of calling PHP scripts, the server will serve the last known cached static file. The problem with this approach is cache management and storage.

With a small server, you may not have a lot of storage, and if you have been maintaining a content heavy site, then caching all pages might be a storage intensive process. The expectation from your instance’s compute power also increases.

This is where you will find reverse proxy servers shining.

Reverse proxy servers

A reverse proxy server is a server that sits in front of the web servers and forwards client requests. One of the older versions for PHP based websites was Varnish. Nginx also offers this, and newer versions of Apache also do offer this functionality.

What the reverse proxy does is for each request, it caches the response from the down stream server and serves that response for each subsequent request. Think of it as a smart cache manager that sites seamlessly between your CMS and the user.

Traditionally, these were a bit difficult to setup, and therefore were the domain of only the tech oriented webmasters. However, of late, there have been a couple of smart SasS based reverse proxies, and that’s what I wanted to write about.

Cloud-based reverse proxies

A cloud based reverse proxy is a reverse proxy server that’s not on your network/server infrastructure, but rather hosted as a separate service that you choose to buy.

I had initially tried Cloudflare, but wasn’t really impressed with the results. There were a couple of Indian service providers as well, but the outcome wasn’t that great.

Then, one of my colleagues pointed me to Nitropack. Getting started with Nitropack was a breeze and I could easily set this up. There was also a plugin to be installed in my WordPress setup and that’s about it. Nitropack even had a CloudFlare integration (since I manage my DNS on CloudFlare), where it made the relevent DNS entries and I was able to use this without too much of a hassle.

I am currently on the free plan, but the immediate impact on my server response times, and my web performance has been substantial.

If you are a website owner and if you have been harangued with web performance issues, do give this solution a try. It makes a sufficient impact on your response times.

Getting started with R

Back in 2017-18, I started teaching a course in a business school – instead of including a lot of theoretical frameworks, I opted to go with the basics and some implementation and tooling concepts. One of the tools that I chose to teach was how to use R in business analytics.

For those of you who do not know R, here is a helpful wiki article on the same.

Teaching what is broadly a scripting language to graduate students who havent written a single line of code is a humbling experience. You cannot take concepts such as variables, control loops, libraries as taken for granted since the exposure to these has been minimal. So how does one pack all that information into simple, usable instructions?

This is what I did.

Use free MOOCs

For students to understand the basic concepts of R – vectors, assignments, matrix, simple functions, etc, I prefer free MOOC such as the Introduction to R by Datacamp. The course is simple, it has the R ide within the practice area and allows for easy practice sessions and a playground to test your scripts while you are reading through the course material. I find this super useful for application oriented courses.

Right before jumping into the actual concepts of how R can be used for business analysis, this basic introduction course helps in establish a good solid base for participants who want to get started with R.

Use multiple datasets

I typically start these sessions with a financial data set. Credit card usage statistics, or some such information. However, I realized that students do better if they are able to relate to the date. During the length of the course, I found that switching to a course such as movie data (and thanks to IMDB for opening up their database) or cricket data made a lot more sense. It became easier for the participants to apply conceptual learning on the data sets.

See and Do

We used to incorporate several practice sessions in the class. This included getting the basics, writing scripts and getting started with R.

Some of the easier ways are –

  1. Use the R-Studio IDE installer
  2. Use the Anaconda Navigator
  3. Use an online tool like Rdrr