Traveling for a few days - London and Copenhagen

Date May 10, 2009

I’ll be traveling the next 10 days, including time in London May 12-17 and Copenhagen May 18-20.  If any PHP or web people would like to get together for a drink/meal/chat/podcast/whatever, let me know.  I’m planning on attending one of the Dojo dinner activities (I think it’s Thursday May 14) so if you’re already going to that, awesome  :)

Best way to ping me is probably email - mgkimsal@gmail.com, though skyping me at mgkimsal should ring thru to my phone as well while I’m over there.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

JSMag May 2009 available

Date May 7, 2009


The May 2009 JSMag is now available. This month:

  • Mashups from the Ground Up (Josh Holmes)
  • Flex/AJAX Bridge Gotchas (Michael Pelz-Sherman)
  • Demystifying Custom Events in jQuery (Rebecca Murphey)
  • Web Testing with Windmill (Adam Christian)
  • RIA Revolution (Leon Gersing)
  • Book excerpt from “JavaScript for Programmers” (Deitel, Deitel)
  • Community News (Matt Henry)

More info can be found at http://jsmag.com/latest

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

TriNUG SharePoint group meeting

Date May 6, 2009

Just got done with attending the TriNUG SharePoint group meeting.  Mike Gannotti presented on how to adopt SharePoint in an organization.  Lots of good stuff, and this was far more about social media tools adoption in orgs rather than much that was specific to SharePoint.  The biggest kerfuffle tonight was Mike’s bombshell statement that “if users have to search, you’ve failed”.  Lots of good back and forth on this, although I don’t have much time to document the whole thing. 

I did ask whether SharePoint search would take in to account *where* a search is initiated from.  For example, if I start a search in a particular wiki, the search should rank those wiki posts higher.  The quick answers I got were that either SharePoint does that out of the box, or it can be tuned to do that.  Seems like it would make more sense that have that default behaviour if it’s not. 

Someone else across the room brought up that something that needs to be done is someone should be watching the search queries to see how people use the system, then tune for that future users.  This is likely something that would need to be revisited later.

Mike also talked about using scoring to help encourage participation.  Giving points to people who create content, and other points to people who engage with the content (ratings, replies, downloads), then allowing people to redeem the points for stuff (he’s getting a netbook based on this point system) is a way to get people using the system and putting in content which will be held for the long term inside the company in question.  Neat idea.  Knowing that companies are actually *doing* it is even better.  :)

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

Oracle buying Sun - what does this mean for MySQL?

Date April 20, 2009

Just woke up this morning to news that Oracle is buying Sun.  After cursing myself for not having bought some JAVA last week when it was in the 6 range (pre-market now at 9.10), I started thinking about what this might mean for MySQL.

About a year ago, Sun purchased MySQL.  Although a lot of hooha was made about what might happen to MySQL at that time, Sun made it pretty clear that they wouldn’t be changing too much of the company they were purchasing.  They’d wanted to have a good story on the low-end of computing (from what I remember) and the LAMP stack (where M was for MySQL) dominated much of the low-end of web development.  While it was never on the same level as Ebay buying Skype, I think a lot of people were confused by how Sun would be able to get back the billion dollars they expended on the MySQL deal.

Fast forward a year.  Some of the key MySQL core team have left, forking the MySQL product in the process (drizzle).  Is the MySQL branch of Sun very attractive?  I imagine Oracle was looking more at the hardware and consulting side of the Sun acquisition, not the database side, but this won’t site well with many in the MySQL world.

The MySQL community has always been a bit suspicious of Oracle.  Many were quite alarmed when Oracle purchased InnoDB, the company that made the innodb MySQL table engine, and that was something that spurred on work on other transaction engines in the MySQL world.  Nothing has yet come to be adopted as widely as innodb yet, and Oracle’s control of InnoDB has continued to be a bit of concern for some in the community. 

Is Oracle getting much on the database front when they purchase Sun?  There’s probably not enough of a marketshare between the two to claim that there’s some sort of monopoly anti-trust considerations to take in to account (MSSQL, DB2 and PostgreSQL - what is their combined marketshare?) 

Is there a danger that “MySQL” as a product will be a name brand, but that many people will just start using community forks?  I can see that “MySQL” as a database engine might end up being a generic term, somewhat like “Linux”, in that there are many distros out there serving different needs.  Not sure if the MySQL licensing would ever allow for that degree of diversity, but maybe we’ll see something like this in reaction to the Oracle purchase. 

Side question - what will this do to Java and OpenOffice?  Hopefully Oracle will leave these (and MySQL) intact, and just focus on integrating these technologies in to their sales and consulting process, but leave the tech direction alone.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

Cover Art Contest for JavaScript Magazine

Date April 14, 2009

Reposting here from the JavaScript Magazine blog:

JSMag is holding a contest to find a cover photo for its next issue.  The selected winner will receive a gift certificate to BN.com or Amazon.com (winner’s choice) and a free subscription to JSMag.

Submitted photos need to be black and white, and at a resolution for printing, but other than those requirements, the subject matter is open.  Submitters will have to provide WebDev Publishing with a non-exclusive, royalty free right to reuse the image in future WebDev Publishing, and need to verify that they are the original rights-holder to the image(s) being submitted for consideration.

