Tags

tech

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

IronPython

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

Silverlight

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

Python

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

ActiveDirectory

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

LDAP

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

mongodb

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

scala

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

casbah

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

mapreduce

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

java

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

typeclasses

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

stupidpettricks

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

effectivescala

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

bestpractices

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

python

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

release

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

polymorphism

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

administrativa

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »

community

MongoDB Community – Call for Postcards

14 Nov 2012

In the distant annals of MongoDB History, when Men were Real Men, Women were Real Women, and Small Furry Creatures from Alpha Centauri were real Small Furry Creatures from Alpha Centauri... There were postcards.

The tradition was started before I started at 10gen, wherein when we travelled somewhere for MongoDB we would send postcards back for Meghan Gill. Meghan, being the evil genius behind growing MongoDB's community, was often indirectly responsible for our travel (which is why I of course sent a postcard from Armenia reminding her of this fact). When 10gen finally moved into our first New York office (having shared space, in the form of a few spare desks, with another company in the beginning), Meghan got her own office and created an entire wall for the postcards. As postcards came in they went up on the wall, and by the time 10gen moved to yet another office the wall was pretty impressive.

Unfortunately, between the new office not having a wall for postcards and newer employees not picking up the postcard tradition, our efforts fell off. Which makes me somewhat sad, because MongoDB's community has grown all over the globe. With my departure from 10gen imminent, I had an evil thought – to bury poor Meghan in postcards from around the world, written and mailed by members of the community which she has helped create.

And so, I call upon you, MongoDB community members. Do your darndest, from your distanct corners of the globe, to flood Meghan with postcards about how much you love MongoDB. Bonus points if you send it from somewhere out of the way that nobody has sent her a postcard from yet!

If you are game, find your most awesome postcard from the town you live in (or even are travelling to), write a message and put a stamp on it. Send it away to this address:

Meghan Gill
c/o 10gen, Inc.
578 Broadway
7th Floor 
New York, NY 10012
United States of America

That's it. My thanks in advance for helping advance my evil, evil plans.

-b

And Now For Something Completely Different!

06 Nov 2012

I write this it is at the end of two very long years working with 10gen (The MongoDB Company), a company of less than 20 people when I joined that is now approaching 200. Although my role has been fungible during my time here, my primary focus has been to improve Scala integration for MongoDB, and evangelize it around the world. In this pursuit I've worn out an entire US Passport, as well as my favorite pair of Doc Martens.

In addition to writing code, I've trained new users (customers and colleagues alike), given presentations to audiences large & small, and helped companies to better deploy MongoDB in their applications – in over 50 cities and 15 countries (Those who know me now will expect a whinging anecdote about the time they sent me to Armenia…) I've spent a quarter of my time at 10gen working out of a London office that didn't exist when I first arrived, traveling and helping build a MongoDB following in Europe.

Most excitingly I've had the opportunity to have met, and in some cases had the pleasure of working with, some of the most interesting and talented individuals I've ever encountered. Engineers, Developer Evangelists, Community Managers, Systems Administrators, and one self-described "Markitect" (Which is how Jared Rosoff once described his job to me; a cross between Marketing and Software Architecture). People like Meghan Gill (and her growing team), have helped create and grow the Open Source community around MongoDB – Meghan's the one you can blame for the MongoDB mugs that are multiplying like tribbles around the globe.

At the risk of offending any by singling so few out, I could spend all day just citing excellence in many of my colleagues at 10gen – there is some incredible talent on hand. In my own time here, I've managed to develop and hone some previously unknown skills as a teacher, consultant, and developer evangelist. Through building software with hundreds of thousands of open source users, I've learned to be a better engineer. The most important lesson? That the users, and how they use (or want to use) your software matters above all else; observe, listen and adapt. The user may not always be right, but in many cases they can point you in the direction from which the wind is blowing.

