Category Archives: General

work for backchat

Backchat.IO is hiring!

BackChat.io is easiest to describe as grep for real-time data. We’re busy developing a platform that makes sense of the data you send it (in real-time).

For the social web that means that you can start following certain users on a network or define a search term and you get those in a unified activity streams format.

But for something more arcane, like say, log data, that means you can send it lines of text and have it extract out fields on which you can define filters. All of this happens in real-time and changes are reflected virtually immediately in open connections.

Our system is designed to allow for easy definition of data sources. Sources that currently feed into our system are Twitter, Facebook, LinkedIn, SMTP, RSS, ATOM, PubSubHubbub, and more. By next year we hope to provide dozens, if not 100’s, of API implementations.

In the longer term we hope to provide more intelligent stuff like real-time reporting by allowing you to define aggregates like SUM, enhance data with secondary information, and many more crazy ideas. We’re aiming to build our system exclusively on existing standards described in RFC’s or the activity streams spec. However not everything we do is described in standards and that’s where we’ll try to extend an existing standard.
Our use cases are wide, ranging from niche collaboration or social media apps, to communication/PR/marketing agencies, to telecommunications… We operate at an abstraction on a much lower level than most similar services; so many tools you see and use on the web today can be built with only a few lines of code in your favourite language on our platform.

The entire system is built on dogfooding and practicing what we preach. So where it makes sense we rely on our own service, like with log processing. Our entire website is built using the API methods we expose to our customers. Our API integration language will be shared with our customers too.

How do you guys work?

We use a mix of technologies like scala, akka, mongodb, lucene, zeromq, dropbox, flowdock, skype, …. We apply agile principles to our development process, but this doesn’t mean we follow a doctrine that is being sold because some consultant wants to make some money. To us Agile development means: design for change. Which also means that the process we use is adapted to the people in the process and not vice versa. It’s about being productive and creating an environment where you want to work.
At the moment, all of us work from home. We’re a team of 3, looking for a fourth team-member to start in September. We don’t care where or how you work, just that you deliver 40 hours worth of output, regular github pushes (so new code can be reviewed before it hits our integration branch) and, most importantly, passion!

Great! What are you guys looking for?

