Showing posts with label software_as_business. Show all posts
Showing posts with label software_as_business. Show all posts

August 19, 2013

Facebook and Google Plus Rants --- Profitable Software Business --- Part 3

Great skills can still lead to weak or nearly useless products.


How ?

When you don't understand your domain properly, or if you don't plan ahead for changes.

I don't make money teaching design. But developers, software business owners should listen to Hoare, David Parnas, Dijskstra (small head), Eric Evans, Peter Coad, Richard Feynman, Rasmus Lerdof, Linus Torvald, Charles Simonyi (MS Word, Intentional software). Scott Bain, Kent Beck etc.

If they don't know them or won't listen, they should not be in software business, right? Can anyone claim to be wiser( streetwise or worldly wise or whatever) than their collective wisdom?

On bitbucket, google code repository, GitHub, I find a lot of django/GoogleAppEnginePython codes for almost anything: social network, forum, message board, LMS(learning mgmt system), ERP, CMS(content mgmt system), wiki, quizz, collaborative writing, shared whiteboard, mobile app etc.

Shouldn't we extract some value from them?

As we all know, Python is not Perl/PHP or even Java. It's very good-natured language.

Log-in, log-out from App1, quiz from App2, friendship invite from App3 etc are there for us to mix and match as our kids play with Lego.

If some of us can find a business model to go with that Lego-style app, we may make some money for us.

Does anyone have some guide/advice for that kind of not-cut-and-paste but rip-off-and-rebuild development? HAPPY NEW YEAR!


I asked a Singaporean programmers group this:




"Ok. Find me something that looks like this. (1) It's free and online. (2) I type main question, then choices, including if necessary, images too. And the answer. (3) I can add as many question I like. (4) I can print it out, and it comes out nicely. (5) I can let my students practice there. (6) There can be tip/hints for students. (7) Answers are graded. (8) I can edit them. (9) I can download my question sets. They work offline too! (10) I can go on, but this should be enough. This is 1 of 1000 things we can do for education/training etc. So I have no need to protect this. ... Please don't mention SCORM, IMS, Moodle, Atutor, Coursera, hot potatoes, whatever. If a nice thing is there, why would I code or ask others to code."



They cannot find. Mine is world's first and very good. Still they don't want to work for me for 8 hrs * 15 days for free. They cannot see the benefits.

Facebook and Google Plus Rants --- Profitable Software Business --- Part 2


Recurring Revenue Streams


What are we going to do about education?

Every newborn fish can swim. But every newborn Myanmar doesn't read or like Nat Shin Naung/Nawaday right away. Every newborn Singaporean doesn't read or like Water Margins, Han Fei Tzu etc.

Education is an ongoing business for every new generation. A lot like tax-prep software business.

Every new year is a new business.

Little Knowledge and Sophisticated Goals


The title is a phrase from Peter Small's writings.

I could not and did not bother to pronounce English correctly. I ignored phonetics and phonology because I lacked ability. But that has not prevented me ( so far, at least)to do anything I want with English.

Now I want to get big in software business. I cannot do phonology-like coding.

Will that prevent me from expressing my self?

Do I need phonemes /a/ vs /o/ vs /u/ to express my romantic love in sonnets? my patriotic love in dramas? my sense of humor in Seinfeld-like, Keaton-like, Bean-like acts? my observations in Lamb-like, Thurber-like essays?

What You Admire You already Have


Lightning-fast swoops and cloud-splitting soars inspire young eagles ... because they get it, have it already, at least in small measures

Product Development: Sum is More Than the Parts


Are you thirsty?

I have a bottle of H and another bottle of O and a kit with which you can combine that H and that O?

Will you be quenched and satisfied?

Or would you like just a bottle of high quality water at the cheapest price in town from me?

Education is a bit more complex than H2O. Yet many pieces are there, almost free. Who will mix them into A drinkable, usable form? Why not us?

Magic in Software


I read lots of silly stuff and had/have strange role models. One favorite theme : a kid was surrounded by real or rival-witch-created snakes/or some other obstacles. The kid took out a piece of paper, tore it into pieces, threw them onto the ground, OR fanned some leaves on the ground with that paper, and they turned into fierce birds etc , snatched away all those snakes etc. .... Silly? ...

What about Gmail, Hotmail, Filckr, Facebook, Salesforce.com? ....

They all started on a piece of paper, they are still a roll of characters/words and lines. Modern abracadabra, right? ....

My heart sings with software. Software is my heart. I live or die with it. One day, you just whisper into a screen and my Abracadabra will come out to serve you like the Genie of Aladdin's Lamp.

Inciting Google Plus Communities


Hi Everyone,

I want to reinvent Moodle. I want to retain about one-fifth of its features and do it in Django.

