Tim Keller

Web, IT, Telecoms, Development, Networks, Photography, Life.

Archive for the ‘Opensource’ tag

I’m speaking at DevDays 2010

with 4 comments

Don’t sit on the bench, get to DevDays 2010 and score with us! Laduuuuuuma!!!!

It’s here! Microsoft DevDays is the premier developer event of the year and is all about learning, sharing and interacting with one another and having fun! DevDays 2010 brings you the best of current developer technologies, along with a preview of soon-to-be-released Microsoft tools and technologies.

I spoke at DevDays 2009 and had a blast. This year, I’ve been invited back to deliver two new talks:

  • Getting started with Silverlight development
    Interested in Silverlight development but not sure how to get started? Learn the basics of Silverlight application development – the tools and fundamental concepts behind Silverlight. Find out how to re-use your existing .NET development skills to build exciting new applications. This session will focus on the fundamentals of Silverlight including layout, data binding, data access and styling.
  • Open Source and Microsoft – Working Together
    Microsoft AND Open Source? What?! Come and learn how Microsoft platform works with open source platforms like PHP and Java form the server room and into the cloud. Come and learn how Microsoft is opening up and supporting open source development and technologies.

Find out more, and register at http://www.microsoft.com/southafrica/devdays/default.mspx

Most importantly, entrance is free! Please join us for a wonderful day of learning and networking.

Written by Tim Keller

February 24th, 2010 at 2:48 pm

Comparing two MySQL tables

without comments

From time to time, I need to compare MySQL database tables and see what data has been added to the one in the time since I mysqldump’d the first one.

For example: Let’s say I have table_a as my snapshot’d table, and table_b as my newer table which has one or more new rows in it.The query below will return all records that are in table_b, and not in table_a.

SELECT table_b.* FROM table_b
LEFT JOIN table_a ON table_b.id = table_a.id
WHERE table_a.item_id IS NULL

This idea can be extrapolated to comparing the tables of two different databases:

SELECT database_b.sometable.* FROM database_b.sometable
LEFT JOIN database_a.sometable ON database_b.sometable.id = database_a.sometable.id
WHERE database_a.sometable.item_id IS NULL

The you can take those results and use them to INSERT the missing records, should you want to do this.

Written by Tim Keller

February 1st, 2010 at 5:05 pm

Posted in Geek, Technology

Tagged with , ,

An Oxymoron’s Guide to PHP on Windows

without comments

I had the privilege of speaking at SA Developer Cape Town last night. Twenty-something local geeks turned up to hear about how well the Open Source PHP language runs on Windows IIS, using FastCGI.

For the longest time, the utterance of “PHP” and “Windows” within the same sentence meant the speaker was either temporarily insane, or horribly misguided.

In ‘An Oxymoron’s Guide to PHP on Windows’ you’ll discover just how much the situation has changed in the past 12 months. Thanks to Windows Server, IIS7 and FastCGI, running PHP on Windows finally makes a great deal of sense. It performs admirably and facilitates integration with familiar Microsoft technologies like ASP.net and Silverlight.

Written by Tim Keller

November 26th, 2009 at 11:40 am

Google Go

without comments

Go Logo

Google is touting its new Go language as a modern systems programming language which is expressive, concurrent, garbage-collected. Go takes the development speed of working in a dynamic language like Python, and combines it with the performance and safety of a compiled language like C or C++.

In its Go FAQ, Google explains the main motivations behind the project:

No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:

  • Computers are enormously quicker but software development is not faster.
  • Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
  • There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
  • Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
  • The emergence of multicore computers has generated worry and confusion.

Bold words from Google, especially considering the number of new languages which have come and gone over the years. Surely its too risky to put the corporate name behind the project? Not once you hear who’s on the team.

The project is being staffed by some serious Computer Science heavyweights: Robert Griesemer, Rob Pike (Unix Team, Plan 9 OS, UTF-8, Inferno), Ken Thompson (inventor of B – forerunner of C, UTF-8, shepherd Unix and Plan 9), Ian Taylor, Russ Cox, Jini Kim and Adam Langley.

Coming from a C/C++ background during my university days, my first Go experience felt quite nostalgic. I grabbed the source via Mercurial, compiled it in the Terminal, and configured some shell environment variables. What I was left with was a native Go compiler for my x64 architecture (6g) and a Go linker (6l). These are the recommended compilation tools until the GCC-based (gccgo) version catches up.