We’re looking for a passionate developer. This person ideally:

  • knows about concurrent and distributed programming
  • is well-versed in Scala
  • can accept a team decision, and understands that communication is the most important part of development as a team.
  • is polyglot (the ability to work with C#, node.js/javascript, ruby, python and/or php)
  • preferably knows XMPP beyond using the smack library
  • has used mongodb
  • knows Lucene
  • regular expressions have little or no secrets for you
  • does not believe in sugar-coating things and voices reservations early
  • No! Try not. Do, or do not. There is no try. (Some of us hope you’re a Star Wars fan too)

It’s a plus if you’ve done some of the following:

  • BIG data
  • Language parsing and development
  • Natural language processing
  • Statistics
  • knows how to express himself in simple english and not academic language
  • Netty server development / Java NIO
  • Jetty customization
  • Understands the problems communication agencies and social-media developers face

What we’re not looking for is someone who has little or no experience, community zealots and big framework lovers (I’m looking at you rails, lift, spring, …). We need doers!

You do not have to live in the UK to work with/for us. We are firm believers in smarter remote-working, and our cloud-based infrastructure is designed to allow us to work from where we want.

Open-Source?

We use a lot of open source, and we believe in being good citizens and contribute back where we can. Some of the projects we use: casbah, akka, scalatra, lift-mongodb-record, lift-json, codahale metrics, databinder dispatch, …
So far most of our contributions were to scalatra and peripheral to akka. If we come up with stuff that we all agree on should really be in an open source project then we will actually take the necessary steps to make that happen.

Any open-source library we produce is licensed as MIT and uses as few dependencies as possible (be nice to people with complicated projects).

What’s the vision?

To build the best damned developer platform for social-media and real-time data! Quickly!

Our service is primarily aimed at developers. We provide a metered, utility billing model. Depending on which bits and pieces of our infrastructure a developer uses we calculate a price per message for each incoming channel. At the end of the month they get a bill. This billing is updated in real-time so everybody knows exactly where they stand.
For corporate customers we provide a behind-firewall-install license. This license fee may or may not include bespoke development or integration into their systems.

Our founding customer has been O2/Telefonica. They’re using our platform in cool ways, but we can’t talk about that just yet (ssshh).

Who are the company?

Adam Burmister is the CEO of the company and has previously worked as team lead for the bbc.com homepage. He has also done assorted javascript libraries and was nominated for a webby award for his work at xero.com. He’s a Kiwi, so be warned, he sounds funny.

Ivan Porto Carrero is the CTO and has previously almost published a book on IronRuby and has been an MVP for the last 2 years. Worked as an architect/consultant in the .NET sphere and met Adam while he was working as a senior development at xero.com It helps to know that Ivan is from Belgium, as an extremely low bullshit tolerance and it’s best to feed him at regular times with pre-approved snacks. Also, his english sounds funny.

Stefan De Boey was our very first helper and we haven’t managed to scare him off, he’s actually happy with his job, but won’t say so because he’s Belgian and compliments make people suspicious where he’s from (not to mention the thought of making a government).
Stefan typically starts his day between 11am and 12:30 and finishes around 20:00.
Also, his english sounds funny.

Ok, I’m sold. How do I apply?

Great! We’re looking forward to meeting you.

If you could, please start by sending us your LinkedIn profile and preferably some recent open source projects you worked on.

A good url regular expression? (repost)

I’m moving this post from http://geekswithblogs.net/casualjim/archive/2005/12/01/61722.aspx

I started out blogging on geeks with blogs but I can’t allow comments there anymore or I get too much spam, so I’m moving the post from there to this place.  Various people have contributed through the comments in the other blog post. So here I have better control over the spam and can open the comments again.

I have been looking for a good first layer of validating an url to see if it is valid.

For checking the format of the url it seems to me to be the most logical approach to use regular expressions. Up until now I always discarded them as being to “geeky”, meaning i don’t consider it my life’s biggest goal to be typing (/?[]\w) all day long (so why did i become a programmer, aaaah yes to make life easier for other people)

Anyway.. to find a good regular expression to that validates urls not url domains. One that doesn’t allow spaces in the domainname and where the domain can be suffixed with the port number.  Also I need support for the ~/ paths

This is what I came up with.. if somebody as a better idea… or finds a mistake please let me know.. Always happy to learn something new.

^(((ht|f)tps?\:\/\/)|~/|/)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5})(:[\d]{1,5})?)/?(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?

I was a bit quickly in using this regex. Simeon pilgrim indicated that the ftp urls won’t validate when you add a username and a password.

I don’t really need to validate ftp so I should have removed the ftp protocol from the list of choices.  I need this just to validate urls for weblinks and the link element in an rss feed.  When I need them for ftp I will post the ftp version.. but for now I don’t have time to spend on elaborating the regex.

Anyway here is the right one : ^(http(s?)\:\/\/|~/|/)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/?(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?

A full url validation would include resolving names through dns or making a webrequest to the provided url to see if we get a 200 response. The only way to be sure is to test if it is there in my opinion.

Thanks Simeon.

And for those who really want the ftp validation : ^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/?(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?

I am not sure about numbers in the username but I believe you can have a username of numbers alone.

Comments don’t seem to work on this blog engine.. so just send me a mail through the contact form. thanks

Two days later …

I discovered there is still a problem with my regular expressions… folders don’t get parsed.

I’ve solved the path issue, so now it should be finding all url’s

Expression:

^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?

Should parse the url below

http://hh-1hallo.msn.blabla.com:80800/test/test/test.aspx?dd=dd&id=dki

But not :

http://hh-1hallo. msn.blablabla.com:80800/test/test.aspx?dd=dd&id=dki

Update 29/11/2008:

Joe posted what seems to be a great regular expression in the comments

he tested it with the following urls:

http://www.google.com/search?q=good+url+regex&rls=com.microsoft:*&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1

ftp://joe:password@ftp.filetransferprotocal.com

google.ru

https://some-url.com?query=&name=joe?filter=*.*#some_anchor

Expression:

^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$

Update 8/11/2009:

Expression:

^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$

There is a wave for this regex:

https://wave.google.com/wave/?pli=1#restored:wave:googlewave.com!w%252BsFbGJUukA

Update 29/09/2010

So people if you don’t like it don’t use it.
Now this regex is troubled it has a bunch of issues but it works most of the time. If you want a more liberal regular expression to just capture urls from text, there is a really good one on the blog of John Gruber.
Improved regex for matching urls @ daring fireball

Joined the lounge network

Today I received my invitation to the Lounge network. I just finished changing my homepage to include their ads in my side bar.
My reasons for joining the ad network are that on one hand I’ve been an ad-sense member for a really long time and although I’ve had ads on multiple sites it never actually made me any money. Eventually I gave up on putting those ads on my blog. So I’m not really doing it to make any money of this blog, but if it takes a small bite out of my hosting bill I’ll be a happy man :) .

The ads that are run by the lounge are .net centric and are a much better fit to the audience of this blog. It even may be helpful to somebody at times. 

Let’s see how this works out.

Pimp your command-line for git

I do development on both the Mac and windows. I prefer to use git as my source control these days and have done so for the past year or so.  Git is great, I love it. I love the ease of branching a lot too. I’ll often just branch of locally just to play around with an idea without affecting the master branch.

But having many branches can be confusing at times, especially in my case as I can only remember what I was doing for 5 seconds. So sometimes I mess up a perfectly good branch because of the confusion.

Read more »

A new year… some changes

With 2009 starting, started actually, it might be time to look ahead at what’s to come this year.

I hope your holidays were better than mine with my grandfather dying on Christmas eve, I wasn’t in much of a celebratory mood this year.

After having tried being a consultant for a while I have a serious hang-over from enterprise style of development. At least the dev style that only listens to what microsoft has to say and swears by their judgment under the motto: “You don’t get fired for buying Microsoft”. As if it wasn’t bad enough all the CRUD went through stored procs over linq-2-sql. When somebody there told me to copy/paste instead of taking a little bit more care I made up my mind and left the place. This leaves me at the start of this year without a project/job, and as it looks now it might not be the best position to be in with the crisis and all.

Another area that I desperately need to make some progress in is the IronRuby in Action book. So far I have 4 chapters completed and the one on Rails is about half-way there. Because I’m not making as much progress as I initially thought. This partly because I decided to turn my life upside down this year.
Now that I’ve finally found a good place to live and my personal life isn’t as messy as it used to be I’ve returned to writing.

More news on the IronRuby in Action front is that I’ve got a co-author now. His name is Michael Letterle and he has contributed to the IronRuby project.  Michael is very passionate about Ruby development and is currently working on the Silverlight chapter of the IronRuby in Action book.

As part of the Chapter on Rails I’ve built a twitter clone. In the wpf chapter I created a twitter client and to be ensure things continue to work both offline as online it seemed like a good idea to me to create the server side too.  The last couple of days I’ve been implementing this limited version and you can find it at http://codeplex.com/mocktwitter. Finishing this application is on my to-do list for this year for now it does a little bit more than it needs to for the samples from the WPF chapter to work.

More on the IronRuby subject. I’ve also created a DBI layer for ADO.NET that you can use in conjection with IronRuby to talk to ADO.NET data sources. I don’t know yet if I will base my activerecord adapters on this DBI layer or just with the providers immediately. I put a post up on how to get started and where to get the sources etc on rubydoes.net

I intend to spend some time on agdlr as well as on ironnails as well because ironnails has been a lot of fun to develop.

Moving back to belgium

Tonight is my last night in New Zealand. Tomorrow I will fly back to Belgium to see what has changed in the 3 years that I’ve been away. I already know that my home city Antwerp has changed a lot because they were completely redoing the place when I left. I think it might still too soon for a reflective post on my experiences in New Zealand. What I can say is that I had a great time here and I made some great friendships with some extraordinary people. Depending on who you ask this is a good or bad thing but I’ll surely be back in a couple of years :)

Read more »

Color scheme for visual studio with resharper and Ruby in Steel support

This is certainly an exciting time for me. A release of dynamic silverlight that supports IronRuby, Asp.NET MVC that can be used to in conjunction with that.

I think that web applications and the way the web looks will severely change in the near future.

Anyway not only the people at Microsoft have been busy also the guys from sapphiresteel have been busy lately. They releases a really cool update to their Ruby In Steel product. A visual rails work bench and support for developing IronRuby apps with visual studio !

I finally got round to doing some installs/upgrades on my machine and played around with the color scheme until it suited me. I’ll post that here.

I use Resharper 4 as well as IronRuby and in Resharper I have code analysis turned on with color identifiers. So my scheme needs to support those.

I don’t like bright colors nor a totally black background, they have the same effect as a white background on me. I get migraines and can’t concentrate as long as I need to. (the latter may also be due to undiagnosed ADD).

So in C# with resharper the code looks like this:

CsharpColors

I do lot’s of webdevelopment but I haven’t tuned the colors for xaml yet. Will probably get round to doing that next weekend. This is how the html colors look (this is from rails html but html looks the same).

html

Then there still is ruby to show and a config file.

Here’s ruby:

rubyscheme

And lastly the config files:

webconfigscheme

Get DimmedInkResharperRubyInSteel (Visual Studio 2008)
Get DimmedInkResharperRubyInSteel (Visual Studio 2005)

Visual studio gallery

This morning I found an announcement for the visual studio tools gallery. I went and had a look they have collected heaps of tools, some free most of them not into a website.

I promptly downloaded a couple of tools. One of them is something I recently discovered I need, local history. That is in between check-ins a file can also change but that isn’t recorded in source control so i can’t revert or view differences. Turns out that there is a project on codeplex that allows you to do just that. It’s called local history :)

 