The problem is I am weak in coding. Is there anyone who wants to do this as an open source project? I can promise only 2 things :
  1. It will be better than Moodle 
  2. It will be better than Khan Academy on Google App Engine! Cheers!


August 17, 2013

Facebook and Google Plus Rants --- Profitable Software Business


Recruitment on Facebook


When our team grows, of course, our receptionists and canteen staff will have PhD's and know Hadoop, Cassandra, MapReduce, R and lots of Big Data statistical packages.

But for the time being, others have been making good money with Excel!!! Yes, Excel!!! In Myanmar, in Singapore, and in New York (and in Wall Street ) !!!

From Hadoop to Excel, the space is a bit very wide. Our team hope to score some nice goals.

Any one, who has learned Excel or Hadoop or WHATEVER for 2 or 3 days, are encourage to join us! For the time being, we accept candidates without PhD, so hurry.

Adaptability, Flexibility or even Luck, but not the Ability to Predict


One of my friends gave university tuition while he was still a university student. Only very good students could do that. And I also did that. But then, since he has far better social skills than me, I sometimes asked him for advice. On one occasion, I said, "Some of my students do not like my best works/essays at all. What do I do?" He replied, "That happens to me too. What is good for me, they may not like it. Some shoddy works, they liked them a lot."

That lesson still stays with me. So, for my software business, I rely more on my adaptability, flexibility or even luck than on my ability to predict. So, though I have 20,000 features in mind, I intend to fight with 2 or 3 features first. ;-)

Software Development Business


Ancient China: population--> training to be soldiers --> forming into corps--> launching wars

Modern software follow similar steps.
  1.  You create commodity software or use them for free. 
  2. You turn them into building blocks(Lego-like pieces) of your application.
  3. You weave. mesh, gel  the Lego pieces into useful apps. 
  4. Then you sell these apps.

Easy Winning , as in TOEFL, IELTS


In 1995, I checked 7 TOEFL/IELTS brands, not books, and knew right away it is easy to do World Best classes there.

Last 3 days, we checked 5 world best online education sites' database schemas and became relieved and happy. Data models, domain models are heart and brains of web software. Our team is happy in this area.

How High-tech do you want to go?


