Hadi Hariri bio photo

Hadi Hariri

Never believed in elevator pitches

Twitter LinkedIn Github

JetBrains

All Posts

2022

Advocacy and your personal brand

Advocacy and your personal brand

Applying for Developer Advocacy

Applying for Developer Advocacy

2021

Organising with Checkvist - A new sublist

I’m a big fan of Checkvist and today in response to my praise on Twitter, Dan asked a few questions around it:Ok you ...

2020

A few words on Git.

I tweeted something about Git. Do I regret it? A little bit. Why? Because it had a grammar mistake.Git is not a succe...

From Zero to Lambda with Kotless

I know, the title is cringeworthy. In fact the only thing worse is using a subtitle“with only one line of code”But al...

Focus

A few years ago I started using an application for macOS called Focus, which allows youto block applications and webs...

Our reliance on a few big players

And the world shut down. As long as I can still order things on Amazon…and Amazon’s stock continued to go upIn our g...

Routing in Ktor

One of Ktor’s strong points is in the flexibility it offers in terms of structuring your application. Different to ma...

Making a habit of giving feedback

How many times have you heard yourself or someone else say “We should give more feedback”I’m pretty sure it’s too ma...

2019

Your privacy, your control.

I’m sure you’ve probably heard Mark Zuckerberg talk about how they are giving theirusers the choice when it comes to ...

Getting Started with Kotlin for .NET Developers

I’ve been asked quite a few times by .NET Developers (as well as those not familiar with Java/JVM), what material to ...

2018

Slack and the false sense of urgency

Slack brought us the promise of reducing emails and having all the knowledge of your company in one place, searchabl...

Public Speaking - Should I speak?

This is part 7 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Learning to play the guitar

I’ve always wanted to play the electric guitar and despite an attempt at doing so over 25 years ago, I gave up. Parti...

Public Speaking - Speaking

This is part 6 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Public Speaking - Questions

This is part 5 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Public Speaking - Timing

This is part 4 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Public Speaking - Slides

This is part 3 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Public Speaking - Talk Structure

This is part 2 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

Public Speaking - Dealing with nerves

This is part 1 of a multi-post series on public speaking Dealing with nerves Talk Structure Slides Timing Questi...

A Speaker's Technical Merit Only

A post by my colleague Trisha Gee on attracting more female speakers to conferences raised yet another debate on Twit...

2017

Multi-platform Projects with Kotlin

Kotlin 1.2 brings with it experimental support for multi-platform projects and last week at KotlinConf we showed how ...

On Functional Programming and Scary Terminology

There’s been another discussion recently about whether certain concepts or words used in functional programming shoul...

At times of pressure

At times of pressure, is when we need to show patience.At times of stress, is when we need to show empathy.At times w...

Removing Duplication. Introducing Duplication. Removing Duplication.

