by Ahmed Muzammil | Jun 5, 2014 | Open Source, Software |
Thanks to Singapore PHP User Group for organizing this. It was a rare opportunity to meet Matt. He’s one of my inspirations for a long time.
An awesome inspiration delivered by Matt on Open Source, WordPress and the early days of GPL (GNU Public License). WordPress was one of the modern web early adopters of GNU.
What’s GPL?
GPL was built on 4 freedoms:
- Freedom to use the software for any purpose
- Freedom to see how it works
- Freedom to build over and modify the software
- Freedom to distribute the original or modified version of the software
The key takeaway was:
- The only reason WordPress survives in spite of all the commercial competition out there is only that of the community, Automattic’s passion for making the world a better place and their continuous contribution to open source
Some things I learned new from the talk:
- WordPress today is built upon what was called B2 earlier, where Matt was one of the committers
- WordPress was the first to introduce Pages on blogs. Earlier, people used to build multiple blogs for different pages. Remember MultiSite? People really used Multi-Site for this weird purpose!
- One of the reasons for the success of WordPress was Akismet
- Akismet was earlier known as Automattic Spam Machine
- Socket.io is maintained by Automattic
Some notes:
- The community of users is really important
- Distributed employees do make sense. For a system this large and which is used by 22% of the Internet.
- Even if you clone something – differentiate yourself by solving the pains that the other products don’t solve. (like Akismet)
- Make stuff open source! and don’t make it proprietary. It will only improve your traction.
- The day you start getting spam is the day you’ve made it.
No matter how little you think you know, there’s always someone who knows less – Matt Mullenweg
by Ahmed Muzammil | Jun 2, 2014 | Development, Software |
I started using Appcelerator Titanium for a personal project. Here I am with my experience so far with the platform.
This platform is really awesome if you structure the project well and you are an expert. For beginners, you might drift away from the best practices and write javascript in a bad way.
You need to learn nodejs concepts like async method calls and stuff. If you don’t know what I am talking about then this below video is a good introduction to nodejs:
Ryan Dahl: Original Node.js presentation
Keep this as a rule of thumb – don’t enable automatic updates right away. Otherwise, you would develop on one version and suddenly after an update, the project would stop working.
It is not cross platform!!! I’m telling this after a lot of bad experiences. Developing for iPhone and then “fixing” things for Android or the other way around is definitely a pain!
In a way, it is cross-platform and it could speed up your development time. But only for small petty projects. Not for larger ones.
That’s my conclusion. I quit using Titanium. Now I’m learning MeteorJS with PhoneGap. Would also explore to use famo.us
by Ahmed Muzammil | Jun 1, 2014 | Software, Technology |
I was buying something on StreetDeal.sg and noticed the tricky discount choice down there.
People most probably would click on “I need 20% discount” and save money this time and ………. End up paying 88$ every 3 months without even noticing the above explanation.
What do you think of this? Discuss!
by Ahmed Muzammil | Jan 2, 2014 | Consulting, Software |
Estimation of an IT project is not a pleasant exercise. However, it is part of project management.
Usually, the pain points are
- Depending upon the role, we come up with own version of numbers.
- Project Bidder, Project Governance intend to move the numbers down; Black sheep intends to move it north
- Estimation implicitly mean a commitment to management
- Estimation is made without clarity of requirements
- Estimates are subject to stakeholders interests and personality
Some principles of estimation practice:-
- Parkinson law – Work shall fill the time allocated for completion.
- Today’s project is Tomorrow’s legacy
- Quality/Reliability of Estimation cannot be better than the requirements
- Poor congruence of stakeholders is a perfect recipe for disaster
- Often one fails to understand the difference between –Effort and Duration in estimation.
- Cost and Effort are associated with Work Breakdown structure while Duration associates to Critical Path.
- Cost – Money Spent (Unit – Currency)
- Effort – Work Time for a task (Unit – Person-Hours)
- Duration – Calendar Time (Unit – Days)
Here’s one technique for estimation.
- Discuss with responsible person of a task to identify – effort required when it’s all roses with no thorns in the path. Let’s call it – Optimistic (O) number.
- Identify the effort when we, it’s all desert with no hope of oasis. Let’s call it – Pessimistic (P) number.
- Pinch yourself, it’s a real world. Both of the above cases are unlikely, Identify the effort. Let’s call it – Realistic (R) number.
The estimated number (E) is (O + 4R + P)/6 with Uncertainty(U) as P – O.
Always Report Estimated number E with Uncertainty U. Plan and be prepared for, Uncertainty U.
A yardstick for self-review of estimation maturity :
Review and update your Estimates E and Uncertainty U in iterations; Uncertainty U should decline.
by Ahmed Muzammil | Oct 7, 2013 | Development, Management, Software, Technology |
The Joel Test is a twelve-question measure of the quality of a software team.
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
by Ahmed Muzammil | Jul 15, 2013 | Software, Technology |
It’s difficult to set multiple log categories to DEBUG or anything with the Intalio’s log4j configurator that comes with bpms-console.
I had to set like 10 different logs repeatedly. Every time it sucks to actually find the log category, choose DEBUG and then click the SET button, wait for the page to load again and continue the same thing!
Here you go geeks, a javascript method I wrote that you can use on the Javascript Console:
Go to “THIS” URL: https://:8443/bpms-console/log4j
function setDebug(log) {
var elems = document.getElementsByTagName(‘input’), i;
for (i in elems) {
if((‘ ‘ + elems[i].value + ‘ ‘).indexOf(log)
> -1) {
if(elems[i].parentNode.childNodes[1].value != “DEBUG”) {
elems[i].parentNode.childNodes[1].value = “DEBUG”;
elems[i].parentNode.childNodes[5].click();
}
}
}
}
setDebug(“httpclient.wire.”)
Now it’s just UP arrow ENTER, UP, UP, ENTER every time the page loads. Yes, of course, it can be further more optimized. Mind to do it?? post it in the comments!