Tools of Trade

I use 13-inch MacBookPro for personal projects and 15-inch for work. My personal MBP would be last traditional laptop, hopefully. Since most of my work can easily be done on Linux VPS. I have been using 10.5-inch iPad Pro with Blink shell for most my side projects. I like the form factor of iPad Pro and I am getting better at Linux administration. Now I am also setting up Docker images so I can bring up new images as needed. ...

March 25, 2019 · 2 min · Amer Khalid

You don't need a web developer

Occasionally, when people find out I am a programmer, they ask me if I will build them a website or an app on the side. As I spend all day programming at my work, I rarely have motivation to continue programming after work. However, talking to most people, I realize they don’t need a programmer; most of their needs can be met by a simple SaaS solution. Recently, I directed a few friends to WordPress.com, SmugMug, Shopify, etc. They all were happy with the results and ease of use. Also I am glad they talked to me because one guy was ready to spend a few thousands on a developer for a WordPress-based site. ...

December 4, 2017 · 3 min · Amer Khalid

WordPress vs Hugo

Managing WordPress can get time consuming. I have tried to move to static website several times but kept going back to WordPress. But there are several advantages of static sites generators that I finally moved for good. I am also advising a lot of my clients to use Hugo especially when they know that they will rarely ever update their sites. Here are some of main advantages of Hugo (or other static site generators) vs WordPress and other CMS. ...

December 2, 2017 · 4 min · Amer Khalid

iPad Pro for Programming & Fun

I finally bought 10.5" iPad Pro (Affiliate Link). It was mostly an impulse purchase. When first I started to use iPad, it felt blah. It is hard to find good apps or what apps you might want to try out. My main goals with iPad was to have a really small laptop replacement. So I was hoping for a decent code editor. There are some code editing apps but there is no way to try them out before purchasing. So I am spending a lot of time reading reviews before I purchase any app. ...

November 14, 2017 · 4 min · Amer Khalid

ReflectionException: Class Tests\Unit\Symfony\Component\HttpKernel\Exception\NotFoundHttpException does not exist

Running unit tests in Laravel, I was getting this error: ReflectionException: Class Tests\Unit\Symfony\Component\HttpKernel\Exception\NotFoundHttpException does not exist The issue was missing root backslash, make sure you have expected exception like: $this->expectException(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class);

October 13, 2017 · 1 min · Amer Khalid

Upgrading to PHP 7.0 on Ubuntu 14

I upgraded PHP to version 7.0 on Ubuntu box. Running php -v on shell would show it as version 7.0. But Apache was still using PHP 5.6. I tried various methods to update settings for Apache but nothing worked until I issued following commands: sudo a2dismod php5.6 sudo a2enmod php7.0 sudo service apache2 restart Source: PHP 7.0 (and 5.6) on Ubuntu | LornaJane

September 22, 2017 · 1 min · Amer Khalid

Setting Up Laravel on MacOS

After 3 years, I am using Laravel again at work. Laravel has extensive documentation but sometimes it can be a bit verbose. Here are command to get you started as soon as possible. This assumes pretty much fresh install of MacOS. Install Homebrew Check the official site for latest command /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Install PHP 7.1 brew install homebrew/php/php7 Install MariaDB brew install mariadb Set MariaDB to start as service at the end of installation. ...

August 19, 2017 · 1 min · Amer Khalid

Magento – Get All Products with Categories in a Flat View

SELECT w1.website_id, w1.name as website_name, s1.store_id, s1.name as store_name, p1.entity_id as product_id, p1.sku, pname.value as product_name, url.value as url_path, small_image.value as small_image, msrp.value as msrp_price, price.value as price, p1.created_at as product_created_at, p1.updated_at as product_updated_at, visibility.value as visibility, pstatus.value as status, case when (pstatus.value = 1 and visibility.value > 1 ) then 1 else 0 end as enable_flag, c1.entity_id as category_id, cname.value as category_name, c1.parent_id, c1.created_at as category_created_at, c1.updated_at as category_updated_at FROM catalog_product_entity p1 inner join eav_attribute p_attr ON p1.entity_type_id = p_attr.entity_type_id and p_attr.attribute_code = 'name' inner join catalog_product_entity_varchar pname ON pname.entity_id = p1.entity_id and pname.attribute_id = p_attr.attribute_id inner join eav_attribute p_attr2 ON p1.entity_type_id = p_attr2.entity_type_id and p_attr2.attribute_code = 'url_path' inner join catalog_product_entity_varchar url ON url.entity_id = p1.entity_id and url.attribute_id = p_attr2.attribute_id and pname.store_id = url.store_id inner join eav_attribute p_attr3 ON p1.entity_type_id = p_attr3.entity_type_id and p_attr3.attribute_code = 'small_image' inner join catalog_product_entity_varchar small_image ON small_image.entity_id = p1.entity_id and small_image.attribute_id = p_attr3.attribute_id and pname.store_id = small_image.store_id inner join eav_attribute p_attr4 ON p1.entity_type_id = p_attr4.entity_type_id and p_attr4.attribute_code = 'msrp' inner join catalog_product_entity_decimal msrp ON msrp.entity_id = p1.entity_id and msrp.attribute_id = p_attr4.attribute_id and pname.store_id = msrp.store_id inner join eav_attribute p_attr5 ON p1.entity_type_id = p_attr5.entity_type_id and p_attr5.attribute_code = 'price' inner join catalog_product_entity_decimal price ON price.entity_id = p1.entity_id and price.attribute_id = p_attr5.attribute_id and pname.store_id = price.store_id inner join eav_attribute p_attr6 ON p1.entity_type_id = p_attr6.entity_type_id and p_attr6.attribute_code = 'visibility' inner join catalog_product_entity_int visibility ON visibility.entity_id = p1.entity_id and visibility.attribute_id = p_attr6.attribute_id and pname.store_id = visibility.store_id inner join eav_attribute p_attr7 ON p1.entity_type_id = p_attr7.entity_type_id and p_attr7.attribute_code = 'status' inner join catalog_product_entity_int pstatus ON pstatus.entity_id = p1.entity_id and pstatus.attribute_id = p_attr7.attribute_id and pname.store_id = pstatus.store_id inner join catalog_category_product ccp ON ccp.product_id = p1.entity_id inner join catalog_category_entity c1 ON c1.entity_id = ccp.category_id inner join eav_attribute c_attr ON c1.entity_type_id = c_attr.entity_type_id and c_attr.attribute_code = 'name' inner join catalog_category_entity_varchar cname ON cname.entity_id = c1.entity_id and cname.attribute_id = c_attr.attribute_id and pname.store_id = cname.store_id inner join catalog_category_product_index store1 ON store1.product_id = p1.entity_id and store1.category_id = c1.entity_id inner join core_store s1 ON store1.store_id = s1.store_id inner join core_website w1 ON s1.website_id = w1.website_id

May 1, 2013 · 2 min · Amer Khalid

OpenShift Error: Layer 7 Wrong Status, Invalid Response

I have been playing with OpenShift for past several hours. It looks great. But a while back I started to get 503 Internal Server error. When I checked logs using rhc tail , I saw this error: Layer 7 Wrong Status, Invalid Response 404. I spent an hour or so troubleshooting. Turns out the issue was Netbeans had added src/main/web/app/WEB-INF/jboss-web.xml when I ran the application locally on my machine. I committed this file, thinking I might need it. Deleting it from repo fixed the issue. ...

April 21, 2013 · 1 min · Amer Khalid

How to Tell if a Number Is Whole in Php

if ($num == (int) $num) { // It's whole } else { // It's not }

July 7, 2012 · 1 min · Amer Khalid