The reality is that all of this has been an incredible adventure – but also a lot of hard work, and tremendously tiring. 10gen today is a very different company from the one I've joined – and about 10 times the size. I feel that I've reached the apex of what I wish to accomplish with 10gen, and I've spent a bit of time considering new challenges; it is far from easy to decide if I can leave all the great work I've done behind. So, when I finish my current tour of duty in Europe, I pursue that challenge.

As such, it is time that I announce my impending departure from 10gen, to pursue something new. MongoDB is a tremendous product, and 10gen has built something quite amazing in a very short time. Being in the community from early on, it has been humbling to watch how quickly they (we) have built a product, company and community. To further have had an opportunity to have participated in that was humbling, and I look forward to seeing what the future brings, even if I won't be part of this particular story.

I'm turning the page, and starting a new chapter...

What's next? After returning home from Europe in December I plan to take a few days off to gather my wits. After that, I'm very happy to announce that I'll be joining the incredible team at Typesafe, as a member of their burgeoning Professional Services team. While there, I look forward to helping build, teach, and promote the foundation for the next generation of scalable applications. This generation includes the Scala programming language, Akka framework for distributed & concurrent computing, and Play! for web applications. I have been working with Scala and Akka for almost as long as I have MongoDB; for me, it is a natural progression forward.

The team that Typesafe has built is awe-inspiring, and the plentitude of knowledge and experience they offer are hard to refuse for someone seeking new challenges and skills.

By no means is this the end of my MongoDB life, merely my 10gen one. Many of you will still see me at the same conferences, looking much the same. Maybe in a different t-shirt (though I still have an awful lot of comfortable MongoDB ones) I may be promoting a different product, but I still believe in MongoDB and am always glad to help see that forward as well. I helped set the tone for Scala and MongoDB and don't intend to abandon it. I plan to continue my contributions to projects like Casbah as I move forward. Projects to rethink MongoDB on the Scala platform, such as Hammersmith, will continue to occupy what spare time I find; I'm always happy to help with other projects and ideas that strike my fancy.

And, as I sharead with my coworkers already, to those of you I won't see as much of in my new role... So Long, And Thanks For All The Fish!

Understanding Scala's Type Classes

11 Jun 2012

Over the last year or so, I have found myself making more and more use of Scala's Type Class system to add flexibility to my code. This is especially evident in the MongoDB Scala Driver, http://github.com/mongodb/casbah, where the most recent work has been to simplify many features by migrating them to type classes.

During this work however, I've found during that many otherwise adroit Scala engineers seem befuddled or daunted by the Type Class. It does me no good to take advantage of clever features that my users don't understand, and many will benefit from introducing these concepts to their own code. So let's take a look at what type classes are, as well as how & why we can utilize them.

Wikipedia defines a Type Class as "... a type system construct that supports ad-hoc polymorphism. This is achieved by adding constraints to type variables in parametrically polymorphic types". Admittedly, a bit of a mouthful -- and not very helpful to those of us who are self taught and lack the benefit of a comprehensive academic Computer Science education (myself included). Surely, there must be a way to simplify this concept?

In evaluating these ideas, I've found it easiest to think of a Type Class (in Scala, at least) as a special kind of adapter, which can impart additional capabilities upon a given type or set of types. In Scala the Type Class is communicated through implicits, and imparts one, or both, of two behaviors. First, a Type Class can be to utilized to filter what types are valid for a given method call (which I detailed in this earlier post). Second, a Type Class can impart additional features and behaviors upon a type at method invocation time. This latter is much along the lines of an enhanced kind of composition, rather than the weaker inheritance which often plagues similar behaviors in a language like Java.

To better understand what I am describing, let's compare a few concepts around the creation and interaction of custom domain objects. I have several sets of tasks I have had to accomplish in Scala in the past -- and Scala solutions show some elegant Type Class oriented approaches which are rooted in the Standard Library. While this may seem a bit contrived, it is exactly the kind of problem through which I initially came to understand Type Classes –– and is thus an ideal lesson.

Read the rest of this entry »