Technorati Tags:

OSX and Resharper get in eachothers way

And today I discovered that using unity severly interferes with my flow in visual studio.

I have ctrl-space mapped to quicksilver on mac osx which would mean I have to rebind either autocompletion or quicksilver, and it sure as hell won’t be my autocompletion. I think it will be too hard to unset that binding in my brain I’ve been using ctrl-space for about 10 years now, without even thinking about it. I even try to use it in Word but of course that doesn’t work ;)
The typing speed is also a little bit too sluggish for me to actually enjoy working in visual studio in unity mode. I decided to get back to a ruby project in textmate :)
I’ll try later on if it’s doable through full screen mode in fusion; and if that doesn’t work, I’ll have no other option than to boot into vista if I have to do .NET work.

There is another key missing from the mac keyboard, the insert key (and I have to admit about this one I’m definitely not that happy – what were they thinking??). So far the keyboard is the hardest to get used to. I mean those would probably be my most used shortcuts : ctrl – arrow, home, end, alt-insert and i now have to learn how to use different combinations and different ones in every program.

In other news, today i found myself using alt-C and alt-V on my windows keyboard when I wanted to copy paste. I think all the shortcuts have no right or wrong combination but it won’t be long before I master the ones on the mac that’s for sure.

I feel a lot better having that off my chest.

Back to contracting

Yesterday I gave notice at Xero, my last day will be mid February (15/02).

It’s been fun working with the team of people at Xero, but I just want my own time back. I won’t go into more detail around the reasons for my leaving Xero but we part ways on friendly terms.

I’ve been getting more and more into Ruby again and I really like that language. So I’m mostly interested in jobs that will allow me to use those dynamic languages. I can now take some time off to finish the book I’m writing and to do some coding on a couple of things I have in mind.

Ideal places for me to work would be a place that practices Agile development et al. I’ll be going back to contracting probably unless somebody makes me a really great offer :)

Page 1 of 712345...Last »