Extracting text from a PDF is usually straightforward when it’s in English and doesn’t have embedded fonts. However, once those assumptions are removed, it becomes challenging to use basic python libraries like pdfminer or pdfplumber. Last month, I was tasked with extracting text from a Gujarati-language PDF and importing data fields such as...
Indie bloggers are on the constant lookout for tools that simplify their work while keeping costs low and user experience seamless. One of the most overlooked aspects of running a blog is finding the right comment hosting system. Enter giscus, a modern solution that stands out among its peers for being lightweight, privacy-friendly, and free to...
There is no doubt that over the last few years, Agile methodologies have gained prominence as a means to foster flexibility, innovation, and responsiveness to change. However, beneath the surface of this seemingly effective approach lies a troubling reality: the emotional toll it can take on teams. This article delves into the impact of Agile...
Modern development ecosystems thrive on code reusability, and packaging systems like PyPI for Python and Composer for PHP play a significant role in this narrative. With a simple command, developers can integrate a multitude of libraries, shaving hours off development time and leveraging the work of countless open-source contributors. However,...
In the ever-evolving world of web development, the ability to manage complex data structures efficiently is vital. JSON (JavaScript Object Notation) has become a standard for data exchange due to its lightweight format and ease of use. If you’re working with PHP and MySQL, understanding how to store and retrieve JSON data can greatly enhance the...
When dealing with vast amounts of data in PHP, the challenges are not just technical but strategic. Efficiently managing large datasets ensures that web applications remain fast, responsive, and user-friendly. In this guide, we’ll explore essential practices such as pagination, batch processing, and crafting efficient SQL queries. Why handling...
In the rapidly evolving world of technology, we often celebrate every new tool, library, or framework as a breakthrough. Headlines scream about the “next big thing” in coding, and developers rush to adopt the latest trend, eager to stay ahead of the curve. But amidst this frenzied pace, an unsettling pattern has emerged: the cycle of...
Managing a high-traffic website effectively requires a robust and well-optimized backend to handle the surge of concurrent requests, minimize server load, and ensure a seamless user experience. PHP and MySQL, being a popular tech stack, offer various strategies and best practices to optimize performance. This guide explores key caching...
Language is a living, breathing phenomenon, evolving with society’s changing values, technological advancements, and cultural shifts. The transition from “My Computer” to “This PC” serves as a fascinating example of how linguistics have shifted toward branding and consumerism, rather than focusing on individual identity. This article dives deep...
In this in-depth guide, we’ll cover how to create a dynamic airline ticket booking system using PHP and MySQL. This system will allow users to search flights, view availability, book tickets, and manage bookings. We’ll also highlight best practices for building efficient reservation systems, including user authentication and secure data handling....
Enterprise Resource Planning (ERP) systems are the backbone of countless organizations, promising seamless integration of business processes, improved efficiency, and centralized data management. Yet, the glitter of ERP solutions sometimes conceals a harsh reality: the promise of “one-size-fits-all” is often a myth. While ERP systems claim to be...
Object-oriented programming (OOP) has been hailed as the savior of the software world, promising more manageable codebases and scalable applications. From encapsulation to inheritance, the paradigm offers a toolkit that is designed to make developers’ lives easier. Yet, over the years, OOP has gained its fair share of critics who argue that the...
In an age dominated by rapid technological advancements, it’s easy to forget the original purpose behind the creation of technology: to enhance human potential, address pressing societal challenges, and drive progress. As we forge ahead, however, there’s a growing concern that innovation is increasingly motivated by novelty rather than utility....
Agile methodology, lauded for its adaptability and responsiveness, has revolutionized the way software development teams operate. However, beneath the surface of its acclaimed flexibility lies a paradox: the very principles that enable Agile’s success can also give rise to chaos when not properly managed. This article delves into the limitations...
Asynchronous programming is an often misunderstood yet crucial concept in modern software development. While traditionally associated with JavaScript or Python, asynchronous programming is just as powerful and relevant in PHP. In this guide, we’ll explore the foundations of asynchronous programming, why it matters, and how PHP developers can use...
Web and software developers are more empowered today than ever. But there’s a growing problem: the increasing reliance on frameworks, libraries, and pre-packaged solutions. Frameworks like Laravel, React, Angular, and Django have become household names, not just for their ability to streamline development but also for their role in reshaping how...
In today’s fast-paced development environment, efficient project management is crucial for the success of any team. While tools like Asana have gained popularity for their ease of use and robust features, they come with limitations such as subscription costs and lack of flexibility. Thankfully, the open source community has stepped up to provide...
As digital threats evolve at an unprecedented pace, robust cybersecurity measures have become more critical than ever. Open source security projects stand at the forefront of this battle, offering powerful tools that empower organizations to protect their data and infrastructure. These projects promote transparency, encourage collaboration, and...
Linux has long been celebrated for its commitment to user control and freedom. However, the rise of modern packaging systems like Snaps and Flatpaks, with their mandatory updates, poses a significant challenge to these core principles. This article delves into the implications of forced updates, highlighting how they disrupt user autonomy,...
Icons are an essential part of modern web development, providing visual cues that enhance user experience and making interfaces more intuitive and appealing. However, choosing the right set of icons involves considering both aesthetic appeal and licensing terms. In this article, we’ll explore three primary sources for web development icons: truly...
In the ever-evolving world of technology, open source software stands out as a beacon of collaboration, creativity, and community spirit. As developers dive into the realm of open source, forums play a crucial role in facilitating discussions, sharing knowledge, and fostering innovation. This guide will explore the significance of open source...
In the digital age, technology has become an indispensable tool in education. Open-source software, with its free, accessible, and collaborative nature, offers a powerful means to revolutionize teaching and learning. This article delves into the ways in which open-source solutions can empower both students and teachers, fostering a more...
Welcome to the enchanting world of PHP! If you’ve ever dreamed of crafting your own web applications, managing databases, or simply adding a dash of interactivity to your website, you’ve stumbled upon the right place. In this article, we’ll explore some simple yet magical PHP programs that will serve as a fantastic introduction to this versatile...
Welcome to the wonderful world of Python programming! If you’re new to coding, buckle up because Python is one of the easiest, yet most powerful, languages out there. Whether you’re looking to automate tedious tasks, build web apps, or dive into data science, Python is your gateway to coding success. In this beginner’s guide, we’ll walk you...
Are you new to LibreOffice Calc and eager to master spreadsheets? Don’t worry—you’re in the right place! Whether you’re a student, professional, or someone who just wants to organize their life better, LibreOffice Calc has got your back. It’s not just an alternative to Excel; it’s a powerful, open-source tool that can help you tackle everything...
Creating dynamic web applications often involves interacting with a database. One of the foundational elements of web development is the ability to perform CRUD operations: Create, Read, Update, and Delete. This tutorial will guide you through core PHP CRUD operations, helping you understand how to manage data effectively in your applications....
PHP is a powerful scripting language widely used for web development, but like any language, it’s easy to run into errors that can be frustrating to debug. While some errors are simple and easy to fix, others may be a little more complex. This article covers some of the most common PHP errors and offers solutions to help you resolve them quickly....
In today’s data-driven world, the performance of databases is crucial for applications, businesses, and users alike. As databases grow in size and complexity, the need for efficient data retrieval becomes paramount. One of the most effective strategies for enhancing database performance is indexing. This article explores the role of indexing in...
PDF generation and processing is a common requirement in many web applications, especially for generating invoices, reports, or documents dynamically. PHP provides various libraries to handle PDF creation, manipulation, and extraction. In this article, we will evaluate the most popular PHP libraries for PDF handling, breaking down their pros and...
Without Google Fonts, our typography would be in limbo! Now, I’m neither a web designer nor have an eye for the pixel perfect and aesthetic design which a pro designer usually does. Instead, my usual workflow is to cobble together web components like bootstrap, jquery, codeigniter, etc. and try to build something useful out of it. .Rubik...
PHP 8.x is filled with hidden land mines which can suddenly trip the unaware PHP coder, especially when porting from legacy frameworks like CodeIgniter or CakePHP to PHP 8.x systems. One such issue is PDO’s default exception handling method. Prior to PHP 8, PDO’s default exception handling mode was PDO::ERRMODE_SILENT which means our apps...
I wanted to implement a comment hosting system for my static blog https://prahladyeri.github.io, just basic Wordpress.org style commenting feature with user’s name, website, etc., no complicated logins or sign-ups or third-party platforms. The user reads your blog, posts a comment, and you approve from the backend (or alternatively, it gets...
The usual way of installing composer packages with composer require is the standard. But occasionally, we might want to install the packages from our local computer to save Internet bandwidth or some other reason. Unlike Python’s pip, PHP’s composer doesn’t offer us a straightforward path to install from an archived package file here by running...
Routing is a tricky business in PHP simply because there is no one standard way of doing it. Starting from the most simple and benign (but inflexible) routing strategy of handling every incoming request in the index.php script to the highly flexible (but arcane and opinionated) routing libraries of Symfony, Laravel and the likes, there are all...
Running multi-queries (a bunch of text containing arbitrary DML/DDL statements) is highly unreliable and not an exact science in CodeIgniter or even PHP for that matter. The Internet is filled with posts like this, this, and this but you can’t depend on these solutions in most situations due to the difference between how each database driver...
When you try to manually install an Android APK on your phone, you are typically stuck with an error similar to this: Stack Overflow is filled with posts like this, this and this one but apparently, there seems to be no consensus regarding the cause or even a generally accepted fix for this problem. The very obvious thing to first do is clean the...
Generating PDF documents from your HTML output is a very common requirement and there are several open source libraries to accomplish this in PHP. I came across this need for my project recently and I evaluated many popular ones such as TCPDF, mpdf, FPDF, etc. But the one that truly stood up to my evaluation in terms of efficiency (minimal...
Arts, crafts, literature, even things like computer programming have been the domain of humans since time immemorial. Machines were historically meant to do menial tasks where the human couldn’t afford the time or resources. The classic example here is the type-writer, a remarkable machine that helped humans draft letters in a standardized and...
In many ways, the classical paradigm of the “WEB” as a mere portal or information resource was the most likable and valuable one in the utilitarian sense. These were the earliest days of the Internet when most of the actual Human-Computer interaction took place in the form of a Windows Desktop GUI and people went online to just “look up” some...
The conventional wisdom of maintaining draft posts in Jekyll is to store them in _drafts directory. Drafts are posts without a date in the filename. They’re posts you’re still working on and don’t want to publish yet. To get up and running with drafts, create a _drafts folder in your site’s root and create your first draft: ├── _drafts │ └──...
The ping.exe is a great tool provided by the Windows operating system to check and ensure if we are connected to another computer located across the Internet or even our own local LAN through the ICMP (Internet Control Message Protocol). However, it often happens that even if the remote machine is online, the ping request fails due to firewall or...
Update: As of 17th June, 2024, I have also started using font-awesome and google-fonts which goes directly against my principle of “no-cruft”! And while the point of this article still stands in theory, I came to learn that there are pragmatic limits to how far you can stretch minimalism. At some point, utilitarianism starts overriding...
In the digital age, ecommerce and corporate websites often overwhelm users with cluttered designs and excessive elements. But as consumers gravitate toward simplicity, adopting a minimalist approach can not only improve user experience but also enhance site performance. Here’s why minimalism is the future of web design. Why Minimalism Matters for...
Apps tend to become very complex beasts, especially when they start to scale. Part of the complexity is due to the fact that the users could be a diverse set of people with multitude of tastes and preferences which could all be conflicting. A classic example here is this recent tildes discussion thread I had started expressing my displeasure at...
A common need you often face in PHP scripting these days is writing a long-polling endpoint for things like sending notifications or other kinds of responses back to the client. While using something dedicated like node, cometd or websocket makes ideal sense for such things, there are use-cases when you want to accomplish this in PHP itself and...
Of late, I’ve found that a lot of unnecessary time and effort is being wasted on keyword-research activity by most new bloggers. Most bloggers do keyword research primarily for finding a niche i.e. they try to find a (relatively low-competition) topic related to their own where opportunity to rank is there but competition is less. Inspired by...
My earlier article dealt with multi-query issues of MySQL, this one is dedicated to SQLITE. Multi-queries are often discouraged to begin with but there are times when you find yourself using them. One typical use case is populating the database initially when it’s empty. You do this by running an SQL script which may include multiple queries for...
Userscripts are a very useful and handy tool in the hands of power users. Just like customized garnishing, salt and pepper, etc. we put on our food before we eat, we can add custom javascript tweaks on the websites we visit. For example, you may want Reddit to automatically highlight the recently posted (unread) comments on a post or thread....
The most typical way people set default values to mysql date fields is by using the CURRENT_TIMESTAMP constant as follows: create table ledger_entries ( id int(11) not null auto_increment, entry_date datetime default CURRENT_TIMESTAMP ); This will obviously work if you need both date and time parts in the value. But in most cases (like...
Multi-queries are often discouraged with mysqli functions but there are times when you must use them. One obvious use case is initializing the database. One of the first things your app must do is determine if the database tables exist or not, and then run an initializing SQL script if they don’t. This script may include multiple queries for...
While it’s a topic which has already invited hair splitting debates ad nauseam, it has also invited a lot of hype and there is a need to unclutter that hype and think about this topic objectively. The Toolbox Approach This has been the classic or traditional approach when programming used to be much simpler in the earlier days! “Right tool for...
One of the most challenging aspects of blogging is how to perform research and more importantly, organizing your research. As a technology blogger, I face this problem too, so some days ago, I did some research on… guess what? Yep, on how to organize research for writing articles or blog posts! A natural question that arises here is why should...
Today morning, I woke up to this dull news that Github is soon going to introduce “Sponsor Only” feature, which means the ability for an open source project to hide its source code from everyone except the one who sponsors them. This incident shouldn’t be taken in isolation but as part of a larger trend. Few years ago, Medium also did a similar...
Writer’s block is a common challenge that even the most seasoned writers face from time to time. Finding effective strategies to overcome it can feel overwhelming, but understanding the root causes is the first step. Drawing from various techniques, including the 10 content-types method, I’ve compiled a comprehensive checklist to help diagnose...
If you’re suffering from writer’s block or don’t know what to write about or how to research content for your next blog post, this guide will help you. There are just about 10 basic content-types or patterns around which weblog articles are written these days, and by creatively combining them with your subject matter expertise or your knowledge...
Making additions or subtractions to datetime variables is one of the most commonly encountered programming endeavors and that’s what the built-in datetime.datetime.timedelta object is for in python. Its very useful in adding hours or days to your datetime variables as follows: import datetime now = datetime.datetime.now() tea_time = now +...
This is one of those commonly occurring nags in web development which I’ve solved several times before but still have to scavenge the googles and stack-overflows each time I run into it. That’s why I’ve decided to document the simple solution to it in this brief article. What happens is that if you position your footer div and fix it at bottom of...
Yesterday, I learned during deployment that your Django app when used in combination with gunicorn will refuse to serve static files, do whatever you may. I looked up almost every Stack Overflow answer post on this topic including this, this and this. I meddled with almost every hopeful setting including STATICFILES_DIRS[], STATIC_ROOT and...
When you publish a post on your blog, one of the first things you want to do is share it with the world, and Twitter/X is one of the most popular platforms for that. However, if you’re using Google’s Blogspot (also known as Blogger), your blog posts won’t automatically display as Twitter Cards when shared. Fortunately, you can easily configure...
Despite the rise of privacy advocates discouraging use of email, it remains a valuable communication tool with numerous benefits. Here’s why you should continue to embrace email in your digital communication strategy. The Nostalgic Value Of Written Communication When did you last see someone post a letter in an inland or envelope in the...
There are a plethora of keyword research tools available in the market such as SEMRush, ahrefs, KWFinder, etc. and while a subscription to them makes sense if you are a small company or startup, it definitely doesn’t for small bloggers who work with a limited budget. But even if you have an absolutely zero budget, you can still perform decent...
The methods and examples given in this article are based on flask framework but they should apply to django or something similar too with a little tweak. Few weeks ago, I had landed myself on a project of similar nature and though I found several helpful articles and blog posts (such as this one), none of them explained this process in a simple...
One might wonder why an entire blog post is needed for a simple matter of clearing cookies on a web browser in the 21st century. But believe it or not, such are the state of things when it comes to android browsing! Firefox is a great browser to have on Android because it gives you three features which are impossible to get even with Google’s...
The Content vs. SEO Debate In the content publishing world, there has been a constant battle between the “Content is King” camp and the “SEO” camp! The first camp insists that it’s good content that essentially drives traffic to your blog or website. The second camp insists that it’s good Search Engine Optimization (SEO) techniques like keyword...
The popular wisdom when it comes to implement routing in your client side apps or single page apps (SPA) as they are called these days, is to just grab an “off-the-shelf” framework like angular or vue and start using it. Well, that’s the easy way out but you will never understand the nuts and bolts of how things like routing work at the low...
More than two years have passed since I shared my perspective on Microsoft’s Github acquisition in this blog post earlier, and the point still stands today. Why did Microsoft decide to acquire a startup company much smaller in size which had no viable and long term revenue/profit generation model? If Microsoft wanted their team to use Github in...
Having switched from linux to windows recently, I was looking for an rsync alternative. rsync is a popular tool in the linux world used for taking routine backups and also general file transfer. But since I use it mostly for backups and I’m mostly a command line dude, I was trying to find a windows equivalent which can do the same. That’s when I...
Message flashing is a very handy technique you must be aware of if you are a Flask developer. A common recurring pattern in web development is to send messages across web requests, especially in case of redirects when the route or controller that redirected wants to display some basic text message (such as “Login Successful!”) on the target page...
This guide isn’t for the newbie who is just learning python programming (they are better off doing a “proper” reading of the official docs instead). This is for the seasoned coder who dabbles in multiple technologies and needs a quick refresher on how to go about building a neat zip or tar.gz package from their existing python code, and...
If you’re switching from a platform using Disqus to WordPress, migrating your comments can seem daunting. Disqus was once a popular choice for blog comments, but with WordPress’s built-in commenting system and more robust plugins, many are making the switch. In this guide, I’ll walk you through how to easily migrate your Disqus comments to...
There is an increasing trend towards using the dict.get() method in Python, it’s very widely used in many tutorials and examples too. Consider the below example for instance: >>> dd = {'a': 1} >>> dd.get('a') 1 This simple dictionary dd has only one key (‘a’) and its corresponding value is 1. The proper way of accessing this key is to refer it as...
In the good old days, USB file-transfer between your laptop and smart-phone used to happen through the much easier “mass storage” mode which works just as if you had inserted an external pen-drive. But these days, most smart-phones and tablets have shifted to the MTP (Media Transfer Protocol). Unlike a mass storage device, the MTP device doesn’t...
Many a times, you come across the need to combine multiple image files (.jpg, .png, etc.) into one single portable document format (.pdf). Maybe, you have a bunch of handwritten notes which you want to organize into one file. Doing that is very trivial if you know python. To being with, you must have the fpdf library installed: pip install fpdf...
In this post, I’ll show you how to implement dynamic URL routing in vanilla JavaScript without using any heavy frameworks like angular, vue, react, ember, etc. in less than 30 lines of code! The important attributes you need to know are window.location and more specifically to our purpose, window.location.hash. This built-in property basically...
The Agile Manifesto has been a cornerstone of software development since its creation in 2001, promoting flexibility, collaboration, and the prioritization of working software over comprehensive documentation. However, as development environments and business needs have evolved, many professionals are beginning to recognize certain limitations in...
I happen to maintain a lot of python projects on github such as distroverify and vtscan. And each time I make a tagged release on Github, I have to make a status tweet like this to let people know: So today I thought why not automate this process by writing a python bot that: Runs as a background cron on my computer. Keeps checking my github...
You know, sometimes when I read those python aphorisms like “beautiful is better than ugly” I wonder whether the makers were being sarcastic or real, and I’m not kidding! Its not just about listdir and scandir, a whole lot of things are ambiguous and you’ll find a lot of different ways to do those same things thus contributing to a non-standard...
I’m a huge fan of simple things in life, things that achieve a lot with minimal efforts or configuration from the user’s end. And whenever I come across such simple things, I like to share it with everyone and that’s what I’m doing now. In my recent flask based web project, one requirement was to provide a code editor in the app itself. The web...
I maintain several python projects on github and some of them like VTScan has a need for user configuration. Now python has a plethora of ways and standards for parsing of configuration files like json, *.ini files, etc., but there is no standard about where to save them on the user’s machine post installation. One method used by many coders is...
Conventional git commit messages are not just nice to have but great to have. In fact, once you get to know them, you’ll start feeling that they are essential in any serious programming project. Consider the difference between following two commit messages for instance: git commit -m "added social login feature for authentication using twitter"...
A few days ago, I made this DEV.to post about how Python’s PIP lacks GPG package signing. Well, it turns out that I’m wrong! It does have a package signing process after all, only its one of the most manual, archaic and cumbersome security practices I’ve seen till date. I came to know about this when I landed on this blog post by a core python...
Today, I finished migration of my blog from a self-hosted Wordpress site to a statically hosted Github Pages site. For the static site generator, instead of choosing Jekyll which is a hot favorite of rubyists, I went for Pelican instead as I figured my Python skills might be somewhat useful in dealing with that. Having used Jekyll earlier, I felt...
StackOverflow is the digital equivalent of the Holy See or the Holy Mecca when it comes to programming. It is that place where developers go visit when they don’t have answers to their coding problems in a hope that the Gods of StackOverflow will help them solve it. But lately, the Gods of StackOverflow seem to be exhibiting a lot of intolerance...
When Linus Torvalds wrote the Linux Kernel in 1991 or Ian Murdock first released the Debian OS in 1993, talking about the “openness” of a PC or the “right to repair it” would have been a laughable affair! 8086 was an open standard then (just as standards should be) and anybody was free to write an operating system for it (such as Linux), or user...
The biggest speculation in the tech industry these days concern net neutrality and the last week was no different. Whilst I’m happy that TRAI is clear on upholding the net neutrality in my own country, India, the clouds of doom could be clearly seen in USA as the FCC is trying hard to banish net neutrality and bring control of the Internet in the...
One of the basic problems with running a docker image is that its too easy to spew up multiple instances or containers of the same image. Consider running the following container for instance: docker run -it -e AWS_ACCESS_KEY_ID="test" -e AWS_SECRET_ACCESS_KEY="test" \ --net=host "prahladyeri/testimage:latest" /bin/bash This will start a fresh...
Though I’m not a distro-hopper exactly, I keep trying live versions of popular linux distros like debian and ubuntu every now and then, and while I generally use the “dd” command which works right out of the box, today I thought that instead of burning a new ISO image each time, why not create a single 16GB USB stick which can boot multiple...
Xubuntu is my favorite distro, hands down and the default Greybird theme is just wonderful! There used to be a time when I liked Ubuntu-MATE too, but not so much since they took the road to GTK+3! Coming back to the topic, XFCE works great but it has a small usability issue in the default Greybird theme which annoys most power users. ALT+TAB is...
Call me old, but I much prefer the older classic GMail interface to the modern bloated one. Not only is the classic version less bandwidth consuming, but also simplistic in nature with just the buttons and tools that we need. I somehow don’t like it when zillions of AJAX scripts do all kinds of magic in the background of the web-page. However, I...
Windows 10 is a great operating system when its clean and well-maintained but once you start cluttering it with more and more apps, your Internet speed typically starts to slow down and it becomes increasingly difficult to find out which background app is consuming your bandwidth. One way of tackling this is to harden the windows firewall by...
According to some recent reports by top technology blogs, Uber drivers have been reportedly engaging in an activity called “vomit fraud”. Basically, Uber (and many other cab services too) allow their drivers to collect a fine of up to $150 if their customer creates a mess in the cab (such as puking). However, we aren’t talking about the...
The indicator plugin in XFCE panel has been a very useful but also a very controversial plugin! The reason is that its the only plugin on the XFCE panel developed in GTK3 (whereas rest of the panel is developed in GTK2) and this causes some theming issues. Specifically, only those themes will work for the panel who’s developers have taken care to...
Xubuntu is one of the most popular among the “lighter” distros as it hardly consumes 200MB when idle and even older machines are able to run with acceptable performance. Ubuntu-MATE which is based on MATE Desktop (a GNOME-2 fork) is also a similar competing distro though its debatable whether its as light as Xubuntu in terms of resource...
At the risk of being a contrarian, I’d like to show in this article how exactly can the Backbone’s Events model be combined with the more modern constructs of Promises and async/await to build a killer app using JavaScript. First, let’s try to understand why do we need these constructs for asynchronous programming when JavaScript itself is a...
Minimalists are those netizens who prefer websites that mostly contain rich and relevant textual content (with maybe bits of images sprinkled here and here), but certainly not auto-playing videos, flashy animations, animated gifs and motion ads. Making an excruciatingly heavy and painful website by combining all these things not only take a toll...
Just as my other articles in WordPress DIY series, this one also focuses on doing everything yourself by writing the code rather than using any external dependencies. There are two popular open source implementations of Syntax Highlighting JavaScript libraries: Google’s Prettify and Alex Gorbatchev’s Syntax Highlighter, and in this article, we...
A few days ago, I had to work on a project of this kind and the information and documentation available on this topic was quite bewildering. As a result, I decided to write this article in order to make everything available at one place. Almost everyone knows about the Google API Python Client(and similar others in Java, PHP, etc.) which can be...
Just like my last article, we won’t be focusing on using a third party plugin, but write our own plugin. I’m a minimalist and don’t prefer to use layer-2 solutions for really trivial things that can easily be achieved by writing code. Now, though trivial to implement, the twitter cards support is a very important and useful thing for your blog....
Adding a custom script element to your Wordpress blog is really straightforward if you know what you are doing and there isn’t any need to install a third-party plugin for this. Now, for something like spam protection (Akismet) or adding contact forms (Contact Form Seven), its quite understandable, but if you take the approach of adding third...
Lets face it, Web Apps are a complex and complicated beast, both on the front end and back end. The reason we had to come up with so many frameworks and libraries (angular/backbone/react/vue/marionette/require.js/etc.) is that the whole process is quite difficult and convoluted. Once your app starts to scale in complexity, even the best of ideas...
Framework wars and debates are very much a thing these days, be it Angular vs Backbone or Angular vs React, but the real debate isn’t about these frameworks. The real debate essentially comes down to which is the most efficient way of structuring your app and more importantly, rendering and managing your DOM. Whilst the traditional...
Socialism and Communism have a lot in common, both ideologies aim to bring an equilibrium and welfare in the society by removing the income inequality between the rich and the poor. However, how they both go about doing that job is what makes the difference between sky and earth. Whilst Communism does advocate the use of force to achieve its aim,...
The other day, I was going through this medium post which describes the kind of chaos and insecurity currently plaguing the JavaScript world, and the numero uno reason for that is the astronomical number of npm packages. When you usually install a non-trivial library or application through a package manager, the expectation is that the number of...
Not even a month has been passed since Microsoft gave a big surprise to the world at large and the open source community by acquiring Github Inc. a few days ago, and there has been another acquisition yesterday. This time, Twitter Inc. bought the well known online service Smyte. Smyte was an online provider of anti-abuse technology services, i.e....
After Microsoft’s recent acquisition of Github, a mass exodus has kind of begun and many small and large projects are moving their code bases to the much hyped Gitlab in a hurry, and these include both open and closed source projects. However, before migrating to Gitlab, they should take a pause and learn something about Gitlab and consider...
As someone who has worked on Microsoft tooling since the days of Foxpro 2.6 to Visual Studio 2010 in IT career, and yet ditched them all for PHP, Python and open source years later, I think I am qualified to offer a somewhat neutral or objective perspective on this acquisition. When this news was first announced on last Friday, I was naturally...
Linux is all about simplicity. Simple and time-tested tools like iptables, netstat and rsync can be called for help for basic tasks instead of untrusted third-party tools as happens in case of Windows. If you are a desktop user, then taking frequent backups of your data to a pen-drive or external disk is a typical problem to solve. In this...
One of the most boring things we need to perform in life is using the Google Drive. On one hand, so useful is this tool provided by Google (so many cloud GBs for free, yay!) but on the other hand, the web interface to access those files is not quite as intuitive, especially so for power users, and certainly so for linux users! Unlike the good old...
The usual advice you get when seeking a more resource conserving distro is to use a lighter spin-off such as Xubuntu, Lubuntu, etc. However, not many people know that even a “heavy” distro such as Ubuntu LTS with the default Unity Desktop could be made much lighter by uninstalling some packages and removing others from the startup. Let us see how...
Why Migrate from Disqus to WordPress? Some time ago, I had switched from a self-hosted WordPress blog to a statically generated (Jekyll) blog hosted on Github Pages. For a commenting system, Disqus was quite an easy choice at that time since it was zero hassle for us site owners, and Disqus did all the heavy lifting from filtering the comments to...
Running a linux distro on android devices is a hot topic these days, and why not? After all, android is already based on linux kernel, but a pretty much locked-down and dumbed-down version of it. The OEM doesn’t give you root and in most cases, not even an open source bootloader or kernel. That way, its good for maybe the most average user who...
RESTful apps are a thing these days. When your application’s userbase gets quite large and the client could vary from a laptop to an android device to an iOS device, it pays to keep the backend code separate and use the server only for making RESTful calls using HTTP methods that pertain to basic OLTP transactions: SELECT, INSERT, UPDATE and...
This is the second article in the drive series for web programmers that aims to explain how to use the Google Drive API in your web applications to access files/folders on behalf of your logged-in users. One of the basic tasks here is to authenticate to google and access the drive on the user’s behalf once they grant permission to your app. This...
This is the first in a series of articles for web programmers that explain in detail about using the Google Drive API in your web applications to access files/folders on behalf of the users of your application. In my last project, I had to develop a python flask app for my users that required to access the files stored in their google drive...
In this article, I’m going to describe how to create a desktop screencast recording with or without audio in Xubuntu 16.04. With little changes, however, it should work on other distros too. The first thing to do is to ensure that your headphone microphone is enabled in Xubuntu audio settings. For some reasons, Xubuntu doesn’t seem to do this by...
Last week, my brand new Xiaomi Mi-Pad arrived via Flipkart and no sooner did I have it in my hands, I started installing useful apps like Greenify, ES File Explorer, etc. Two days went by and I was disappointed to learn that it doesn’t support a USB Dongle (Data Card) which is a very common method of Internet access in India. The only way I could...
One of the major issues on linux desktop these days has to do with 3G USB dongles/modems. In many countries like India, a USB dongle still remains a major way to access the Internet. The latest versions of network-manager has solved most of the issues relating to the basic recognition of these modems, but one major irritant still remains on...
This post is inspired by the Coursera Junkie post by Kathryn last year that happened to invite the ire of lots of learners interested in MOOC (Massive Online Open Courses). Whilst I was observing the comment chain in that post, I had never bothered to actually take the time to research any MOOC courses that offered free certificates or statements...
Macros are a great way to automate tasks in Spreadsheet applications, be it the good old Microsoft Excel or the equally efficient FOSS alternative, LibreOffice Calc. The best thing about macros is that they are often written in a very easy to grasp language called Basic (though Calc also supports Python these days). As its very name suggests,...
Being a web developer, one of the nagging things to do is keeping your hardware in sync with your performance requirements. In the good old times, a P4 or even a Celeron based PC or laptop was enough for programming. But with changing times, the required investment to get a sane performance has increased to astronomical levels. Problem is not...
I will start this post by thanking the kind folks at the Reddit’s linux subreddit and Voat’s linux subverse who wholeheartedly participated in this survey. Here are the results and they are pretty insightful. For a developer who builds apps targetting the linux platform, it helps to know what are the preferences of users who run those apps on a...
So after hearing about all the hype and praises about this Eclipse new release called Mars, I decided to give it a try on my Ubuntu laptop yesterday. Since I already use Kepler the older version, I was looking for some big positives like performance improvements (most often talked about by a lot of Eclipse fans lately). When I started this new...
One of the most frequently asked questions on almost any social networking sites these days is how do I start android app programming? Indeed, it is as if Android Development has become some abstract and obscure layer of programming model that only few Illuminati sort of individuals seem accomplished at. There is no doubt that the process of...
Firefox is one of the most competitive FOSS browsers out there, there is no denying it. Mozilla also has strict guidelines regarding what goes into their repos. And in the spirit of all things open source, you may naturally tend to believe that developers who have written your coolest new million ratings plus addon are also held to Mozilla’s high...
Ever since I bid farewell to Windows after they introduced that horrible Metro interface in Windows 8, I had been on the lookout for FOSS Linux alternatives that can run easily on my ubuntu 14.04 machine. One such lookout was a replacement for Notepad++ as I always need a handy editor for scripting and other miscellaneous tasks (such as writing...
In on of my recent projects, I came across the need to develop a JSON based REST API to fetch data from the sqlalchemy objects. Now, the Query object is a great way to access data using the powerful sqlalchemy orm, but it doesn’t give any built-in way to convert the result-set into a python dict. For instance, I have a Professor table in my...
You have probably heard about all the recent buzz surrounding the sourceforge.net website hosting adware/malware bundled installers and naive users falling prey to it. In some cases, SF even actively took control of abandoned developer accounts. to bundle their crapware. So, is it safe anymore to go to this site and download your favorite FLOSS...
One of the evergreen topics for discussions in the blogging world is SEO, and especially the various ways of attracting bless of the all-pervading search engines to one’s own site or blog. There are various ways to approach this problem, some of the popular ones are: Using meta tags like keyword and description to attract the search engines. ...
Note: This article may no longer be relevant as Red Hat has recently changed the openshift stack with docker and kubernetes. Openshift free tier is an excellent way to host your python web app for staging or testing, and you can even host a low to medium traffic production site. Openshift provides several options (cartridges) for hosting...
Here I am, signing off from a self-hosted WordPress site and finding a welcome change in Jekyll, a blog-aware static site generator. There is nothing new about this, several well-known bloggers have already migrated to Jekyll in the last few years. Ever since Tom Preston Werner created this software in 2008 and published his infamous article...
The one thing I like about the world of Linux in general and also Android is the great number of options. Unlike Windows phone, where there is only one way to perform a task (if at all there is!), android provides a richer user experience in all departments. Suppose you are traveling to some place and your laptop has lost its usual source of...
My existing phone is a Karbonn A30 running Android ICS and my next phone is going to be an Android phone too. Both as a user and as a developer, I’ve come upon the realization that Android provides a much better user experience and overall satisfaction in mobile computing. I had briefly considered using Windows Phone once, but I’ve discarded that...
This article is the result of notes I’ve prepared during tweaking, twisting and optimizing ubuntu variants over the last few years. In case you use any other distro, some of these settings may not be applicable to you. For best results, these changes must be done on top of a fresh installation, otherwise chances of things breaking increase a bit....
Even after my last article about PHP and node.js benchmarking, my search for the holy grail of performance truth still continues. However, I do understand now that pitting PHP running on apache against a stand-alone node was a bit unfair with PHP for it was limited by what the apache configuration could handle. {.alignnone .size-full...
When it comes to web programming, I’ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is node.js. It is a light-weight platform that runs javascript code on server-side and is said to improvise performance by using async I/O. The theory suggests that synchronous or blocking model of I/O...
Last week, I suddenly stopped receiving email notifications for my openshift hosted blog. I came to know after some reading that commonly used cloud hosts such as openshift, aws, etc. are usually blacklisted by most email servers, hence its not a good idea to use them to send mails. In any case, why should I depend on my hosting provider for...
If you are still one of those people who are frustrated with the crawling speed of eclipse IDE (especially after the recent clunky releases of Juno/Kepler), then you are in good company! Most of the advice you might have read until now for speeding up Eclipse must have involved tweaking the following parameters in eclipse.ini file: -Xmn512m...
Many a times, it so happens that you need to work with multiple credentials while uploading/downloading apps on Google appengine. In such a scenario, it becomes difficult to switch credentials instantly. {.alignnone .size-full .wp-image-1382 width=”54” height=”48”} For instance, you have just uploaded an app using appcfg.py with your google...
Whilst the official pythonic reference for Google app engine is the way I learnt how to build my first GAE app, I found it a bit frustrating to go through each and every link and understand large topics like caching and data stores in detail just to build a small hello world pythonic app in Google App Engine. What I wanted was a quick and dirty...
Creating dialogs is a very common need in your app to show a dialog box to the user in order to fetch a value, be it a mobile, desktop or even a web application. Furthermore, the values can range from anything like simple OK-Cancel dialog results to a list of “check-able” values or even a date-range. {.alignnone .wp-image-209 width=”60”...
My last android project involved tracking each device where the app is installed and storing the information to a database. It is quite a common need to uniquely identify your android device in code. Now, had it been a PC, it would have been easy to track the MAC-address of the NIC or an HDD serial to uniquely identify and track that device. But...
Based on my experiments while setting up this blog, below are the 7 “bread and butter” plugins for your wordpress blog. These plugins came very handy for me and allowed me to seamlessly integrate much needed functionality in my blog without writing a single line of php code. {.alignnone .wp-image-186 width=”77” height=”77”} Contact Form 7...
One of my last projects based on google app engine and python involved storing form data in GAE datastore and generating PDF documents that the user can download. Whilst data storing was the easier part as google’s big data API it is pretty well documented, the trickier aspect was to convert it to PDF using python. {.alignnone .wp-image-164...
Whilst barcode scanning is a pretty complex and non-trivial task in itself, it could be overwhelming sometimes with android programming. Lucky for us, there exists an opensource project called ZXing (pronounced Zebra-crossing) that solves this problem for us. {.wp-image-152 .alignnone width=”108” height=”77”} The ZXing project has already done...
Wordpress is a universally recognized and robust blogging platform written in the PHP language. Below are a bunch of Wordpress tricks that I’ve learned during my deployments, and I’d like to share with you. 1. Change breadcrumbs to start from “Home” instead of Site-Title: When I set up this site, the breadcrumbs in the post used to read like...
Wordpress is a blogging platform that is very easy to use, but involves many configuration trivia which may become overwhelming, unless organized and documented somewhere. Based on my experience of setting up this website, here are the things that I had to keep in mind to get it up and running: Wordpress file-structure: A brief understanding of...