Recent Updates RSS Hide threads | Keyboard Shortcuts

  • Practice, it's not just for musicians and athletes

    Anthony Broad-Crawford 9:24 pm on May 7, 2009 | 8 Permalink | Reply
    Tags: Behavior Driven Development, , ,

    I grew up in southern California as a pretty serious musician.  I began studying the trumpet starting at age seven, piano at age eleven, and guitar at age sixteen.  I spent several summers at the prestigious music school Interlochen and toured Europe with an international youth orchestra multiple times.  All of that crescendo (pun intended for you music majors) into a double major in music performance and education.  Beyond my parents continual encouragement and support, the thing that made all that possible, was my personal commitment to continual practice.

    In music, when you want to have a successful performance you will practice, practice, and practice some more.  This includes both as a team if you are in an orchestra, and as an individual for solo performances.  Personally, when I needed to improve a particular technique, I would spend hours upon hours, days upon days, practicing it until perfection.  More importantly, to the point where I didn’t have to think about that particular mechanic.  This way, when it came time for performances I was focusing not on the technique, but more on its application into the larger performance.

    So, what is this post all about?  Simple really, why aren’t professionals following these same patterns of practice in disciplines outside music, performing arts, or athletics?

    I have been an engineer for over a decade, and although I work eighty hour work weeks, participate in several industry projects, I only recently began rigorously practicing specific techniques and patterns at home.  Now, I don’t want to discredit learning’s from all of my hands on work, as I learned and perfected a tremendous amount.  However, I found without practice, I learned more about a techniques application then the technique themselves.  This difference put me, and will put others like me at a distinct disadvantage without practice.

    A little over two years ago I helped start a technology company.  For those not familiar with the demands on the engineering group  in a technology start-up, please, allow me to elaborate.  Sustainable pace isn’t in your vocabulary, forget about it.  Additionally, don’t even think it’s worth discussing.  You have a finite amount of cash based on your current burn rate; you have acompany that doesn’t have a complete product in production; you have competitors in your market; and hopefully, customers waiting to receive what they have purchased.  That means, what you completed today, really, should have been completed yesterday.  So, why did that make me start practicing?

    I found that in an environment like that, with such incredible business and velocity demands, I couldn’t execute my preferred methodology.  Specifically, I couldn’t build the software leveraging Behavior Driven Development (BDD).  Which, in the long term, can begin to affect your ability to build software at the velocity business is still going to demand.  So, I had to abandon BDD.  Why abandon BDD vs negotiating a slower velocity?  We had customers waiting for a complete product, and losing them meant losing our necessary reference customers.  Which, to a start-up, would have been certain demise.  The product needed all features and needed them on the specific date, no questions.   Thus is the life of a start-up.  So, what did I start doing?  I started going home in the evenings and passionately and meticulously practicing.

    What did I begin to practice?

    • Ruby
    • RSpec
    • Cucumber
    • Ruby on Rails
    • JQuery

    So these are the things that I am currently practicing on average roughly fifteen hours a week.  However, I also want to point out this is an important behavior to adopt even when you don’t work for a technology start-up.

    It is rapidly becoming a Polyglotic boutique language industry.  You are going to be using highly specialized languages for specific different problems within your applications domains.  Additionally, new libraries and languages are going to continue to emerge at an ever increasing velocity.  Not practicing those languages, techniques, and patterns will prohibit your ability to employee them on the problems you are solving.  Thus, potentially putting you in a difficult situation.

    Finally, I owe it to myself and to my customers (both internally at my company and customers who have purchased my companies software) that I am continually pushing myself to be at the top of my game.  I am a professional and will continue to practice my craft and push myself to be better tomorrow then I was today.

    In a future post I am going to dig deeper into specifically how I practice, as I believe that some techniques are better then others.  Additionally, how do I as a manager of several different teams create an environment that will allow my employees to practice and improve their skills.

     

    5 Tweets

    • Drew 7:11 am on May 8, 2009 Permalink

      How many developers are out there that take Iverson’s approach? http://www.youtube.com/watch?v=eGDBR2L5kzI

      “I’m supposed to be the franchise player and we’re in here talking about practice.”

    • Rachel Blum 10:42 am on May 8, 2009 Permalink

      Heh – I had a longish reply, but it’s turning into a blog post for now. (Core idea: We don’t know the basics of our craft – i.e. what is the equivalent of playing scales)

      In the meantime, let me recommend a wonderful book: Etudes for Programmers. While it’s fairly old, it has a wonderful set of exercises.

    • Anthony Broad-Crawford 11:02 am on May 8, 2009 Permalink

      Rachel – I will agree that there probably is an argument that there isn’t consensus on our “basic scales and etudes”. However, I think enough is known and can be agreed upon that a short list of fundamentals can quickly be adopted. Additionally, our profession is still very young; therefore, it will continue to shape and mold and will require a fluidity from all of us in what we practice. That being the case, it doesn’t imply we shouldn’t practice the profession as it is currently defined and understood. Doctor’s practiced a significantly different form of medicine 10 years ago then they do today.

    • Phil Booth 10:13 am on May 10, 2009 Permalink

    • JamesD 8:33 am on June 11, 2009 Permalink

      Thanks for the useful info. It’s so interesting

    • Anthony Broad-Crawford 4:58 pm on June 11, 2009 Permalink

      @Phil Booth … it does. I never came across this link before. Thank you.

    Additional comments powered by BackType

  • Upcoming events

    Anthony Broad-Crawford 6:33 am on May 7, 2009 | 0 Permalink | Reply
    Tags: , , , , , user experience

    I wanted to post a quick update regarding my upcoming speaking engagements for the next few months.  In addition to the ones listed below I have a few more in the works that I will update about shortly.  However, I do have some room in July.  So, if anyone is interested in having me speak  about Social Product Development, Community Theory, Social Objects and Social Object Theory, Ruby on Rails, the Social Stack (previously OpenStack) or Agile Software Development please let me know.   So, in no particular order …

    Social Product Development (May 16th)

    It seems like everyone these days is an expert in Social Media.  In fact, my own grandmother was lecturing the family on how she herself knows all that there is to know.  However, when you get passed all the buzzwords, there is an incredibly intense science and methodology to social product development.  I will give a presentation at the second Ignite event on how to leverages tools like social object theory, Webb / Butterfield / Smith, Community of Practice / Interest, user experience, into building engaging, successful social platforms.

    The Social Stack  (May 16th)

    With the rise in popularity of both general purpose and boutique social platforms people are joining and participating on a more frequent basis.  Although these platforms each solve a specific need for the user, having multiple profiles and managing increasing amounts of data on different sites has begun to burden individuals.  However, with the emergence of the “Social Stack” a solution is forming that will allow social platforms to ease some of the growing pains users face when participating in so many sites.

    Entrepreneurial leadership & Social Product Development (May 20th)

    I will take part in a panel discussing entrepreneurship and developing social products.  Since this panel touches on my two favorite passions I am extremely looking forward to this.  As I have more details I will update my site.

    User Experience in Agile and Social Product environments (August 20th)

    Developing a product in a fast paced iterative environment is incredibly challenging.  Additionally, compresing the user experience process into short iterative cycles without allowing for a decreased user experience creates unique challenges.  So, how do you do it?  I will give an overview of how Within3 executes a incredibly fast paced User Experience (UX) process to produce a high quality product and experience.

     

    Additional comments powered by BackType

  • The relationship between Community and Social Network

    Anthony Broad-Crawford 1:10 pm on May 5, 2009 | 0 Permalink
    Tags: , , ,

    I spend a lot of time in the community theory, social networking theory, and social object theory space. Personally, this is a huge area of interest and passion for me.  Additionally, these theories come into practice everyday as I lead the Product Development group for Within3.  If you are not currently aware, Within3 is the leading provider of communities for the healthcare industry.  Additionally, with this company, I have been able to meet and learn from some really smart people.  For example, we have on our advisory board Estee Solomon-Gray.  If you are not familiar with Estee, she pioneered the study on Communities of Practice and her work has been featured in several notable journals and Wired.  To say have I learned a lot from her is an understatement.  So, when Valdis Krebs, a former colleague and trusted friend of Estee came into the office yesterday, it is of no surprise our conversation sparked a thought around the relation between social networks and communities.

    There has been a lot of talk about the difference between the definition of “community” and the definition of “social network”.  Some argue that they are distinctly different entities, while others would argue they are the same.  In fact, these debates can become so quickly heated that they rival topics such as “PC vs Mac”, “TextMate vs MacVIM”, etc.  For the most part, I have remained a “lurker” in these conversations and just absorbed the different data points and ideas.  However, with a graphic I saw on Valdis’s website yesterday, I could visually explain why I have felt social networks and communities have a strong relationship to one another.  More importantly, they could be one of the same thing.

    Online Community & Social Network

    If we look at the visual representation of a social graph  above (provided by Valdis) you will notice that it is very representative of most social networks.  It has a dense cluster of highly connected and most likely active individuals in the middle who are stewards, providers, contributors.  Working our way out from the center, we find small clusters of  connected individuals surrounding the core (colored green) who are  the taggers, commenter’s, refractors.   Finally, a collection of independent nodes surrounding the periphery in blue that fall into the lurker category.  This directly models the known power law of participation pictured below.

    power law of participation

    Now, this does beg the question if the above density / behavior relationship exits.  However, I will follow up on that in a separate article. I am personally not convinced just because I fall into the red “connected” section I am an active contributor, steward, or collaborator.  For example, I have a lot of connections on Plaxo, however, I only log in monthly to accept my pending connection requests.

    So, if you have been following this space at all (and who isn’t these days) it easy to note that what we have discussed thus far isn’t new.  However, I did have a visual pop into my head that related the above information into the known community types I have been researching.

    To provide some context, I have been doing a significant amount of research into a few specific types of communities.  The types that have become the most intriguing are …

    • Community of Practice (CoP)
    • Community of Interest (CoI)
    • Community of Circumstance (CoC)

    These communities are each a unique ecosystem all unto themselves.  More importantly, they each will have their own graph that will follow the same laws of participation as described above.  However, as the size of any social network grows, the probability that multiple communities, and more importantly, multiple types of communities will exist with in that network increases.  That being said, the following thought graphically depicted below began to emerge when looking at large social networks.

    Social Network Radia vs Community Type

    What this indicates, is that typically at the center of a social network, there will probably exist a community of practice.  Then, as you begin to move away from the center, you will begin to see a communities of interest.  Finally, as you reach the periphery, you will find communities of circumstance.

    These thoughts are still forming as I myself have a lot of questions that immediately come to mind based on these thoughts.  For example …

    1. Is there a relationship between your graph proximity (how close to the center are you) and your location within the power law of participation curve?
    2. Is there a relationship between type of community and general participation within the larger social network?
    3. What is the relationship between social network size and number of communities residing within?

    As I dig into each of these deeper I will continue to update with follow on articles.

     

    Additional comments powered by BackType

  • No social object information in current dataportability models

    Anthony Broad-Crawford 9:38 pm on April 6, 2009 | 2 Permalink | Reply
    Tags: , , , open social, open web, , ,

    There are a lot of people talking about the “open web” and how important it is.  Additionally, there are a lot of projects out there that aim at creating tools, patterns, and practices to allow true interoperability to occur between all platforms and make the open web a reality.  I personally passionately believe in this initiative and myself even participate in one of them, the Dataportability project.  What’s exciting to note, is that although each of these projects is different, they are all doing a good job of coming up with a solutions that opens up the web and allow information to travel back and forth between social platforms.

    If you are not familiar with any of these project I have listed the big three below.  From right to left, and in no particular order, we have the Dataportability project, the OpenStack project, and the OpenSocial project.  I am not going to enumerate their merits and or differences in this article, you can click on the image below to be taken to the projects homepage.  However, what I would like to focus on is that each of these solutions currently isn’t accounting for social objects.

    For those not currently familiar with social objects I am not going to go into lengthy detail, however, they can quickly be defined as

    Social Object’s identify not just the connections between people, but more importantly, what specifically connects them.

    For example, the social object behind Flickr is a photo, YouTube a video, and in person meetings at MeetUp.  In each of these instances there exists a social graph, however, in each instance the social graph is formed around a unique context.  This context is what truly makes the connection meaningful as people connected around these things.  It is what brought them together.  However, this reason, this context, isn’t currently accounted for in any of these projects.  Losing this metadata could be costly as social platforms continue their march towards ubiquity.

    A good example of where this loss of metadata is costly is healthcare.  In healthcare there exists an extremely diverse ecosystem when translated to social media has created an environment ripe of highly specialized platforms.  This specialization is good, as it allows each platform to focus on a niche and really make it successful rather then dilute solutions in an attempt to play the field.  Some examples of these social platforms and the social objects that connect the users are …

    • A patient connects two physicians (within3)
    • A doctor connects two patients (patientslikeme)
    • A disease or symptom connects two patients (patientslikeme)
    • A disease or sympton connects two physicians (within3)
    • A clinical trial connects a two physicians (within3)
    • A publication connects two researches (biomedexperts)
    • A pharmaceutical drug connects a hedge fund analyst and a physician (sermo)

    In healthcare the physician, patient, and researcher will definitely belong to more then one social platform.  Each platform can further enable the user by leveraging an “open web” solution.  However, if each of these platforms knew what connected the users in their social graphs they could potentially even further enable the user.  Imagine where you can not import a graph, but know which pieces of the graph are important to the user in your system and make recommendations based on that.

    In an eco-system where social media is ubiquitous and platforms are highly boutique (specialized) knowing what connects individuals is important as it will allow not just graph synchronization, but a potentially more intelligent graph synchronization and analysis.  Yet, none of these dataportability solutions have the ability to answer why these users are connected.

    This post is just scratching the surface on why “social objects” are important to these projects and I definately plan on writing about this a lot more.  In a future post I will dig into some specific examples beyond recommendations of how this could be used in healthcare social platforms.

     

    2 Tweets

    Additional comments powered by BackType

  • Dataportability steering elections

    Anthony Broad-Crawford 7:11 pm on April 6, 2009 | 0 Permalink | Reply
    Tags:

    dp-logo-with-slogan1Recently the Dataportability project held open elections to repalce two recently vacant seats on the steering group.  I am pleased to announce that I have been elected along with Dan Brickley to that group.  It goes without saying that I am extremely honored and excited to participate with the larger project and not just the Healthcare task-force.  I look forward to helping promote, contribute, and accelerate this project and dataportability.

    As I participate in the steering meetings and have a chance to roll up my sleeves I will post more information.  Please feel free to visit the official dataportability blog and see the official announcement.  Additionally, stay tuned as I will post a Healthcare task-force update this weekend along with a fleshed out use-case.

     

    Additional comments powered by BackType

  • Ignite Cleveland Update

    Anthony Broad-Crawford 6:58 am on March 1, 2009 | 0 Permalink | Reply
    Tags:

    ignite

    I blogged earlier about how I was participating in Cleveland inaugural Ignite event.  For those who aren’t familiar with Ignite the basic “challenge” is you have a topic and must present on it in under five minutes.  Additionally, as if five minutes wasn’t taking you out of your “presenting comfort zone” you only have fifteen seconds per slide.

    Last nights event was a fantastic success.  I must congratulate Andrew Kavanaugh on doing on amazing job of putting this together.  Jon Stahl and LeandDog software also deserve a nod for hosting with their amazing “floating” facilities.

    I did my presentation on what it means to be “agile” when joining a start-up.  I was “randomly” picked to go first last night and had an absolute blast.  Everyone did an amazing job and we had topics that covered a wide spectrum

    1. Artificial Intelligence
    2. Event Planning
    3. Personal Branding
    4. Customer Management
    5. Philanthropic Software Development

    As you can see it was an amazing event.  I was hoping to have taking more pictures while I was there but I got caught up in the presentations.  However, the ones I did take can be found on my Flick account here and my presentation is below.

    Between now and the end of the month I am going to begin brainstorming what my topic will be for the next Ignite Cleveland event.

     

    1 Tweet

    Additional comments powered by BackType

  • What is good: Practice vs Projects

    Anthony Broad-Crawford 8:48 pm on February 24, 2009 | 3 Permalink | Reply
    Tags: ,

    So, an interesting conversation happened at the office today between Joe Fiorini, Jonathan Penn, and myself.  It all started over an article that Corey Haines responded to surrounding software development dogma, craftsmanship, and pragmatism by Steve Smith.  The article can be found here and I have no desire to specifically comment on either one.  Enough people have already beating both sides of the coin to death.  However, it did start an interesting line of thinking that I streamed through Twitter this evening.

    Corey Haines states that simple and good design consists of four basic principles

    1. Passes Tests
    2. Reveals Intent
    3. No duplication
    4. Small

    I would re-iterate these as being great principles of simple code and design as well.  Over my decade of software engineering I specifically focus on revealing intent and keeping the code light and small as possible.  However, as I tweeted about those four topics I asked the question out loud to my team,

    “how can good design be predicated upon testing?  That implies good design has only existed since the rise of TDD and then BDD.  That doesn’t make sense, does it?”

    There must be a piece of software written from the late eighties / early nineties (randomly picking a time period) that upon review from today’s “masters” would qualify as good.  In fact, there is probably a lot of code that would be considered good by today’s standards.  Then I changed the context on the conversation to a different practice to see if I would find potentially similar results.

    Design, and specifically UX (User Experience) consists of a robust set of tools, practices, and methodologies much like software development.  Or any other profession for that matter.  If you were to take one of the leading experts in this field, and travel back in time, and ask them if their designs were good.  You would absolutely get a resounding yes that might sound something like this,

    absolutely, I use the latest theories, tools, practices, and methodologies in addition to my experience built upon my tenure to produce the best quality design.

    However, if you were to ask that same person today, are your design from back then good?  They would most likely say yes and no.  In fact, they would most likely say, “relatively speaking, they were good”.

    In my opinion, the relative part is the most critical.  Relatively speaking, there was great design a decage ago.  However, as we have progressed as a profession, we have raised the bar and how is it achieved.  I assume we aren’t alone in this process.  Every profession must have this same never ending battle of ideas, methodologies, etc.  Every profession must challenge where the bar is currently and how it progresses even higher.

    There is one metric I personally pay attention to when identifying where the bar is set on specific projects, and that is the customer.  They have the final say when it is their dollar and their product.  So long as they are making an informed decision and understand any consequences because of it, they set that bar.  Which is different then the profession or practice of software engineering.

    At the end of the day, I think the reason for such a disagreement and potential disconnect between Corey Haines and Steve Smith is that Corey was talking about the profession and how do we as engineers build software (the art, the craft, the practice), and Steve was talking about a specific project.  These are two very different situations that will most likely produce very different tools, processes, methodogies and ultimately product implementations.

     
    • Wade 7:13 pm on February 25, 2009 Permalink

      I would suggest that only 2 tests truly exist to measure a design in a any environment. Did it meet the requirements and did allow for flexibity in changing these requirements. Knowing the scope of your business and preparing for expansion through variuos design concepts is so much more important than TDD, size of code, intent, etc. At the end of the day the majority of software is written with a business value implied. The developer / designer takes it upon themselves to live in a religeon on how to develope and often mistakes what to develope.

    • Anthony Broad-Crawford 7:45 pm on February 25, 2009 Permalink

      In my opinion, they are all tools in the toolbox. Each project will require a certain configuration of the right tools and practices. One scenario may require XP, TDD, BDD, DDD, and another may not. At the end of the day, to your point, our job isn’t to try and figure how to integrate TDD (et al). Our job is to pick the right tools that support the product road-map, expedite product delivery, and further “enables” business. If it requires TDD (et all), so be it. If it doesn’t, so be it.

    • Amos Oshrin 4:48 am on March 7, 2009 Permalink

      Some good points. What was good then may be pretty dated now. The bar has indeed been raised. Still, many a good system was implemented before TDD, and served reliably for a decade or more. The craft improved based on these prior experiences (shoulder of giants …) and improvements in technology (s/w and h/w).

      The most important point is the customer focus. It adds the context by which a project’s success can be measured. In academia, pure research may be called for. In the business world, measurable business benefit is the way to keep score Total cost of ownership is important, but it’s secondary to the immediate benefit. You’ve got to make it past the short run to get to the long run. The best designs (or TDD implementations, or …) excel in both immediate and long run measures.

      Rememebr, if you lose sight of the customer benefit proposition in favor of technical excellence, you (and the customer) will lose.

    Additional comments powered by BackType

  • Social object, community, design theory and other upcoming posts

    Anthony Broad-Crawford 4:02 pm on February 23, 2009 | 1 Permalink | Reply
    Tags: , , , ,

    There is going to be a pretty consistent flurry of activity on my blog over the next few weeks.  This is primarily due to a significant amount of research that I have been conducting over the last few months / years is coming to a crescendo.  I feel if I don’t begin to communicate it I may burst.  There are additional sources which include but are not limited to

    1. Upcoming speaking engagements
    2. Current research interests
    3. Dataportability Healthcare Taskforce
    4. Participation and increasing involvement in “OpenStack”
    5. Etc

    I think the one I am most excited about is my case study in Social Object and Community theory.  I am going to begin a pretty decent brain dump on these topics and then transition into a fictional case study about how you might leverage these strategies, methodologies, and tactics to build a community.  The list of topics include but are not limited to

    1. Social Objects
    2. Community Types
    3. Community of Interests
    4. Community of Practice
    5. Community of Action
    6. Community of Purpose
    7. Community of “all the rest”
    8. Case Study :  Poker enthusiasts community

    I am pretty excited about this and hope you are too.  I look to hopefully begin this with my first post on social object theory tonight.

     

    Additional comments powered by BackType

  • Hiring - Part 2

    Anthony Broad-Crawford 1:20 pm on February 20, 2009 | 0 Permalink | Reply

    A while back I wrote an article talking about the certain qualities I look for when I am hiring (found here).  Although at the time I was looking to hire across the three organizations I am responsible for (Product Management, UX, and Engineering) I scoped the article specifically to engineering.  Now, having hired several more engineers to the engineering group (plus UX and Product Management) I want to take a little time to talk a little bit about how my hiring process has improved.

    One thing I have found (and by no means do I assume I am unique in identifying this) is that making a hiring mistake is extremely expensive.  I don’t just mean the dollars and cents of the actual hiring process, I am specifically referring to the larger impact to your organization or teams objectives.  A new hire will temporarily degrade your organizations velocity, which for me means features, interface improvements, and bug fixes don’t get shipped in time. That means I have customers and users using a version of the platform minus some features I would love to have had in there.  Hiring the right candidate who can really hit the ground running and begin providing value add sooner rather then later is critical.  Worse case scenario is ending up having to let the person go, thus repeating the costly hiring and training process again, further impacting your ability to ship quality product out the door.  Not good.

    That being the case I have begun to actually test as part of the hiring process.  This has been made famous by several giants before me (Google, Facebook, Amazon, etc), I am simply taking a page from their playbook.

    Posting
    Previously we would simply request your resume when posting a position.  Now, I have begun requiring you submit a solution to one of the puzzles in addition to your resume.  I have a few problems to choose from for each organization.  For engineering, this could be a cluster analysis problem, for UX, a wire-frame or mock-up, etc.

    These will each be framed so the person doesn’t have to start with a blank canvas yet they must provide a solution that should require some critical thinking.  Doing so allows vetting of their technical chops.  More importantly, we have a solution to which we can begin asking the question “why”.  Understanding why they made the design and implementations decision they did is critical and more valuable then the specific implementation itself as it gives deeper insight into how the individual approaches problems and creates solutions.

    On Site Interview
    Previously, if you have made it to an on-site interview you previously had to go through a round robin interview process which was fairly typical.  We would make you code, wire-frame, etc on the white board, but not much more.  Again, this works, however it doesn’t really give you a chance to see how they think / reason/ solve on your domain.  This is why we began implementing pairing sessions during the interview process.

    If you are in engineering, you will actually pair program with members of the team.  Here we are looking to see how you actually work with someone when having to solve a real world problem.  If you are in UX, we will have you pair on the current wireframe, mock-up, user flow we are working to see how well you think and again, work with other individuals.

    Silver Bullet
    I absolutely believe it is still possible to hire the wrong candidate in this scenario.  There is no magical silver bullet that make all hires perfect.  However, I have found this drastically reduces the probability of a misfire, which is the most you can hope for when hiring.

    For all the engineers out there
    If you are an engineer, and want to work in a fast moving environment using Ruby on Rails, Clojure, MySQL, please submit your resume to anthony@within3.com and solve the following problem below.

    Credit given to Facebook.  This is taken from their puzzle’s page.  I use  it  because it directly maps back to a problem we have solved within our platform.  Why re-invent the wheel.  When solving please use Ruby, Python , C# 3.5, or Clojure.

    Cluster Analysis

    Within3 is looking for ways to help users find out which colleagues they interact with the most on the site. Towards that end, you have collected data from the platform regarding who they interacted with on the site. Each piece of data represents a desirable but one-way interaction between one user of Within3 towards another user of Within3. By finding groups of users who regularly interact with one another, you hope to help users determine who among their colleagues they collaborate with the most.

    Being a popular engineering ninja, you have collected a lot of data; so much that you cannot possibly process it by hand. But being a engineering ninja of no small repute, you believe you can write a program to do the analysis for you. You are interested in finding clusters of users within your data pool; in other words, groups of users who interact among one another. A cluster is defined as a set of at least three users, where every possible permutation of two users within the cluster have both received and sent some kind of interaction between the two.

    With your program, you wish to analyze the collected data and find out all clusters within.

    Input specifications
    The input file consists of multiple lines of aggregated log data. Each line starts with a date entry, whose constituent parts are separated by single white spaces. The exact format of the date always follows the examples given below. Following the date is a single tab, and then the email address of the user who is performing the action. Following that email is another single tab and then finally the email of the Within3 user who receives the action. The last line of the file may or may not have a newline at its end.

    example input data

    Thu Dec 11 17:53:01 PST 2008 a@within3.com b@within3.com
    Thu Dec 11 17:53:02 PST 2008 b@within3.com a@within3.com
    Thu Dec 11 17:53:03 PST 2008 a@within3.com c@within3.com
    Thu Dec 11 17:53:04 PST 2008 c@within3.com a@within3.com
    Thu Dec 11 17:53:05 PST 2008 b@within3.com c@within3.com
    Thu Dec 11 17:53:06 PST 2008 c@within3.com b@within3.com
    Thu Dec 11 17:53:07 PST 2008 d@within3.com e@within3.com
    Thu Dec 11 17:53:08 PST 2008 e@within3.com d@within3.com
    Thu Dec 11 17:53:09 PST 2008 d@within3.com f@within3.com
    Thu Dec 11 17:53:10 PST 2008 f@within3.com d@within3.com
    Thu Dec 11 17:53:11 PST 2008 e@within3.com f@within3.com
    Thu Dec 11 17:53:12 PST 2008 f@within3.com e@within3.com

    Output specifications
    You must output all clusters detected from the input log file with size of at least 3 members. A cluster is defined as N >= 3 users on Within3 that have send and received actions between all possible permutations of any two members within the cluster.

    Your program should print to standard out, exactly one cluster per line. Each cluster must have its member user emails in alphabetical order, separated by a comma and a single space character each. There must not be a comma (or white space) after the final email in the cluster; instead print a single new line character at the end of every line. The clusters themselves must be printed to standard out also in alphabetical order; treat each cluster as a whole string for purposes of alphabetical comparisons. Do not sort the clusters by size or any other criteria.

    Example output (newline at end of line):

    a@within3.com, b@within3.com, c@within3.com
    d@within3.com, e@within3.com, f@within3.com

    Finally, any cluster that is sub-cluster (in other words, all users within one cluster are also present in another) must be removed from the output. For this case, your program should only print the largest super-cluster that includes the other clusters. Your program must be fast, efficient, and able to handle extremely large input files.

     

    Additional comments powered by BackType

  • Dataportability Healthcare Taskforce update: We have use cases

    Anthony Broad-Crawford 1:26 pm on January 28, 2009 | 0 Permalink | Reply
    Tags: #hctf,

    dp-badge-official-taskforceI am excited to report that the Dataportability Healthcare Taskforce has identified the use cases we are going focus on.  They are listed below, however, they can also be found here.

    •    Customer using a profile to evaluate applicable insurance plans.
    •    Provider looking to connect a patient with applicable clinical trials.
    •    Insurance company providing applicable community support information to a customer.
    •    Personal healthcare products R&D lab running studies with customers on product effectiveness.
    •    Physician transferring consumer’s healthdata to another physician via 3rd party tools

    These use cases are going to serve as the foundation for our initial position paper being released in the month of March.  So, if you would like to contribute please don’t hesitate to contact me.

    I also need to send a big thank you to J. Trent Adams for taking the lead on identifying the template we are going to use to capture the details on these.  The template can be found here.

     

    Additional comments powered by BackType

c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
esc
cancel