Category: Programming

..contributing to IT in London since 2002..

Opensource: be grateful for enterprisey quirky mess

Apparently, it has taken almost a year for the most popular PHP mailing library to support TLS v1.1 and v1.2 !? https://github.com/swiftmailer/swiftmailer/issues/933 (Packagist says it is downloaded almost 73 million times! https://packagist.org/packages/swiftmailer/swiftmailer) … only after PHP geeks freaked out, started screaming, running like headless chickens (online), including me, maybe because some paranoid security guys turned …

Conversation between geeks and users

Every software application is a conversation between the geeks and the users, but they are actually programmers and guests. The programmers show and tell what they can do for their guests, and the guests tell the programmers to work on one or more of those tasks, for example to book a flight ticket. The success …

Poor man’s full text search for SuiteCRM

The poor man’s CRM, a.k.a SuiteCRM, is great (… was great for its time!); that’s another story. One of the features provided is “unified search”, as the geeks call it; some may call it global/universal search across many tables and records in the database. What it does is simply as follows: Loop over a list …

MySQL Error: Thread stack overrun

Recently, I’ve come across this error: MySQL error 1436: Thread stack overrun: 164720 bytes used of a 196608 byte stack, and 32000 bytes needed. Use ‘mysqld –thread_stack=#’ to specify a bigger stack. I am using PHP 7.0 and MySQL 5.7 on a Ubuntu 16.04 VM. Basically, I was dynamically creating more than 5 long SQL …

The Forgotten Pull Requests (PR) of a New Breed of Sherpas in the Himalayas

Pull Requests (PR) are a huge topic on Github and here is a whole “BOOK” about it on github: https://help.github.com/categories/collaborating-with-issues-and-pull-requests/ Here is a short summary from me. 1. a developer is forced to create a fork (separate copy) of a public repository (called upstream repo) on github because the repo does not belong to the …

How NOT to write (OOP PHP) code

My comment on one of the files of SuiteCRM: https://github.com/salesagility/SuiteCRM/issues/3561 which was closed and kindly “put” aside (IGNORED basically!): https://trello.com/b/Ht7LbMqw/suitecrm-suggestion-box So… Expected Behaviour It has to extend/implement only SugarBean and some relevant functions. Many functions must be implemented by separate classes esp. email management functions related to POP3 and IMAP so that we can maintain …

How NOT to write (PHP) code

My comment on one of the files of SuiteCRM: https://github.com/salesagility/SuiteCRM/issues/3687 So… * todo: encapsulate logically related code into separate classes — e.g. use (API) controller class(es) — contact management API — folder management API (create, rename, delete, etc.) — email management API (read, compose drafts, send, relate to other entities etc.) — signature management API …

The cost of a million objects – revisited for PHP7

PHP 7 is out there finally and I am sure the adoption rate will be very slow especially because of legacy code. Here is a repetition of my simple tests I’ve done before (PHP Memory Usage: The cost of a million objects) and comparison of those results between PHP 5.6.18 and PHP 7.0.3. path-to-php5/php.exe test-path/memory_test_v4_objects_with_myclass_simple.php …

PHP: The cost of a million objects on function calls

Especially, if you are a start-up, all it takes is a fine combination of: a bad coder (with an arrogant attitude of “code first + optimize later”) and 1000 simultaneous requests to bring each of your servers to its “knees”. On part 1, I’ve mentioned the cost of a million items when we are using …

PHP Memory Usage: The cost of a million objects

Even though memory is getting cheaper, our applications are becoming more complicated and we need to write our code more carefully. I’d like to share some surprising tests I’ve written recently. The sample code files are also on github: https://github.com/muratyaman/php-tips. The tests are very simple: let’s create an array of million items to process: version …