Take this codefun Route.session() { get("/sessions/{date}") { val sessionData = SessionData() val da...

Try it. It's free!

I received an email the other day in response to a blog post I’d written, asking me to try out a tool that helps me o...

Kotlin by Example

Over the weekend, I’ve thrown together a new site, Kotlin by Example, which is dedicated to teaching Kotlin using sho...

Linting your Kotlin Builds - IntelliJ IDEA Inspections

One of the questions that keep popping up around Kotlin is “How can I run a linter on my builds?”It’s actually quite ...

Raspberry Pi Starter Kit and Kotlin/Native

Last month I wrote about getting Kotlin/Native running on Raspberry Pi. My next goal was to try and control some hard...

Last week and Kotlin

Kotlin at Google I/OLast week was a very exciting week for Kotlin. To begin with, Google announced first-class suppor...

Kotlin on Raspberry Pi

Last week we announced the availability of the first technology preview for Kotlin/Native, something that we’ve been ...

Spotify - Dark Patterns and Privacy

Ever encountered a Dark Pattern?What will you answer if you do not want to share your feedback? Yes? No? Yes each tim...

2016

Our role in Privacy

I was Øredev last week and pleasantly surprised to see a good number of talks focusing on privacy, especially some of...

BBQ Ribs

I never really made ribs at home because I always thought you need to have smoker and go through a very long and comp...

O'Reilly Kotlin Course

I’m happy to say that my O’Reilly course has been published and is available either directly or via Safari Online. Th...

Mocking Kotlin with Mockito

The un-mockableGiven that by default Kotlin classes and functions are final (i.e, you need the open modifier to be ab...

Kotlin Workshop at GOTO London

I’ll be giving a hands-on Kotlin Workshop in London on the 12th of October as part of the GOTO London Pre-Conference ...

Git-Based Versioning

In getting Wasabi ready for it’s first big 1.0, Micah Zoltu suggested (and put in practice) that we switch to a new ...

Vendor Games

I was recently at a fairly large conference in the US and like many conferences, the organisers had thought of ways i...

RC means something

The .NET StormIf you’re not aware of what’s been going on in the .NET community with regard to .NET Core, here’s a go...

Agile Theatre - Act I. The Non-Code Stuff First

7 years agoAgile Coach: “The Agile Manifest talks about…”Agile Coach: “…so remember, amongst other things, it’s about...

Agile Theatre - Act I. The Non-Code Stuff First

7 years agoAgile Coach: “The Agile Manifest talks about…”Agile Coach: “…so remember, amongst other things, it’s about...

Quick Tabs in Chrome

I’m not a fan of tabs, and have been vocal about their usage in our own tools. Unfortunately with browsers there are ...

Unit Testing in Rider with External Tools

Disclaimer: we’re working on first-class unit test support in Rider. This post is one of many possible workarounds un...

The Responsible Developer

Yesterday the JavaScript community was in turmoil. To make a long story short, someone unpublisheda few packages from...

Publish to Leanpub from WebStorm

I’m a really big fan of Leanpub, a self-pubishing site that not only gives authors a really sweet deal butalso provid...

2015

Organizing my week with Checkvist

I’m a big fan of Checkvist, a TODO list application by my colleagues Sasha and Kirill.It strikes the right balance be...

A RunDeck Runner and a TeamCity Plugin Primer

Earlier this week I pushed a TeamCity plugin for RunDeck to GitHub. If you’re notfamiliar with RunDeck, it’s basicall...

Setting up Go in IntelliJ IDEA

I’ve recently started playing with Go for some TCP code I’m working on. Once Hello World was running, the next step w...

The Dot-Difference

On Twitter there’s a subtle difference between “@SomePerson I think you’re making a mistake with…”and ”. @SomePerso...

Stand-ups won't fix communication problems

I’m not a big fan of stand-ups. Having practiced them on a number of teams over a number of years, I find that they’v...

Don't bring you shortcuts with you

Came across this tweet today from Lars VogelAnyone interested in contributing the IntellliJ keybindings to Eclipse? W...

Breaking the inertia

Do you ever question why you do things? Whether it’s implementing a feature request, writing a blog post, giving a ta...

2014

Deploying a Kotlin Application to a Docker Container on Azure

I’ve been working on a small application that eventually will be deployed, so I thought it might be a good time to tr...

Feedback and empathy

As professionals, as individuals, as humans, if we strive for self-improvement, we value feedback. Without it, it’s v...

Import all in IntelliJ IDEA

Last week I ran into Kevlin at JavaZone’14, and we were chatting about a presentation he’d just given, titledMaking S...

Ask yourself

That’s wrong.They don’t understand.They’re making a mistake.That’s not what I’d do.Am I wrong?Do I understand?Am I ma...

No Tabs in IntelliJ IDEA

I often come across people complaining about some odd behaviour when it comes to editor tabs in IntelliJ IDEA or any ...

Build Tools - Make, no more

Had to update some CSS on my site over the weekend, which led me to updating some LESS file. The template I use for t...

The Vendor Session

I held a session on IntelliJ Tips and Tricks at Devoxx France yesterday. It was pretty successful I’d say,apart from ...

Getting started with a Kotlin OSS Project

Some conversations yesterday on Twitter led to a few people being interested in contributing to a new OSS project tha...

How we work

I’ve recently been looking for a new member to join my team. During the interviews I explain to each candidatethe way...

Introducing Spek - A Specification Framework for the JVM

A Specification FrameworkSome time ago I started working on a specification framework for the JVM, something that all...

The Facebook Scale Generation

Yet another post about how Node.js is faster than Java.For the sake of argument, let’s agree that big companies choos...

The New Shiny

John: Have you looked at node.js?Kate: No. I’m mostly still doing Java. Still maintaining the legacy system.John: Kat...

IntelliJ IDEA Minimal Survival Guide

Last updated: 07 January, 2014 Why this Guide Work in progress Target Audience What this guide is...

Using WebStorm to maintain a Jekyll site

I’ve recently moved this blog over to Jekyll, hosting it on GitHub Pages and I’ve been using WebStormfor maintaining ...

Customer Service

A conversation on TwitterAs a company, what you’re probably thinking is:“I’ve just routed him to our support channels...

2013

JVM Minimal Survival Guide

Last updated: 07th January, 2018 Why this Guide Work in progress Target Audience The Basics ...

Migrating from WordPress.com to Jekyll

Why migrate?I was using a hosted solution of WordPress on WordPress.com with a custom domain. I didn’t have control o...

On Calling Out

Did you call out on the other kids in School?Do you call out on your colleagues at work when they screw up? Are you t...

Refactoring to Functional–Why Class?

This is a multi-part series on Refactoring to Functional Programming Getting Started Basic Primitives Reducing and Fl...

Kotlin and ReSharper in Australia

I’ll be in Australia soon for YOW! Conference, where in addition to giving a talk I’ll be giving a workshop on Refact...

Refactoring to Functional– Reducing and Flattening Lists

This is a multi-part series on Refactoring to Functional Programming Getting Started Basic Primitives Reducing and Fl...

The Speaker Maturity Model

Dear Conference OrganizersEliminate Level 0. In other words, cover Travel Expenses for Speakers.If you’re a conferenc...

Refactoring to Functional– Basic Primitives

This is a multi-part series on Refactoring to Functional Programming Getting Started Basic Primitives Reducing and Fl...

Writing Kotlin in the Browser

Did you know that Kotlin can target JavaScript as well as the JVM? Don’t be too surprised if you didn’t know, as we’v...

Refactoring to Functional–Getting Started

This is a multi-part series on Refactoring to Functional Programming Getting Started Basic Primitives Reducing and Fl...

The Corporate Ladder

Microsoft uses a system to evaluate its employees, commonly referred to as stack ranking. To quote the article:“The s...

One Step Guide On Designing a REST API

Understand what that actually means.And if you think this is link bait, you’re absolutely right. Because everyone a...

All in the name of Pragmatism

Knowing what a Unit Test isKnowing what an Integration Test isKnowing what TDD isKnowing the advantagesKnowing the di...

Creating Builders in Kotlin– The Results of the Kotlin Workshop

At the beginning of May, I held a Kotlin workshop at Skills Matter in London. The attendees had to go through a serie...

Android applications with Kotlin

Did you know you can write applications for Android using Kotlin instead of Java? Here’s how, in one minute![youtube ...

Freedom to work

Yahoo has called in all their remote workers. Come June, they’re either sitting at desk in Silicon Valley or they’re ...

Automatically Building Pull Requests from GitHub with TeamCity

ScenarioYou're running an OSS project* and someone makes a pull request. You've got two choices: Merge and Pray Pull...

Extension Function Literals in Kotlin or How to enforce restrictions in your DSL

Take a look at the following code, an example of a specification written using spekgiven("a calculator", { val calcu...

Making +1 mean what it really means

On YouTrack, you can vote for issues. There’s a button right at the top, beneath the title. It’s quite big. It doesn’...

2012

Getting Started with Kara

Couple of days ago I discovered Kara, a Web Framework written in Kotlin.Here’s a short introductory screencast that g...

Windows Phone 8: A user's experience

Around two months ago I received a Nokia Lumia 920. Having been a long time iPhone user (3G and 4), I decided it’s ti...

ReSharper on the Server: Detecting Code Issues in the build

Did you know that you can run ReSharper Code Inspections on the server using TeamCity? In fact, we added support for ...

TDD: your insurance policy

Every now and again I read a post or comment around the topic of TDD and how it constitutes a somewhat futile effort....

The Kotlin Journey Part IV: Adding functionality

This is a multi-part series on Kotlin, a new statically typed language from JetBrains targeting the JVM and JavaScrip...

Creating an alternative UI for YouTrack

Customers often ask us whether submitting issues in YouTrack is complicated, in the sense that if it requires many fi...

On losing weight

Last year I ran into a friend of mine at a conference and was shocked to see how he’d lost over 20 Kg since the last ...

The Kotlin Journey Part III: Wrapping up classes

This is a multi-part series on Kotlin, a new statically typed language from JetBrains targeting the JVM and JavaScrip...

Product Driven Guidance

It’s not right! With Silverlight, we heard that Silverlight is for Web Applications vs HTML for Web Sites. There is n...

ReSharper and Express.js Workshop at GOTO Aarhus

This October, we will be holding a ReSharper hands-on workshop as part of the GOTO Aarhus conference, organized by ou...

NDC Videos Online

The three talks I gave at NDC a couple of weeks ago are now online. If you want to hear me rant on Prima Donna Develo...

Switzerland Visit

 This summer we will be visiting two User Groups in Switzerland to talk about some of our tools among other thin...

Instant HTML/CSS Updating

Want instant updating to HTML / CSS pages you’re editing?See it in actionYou can now have it. I’ve tried it on both I...

What BDD has taught me

Every so often I hear comments such as the one below:I don't get what BDD offers me over TDDand it usually is in the ...

Too many dependencies?

Over the weekend I blogged about a recurrent issue I encounter when looking at tests, which is the encapsulation of t...

Dealing with the "Too many dependencies" problem

Earlier I asked whether people thought the issue of passing in too many dependencies into a class was an actual probl...

Test setups and design smells

Reviewing some code today, I keep stumbling across private methods that are encapsulating test setups. A probable rea...

Is your identity in your own hands?

If you’re using a @gmail.com address, you should read thisFor quite a few number of years, I’ve switched my mail over...

With HTTP, your application is your API

As of ASP.NET MVC 4.0, the once-named WCF WebAPI project is now part of MVC. To provide a quick summary for those not...

Keyboard shortcuts aren't always the right approach

Scott Hanselman had a post recently about shortcuts and web applications. Going through the list can be somewhat scar...

The Journey of Teaching

Teaching, in any form, is a voyage, during which you reach different milestones. One of the first ones, is accomplish...

The Kotlin Journey Part II: A primer on classes

This is a multi-part series on Kotlin, a new statically typed language from JetBrains targeting the JVM and JavaScrip...

Windows 8 Everywhere?

I posted this on Twitter today.If it’s not blatantly clear, that’s me trying to scroll through a Windows 8 Consumer P...

Automating Testing with Mocha and WebStorm

Today Paul Campbell asked on Twitter about the possibility of having an automated testing scenario using WebStorm and...

And when you call it, you can call it Util

No. Actually you can’t call it Util*. You might think I’m a pain in the backside, nitpicking on issues like naming. I...

The Kotlin Journey Part I : Getting things set up

This is a multi-part series on Kotlin, a new statically typed language from JetBrains targeting the JVM and JavaScrip...

Spicing up YouTrack with Workflows

I had to set up a new project yesterday on YouTrack and needed to customize some of the defaultstatus fields. One of ...

Submit a patch

We love to complain, and Twitter has just made is so much easier. By merely including a handle or keyword of some com...

Per Project Settings or How to have different naming styles for my test project

 One nitpick that I myself and many have had with ReSharper is not being able to have different naming styles fo...

The tangibility syndrome

 I was reading a post by Phil Haack about Recognition Compensation which was somewhat in reference to recent news ove...

Errors: Handle with care

Went to renew my driving license this morning, a process the DGT (Traffic Authority in Spain) has made extremely simp...

2011

Providing Intellisense, Navigation and more for Custom Helpers in ASP.NET MVC

 You probably are aware by now that as of ReSharper 5 we added first-class support for ASP.NET MVC. This include...

Setting up TeamCity as a native NuGet Server

 TeamCity 7.0 EAP (Early Access Program) was recently opened and one of the new features is the built-in support...

Visual Studio Achievements: Who needs clean code anyway

I stumbled upon Visual Studio Achievements this morning via Maarten. The idea of combining development with game play...

ReSharper Settings in 6.1

This post is about ReSharper 6.1. For features in 6.0, please see previous posts introducing ReSharper 6: ReSharper ...

Como en España no se vive en ninguna parte

Esas ganas de vivir, unido a la pasión que nos caracteriza, las ganas de marcha y el buen tiempo. ¿Cómo vamos a negar...

Streamlining Issue Management with GitHub and YouTrack

The Typical Developer Workflow* Thanks to @gregyoung for enriching me with whatthecommit.com In general, as developer...

Dennis Ritchie

1941 - 2011We owe you too much to be able to measure

Native NuGet Support in TeamCity

A few months ago, Scott Hanselman gave a session at TechEd US were he showed some new features we were working on for...

New Features in ReSharper 6 Unit Test Runner

Previous posts introducing ReSharper 6: ReSharper 6 EAP is Open; Details on JavaScript Support CSS Support in ReShar...

Australia: First Contact

  We have a lot of users in Australia, yet we’ve never managed to get out over there for a conference. That...

YouTrackSharp and YouTrackForReSharper on JetBrains GitHub

Just a quick note to say that I’ve transferred the YouTrackSharp project from my own account over to the JetBrains ac...

When it comes to customers, don’t be defensive!

Have you ever heard the joke about the Dell Customer support call, where the customer says he can’t see anything on t...

Agile 2011 Conference – Salt Lake City

  As like last year, JetBrains is again a sponsor of Agile Conference and we will be exhibiting at this yea...

File Header Macros in ReSharper 6

Sometime ago I wrote about Automating File Header Information, showing how to insert license information and other da...

Machine.Specifications for ReSharper 6 now available

Many, myself included, have been eagerly awaiting the release of the ReSharper Runner of Machine.Specification (MSpec...

Google+: Third Strike…and it’s in!

Google+ is what could possibly be considered Google’s third attempt at Social networks. With the failure of Wave and ...

ReSharper 6 is Released!

We are extremely happy to announce the release of the new ReSharper: please download ReSharper 6 right now.With this ...

Preventing Items from being analyzed in ReSharper

With the imminent release of ReSharper 6, and support for JavaScript as well as CSS, we’ve had a few people ask us ho...

YouTrackSharp: A .NET Client for YouTrack

On and off I’ve been working on a .NET library that is a wrapper around YouTrack ReST API’s.  If you’re not familiar ...

ReSharper 6 enhances the JavaScript experience

We already mentioned some of the benefits that ReSharper brings to the table when it comes to JavaScript development ...

Did you just take a dump on standard versioning practices?

Original source: http://blogs.msdn.com/b/endpoint/archive/2011/04/18/microsoft-net-framework-4-platform-update-1.aspx...

Session at DevDays in The Netherlands

My talk at DevDays in The Netherlands on Real World Architectures with MVC is now available on Channel 9. It was my f...

Crazy Monologue in the shower….

We sell Windows licenses. We sell SQL Server. We sell Office.And now we’re going cloud. It’s all about Azure.Think ab...

Getting things done daily

For over a decade now, except for one year, I’ve been working from home. Home is kind of metaphorical considering the...

Pluralsight Webcast: Agile Environments

On the 5th May, in collaboration with our partners Pluralsight, we will be doing a webcast on Agile environments: - W...

TechDays Belgium and The Netherlands

We’ve only just come back from Mix 11 and are already preparing things for the next great .NET events taking place in...

Using dotCover to Cover Applications, with or without ReSharper

One of the main benefits of Code Coverage is that it allows us to detect certain areas, branches or lines of code tha...

ReSharper 6 Enhances Razor Support

Previous posts introducing ReSharper 6: ReSharper 6 EAP is Open; Details on JavaScript Support CSS Support in ReShar...

Mix...Here we come!

We are going to MIX!  As one of the premier Microsoft conferences focused on Web Technology, MIX is all about W...

Webinar: Working with TeamCity, YouTrack and an OSS Stack

On Tuesday, 5th April 2011, I’ll be giving a webinar (in Spanish) on how to setup an environment with TeamCity, YouTr...

ReSharper 6 Introduces Support for JavaScript Unit Testing with QUnit

<p></p> <p></p> <p></p> <p></p> <p></p> <p>In ReSh...

ReSharper enhances suggestions with explanations

 One of the new features we have added to ReSharper 6 is the ability to find out why ReSharper makes certain sug...

JetBrains night at Bristol .NET User Group

 On the 14th of March I’ll be doing a few sessions at the Bristol .NET Usergroup. It will be a talk focused on R...

YouTrack: We Host!

 Would you like to use YouTrack with no installation or initial setup? That’s great because YouTrack Hosted Beta...

Reflections on recent news

An Open-Image to the .NET Community  Stay tuned!

Book Review: Writing and Querying MapReduce Views in CouchDB

This morning I read the book Writing and Querying MapReduce Views in CouchDB, and it was literally this morning since...

MIX Open Call Sessions

I have a couple of talks up for voting for MIX 2011. If you’re interested in hearing my speak about any of these topi...

JetBrains @ BASTA!

Last week of February I will be at BASTA!, an awesome .NET conference that is held twice a year in Germany (Spring a...

Using a ToDo list more effectively

Have you ever had the need to place a TODO in your code? I’m sure we’ve all done so, for some reason or another. Norm...

We are coming to Stockholm!

  JetBrains is coming to Stockholm. After the great feedback we have been receiving at the different commun...

EasyHttp

As of late, much of the code I write, somehow or other has to communicate with an HTTP server. Be it a “ReSTful” serv...

In-depth look at Customizing Type Layout with ReSharper

When we run Code Cleanup with ReSharper, one of the options it has is to re-order the member layout in classes. This ...

CodeMash, here we come!

What is there to do in Sandusky, Ohio, in the middle of Winter with sub-zero temperatures and snow? Well CodeMash of...

That dreaded M in ASP.NET MVC

When it comes to working with Models in MVC, I’ve tried many approaches, some good, others not so much. I’ve ended up...

2010

Automating File Header Information with ReSharper

Many OSS projects often have some license information at the top of each file, reminding you of the evils you need to...

SRP, as easy as 123…

…of course, you’d need to have the song ABC from the Jackson Five in your head for that title to be remotely amusing....

Generating Graphs for YouTrack with HTML 5 and jQuery

A few days ago, a customer of ours asked me if it would be possible to visualize statistics in graphs in our Bug Trac...

Coverage with TeamCity and dotCover with MSTest, NUnit or MSpec

As some of you know, we recently shipped TeamCity 6 which includes, out of the box, a bundled version of dotCover. Wh...

Is NoSQL for me? I’m just a small fish

Many big players are using NoSQL as their storage mechanism. When reading or hearing about NoSQL, names such as Googl...

Razor Intellisense and ReSharper

As many of you know, ReSharper enhances the behavior of ASP.NET and Visual Studio in general. Yesterday the ASP.NET t...

Blog moved

After a lot of messing around, I’ve managed to move my blog over to WordPress, which means I get to control Spam a li...

It’s not about a specific technology dying…

Déjà Vu History repeats itself, over and over again. ASP.NET MVC came out. WebForms was dead. Entity Fr...

Templates Galore: Extending Functionality with Macros

This is the final part of a four part series on Templates: Live Templates File Templates Surround Templates...

Samsung Galaxy S from a recovering iPhone user

[UPDATE NOTE: Although much of this post is accurate and my overall impressions are in the Summary, you might be inte...

Spending time with you

At JetBrains, pretty much everyone is a developer. From our CEO, all the way through to our Product Managers and QA. ...

WTF you got against Silverlight?!

Nothing. Friend of mine, and Silverlight MVP, asks me why I’ve become The Anti-Silverlight. I’m actually ...

JetBrains Community Night at DevCon

From the 27th to the 29th of September, DevCon London is taking place. DevCon is organized by Software and Support, t...

JetBrains TV: It’s here…

For some time now, we’ve had requests from the community to have a central point where people could have access to Sc...

Templates Galore: Surround Templates

This is part three of a four part series on Templates: Live Templates File Templates Surround Templates ...

Regression tests, do it now.

When you encounter a bug, do you first write a failing test before fixing it? You should. But the vast majority of us...

Consistency: Your best friend or your worst nightmare

Consistency: We developers love it don’t we?We come up with beautiful architectures making sure everything is consist...

Templates Galore: File Templates

Continuing with Templates, in this post we’re going to take a look at File Templates. Whereas Live Templates allow us...

Highlighting Custom Patterns with ReSharper

A new feature that has shipped with ReSharper 5 is the Structural Search and Replace. It is a way for us to locate ce...

Losing templates on ReSharper upgrade

Derick Bailey pointed out today on Twitter that during an upgrade, he lost his ReSharper templates.ReSharper should i...

Templates Galore: Live Templates

A couple of months ago I was doing a talk at DevSum, Stockholm. It was a room full of developers, 90% of whom had hea...

Advanced scenarios with dotCover Console Runner

In an earlier post, we saw how to use dotCover in simple scenarios, whereby we have a single unit test project for wh...

Sony VPCZ1 Review

Recently I purchased a Sony VAIO laptop and after having it for nearly two months, I have to say, it’s by far t...

Running Code Coverage from the Console with dotCover

As of the beta* of dotCover, we included a Console runner to run coverage using the command line, allowing for instan...

YouTrack for OSS Projects

Quite some time ago, several OSS leads asked us about whether JetBrains could provide OSS license for YouTRACK. We’ve...

Writing plug-ins for ReSharper: Part 2 of N

Finally I’ve managed to get the second part of the post on plug-ins. Sorry for the delay to everyone that was waiting...

Screencast: Overview of dotCover

In this short screencast you can see the basics of dotCover and how to get up and running in a matter of minutes.[Thi...

Filtering with dotCover

dotCover allows us to run coverage analysis on our code. However, there are times when we do not want to perform an a...

dotCover 1.0 Beta Released

We are happy to announce the release of dotCover 1.0 Beta, the latest addition to the .NET tools from JetBrains. dotC...

Show Covering Tests with dotCover

One of the new features dotCover has added is the ability to find tests that cover a certain piece of code. Something...

We’re going to NDC!

 JetBrains will be exhibiting at the Norwegian Developer Conference next week. Myself, Oleg “Don’t EVER separate...

ReSharper PowerToys gone OSS

 A while back I posted about Zen Coding and the ReSharper PowerToys, and I mentioned that we were working on pro...

Checking for a null Model in ASP.NET MVC

 It is considered good practice to use strongly-typed models when working with ASP.NET MVC. That is, instead of ...

Screencast: ASP.NET Features for ReSharper 5

 This screen cast shows some of the ASP.NET Features ReSharper offers in version 5. It applies to both ASP.NET M...

DevConnections, C2C, Poland Mini-Tour. And then Birmingham

Next week some of the JetBrains crew will be in Las Vegas, Nevada and from what I hear, apparently its going to be wo...

Loved the show but I have to get back to the real world now

 I’ve been giving talks for quite a while now on best practices, unit testing and other things that aim to make ...

dotCover: Code Coverage for .NET

Last week we announced a new product by JetBrains for .NET developers: dotCover, a code coverage tool. We are aiming ...

What do you want in ReSharper 6?

 ReSharper 5 hasn’t been released yet and we’re already planning new and exciting things for version 6. We also ...

Zen Coding and ReSharper PowerToys

Yesterday the ReSharper Twitter Account tweeted about a Zen Coding Plug-in available as a PowerToy. If you’re no...

Profiling Apps 1 of N: The MVC ActionLink

 I’m starting a new series of blogs posts on profiling, where we’ll try and cover common bottlenecks and how to ...

MSpec Live Templates

 If you’re using MSpec (Machine.Specifications), you’ve no doubt run into the verbosity of it. Here’s a typical ...

Localizing your Applications with ReSharper 5

digg_url = "http://hadihariri.com/blogengine/post/2010/02/16/Localizing-your-Applications-with-ReSharper-5.aspx";digg...

Cannot Launch Debugger error in ReSharper

 [Note: This blog post applies to the nightly builds for ReSharper 5 version 1616 and lower]If you’re getting th...

Technological shortcomings driving business needs

digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined; Recent conversation ...

Removing old feed

Due to mostly uninteresting reasons, I’ve been running two different feeds to this blog:http://feeds.feedburner...

ASP.NET Support in ReSharper 5

Although I mentioned briefly in the past some of the new features ASP.NET MVC features ReSharper 5 supports, I though...

Writing plug-ins for ReSharper: Part 1 of Undefined

ReSharper does a lot of things, but as they say, you can’t please all the people all of the time. However, one the gr...

2009

Dynamic types and ASP.NET MVC

If you’re using ViewModels in your ASP.NET MVC applications, know that if working with .NET 4.0, you can now cr...

Changes as of January 2010

It’s with a bittersweet feeling that I write this post. As of January, I will no longer be with iMeta Technolog...

A Follow-up to the UK MSDN Flash Newsletter

I recently wrote a small 500 word article on Behavior Driven Development andthe subtle differences between it and Tes...

Dynamic objects and ReSharper

 As you might have heard by now, C# 4.0 (or is it just 4?…) comes with a new keyword: dynamic. This means...

Getting your OSS binaries with Horn

 Recently Billy McCafferty wrote a post on Horn, a package manager that Paul Cowan and Dave the Ninja have devel...

var improves readability

 Countless times I’ve heard the argument that you should use the var keyword with caution, that it decreas...

It’s all about the delivery

The Dependency Inversion Principle states: A. High-level modules should not depend on low-level modules. Both sh...

Joined the tasty bites

 Last week I was invited to join devlcio.us, part of codebetter.com blog network. Unfortunately with all the tra...

List my controllers for me…

 Nuff said! Really liking Resharper 5.

The Principle of Least Surprise

 I’m having a discussion on the ASP.NET MVC forums with one of the guys from the ASP.NET team in regard to the D...

Testing Model Validations?

 ASP.NET MVC 2 allows you to do data validation, either using the de-facto Data Annotations or plugging in your ...

Resharper 5 support for MVC

 Resharper 5 has a couple of new features for MVC that can make your life somewhat easier. Take a look at the fo...

Problem with Client-Side Validation in MVC 2

 [Note: This post applies to ASP.NET MVC 2, Preview 2.0]Today while doing the demo for the previous post, I ran ...

Client-Side Validation in MVC 2

 ASP.NET MVC 2 Preview 2 now ships with client-side validation built into the box. It follows the same idea as t...

Avoiding an unintentional bottleneck

 We’re all busy these days and sometimes it’s really hard to get any work done with continuous inter...

Upcoming talks

 Start of the “conference season” again and I’ll be doing a tour of a few countries and places. Hope to meet up ...

Spanish Keyboard layout for C# Developers

 I use a Spanish Keyboard which is kind of a nuisance when developing in C#. It’s mainly due to the key layout f...

ASP.NET MVC 2 – Preview 1

It's out. You can download it from here. Some of the new things it includes ("extracted" from the readme for your con...

ReSharper's Hidden Gem

During NDC, Eugene, from JetBrains, Technical Lead for ReSharper, showed me some of the cool things that are coming o...

If you’re going to provide RAD for ASP.NET MVC, change your thinking hat

ASP.NET MVC is not new. Ignoring the pattern for a moment, the way things work dates back to the days of CGI’s ...

Second Part of ASP.NET MVC Alt.NET Hispano Talk available

 The guys from Alt.NET Hispano have put up the second part of my talk on MVC. You can view the video and downloa...

Second part of ASP.NET MVC on VAN Hispano: Same time, Same Place

I'll be doing the second part of the ASP.NET MVC talk on VAN Hispano (Virtual Alt.NET) on Saturday 8th of May, at 20:...

ASP.NET MVC "Models": The lonesome folder!

ASP.NET MVC comes with a Models folder but no Model. Although some see this as a shortcoming, I'm actually delig...

Virtual Alt.Net Hispano ASP.NET MVC Meeting

I've uploaded the presentation and demos for the VAN Alt.Net Hispano last night. I'd like to thank Jorge and Fabián f...

Saving keystrokes with LiveTemplates

One of the cool features Resharper has is to allow you to define live code templates, i.e. snippets that you can inte...

Strict use of strict mocks

Having a chat with a colleague the other, brought up the issue of strict mocks. I commented that strict mocks should ...

ASP.NET MVC is now Open Source. Will it effect you?

During sessions/workshops on MVC, I would say that 90%-95% of the attendees (yes I do "poll" the crowd, so it's based...

Mocking UserAgent property in ASP.NET MVC with Moq

A question popped up today about someone having trouble mocking the UserAgent property of a Controller. There’s enoug...

Spending time with Fluent NHibernate (Part 2): Our first Relationship

In the first part of this series, we saw the basics of what Fluent NHibernate is about. In this second part, we'...

ASP.NET MVC or WebForms: Is there a real choice?

I've been playing with ASP.NET MVC from the first preview that was released, and it's also very similar to ...

Spending time with Fluent NHibernate: Part 1

A couple of days ago, there was a post by Howard Dierking covering the topic of Fluent NHibernate. What caught my att...

ASP.NET MVC and jQuery Material from BASTA! Italia

 As promised, here are the materials from my talks:Introduction to ASP.NET MVCIntroduction to jQuery (Discl...

Profiling NHibernate with NHProf

There's a common conception that developers suck at creating user interfaces. And it's probably right on ta...

Podcast from Oliver and Gary

Oliver Sturm and Gary Short, from DevExpress have started a new podcast. Having recently met up at a conference in Ge...

ASP.NET MVC and jQuery @ BASTA! Italia

I'm off to Rome next week for BASTA! Italia, and quite excited since it's my first time in Italy. Mind you,...

Balsamiq. Just wow!

 Busy week for me this week. Between meetings, coding and real bad case of migraine, I've hardly had time to cat...

Few days left for Early Bird for Architecture Days

Just a few days left for the Early Bird fee for the iMeta Architecture Days. It's going to be a two day event in Madr...

Always room for improvement

As if what Alt.NET is or isn't, whether it's mean or not, wasn't enough, now we have a new guy on the ...

ASP.NET MVC RC2

In case you haven't heard, RC2 is now out. Mostly it's installer changes including the ability to install MVC on serv...

Doggy Bag

That's the last time I ever ask for a Doggy Bag!   And that's not food the Dog is looking at.

DDD Series

If you're interested in Domain Driven Design, make sure you follow Casey's series on the subject. He does a...

I'm not a Coding Horror, are you?

According to you Jeff, 80% of developers are people that don't care much about improving the quality of their cr...

Demoware Cowboys

My mother wants to become a computer programmer (not to be taken literally). And guess what, she can. With all the RA...

Break this test

Given the following action:  1: public ActionResult About() 2: { 3: return View(); ...

Additional code just for testing

Take a look at this code:  1: public class ClassToTest { 2:  3: public void MethodToTest() 4: ...

Is it time to rename TDD?

Just reading a comment on Uncle Bob's blog by a guy called Ted. What’s with this whole TDD/SOLID and Podcast...

jQuery talk tomorrow

I'll be doing an Introduction to jQuery tomorrow at our local user group. It will cover a bunch of goodies including ...

Buying Skype Credit: -1 for UX

So I decided to top-up my Skype credit tonight. The red 0,66 € was just making my eyes sore. Since I had some c...

Just talk for the sake of it

I was just reading the transcript from the StackOverflow podcast nº 38. I came across it via a post from Jeremy ...

Upcoming talks: Seville & Reading

I'll be in Seville tomorrow to talk about some of the upcoming features in Visual Studio 2010 among other topics. The...

Oops, I forgot I was in a WPF app when I did that second ComboBox

A style missing perhaps? I mean honestly!

Renewed MVP

Excellent! I've been renewed as MVP C# for the 2nd year. I enjoy a lot working with the community and it's great to g...

2008

Integrating OpenID and ASP.NET MVC

OpenID (Microsoft Passport done right), is gaining a lot of popularity and it's common to see it integrated into new ...

Dropping the Atozed (Delphi) Feedburner

As of tomorrow I'll be deleting the feed: http://feeds.feedburner.com/Atozed. The feed for my blog is http:...

Multiple Value types with Fluent NHibernate's AutoPersistenceModel

The AutoPersistenceModel in Fluent NHibernate doesn't support values types automatically (yet), but getting them to w...

Fluent NHibernate

I've recently started a new internal project and decided to use NHibernate. I've used NHibernate previously on severa...

XAML Power Toys

I've been dabbling in WPF lately. Nothing too fancy, just fixing up some parts of an application we're currently work...

StructureMap System.InvalidProgramException

I just upgraded to the latest release of StructureMap (2.5) and spent a good portion of time trying to figure out a b...

Agile is not Chaos

There is a human tendency, albeit a bad one, to stereotype. Take for instance the words traffic and chaos. In many ca...

and there's no opting out...

Just noticed this under one of the Build failure notification e-mails received from the TFS daemon:   - You...

Identify code smells with tags

Visual Studio comes with TODO markers where you can mark sections of code with little comments to indicate that you n...

DelphiFeeds

marc recently made a blog post regarding the world not revolving around Delphi, and in particular DelphiFeeds. My blo...

TechEd Online Interview on ASP.NET MVC

While I was at TechEd in Barcelona last week, I had a chance to sit down with Mark Dunn from .NET Rocks and talk a li...

Programmers are not typists first

I've found that many of the things Jeff Atwood posts about, most of us think about. The difference is that some are s...

SQL Server 2008 Install – MediaInfo.xml missing

I was installing SQL Server 2008 today (x64 bit version) and after the initial checks it does, I got an error about M...

Design Principles event next month in Belgium

I'll be doing a talk in Belgium next month at the Visual Studio User Group, where I'll be covering topics such as Sep...

WCF Book to help Juanma

Everyone knows that unless you're writing about Harry Potter, it's hard to get rich from a book, and even more so a t...

ASP.NET MVC Practices Session Material

Here's my presentation from my TechEd talk on ASP.NET MVC. I'll be uploading the demos as soon as I get them cleaned ...

Presentation Tip

If you're doing multiple demos that somehow involve CSS, make sure you rename the default Site.css file ASP.NET ...

Hell freezes over…I'm twittering

Ok, I know I said I'll never do it, but I'm going to try it out.   

Delphi, Native, Reliable, all combined into one

Sometime ago I posted an entry about some comments Michael Swindell had made about how Delphi was a better choice for...

Skype for iPhone

Finally! A decent Skype client for the iPhone. I've just downloaded it today (yes, it's free) and it seems ...

Dependency Injection in Delphi Win32

Barry Kelly (who btw, looks nothing like his photo in real life) has made a nice post about how to have "managed...

Linq to Sql is dead. Did you abstract well?

Here's an updateon the roadmap for Linq2Sql. The post is pretty much confirming that they'rekilling off the...

R# Tip: Overriding many methods of a base class at once

Place your cursor on the class declaration   Press Alt+Ins to get the code generation menu up from Resharpe...

Automating "quality" control?

I read a post today about how there should be a plug-in for Visual Studio to disable copy/paste, in order to prevent ...

Scrum is about wearing multiple hats

In my previous post, I talked about confidence and how it plays an important role in the adoption of SCRUM. The next ...

Testing exceptions with xUnit

Testing for exceptions in unit tests can be tricky. Most frameworks use the ExpectedException attribute to denote tha...

Scrum is a projection of oneself

Many of us have been solo developers for many years. I personally started working on customer projects as a one-man s...

BASTA! and SDC out the way, off to DevReach

Arrived yesterday from the Software Developer Conference near Amsterdam. Excellent conference and a lot of fun. They ...

Delphi for .NET as a Visual Studio Plug-in

Well Marco's probably been the first one to blog about it. My only comments are:a) Change the name. PRISM is already ...

ASP.NET MVCD

I had a short talk yesterday on ASP.NET MVC. For someone that has been developing using ASP.NET and seeing ASP.NET MV...

More on what's coming in .NET 4.0

 On Steve Martin's blog

What do you listen to while developing?

Question has been asked on some mailing lists recently, but I'm curious as to what music/thing (if at all) do you lis...

Native applications

I was just reading on a blog a reference to an article Michael Swindell published about native application developmen...

Fast Tech Track 100

Last year iMeta was given the 100 Tech Track award, as one of the top 100 fastest growing IT companies. It was at pos...

Visual Studio will ship with jQuery

This is awesome news

Error creating network connections under XP...unable to create connection. Insufficient Memory or disk space

This one is more of a personal reminder. I've just tried to connect to the office VPN and noticed my username/passwor...

Don't always take what you're offered

20 minutes left in my session on Continuous Integration. Thinking great! More than enough time to go thru a demo with...

Thought for the day...be a productive keyboard user

Become a more productive [computer user] (insert Developer, Excel Programmer, Word User, Internet Surfer....). Every ...

Preventing Outlook marking days with appointments as Bold: A Doh! Moment

I was setting up a recurring appointment today in Outlook that has "no end". I hate recurring appointments ...

The Bus number isn't agile, it's common sense

I was having a conversation with a developer the other day about working on different areas of a project. The subject...

Naming tests, once again

I'm coming across a lot of tests with names like this:AddEmployee_Should_Pass_When_Not_Duplicate() {.....}AddEmployee...

Build Notification Tool, Visual Studio 2008 Fails

The Build Notification Tool for Visual Studio 2008 stops working if you install Visual Studio SP1. It sort of explain...

Integration Tests

Two teams work on two different components of a project. Team A works on component A, and to keep things simple, Team...

Conference Season

Well it's that time of year again, when many conferences are all jam packed into one and a half months. I'm...

Anonymous methods and Generics in Delphi 2009

I was just reading through some of the comments on Anders'  blog in response to his post on positive feedback on...

Test your containers

IoC containers are great. They take away the burden of having to create dependencies before using things, and when yo...

Google Chrome views: Pragmatic, not Dogmatic

I've been using Google Chrome for over a week now. What I like about it...- The tab completion for search engines. Aw...

Naming again

I can't stress how important naming is, in all aspects, not only tests. The first thing someone looks at when vi...

User Interfaces and TDD

I was having a conversation with a colleague of mine the other day. We were talking about user interfaces and how a s...

Old School Delphi, Agile is a buzzword?

I was reading a comment in reply to this post on DelphiExtreme, by Ken Knopfli, and I quote: Delphi programmers ...

Mocks can be your friend, or your worst nightmare

Take a look at the following test: 1: public void EmployeeServicesTest_GetAllEmployeesByCom...

Making mock tests less volatile

In a follow-up to my previous post on mocking, here is the same code re-factored so that it does not depend on the in...

R# 4.1 out

Get it here: http://www.jetbrains.com/resharper/download/?41nlThey've been working on improving performance.

Moving blog

I've moved my blog to a new engine. If you're subscribed to my blog using Feedburner, which you should be :...

Naming tests

I try, as much as I can to practice TDD, because I truly believe that it helps me shape the design, and that is the p...

A380 Cockpit

You like planes? You'll love this virtual tour...

TDataModule

Better not to use datamodules than to use them incorrectly...Want to find out more, come to SDC this October

Safari..WTF!

This isn't the first time it's happened...serious memory leak.  Sitting on a blank page, just going up...

Anything wrong with this design?

Using a IoC container (irrelevant which one but let's assume it's Unity). Here's my main method:And th...

Theater Security

Theater Security really annoys me. A couple of days ago I made a reservation for one night in a Hotel. I called the H...

AppStore now active

AppStore is now active for Spain, which is very cool. And yes, the first app I downloaded was PhoneSaber. My wife thi...

Safari

I've been really impressed with Safari on my iPhone. All my favorite web sites look good and work correctly. Eve...

WPF and Business Logic

I read something interesting on Scott Hanselman's blog the other day regarding WPF. It was in relation to activa...

Protecting the iPhone

I have a tendency of dropping and scratching my phones (also known as having two kids). So I decided to be cautious t...

iPhone

It was released in Spain yesterday, and I managed to pick one up today. The best way to describe it, is "it just...

I've given up on Firefox

I've been using Firefox for a long time now...longer than I remember, and before that I was using other NON-IE b...

MSTest Not Executed Error

I'm testing out a new IoC container framework (more on that later), and so I decided to setup some tests to see ...

Skype on the move

Skype is a pretty complex program in the sense that it has quite a lot of options. However, one thing lacking is an o...

Outlook doesn't suck after all

For the past couple of years I've had many problems with Outlook, but mainly one big problem: "The Data Fil...

Silverlight, Linq, Xml, Intraweb, Ajax and REST

I've updated the support for Silverlight in Intraweb to support the changes for the Silverlight 2 beta that has ...

R# 4 beta available

If you haven't been running the nightly builds and have been waiting for a beta, here it is. Not much you can sa...

Windows Communication Foundation

Next week (finally) “Introduccion a Windows Communication Foundation” will hit the book stores. It’s the first book I...

Visual Studio Theme

I frequently get e-mails from people that have been at my talks about the theme I use in Visual Studio. Instead of co...

Unit testing: it's not only about regression tests

A lot of times when you're introduced to Unit Testing, you're sold on the fact that it's the best way ...

Finalbuilder just went continuous and so will Intraweb

Many know I've been a Finalbuilder fan from day one. Recently they came out with a server version of their produ...

Interview

Now I'm not one to brag so I don't like these types of "self-promoting" blog posts, but what the hell....Here's an in...

Visual Studio Gallery

Microsoft's published a new site named Visual Studio Gallery that enables third-parties (and MS itself) to publish ex...

Adding a Profile Box to Windows Logon

 Jeff Atwood posted an entry a couple of days ago about adding a checkbox to the Windows dialog boxes to display your...

My Toolbox 2008

During my talks, people normally ask me about specific tools they see on my system. About a year ago I posted about a...

HPC3480

Here’s a tough question. Suppose you buy a printer (let’s call it the HPC4380 All-in-one), and let’s assume you insta...

Silverlight Challenge

[No text]

FYI: Check Digit

In Spain, bank accounts have twenty digits, two of which represent the check digits (known in Spanish as “Digito de C...

Look Ma! I'm an MVP

I got one of those really nice e-mails today. I've been awarded with the Microsoft MVP Award for 2008 in the cat...

2007

Thumbritis or WTS (Weird Typing Syndrome)

I’ve been having extremely bad pain in the joint that joins my thumb with the rest of my hand. I didn’t realize what ...

Layered architecture

When developing applications using a layered architecture, one of the problems that arise is how to pass information ...

Installing .NET Framework 3.5

Halfway through the install, I get prompted with the following I checked, only one instance of the setup (/installer)...

TechEd Summary

A small summary of TechEd

Visual Studio 2008 Released

At TechEd today Soma announced the release of VS 2008 in November. Cool!

Switching tasks without the fluff

 I never used Aero when I had Vista installed. I found it too flashy and not "agile". I also had a pro...

Off to TechEd

I'm off to Barcelona for TechEd tomorrow. It's going to be a great opportunity to catch up with some old friends. The...

Back to XP, Part II

I feel liberated. I've moved back to XP and I'm a happy camper. Although I virtually pulled an all-nighter, which tur...

LinkedIn

Going to conferences is a great chance for you to not only gain technical skills and go to parties, but to also do so...

If something is broken, Get it fixed!

If something is broken, get it fixed. Don't delay it. Don't try and leave it for when you have time. This is a comple...

Launchy

Once in a while, along comes a program or utility that really is impressive. Launchy is one of these. Neal  told...

October Conference 2007

It's been a hectic 1'5 months. Apart from all the work I have, I've been flying around Europe speaking at conferences...

5 days left for October Conference

Only five days remaining for October Conference and we still have some space left. You can register here. Since it's ...

ASP.NET will do MVC

Scott G. used ALT.NET conference to announce support for MVC natively in ASP.NET. Read more on Jeffrey's blog

Interview with Scott Bellware on RoR

Very good interview with Scott Bellware regarding Ruby and Rails and his thoughts on the MS community. I think he tal...

Useless bottleneck at Frankfurt Airport

Terminal 2, which is mostly European destinations has had a change in policy at the security checkpoint, and unless i...

Us programmers, we're so special

It's become common for me to be delayed on Iberia flights, specially those going to Frankfurt*. So while I'm sitting ...

Goodbye Windows Mobile, Hello iPhone

Only Apple could bring out a phone with such a slick design, independently of the superb funcionality it comes with. ...

Speaking at Basta Spring Edition

I have 3 sessions at Basta. This is not a German only conference. There are quite a few international speakers and pl...

Your [Fill in here], Our Passion - Then TM it!

We've all seen MS presentations when the last slide finishes up with "Your Potential. Our Passion (TM)", it...

Zune seems pretty unsocial

Not the first negative comment I've heard on the Zune, but by far the most entertaining! Check it out here

2005

Fixing scratched DVD's

I start to install Windows 2003 in a VM Machine from my MS DVD that has all the operating systems you would ever want...

Consuming Collections from Web Services

Consuming Collections from Web Services is not something new. However, if you have ever tried to bind the collection ...

Acronis TrueImage

If there ever was a software application that deserved a WOW, that is Acronis's True Image. I mean WOW! Seriousl...

GoogleTalk

Very impressed with Google Talk. Both the Chat and the Voice are clear and simple to use. I really hope it takes off....

EKon

I'll be at the Entwicklerconference in September giving two sessions on Security. If you're in Frankfurt, m...

Charamel

For those of you who use FireFox, theCharameltheme looks extremely nice and it takes up little space so you get more ...

24 Hours on BDN

Well, surprisingly my Telephone connection didn't die on me while I was online. I'll be calling the telepho...

Singapore!

Cool! I'll be going to Singapore to present a session(s). Initially it was 3, now it's down to 1, but might...