Installation on Snow Leopard

Before you follow these steps, you should have XTools installed. You should also be running Snow Leopard as your OS. These instructions should also work for 10.5 Leopard, but you may have to use GOARCH=386.

Environment

Go needs a couple of shell/environment parameters to be set prior to installation.

Add the following lines to your ~/.bashrc file:

export GOROOT=\$HOME/Go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=\$HOME/bin

Now use the source command to apply those changes:

source ~/.bashrc

Next we need to add the bin directory for Go, and map it on the system path:

mkdir -p $HOME/bin
echo "$HOME/bin" > go
sudo mv go /etc/paths.d/
eval `/usr/libexec/path_helper -s`

Source Code

The Go team are currently using Mercurial to handle the source code. If you don’t already have it installed, you can install it quickly and easily with the following command:

sudo easy_install mercurial

I encountered an issue whereby UTF-8 was not set as my locale language type. While some will not experience this, I had to force this by adding the following lines to your ~/.profile file:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Adjust according to your locale, if neccesary. Big thanks to ricafeal for this.

This will use the Python easy_install tool to install the mercurial package on your system. Once complete, its time to checkout a copy of the Go source code:

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

This will place a full directory of Go source in the directory defined in ~/.bashrc as $GOROOT

Installation

All the Mac OS X particulars are done and you can follow the standard installation procedure. That includes:

cd $GOROOT/src
./all.bash

If you get a message stating…

--- cd ../test
N known bugs; 0 unexpected bugs

… you should be good to go (oh the puns).

Hello World

package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}

To compile:

$ 6g hello.go
$ 6l hello.6

To execute:

$ ./6.out
hello, world

You may also want to check out Jeremy’s great little script which lets you compiler (6g) and ink (6l) in one, well, go.

More Go later this week!

Written by Tim Keller

November 16th, 2009 at 5:17 am

Speaking at TechEd Africa ‘09

without comments

I’ve been asked to present two sessions at Microsoft Tech•Ed Africa 2009. Its being staged again this year in Durban and should see 2000 IT Pro’s, Developers and miscellaneous geeks decend upon the outstanding Durban International Convention Centre from 2-5 August.

My sessions are:

  1. Windows Server & FastCGI technologies for PHP (DTL204)
    Developer Tools, Languages, and Frameworks
    Mon 3 Aug | 300 – Advanced | Developer, IT Pro

    PHP is a wildly popular scripting language for the web, and powers some of the largest websites on the Internet. Traditionally, PHP on Windows has been something of an oxymoron. Join us and find out why PHP is now highly performant, scalable and efficient when run under FastCGI on Windows Server and IIS. Presented by a local PHP developer, you’ll gain insight into how you can take advantage of PHP on Windows, and integrate it with technologies like PowerShell, ASP.NET and SQLServer.

  2. Embrace Open Source on CodePlex (DTL302)
    Developer Tools, Languages, and Frameworks
    Tue 4 Aug | 300 – Advanced | Developer

    If you’re a software developer interested in running an open source project or just looking around for a particular tool to download, come check out the latest from CodePlex. CodePlex is the open source project hosting site from Microsoft. Launched in May 2006, CodePlex hosts thousands of open source projects. CodePlex users can start open source projects with support for source control, bug tracking, wiki pages, downloads, forums, and project statistics. Additionally, CodePlex supports the widest range of source control clients. This talk explores the top downloaded projects, outlines the CodePlex feature set, and explains how we build the CodePlex software.

I’m looking forward to spending time with some great techologists. Let me know if you’ll be attending!

Written by Tim Keller

July 9th, 2009 at 6:32 pm

Posted in Speaking

Tagged with

Opensourcing some stuff

without comments

Hey all

It has – yet again – been ages since I’ve posted. Sorry to keep you *all* waiting!

We here at OneWebStudios have had great fun writing a lot of code over the past year, in various languages, and so today I’m pleased to announce that we’re going to start opensourcing certain projects. This won’t happen overnight, nor will it include our major projects (ChirpSchool, etc) but it will include smaller projects that we’d love some help with. If you’re keen to join the OWS family, drop us a comment on this blog post.

In the meantime, watch www.timokeller.net/opensource for news.

Tim

Written by Tim Keller

March 3rd, 2008 at 11:56 pm