To submit an entry, email editor@jsmag.com, or simply tag a picture on Flickr with “jsmag” and we’ll find it.

Winner will be selected by JSMag appointees, and winner will be contacted by email and announced here.

Contest ends at the end of April 22, GMT.

So, get out your cameras and starting sending in your pics (or posting on flickr).

One question was asked the other day - “how many entries can I submit?”.  You can enter as many pictures as you wish.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

PPP PHP question v2 - the humbler post

Date March 22, 2009

Obviously I rubbed some people the wrong way, and didn’t explain my question(s) clearly enough from the outset, then got wrapped up in taking some offense from some of the responses.  Reviewing everything today I can see where I could have responded differently, and more clearly, earlier on.  Apologies to anyone who was offended (if anyone was).

I do think the original point(s) were somewhat lost.  To the original poster who offered the banking analogy - thank you.  However, I don’t think it’s enough, and is clearly at odds with some of my other experiences with Java/Groovy.  Let me show two code samples here (assuming WP doesn’t mangle the code too much - I need to get one of those code display plugins in here!)

In Groovy (Java), if I run this:

===========================
class person {
private email = “person email”
protected phone = “person phone”
public name = “person name”
def showInfo() {
println this.email + ” ” + this.name + ” ” + this.phone
this.onlyInUser()
}
}
class user extends person {
private email = “user email”
protected phone = “user phone”
public name = “user name”
def onlyInUser() {
println “I’m in the user class definition”
}
def showInfo() {
super.showInfo()
println this.email + ” ” + this.name + ” ” + this.phone
}
}
def u = new user()
u.showInfo()
===========================
I get this output:

===========================
person email person name person phone
I’m in the user class definition
user email user name user phone
===========================

*All* the *this* property accesses are class-bound, it seems, but the this.onlyInUser() call still calls the method in the child class.

In C# (my C# isn’t hot, but this *seems* to be a correct re-implementation of the same logic) if I run :

===========================

using System;
class person  {
public string name = “person name”;
protected string email= “person email”;
private string phone = “person phone”;

public virtual void showInfo() {
Console.WriteLine(”In the person showInfo method”);
Console.WriteLine( this.name + ” ” + this.phone + ” ” + this.email);
}
}

class User : person {
public new string name = “user name”;
protected new string email= “user email”;
private new string phone = “user phone”;

public override void showInfo() {
base.showInfo();
Console.WriteLine(”In the user showInfo method”);
Console.WriteLine( this.name + ” ” + this.phone + ” ” + this.email);
}

// Main begins program execution.
public static void Main()
{
User u = new User();
u.showInfo();
}
}

===========================

I get

===========================

In the person showInfo method
person name person phone person email
In the user showInfo method
user name user phone user email

===========================

Running seemingly equivalent code in PHP (5.2.5)
===========================
<?php
error_reporting(E_ALL);
class person {
private $email = “private person email”;
protected $phone = “protected person phone”;
public $name = “public person name”;
public function showInfo() {
echo $this->email.” - “.$this->phone.” - “.$this->name.”\n”;
$this->onlyInUser();
}
}
class user extends person {
private $email = “private user email”;
protected $phone = “protected user phone”;
public $name = “public user name”;
public function onlyInUser() {
echo “I’m in the user class definition\n”;
}
public function showInfo() {
parent::showInfo();
echo $this->email.” - “.$this->phone.” - “.$this->name.”\n”;
}
}
$u = new user();
$u->showInfo();
===========================
I get the following output:

===========================
private person email - protected user phone - public user name
I’m in the user class definition
private user email - protected user phone - public user name
===========================

There’s clearly a difference here, and it’s likely related to an logical difference between super and parent.  My limited Java-fu and C#-fu being what they are, I’m not able to quite grok why there’s a difference in behaviour between the examples ago.

Hopefully this is humble enough to garner some collective wisdom.  I’m not bashing PHP here, nor anyone’s contributions or anything of the sort.  Simply asking - why are these behaving differently?

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

PHP PPP question

Date March 19, 2009

Why does this work? Why does this show the email address?

#1
<?php
class person {
    private $email = “foo”;
    function showEmail() {
        echo $this->email;
    }
}
class user extends person {}
$u = new user();
$u->showEmail();

but this doesn’t?

#2
<?php
class person {
    private $email = “foo”;
}
class user extends person {
    function showEmail() {
        echo $this->email;
    }
}
$u = new user();
$u->showEmail();

Also, why does this work

#3
<?php
class person {
    private $email = “foo”;
    function showEmail() {
        echo $this->email;
    }}
class user extends person {
    function showEmail() {
        parent::showEmail();
    }
}
$u = new user();
$u->showEmail();

Actually, #2 is one that makes sense to me and I can explain.  The $email is private in the parent class, and is not visible in the child class.  With E_ALL on, I’d get a notice about ‘undefined property’.