I am starting a "very-very-very-hi tech" software company. And I am recruiting ordinary programmers (though I won't reject anyone as "over-qualified.") These 2 facts are not contradictory.

A CFO of Dell once asked, "How much techno do you need to own to compete? "

As students, you yourself might have asked, How many books do I need to read to compete well in the exams?

Even in high-tech business, you can compete well without relying on technology. Let's see.

Recruitment on Facebook


I predict 100 Instagram's from Myanmar and Singapore each. And when you predict something, you must also know when/how it can go wrong.    

Instagram came from another bigger app by Kevin Systrom, called Burbn, according to this month Fast Company magazine. Burbn is a clone of all popular app features at that time.

Singapore programmer Chang Sau Sheong, in "Cloning Internet Applications with Ruby" book, has done a Burbn like app already. There are many equally capable developers in Myanmar and Singapore.

But will they reduce their bigger clone app into a smaller, more useful app like Instagram? If they do, my predictions will be true. If not, well we will get 200 clone apps, including 2 of mine ;-(

Recruitment on Facebook


You can pay for 6-dollars-per-hour staff with 3 or 4 days of training. But to become a McDonald, you need a system.

Do I have a system to play in big league of software with ordinary programmers?

I think so. I'm recruiting. Let everyone know. No experience required. No commitment required. Only these requirements - you live in Singapore, you can read and type. You can work about 4 hours per week at home and 1 hour per week at our place. If you are over-qualified, that's better. We are not afraid of any talent

Recruitment on Facebook


I admire the source code of Django, Tornado, NLTK, boto, etc. As many of world greatest coders in history advise, their logic/code is "dumb" and therefore good. When I coded shopping cart, CRUD etc, my logic/code stayed "dumb" and good.

But when I moved even a bit farther, e.g. FSM with Pygame, an expert system etc, my logic/code became "clever," complex and unstable. I've thought about and studied this for years.

Our team is training to be a world leader in software -- both biz-wise and techno-wise.

Anyone interested in becoming better programmers are welcome. We are humble to learn and generous to share. Love and Thanks to all.

Some Unsued Assets

  1. Good reading and note-taking, domain modeling, good and fast understanding of requirements of an industry, good and fast understanding of a user's job/task/process/activity 
  2. Clean, small, flexible code/software.

If salesforec.com is not that combo, what is that?

If Flickr is not that combo, what is that? If Evernote is not that combo, what is that?

I have given you proofs, please join us. Even if with half a man, we will get to our goal. But, still we want you. Join us!

March 2, 2013

Programmers ,Please Come and Accept My Worship

November 2, 2011

Programmers in Singapore, please come.

Whatever your age, nationality, race, rank or religion,
Whatever your language(PHP or Python, Scala or Smalltalk, Ada or Assembly),
Please come, I want to worship you.

I am not being sarcastic. Maybe a bit desperate ;-)
There is no hidden agenda. The agenda is very open: I want you to work for me free for many months. ( As a bonus advantage, I may even allow you to worship me about once a week.)

There are many reasons you can be happy about my open agenda. Before I go into that, let me tell you why I am so happy to worship you.

Let's start with just 2 main reasons:
  1. You are a creator.

  2. You are a potentially big earner.

You Are a Creator


You can make a pile of plastic, rubber, wires and metal sheets walk, sweep, climb stairs, arrange dishes, play with kids, and so on. Robots.

You can make any fairy tale jump off the pages and sing, dance, move, quarrel, fight and entertain our kids. Games and animations.

You can sponge off and siphon off an experienced but very expensive physician's hard-won knowledge and wisdom, and make it come alive in our laptops, PDAs, and mobile phones. Expert systems for diagnostic purposes.

You can help people choose tailor-made financial products, insurance policies, travel packages, rooms and houses, even the right KG's, schools or colleges to attend.

You sit on the same floor as Picasso, Van Goh, Lennon but you sit a bit higher. Their works do not come alive for many types of people. But your works --- Google search, Facebook, Halo, Warcraft etc --- come to live for many kinds of people.

Books need to be read. Book-readers(doctors, lawyers, stock traders, teachers etc) need to be consulted. But your works, your programs, your softwares, your apps are in our fingers literally --- there to help us, guide us, comfort us 24/7 under any weather in any place.

Can you imagine life without an ATM, Google search engine, Yahoo/Google mail, Facebook friends, Monster job postings, craiglist, Amazon books, youtube clips? No ipod, iPhone? No Excel, no MS Office, no PowerPoint?

Can you run any business without Quicken, Access, MySQL, Oracle or some other database?

There are still many types and fields of knowledge that haven't been put into program, put into software. You decipher them, specify them and code them into something like Excel or Facebook or YouTube and the world will become a better place for you, for your spouse, for your family and friends and for us too.

Oh, come, accept my Worship, you Creators.

There are still many stories that haven't been told in software.
There are still many games that haven't been played in software.
There are still many services that haven't been rendered in software.

Tell them.
Play them.
Render them.

O you Creators, come, accept my Worship.

You can change the world, you can change its course of history. Even if you are not that ambitious, you can still make the world a better, safer, more beautiful, more abundant, more convenient, more hassle-free, more pleasant-to-live, more efficient place.

You Are a Potentially Big Earner.


I won't go into details here either as I haven't research this at all.
So, just help me answer some of these questions:

How much did Alibaba Employer No. 3 earn?
How much did Yahoo Employer No. 4 earn?
How much did Google Employer No. 5 earn?
How much did Microsoft Employer No. 6 earn?
How much did Facebook Employer No. 7 earn?
How much did Creative Technology Employer No. 8 earn? (When I was in NUS, one such guy came to lecture us. He told us that at one time, more than 2000 people reported to him. His MBA came years after his job. I suspect that the NUS MBA school won't even consider his application before he worked for Creative.)

You may not have been one of them. But you still have such chances almost every week in your software industry.

Why not come and accept our worship?

george and family

X#XX3
BLK YX
Cxyzxzy Zyxxvv
Singapore 111ZZXX

February 2, 2013

Creating Original and Non-original Softwares

The Original School


 "ambition,""revolutions," "revolutionary"
"original," "radical"
"creativity," "innovation," "lateral thinking,"
"invention," "reinvention," "disruption,"
"leadership," "platform leadership," "leapfrogging," "blue ocean strategy,"
"positioning," "re-positioning,"
"market domination,"

The Non-Original School


Copycats
Fast Seconds
Entrepreneurial Judo
Busting profit pool a la Michael Dell, Dell CEO
The margin, the opportunity a la Jeff Bezos, Amazon CEO.

The Honest School

  1. Einstein (in paraphrase) : Originality is nothing but forgetting one's sources.
  2. Scott Adam (in paraphrase) : Originality = theft + lack of talent + time
  3. Bruce Lee (in paraphrase) : Origin of the technique doesn't matter. Just express yourself honestly, truthfully.

The Deep School

  1. An old German tract that suggests , for three whole days, shutting out the world, listening to one's own thoughts and recording them faithfully. 
  2. Go into yourself and see how deep the place is from which your life flows: Rainer Maria Rilke

February 1, 2013

Product Strategy : Useful Astrology Apps

This happened about 15 years ago in Myanmar. This is also happening with many softwares today.

At that time, I had taken a 4-weeks course in Visual Basic, and another 4-weeks course in Visual C++. I had already rented a Windows PC at home.

I knew a bit of many kinds of astrology techniques, those kinds you can read in magazines and can master in a few minutes.

I was eager to code those astrology techniques into some GUI/desktop apps.

Before I started coding, I looked around. I read in some Myanmar magazines about some theses on astrology at our Computer University. Their calculations were thick,deep and complex. That's fine.

What was not so fine: their outputs were also very hard to understand.

I also checked out some Astrology CD's written by Myanmar programmers, selling at about K 400. Their outputs were of the same kind as those of the theses. (At that time Don Norman hasn't written Living with Complexity. He hasn't proclaimed that "Make output understandable.").

I couldn't learn from them, and so I coded my own design.

Front End

  1. 1 text box to enter user's question
  2. 1 button beneath it

Back End

  1. Read the user's question.
  2. Throw a 6-sided dice 6 times, since this is I Ching.
  3. Using the result from the dice throws, read from a table of answers.
  4. Show the answer to user.
I padded the answer with some folk psychology. I tested the app on my students, and I watched them discreetly from a distance.  At that time, "Usability Testing" was not even in my vocabulary.

















My cost to create this was about 8 hours of coding and 8 hours of reading. And users liked it a bit.
Compare this to the other software makers' costs and the users' reaction to their softwares.

January 28, 2013

Simplicity Despite of Technical Knowledge

Old Style Javascript


A web page is a simple concept to understand, and that is why it caught on so fast in the first place.

And our desires to interact with it are also simple.

Say, there are a number of thingies ("a", "b", "c", "d", and "e") on the page and I want to take some simple actions on them e.g. ( "touch", "drag", "mouse-enter", "mouse-move-away", "click", "focus" and so on ).

Thus, if I click "a" on the web page, I expect some reaction.
Thus, if I drag "b" on the web page, I expect some reaction, maybe the same or something different.

Very simple and very reasonable expectations.
But what did old javascript offer?

Your action: Click a submit button of a form
Your expected reaction: Check the value of a field/blank in the form

Then, you must code/write something long, verbose and ugly. You can verify this by reading any old javascript book.

My Style Javascript


I refuse to touch such smelly, messy stuffs. So, I did something like:


onClick="clicker('id1964')"     

onMouseOver="mover('id1')" 

onMouseOut="mouter('id1964')"  

onClick="displayText('id11', 'Khine 1980');"


/* KYAW TEST June 25, 2007 */

function loader() { alert("on load on body tag"); }

function unloader() { alert("on unload on body tag"); }

function blure() { alert("on blur on body tag"); }

function focuse() { alert("on focus on body tag"); }

function clicker(elemId) {
    var elem=document.getElementById(elemId)
    elem.style.color="red"
    alert("this box follow the link anyway!!!");  
}
function mover(textAreaName) {
    document.getElementById(textAreaName).style.visibility="hidden";
    alert("blah");  
}
function mouter(textAreaName) {
    document.getElementById(textAreaName).style.visibility="visible";    
}

function displayText(textId, mess) {    
    document.getElementById(textId).firstChild.nodeValue=mess; 
}

The function "loader" acts when something is loaded.
The function "focuse" acts when something is focused.
The function "mouter" acts when the mouse is outted.
And so on.

Does it take brains to write simply like that?

Let jQuery Beat Me But ...


As you can see in the comment lines, these were done in June 2007. At that time, I wasn't keen on javascript and so hadn't heard of jQuery and John Resig and his wonderful inventions and re-inventions.  Now with his marvellous library, to get similar effects, I write just 1 or 2 lines.

Conclusion


Insist on simple, reasonable stuffs as a discerning buyer, on behalf of your own customers.
Refuse to use, reuse messy codes.


If you can find a John Resig, use his/her stuffs.

If you can't, at least make and keep things simple for yourself and, above all else, for your customers.

January 24, 2013

Some Reasons for Learning to Write Software

on August 6, 2011

This is a kind of brain-storming with myself, and thus they were jotted down in no particular order.
  1. to express myself in products, rather than in poetry, paint, dancing moves or tune etc.

  2. to father many a virtual world, where schools really behave like schools, kids behave like kids, lessons behave like lessons etc.

  3. to exploit market opportunities, technological opportunities, etc

  4. to get ease and speed in self-expression

  5. to join the conversations and movements of fellow programmers

  6. to do some research

  7. to own something hard to take away from me

  8. to reuse codes written by others

  9. to save kids from bad e-learning. Recalls what Bill Gates said in "Road Ahead": Bad processes, when computerized, do more damage faster!



Oh, even that lowly robot is helpful and lovely, isn't it?

January 19, 2013

Movie-Like Software and Our Chances

People and organisation seem to have an incurable amnesia. One day they say, "Software is king". The next day they say, "Software is commodity". And this pendulum swings go on and on. What is the truth behind this hype and reverse-hype?
Drucker's Predictions
Drucker has famously said that the IT Revolution has not even started yet. He described how printing business gave rise to publishing and other businesses and predicted that IT will give rise to many unforeseen industries.

Drucker also believes that IT will become like movie industry. By extension, it will be like publishing industry too.

Then, I want to ask:
  1. Do we, small guys, still have a chance? 
  2. Do we get access to technology, market and capital?

  1. Can we mount a realistic challenge to Hollywood? e.g. Hong Kong, Bollywood, K Pop, J Pop, etc.
  2. Can we pose a challenge to New York Times, Wall Street Journal? 
  3. Or do we need something like Chinese Government's multi-billion media initiatives to make any inroads?

Since software is becoming more and more like writing novels and making a movie,
  1. Can the next Harry Porter occur in Indonesia? 
  2. Can the next Avatar come from Vietnam? 
  3. Do we need a Silicon Valley or a Chinese Government to do well in the software market place?



I still believe we have a chance to become major players in software business.
  1. Because change is a constant and it is our friend.
  2. Or as our friend, Ko Moe Thu suggested, because we create changes that will stack the odds in our favour.

January 17, 2013

Craig Mundie,Microsoft, and Expensive Business Lessons

Craig Mundie, Microsoft's chief research and strategy officer, during a recent visit to Singapore, shares these pithy business and technology lessons with us.

Before I discuss his lessons, I suggest he/MS change his job title to "chief strategy and research officer". That they have not done so already implies that they haven't learned or taken their own lessons seriously.

  1. MS has 900 Ph D scientists., "the world's largest R and D unit."
  2. It has many very strong and cutting edge technologies.
  3. MS was sort of the first to invent tablets and smartphones.

  1. MS failed to exploit their pioneering inventions of  tablets and smartphones in early 2000s. The products were "heavy" or "cumbersome."
  2. MS failed to do "great execution in some categories " of their product lines.
  3. Specifically MS failed to  coordinate different research groups, to design lusty products, to market well.










Now, why is Mundie still called "chief research and strategy officer"? Is research still more respectable than strategy in our beloved Microsoft?


January 16, 2013

Characteristic of a Good Software Framework

Code in the Cloud: Programming Google AppEngine by Mark C. Chu-Carroll


These basic ideas make up the heart of Google App Engine. There's not that much to it. But that 's sort of the point to it... There's just this modest set of concepts and libraries built around them --- and that's it. But this simple framework turns out to be a remarkable and elegant tool for building your own cloud applications.
 



CloudBees as described by the official site:


The CloudBees Platform as a Service (PaaS) architecture provides a powerful foundation for cloud development and deployment services.
 

CloudBees as discussed in Linux for You



No special framework is needed for application deployment ...
 

Compare that with Mongrel, Passenger, Capistrano thingies.

Will making things tough, complex, tricky for others enrich me somehow?

January 15, 2013

Aggressive Impulses of Id


I feel foolish anytime I get angry. And that is my curse. I soon forget why I get angry in the first place.

I need to remember why I get angry in the fist place. Because I will get angry again in future for the same reasons.

  1. I am angry when I have to code low-value programs.
  2.  I am angry when I don't have someone else who should code such programs.

There's a will, there's an anger, there will be a way, a way out.






















Have fun! Joy up!

Product Strategy : Every Thing Has Been Invented

Do not assume :
  1. A fellow Myanmar or Singaporean cannot invent
  2. Such inventions belong only to America, Europe or Japan.
  3. Everything has been invented.
Here's my stake on everything already being invented. Let's limit our discussion only to human beings' need to communicate.

The Mouth


I wish I were the one who invented the mouth. Every time you speak, make phone calls, shout, sing to your girl friend, make speeches, you will be paying license fees to me!

The Alphabet


I wish I were the one who invented the alpahbet. Every time you text with your phone, scribble your shopping list, email, type, you will be paying license fees to me!

The Hotmail, Yahoo Mail, Gmail, Facebook Mail


I missed them.

The QQ, Instant Messaging, The iPhone, The Twitter


I missed them.

The Flickr, Instagram, Pinterest


I missed them.

So, with all these inventions, are we now in communication heaven or Nirvana?

You can communicate anything you want to anyone you want anywhere in any manner you want, in any language or dialect, in any tone you want?

Language barrier has been broken? Culture barrier, generation gap barrier, all other barriers have been broken?

What about Jhonny Mnemonics and his brain dump techniques? What about how people communicated in ancient folk tales and myths?












Are we there already?

January 11, 2013

Programming - The Answer , My Friend, is ...

on August 11, 2011

My Own Failures


1. I wrote an application in a Ruby web framework 1.x.x. Everything worked, fine. Then the 2.x.x. version came along and I upgraded and my app broke in many places. I fixed them somehow.

Then the 3.x.x. version came along and I upgraded and my app broke in many places again.

That is not the framework's problem. The real problem is I had used too many plugins.

2. I wrote an application in a PHP web framework 1.6.x. Everything worked, fine. Then the 1.7.x. version came along and I upgraded and my app broke in many places.

This is not the framework's problem. The real problem is I had used too many PEAR's.

3. Before all this, I worked for a project that migrated from EJB1 to 2 to 3 etc.
And for another project, where the project managers took years to move from Struts 1 to 2.

Other Failures


1. Netscape's spaghetti code that cost the company its battle against Microsoft.
2. Friendster's social graph that slowed the site to a crawl.
3. MySpace's "technical debt" that ruined the site.
4. Ruby on Rails framework --- Its lack of hosting (Maybe their developers don't care or it is their blind spot). And its handling of data management; if they don't know this part well enough, they should leave it alone e.g. PHP has no ORM and has been doing just fine.
5. Microsoft alone has a dozen or more data access technologies from 1998 to 2008, according to a book by Joel Spolsky. I don't have time or experience to know such stuffs.

My Own Successes


1. Porting RedBlack tree, AA tree etc from Java to Ruby is easy.
2. Porting shortest path, quick sort etc from Ruby to Python is easy.
3. Porting Regular expressions, string/text handling etc from PHP and Perl to Ruby is easy.
4. Porting higher order functions amongst Perl, Python, Ruby is easy.
5. Porting any plain domain or business object from any language to any other language is very very easy. From Java to Pascal, from Perl to PHP, from Ruby to C++, whatever.

6. Modeling or making mental representations or doing objects, classes and APIs for Law domains, Insurance domains, Education domains are very very very easy and fast.

7. Dreaming, going into trance, seeing in my mind eyes some apps end to end from the users' point of views is extremely easy and fast. "Easy" doesn't mean I do these activities well because, often, I even forgot to do them at all!

8. Writing domain objects is very easy.

9. Combining those objects is very easy.

Other Successes


1. Real programmers code everything by themselves. A paradox because they do and they don't.
2. Real programmers don't trust others' codes. A paradox because they do and they don't.

3. Excel team wrote even their own compiler, and killed off all dependencies.
4. Algorithms are very infrequent. They come once or twice in a decade.

5. Facebook is using many programming languages. So is Twitter.
6. Google founders didn't learn HTML etc on purpose.


The answer


If you can't find Apple-style appealing packaging, sell your stuffs, your wares raw, plain, uncovered!

Have fun!

January 6, 2013

Role of IT and Software in Education, Learning and Training

The more things change, the more they stay the same.

This is the voice of the customer.

Things we now have but  didn't a few years ago:
  1.  iPad, iPhone, Facebook, Bing. 
  2. 3GL, 4GL programming languages such as Python, Ruby, Lua, Erlang, Scala etc. 
  3. multi-core, virtualizations, ec2, data centers, etc either. 
Technologies -- hardware as well as software -- are making headway by leaps and bounds.

But what about the applications, the products? Why are they lagging behind so pathetically?

Let's narrow our interest to just learning applications. Are they making a real difference to real people's lives? Have they tackled the fundamental desires, whims, needs, wants, concerns, worries, anxieties, fears, insecurities of the potential users of such applications and services?

Fundamental Questions

  1. How can such an application help companies achieve and retain their competitiveness, save them time, effort and money?
  2. How can such an application help teachers increase their effectiveness, save them time and effort?
  3. How can such a service help trainers increase their productivity?
  4. How can such a product help students and learners raise and keep high scores?
  5. How can such an application help employees and professionals solve their problems in a better way?

Fundamental Issues


What does a student expects from her/his education?

What does a trainee wants from her/his training?

This has not changed much throughout our history e.g. Read Ma`ha`ba´ra`ta, or Journey to the West, or Arabian Nights.

Industrial Revolution liberated us from the limitations of our physique and we thus no longer marvel at derricks and cranes moving heavy containers.

Isn't I.T. Revolution supposed to release us from the limitations of our minds and memories, or at least enhance our learning, thinking, reasoning and problem-solving abilities?

The revolution is not over, it's just unfinished.

If you want to carry on with this revolution, please join us.


December 25, 2012

Marathon Tyre Kicking and Insecurity

on January 8, 2012

From Dec 20 last year to Jan 7 this year I did a marathon of checking out various web frameworks. I burned both ends of the candle as well as the middle so long that the seasonal flu caught up with me. Still I kept on testing till my PC too went down.
It took me a couple of days to find and fit replacements for the PC. Then I went on with my testing. In a couple of hours with the revamped PC, I finished all testing.

I tested the following frameworks, across different languages, generations, paradigms, communal styles, and even across different philosophies:

  1. Code Igniter 2.1.0

  2. Yii 1.1.8

  3. Rails 3.2.0

  4. Sinatra + DataMapper

  5. Django 1.3.1

  6. Rails + DataMapper

These 2 to 3 weeks saved me a lot in terms of time, effort, and money.

Most important of all, it cures me of my insecurities-driven hunger for aa2d tools.

I am insecure, well, at least, most of the times or some of the times. It's hard for me to ignore or accept risks.

A Past Example


XSLT, XPath, bah, blah ........ and I got scared.
SOAP, Web Servies, WS-* bah, blah ........ and I got scared.
At that time, I studied half a dozen of such books and decided that I had no choice but to accept this risk of staying ignorant of such technologies. None of them become decisive competitive advantages. The RISKs I sadly accepted turned out to be no risks at all. Paper tigers? Smoke screens?

A Future Saving


I wanted to do DSL(domain-specific languages) very much. I still want to.

It will take at least a few years to do a DSL for any domain, say, public transport, health care, trading, education. It will take a genius like me ;-) to take on such a challenge.

Certain languages are provably better than others for doing DSL, say, C++ vs Python. So, with my insecurities, my chain of thoughts will go like this: "I cannot allow my competitors using Python doing DSL while I stick with C++ or VB. I must also use Python etc."

Relax in Peace


Now these 2 or 3 weeks' tests rid me of many such insecurities. I don't need to deny access or area to anyone.

The universe is too abundant for our own good! There have been and there will ever be a lot of self-defeating technologies, and a lot of useless inventions!

Yes, it is also full of life-saving technologies, customer-smiles-winning inventions too. It's 100% up to us. I want to save lives, to make customers smile, to keep them smiling, to comfort them, to help them sleep better, to change lives for the better, to reduce poverty, to make life more meaningful ... then I will keep finding tools for those ends.

Those who want to lock in customers, ransom them, torture them, out-wit them, play fast and loose with them .. too will find all the tools they need in this abundant universe.

Choose wisely and live happily, with or without any insecurity!

HAPPY NEW YEAR!

December 22, 2012

Google Query Language, General Patton and an Apprentice

on August 21, 2010

Topics: Google Query Language, General Patton and an apprentice at our software startup.

Google as you know allows its employees to take 20% of their time to do their own pet projects: 80% for the company and 20% for their own.

Our company? Yes, our ratio is almost the reverse, especially for the interns and the apprentices. They take 80% of their time to do their own pet projects and their own learning: 20% for the company and 80% for their own. So, they put in about 2 hours per day, out of 10 hours working time (10 hours include 2 hour lunch time and other breaks!)

Even then, I wonder, "Is this apprentice wasting our time?"

And General Patton? The famous American WW II tank commander? What does he have to do with software?

The answer: a lot.

If impatient, just go leap to the conclusion.

Example 1


from google.appengine.ext import db
from models.tutor import Residence
import inspect

query = db.GqlQuery("SELECT * FROM Residence WHERE "
"dimensions IN :mydimensions "
"AND locations IN :mylocs "
"AND rent < :myrent "
"AND gender = :mygender"
,
mydimensions =["30x60", ],
mylocs = ['W', "W"],
myrent = 41,
mygender= "M"
)
print inspect.getmembers(query)

which gives the following result:

[('__class__', ),
('__delattr__', ),
('__dict__', {'_namespace': None, '_proto_query': , '_kwds': {'mylocs': ['W', 'W'], 'mydimensions': ['30x60'],
'myrent': 41, 'mygender': 'M'}, '_args': [], '_model_class': ,
'_keys_only': False, '_cursor': None, '_end_cursor': None, '_compile': True}),
('__doc__', 'A Query class that uses GQL query syntax instead of .filter() etc.'),
('__getattribute__', ),
('__getitem__', bound method GqlQuery.__getitem__ of >), ('__hash__', ),
('__init__', bound method GqlQuery.__init__ of ('__iter__', bound method GqlQuery.__iter__ of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c>>), ('__module__', 'google.appengine.ext.db'),
('__new__', built-in method __new__ of type object at 0x8146a20),
('__reduce__', built-in method __reduce__ of GqlQuery object at 0xaa7dd6c),
('__reduce_ex__', built-in method __reduce_ex__ of GqlQuery object at 0xaa7dd6c),
('__repr__', method-wrapper '__repr__' of GqlQuery object at 0xaa7dd6c),
('__setattr__', method-wrapper '__setattr__' of GqlQuery object at 0xaa7dd6c),
('__str__', method-wrapper '__str__' of GqlQuery object at 0xaa7dd6c), ('__weakref__', None), ('_args', []), ('_compile', True), ('_cursor', None), ('_end_cursor', None),
('_get_query', bound method GqlQuery._get_query of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),
('_keys_only', False), ('_kwds', {'mylocs': ['W', 'W'],
'mydimensions': ['30x60'], 'myrent': 41, 'mygender': 'M'}), ('_model_class', class 'models.tutor.Residence'),
('_namespace', None),
('_proto_query', google.appengine.ext.gql.GQL object at 0xaa7d6ac),
('bind', bound method GqlQuery.bind of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),
('count', bound method GqlQuery.count of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),
('cursor', bound method GqlQuery.cursor of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),
('fetch', bound method GqlQuery.fetch of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),
('get', bound method GqlQuery.get of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c),


('is_keys_only', bound method GqlQuery.is_keys_only of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c), ('run', bound method GqlQuery.run of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c), ('with_cursor', bound method GqlQuery.with_cursor of google.appengine.ext.db.GqlQuery object at 0xaa7dd6c)]

Example 2


from google.appengine.ext import db
from models.tutor import Residence
import inspect

query = db.GqlQuery("SELECT * FROM Residence WHERE "
"dimensions IN :mydimensions "
"AND locations IN :mylocs "
"AND rent < :myrent "
"AND gender = :mygender"
,
mydimensions =["30x60", ],
mylocs = ['W', "W"],
myrent = 41,
mygender= "M"
)

print query.__dict__


which gives the following result:

{'_namespace': None, '_proto_query': , '_kwds':
{'mylocs': ['W', 'W'], 'mydimensions': ['30x60'], 'myrent': 41, 'mygender': 'M'}, '_args': [],
'_model_class': class 'models.tutor.Residence', '_keys_only': False, '_cursor': None,
'_end_cursor': None, '_compile': True}

Example 3


from google.appengine.ext import db
from models.tutor import Residence
import inspect

query = db.GqlQuery("SELECT * FROM Residence WHERE "
"dimensions IN :mydimensions "
"AND locations IN :mylocs "
"AND rent < :myrent "
"AND gender = :mygender"
,
mydimensions =["30x60", ],
mylocs = ['W', "W"],
myrent = 41,
mygender= "M"
)

obj1= query.__dict__['_proto_query']
print obj1


which gives the following result:

google.appengine.ext.gql.GQL object at 0xaa7814c

Example 4


from google.appengine.ext import db
from models.tutor import Residence
import inspect


query = db.GqlQuery("SELECT * FROM Residence WHERE "
"dimensions IN :mydimensions "
"AND locations IN :mylocs "
"AND rent < :myrent "
"AND gender = :mygender"
,
mydimensions =["30x60", ],
mylocs = ['W', "W"],
myrent = 41,
mygender= "M"
)

obj1= query.__dict__['_proto_query']
print obj1.__dict__['_GQL__symbols']


which gives the following result:

['SELECT', '*', 'FROM', 'Residence',
'WHERE', 'dimensions', 'IN', ':mydimensions',
'AND', 'locations', 'IN', ':mylocs',
'AND', 'rent', '<', ':myrent',
'AND', 'gender', '=', ':mygender']


which gradually leads to

['SELECT', '*', 'FROM', 'Residence',
'WHERE', 'name', '=', ':myname',
'AND', 'email', '=', ':myemail',
'AND', 'phone', '=', ':myphone',
'AND', 'rent', '=', ':myrent',
'AND', 'neighborhood', '=', ':myneighborhood',
'AND', 'transportation', '=', ':mytransportation',
'AND', 'gender', '=', ':mygender',
'AND', 'race', '=', ':myrace',
'AND', 'dimensions', 'IN', ':mydimensions',
'AND', 'locations', 'IN', ':mylocations',
'ORDER', 'BY', 'email', 'DESC', ',', 'rent', 'ASC']

Conclusion


At one time in WW II, the rumors (which was actually true) went that the German tanks were far stronger than the American tanks. General Patton must have known this before anyone else.

Did he admit the truth? No.

Did he lie and refute the truth? No.

What did he say? He said in effect that he never intended to use his tanks that way. His tanks were to do something else, not ram/bump/jar into or out-punch/out-slug/out-shoot the opponent tanks. Read more about that here.

The younger software developer wants to look into the nuts and bolts of a tank (a deliberately mixed metaphor).
The older General just wants him to look into the logic of his query in pseudo-code or read the doc for GQL(mixed again).

Engineers and soldiers
programmers and suits
engineers and marketers

Anyway, we gave the apprentice a pat on the back. Whether he works his 2 hours as Engineer or Soldier, is fine with us.

A Tip for Job Search: Gold Rush Skills

  If you need to make some money very quickly, what would you do? Your answer points to the kind of problems you can solve. They give you so...