Sunday, February 13, 2011

Few thoughts on #elopocalypse

It was interesting to see how Nokia partnered with Microsoft few days ago on using Windows Phone 7 on their next generation smartphones instead of their homegrown (well almost as they partnered with Intel on it, but Maemo, its foundation, is theirs) MeeGo platform. There was instant community uprising (look at #elopocalypse & #feb11 tags on twitter). 1000+ Nokia devs hit the streets of Tampere (quite unusual behaviour for geeks)

Why is it a big deal?



Microsoft buys a potentially large market share for Windows Phone 7 by knocking out a potent competitor MeeGo. With this move Nokia degrades itself to pure hardware manufacturer (with a strong patent portfolio), giving up its Ovi store and other aspirations.
It will be rather cold out there for them (just look at competition Samsung, HTC, ZTE, LG to name a few), and we saw how successfully they coped with them earlier... I am sure Windows Phone 7 is a usable platform & Microsoft will do everything doable to make it even better to be able to catch up with Android. On the other hand MeeGo is a linux based OS where you could reuse the linux stack (like install a webserver on your phone if that is what you need), backed by excelent Qt, technically the most advanced stuff in mobile atm.

How miscommunicated by Steven Elop & his team



I mean seriously, you dont mention any words that can even be even associated with "disaster" to be able push trough a deal you made. I think he is simply not competent enough to lead a company level of Nokia, regardless of how good/bad the deal itself is.

Consequences



The price of Nokia shares went down by 13.97% instantly (almost 5B $). Guess it will be even harder to communicate to shareholders, really hope that Mr. Elop will prepare better this time. Nokia receives a yet undisclosed amount of cash from Microsoft measured in billions of USD. Microsoft has started seriously investing in mobile, and their war chest is not small. Nokia holds lot of patents in mobile arena, is still a strong brand so from Microsofts side perfect strategic partner.

Community?!



When Google released Android they did everything possible to attract 3rd party developers & make them adapt their platform & write apps for it (copy-paste idea from Apple). These developers are early adopters, show their phones & apps to friends, they blog about it etc. & the whole thing will get traction soon. So in short a valuable asset.

What Nokia did? They encouraged thousands of devs that MeeGo is the way to go, the guys invest serious time in it and suddenly burning platform & cold sea. Now if you invested & lost time on Nokia lie would you be early adopter in second round/any rounds. Thats just bad karma which I dont think Nokia needs.

Sunday, October 3, 2010

jQuery webcam plugin


Because of finds like this jQuery plugin is worth `wasting` so much time on reddit.


With jQuery Webcam plugin, a global object window.webcam is available, which provides the following methods:



  • capture()

  • save([file])

  • getCameraList()

  • setCamera([index])



Cant wait to test it with red5 stream capture stuff.

Wednesday, February 24, 2010

PHP: __get && isset


Encountered strange behaviour with php today. If __get is implemented in a class (to provide some properties that are calculated on the fly for example), isset returns false for mentioned calculated properties.



Check out this simple example


class exampleA
{
    __get($property)
    {
        return ($property == 'calculatedProperty')
            ? 42 //do some resource heavy calculation, like meaning of life
            : false;
    }
}
isset($exampleA->calculatedProperty) === false


This is not a bug but a feature according to PHP staff. Btw there is rationality behind it, as there is a __isset in place.

This should work


class exampleB extends exampleA
{
    __isset($property)
    {
        return ($property == 'calculatedProperty') ? true : false;
    }
}
isset($exampleB->calculatedProperty) === true


Maybe this is obvious to everybody, it surprised me at first run, but its correct behavior.

Tuesday, February 2, 2010

Debugging PHP with NetBeans & Xdebug & Ubuntu

It was almost impossible with my config to get working Zend Studio debugging, I think I achieved it once over the years, but it crashed my apache often, so wasnt that good solution neither. For development environment I use ubuntu/debian, vhosts with mod_rewrite, therefore need remote debugging.

Useful links info :

* Configure Xdebug in NetBeans
* Netbeans debugger in general


I had Xdebug set up and NetBeans fully supports it so gave it a try.

in Project Properties->Run Configuration, advanced button

- added Server path/Local path mappings for project ,
- debug Url set to "Ask every time", because I was about to debug remote mod_rewrite urls

For some odd reason, it wasnt working out of the box, Xdebug and NetBeans wasnt communicating well (it probably will work for you out of the box, my machine is cursed :), nothing "easier" that debug the debugger... needed some info

Edited /etc/netbeans.conf and changed php dbgp debug level:

netbeans_default_options="-J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Dorg.netbeans.modules.php.dbgp.level=400"

IDE debug log is accessible at (with output from dbgp): View->IDE log,

Xdebug logs location is at xdebug.remote_log defined in your php.ini

It turned out that it had something to do with my xdebug settings in php.ini. My final settings are:

zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log=/var/log/xdebug.log
xdebug.extended_info=1

And it finally found my break point, on custom remote url, hurray :) Long live NetBeans & Xdebug

PHP IDE: NetBeans 6.8 vs Zend Studio 7.1

Little bit of background: I use Zend Studio since version 5.5 and it was released long time ago, I dont even remember the year :). Main point of sticking with Zend was that I am used to eclipse, how it works & its shortcuts/shortcomings. Its a good IDE although it has its dark sides.

It was "interesting" from Zend that with every new major release you got a worse product, until the first minor releases fixed up the bugs (do they even have QA?). Same was with version 7. I got to the point that even autocompletition wasnt working, indexing was still slow as hell, not to mention "luxury" of debugging ... Was thinking is this really that much better than vi :)

Looked around and installed NetBeans 6.8, because read good things about it. Will try to cover my impressions in order of appearance.

  • Marks svn changeset in editor : it has a green bar beside line numbers that shows changes done to working copy, usefull little feat
  • Fast : indexing is remarkably fast (have I mentioned that I come with Zend Studio background :)
  • Code completition working: shouldnt be that big of a feat, if it was working correctly in Zend Studio 7.1, this is what differs an IDE from a really complicated text editor.
  • Eclipse keymapping as option. pleasant surprise, obviously they have encountered similar people as me :)
  • Search & Replace: more convenient on multiple replace runs on same selection (no direction problems like in Zend Studio), was minor but annoying, who encountered it will know what I talk about :)
  • Syntax checks in HTML/JavaScript are better in Netbeans (spotted quite a few errors made in Zend Studio), especially with non standard markup (like Flexy templates)
  • Double clicking selection of strings sometimes selecting slowly/rarely not selecting/sometimes need multiple double clicks in Netbeans, minor but this is better in Zend Studio
  • PHP source formatting is more customizable in Zend Studio, HTML/JS formatting was better in NetBeans
  • Working debugger in NetBeans (details of setup)

Summary


I am using Netbeans 6.8 as my PHP IDE, have I mentioned that it is free?

Saturday, August 29, 2009

Welcome back gift for a colleague :)

My brother and some of his friends prepared a nice welcome gift for a colleague while he was at holiday. It took few hours of fun, 90m of aluminium foil and a good idea.

The stage is set and a webcam is installed to record his reaction when he arrives (will post the url once it happens).











Saturday, April 4, 2009

Solution for content duplication

The content your site publishes are often reachable trough multiple urls. It happened to me while using Horde_Routes (which is really nice way to organize your urls with Seagull), and there weren't easy workarounds (http redirect is not a too nice solution)

This could cause you problems with search engines, because "score" of that particular content are spread trough multiple urls. Your content gets lower relevance in search results which is definitely not what you want.

Now there is a nice solution for this issue called : cannonical URL link

Basically you just have to add
<link rel="canonical" href="http://someurl/comes/here" />

to HEAD section and you are done. It will tell the search engines which url to associate with content. All major search engines support canonical url links.

With Seagull you have to modify www/yourtheme/default/header.html and add a line like

<link flexy:if="canonicalUrl" rel="canonical" href="{canonicalUrl}" />

which means that if you set $output->canonicalUrl in your controller it will find its way to search engines