The concept of $this in PHP seems, to the outside eye, to be capricious at best and somewhat broken at worst.  As someone who has to field questions on this sort of stuff, from developers with OO experience in other languages, trying to explain it (not even defend it, just explain it) is often difficult.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

James Ward at TriJUG (or, the hardest working man in RIA)

Date March 17, 2009

I’ve had the pleasure of meeting James a few times, first at CodeMash in 2007, then the past couple of times he’s come through the RTP area.  Honestly, I don’t know where this man gets his energy.  Between his travels around the world, constant blogging, writing and the various support he gives people through forums and emails and such, it’s like he does the job of two people.  Perhaps he rests now and then, but it doesn’t seem like it to me.

James gave our group the latest from the Adobe Flex world, demonstrating Spring/BlazeDS integration, FlexUnit/Fluint testing, and more.  Some of the demos were from last year (his Census test info), but some were new (Flex Monkey - think Selenium for Flex apps).  The numbers on AMF were, as usual, impressive, and I got to wondering (out loud) if there are other projects outside of Flex/Flash that use AMF compression.  It seems like it’s something only used in the Flex/Flash world so far, but perhaps there might be some use for it in regular JavaScript clients.  I suspect it might be too slow to run in pure JavaScript, but maybe not with the current crop of JS engine improvements.

James was also giving out a few copies of his latest book, First Steps In Flex, co-written with Bruce Eckel.  I’ve gone through about half of my copy (picked up in January) and have to say it really is a great introduction to Flex.  I wish I’d had something this useful a year ago when I was trying to start with Flex.  My only complaint about the book is the lack of screenshots - it’s only text.  Still, if you’re looking to start with Flex, James’ and Bruce’s book is a great first step (pun intended).

A few of us went out for drinks afterward and James attempted to show us augmented reality and computer vision stuff with Flex.  How far along are we?  You be the judge.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

Groovy and Grails presentation at Lexis Nexis

Date March 14, 2009

My friend Curtis Mitchell invited me to speak to some of the developers at Lexis Nexis about Groovy and Grails.  I was honored to speak, but also slightly nervous.  For some reason I’d got it in to my head that they were a Java development shop.  *Me* presenting to experienced Java developers makes me slightly nervous.  I don’t know all the terms or have the battle scars to relate to them.  I’ve not done EJB work, nor J2EE work (JEE now?), etc - so that was making me a bit nervous.

I got there a bit early, then realized I’d forgotten my stupid macbook vga adapter (one of the more acute drawbacks of having a macbook).  Then I realized they were mostly a .net shop, which made me even more nervous.  Why was I here?  How would I relate on a technical level?

I ended up using my slides for “Groovy/Grails for non-Java developers” which seemed to work out OK.  There were a few aspects of Groovy they seemed impressed with over C#.  At least one specific point I remember is the automatic private properties and automatically compiled get/set  methods - I think that appeared cleaner to some of the devs there. 

I got some good questions about some of the Java aspects, and just some of the dynamic aspects of Groovy.  Some of the devs seemed pretty up on dynamic language stuff in general, and talked of some of the stuff going on in the upcoming .net DLR.  I learned about extension methods in .net 3.5, which seem to be a similar way to modify existing classes (like adding new methods on to the sealed String class, for example).  Whether or not you can add stuff at runtime with extension methods, I dunno - forgot to ask.

All in all, after a few minutes I relaxed more.  I quickly changed my brain from thinking about Groovy/Grails specifically, to 1) talking more generally about dynamic languages (some slides had Ruby and PHP example code too) and 2) bashing Java the language for its verbosity relative to dynamic languages like Groovy.  Once I’d made the presentation more about “here’s what’s going on in Java re: dynamic languages”, it felt more comfortable to me, and hopefully to the audience.  I wasn’t there to get them to switch from .net (no good reason to do that!) but I think it gave some of them a fresh view of what’s going on in other camps, and also what dynamic languages bring to the table re: productivity.

Thanks Curtis and the L/N gang for your invitiation and hospitality (and cheap sodas!)  :)

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

JavaScript magazine launched

Date March 8, 2009

Finally, after much work, we’ve got the first issue of JavaScript magazine (affectionately known as JSMag) out.  Extra special thanks to Rebecca Murphey for her helping hand in an hour of need.  You can read about all the authors or take a look at the first issue or even grab yourself a sample PDF file.  Our first issue includes:

ExtJS: An Introduction

Brett Harris and Jed Brubaker walk you through just what ExtJS can do for you.

The Red Pill: Functional Programming in JavaScript

Follow Robert Fischer through the more esoteric side of JavaScript.

Unit Testing JavaScript

Join Matt Henry as he shows you how to unit test your JavaScript code using the YUI testing functionality.

Don’t be Alert!

Robert Cameron demonstrates the various ways of debugging your JavaScript code without resorting to the overused alert() function.

What’s new in jQuery 1.3

Rebecca Murphey takes us on a tour of the next functionality lurking in the latest jQuery release.

Community news

Catch up with the latest JavaScript news with Matt Henry.

We’re definitely on the lookout for contributors, so email editor@jsmag.com if you’re interested.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TailRank
  • YahooMyWeb
  • del.icio.us
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati