Monday, December 28, 2009

Here's to the Quiet Ones


 First off, I hope you are having an awesome holiday season. I was enjoying mine this past Sunday and talking to my cousin Duane Roelands, who is also a .NET developer, about programmers. I said (and I think this is stolen from somewhere, just not sure where), "There is no such thing as famous programmers, just loud ones." He retorted that there definitely were famous programmers. After some back and forth I thought of people like DHH and R Stallman who are not only loud, but also accomplished and therefore I would consider them famous. I had to concede. 


This got me thinking of the shy quiet amazing developers I have met, and there have been a lot of them. The ones you have heard of were shoved out into society for accomplishing great things, usually amongst much protest. However, the majority haven't crossed your path. Meeting guys like this surprised me in the beginning, because I didn't understand why they didn't shout it from the mountains. In fact, most of the best developers I have spoken to have been very quiet and introverted. It's made me grill all the programmers I meet because I can't rely on the fact that they will be outgoing enough to share if they have some learning to drop on me. 


I love the opportunities I have to be around great developers all the time, really love absorbing what they have to say. So I wanted to take a second and tip my hat to the quiet ones. Because I really appreciate all you have taught this total spaz. 


***EDITOR'S NOTE: I was going to make a X - Talent of Developer, Y- Vociferousness of Developer graph, however, I felt that it would inspire criticisms. However, it would have been funny.***



Sunday, December 20, 2009

Spoke at Girl Geek Dinner - World Still Intact


Despite my protests I was invited to speak at this past weekend's Girl Geek dinner. I can't tell you guys how great it was to be around a room full of nerd girls. I take back that we shouldn't have support groups, kind of. I still think we could use more time spent focused on accomplishing things. I would love to see more GTD from the ladies. I'm not against us getting together, however. Though it may be a little sexist and counter productive, the positives outweigh the negatives. 


Everyone there was so friendly, a girl even gave me her homeabde ring after I complimented it! It seems the whole thing was videotaped and should be going up on their site. 



Thanks to the ladies of GGD for inviting me, I look forward to attending another!



Here are some pictures from the GGD facebook page:










Sunday, December 6, 2009

Easy HTML Templating with JQuery

 I have been wanting to write a blog about this for a while and my first post on Devlicious is the perfect place. Firstly I have to thank Jess Chadwick for his help with this when I first started out with the Bundl.it project. Working with ASP.NET MVC has been wonderous, but when I was first starting out I was confused how I would replicate some of the behavior I was used to on my heavy server controls.


I wanted my page to be quick, and to do this I wanted only the amount of HTML I need to display to be on the page. When I was using webforms I would probably do this with a repeater, but I'm using .NET MVC so I thought dynamically generating the HTML was the way to go.


Your first step is creating your template; your template is the HTML that gets added to the page. You want it to be hidden; throwing it in a script tag is a good way to do this. You need to give it an ID that can be referenced in your code. You can create multiple templates as well. I am creating an unordered list.


My template looks like this:


  <script id="ItemTemplate" type="text/html">


        <li class="item" value="|rowNumber|">


              <input type=”text” id=”input|rowNumber|” />


        </li>


    </script>


 


Now within my code I need to put a place holder where I want my HTML to go.  I have my unordered list called url_list.


 


<ul id="url_list"></ul>


 


Now, you see that most of my items look like this “|rowNumber|” I have a variable in my code called nextUniqueItemID (I believe in extremely descriptive variable names). Here is my “addItem” function.


 


function addItem() {


        var list = $('#url_list'),


                      items = list.find('li');


        list.append($('#ItemTemplate’)


                                    .html().replace(/\|rowNumber\|/gi, nextUniqueItemID++));


      


    }



 The list item gets added on user action. You can interpret it how you want The first thing it does is find my unordered list using the ID selector. Then the append function locates my template using the same selector and adds it to the html inside the url_list. It also replaces the rowNumber with the nextUniqueItemID, that way when I can reference this particular input when submitting my form. . It's that easy!


 


 






Wednesday, December 2, 2009

Wednesday, November 18, 2009

Shut up and build something

 

 

I want to preface this post by saying thank you for everyone that contributes to the movement of trying to get women into software. I respect each of you and appreciate that something that is important to me is important to you as well. 


 




There is something that has been weighing on my heart for a long time now that I feel I need to get out. This may make some folks angry, and I apologize in advance. However, I think it's imperative to open up this dialogue. 



I don't need to tell you about the horrible deficit of women in programming. Less than 10% of the 2009 CS grads were female. This is down an incredible amount from two decades ago where the equivalent degree program (MIS) attracted nearly 40% women. 


As you can imagine I get asked about this issue a lot. Some of the more cynical men I have spoken to have asked, "Why do we need more women in software?" I'm not going to sit here and say we're better at project management and design it drives me crazy when people go there. Though our biology does predispose us to these things I like to think that I contribute the same value as my male counterpart. Suggesting we are better at some things also says we are not as good at other things. I don't want to reduce the value of my sisters. 



The answer to the question of "why" is simply: we don't. The industry would survive and likely thrive just as much without us. If you are someone who is super into white and asian guys software is for you. If you don't mind your daughters being completely turned off by the idea of being the only female on most teams and having no female role models then definetely keep the status quo. However, if you want to make this a community that is full of excellant men and women something needs to change.  


I have been invited to countless "Women in Tech" events by some really awesome people. I understand that these events are beneficial to some, and I don't dispute that. I choose not to go because I don't like to segregate myself from my fraternal brothers in software. I alos believe that nothing is accomplished by discussing this over and over again. We have been talking amongst ourselves for a long time and we are yet to find a solution. 


One of the biggest issues in this movement hit me yesterday in the PDC Keynote. Some developers of now successful start ups such as Icanhazcheeseburger and Seesmic. I have seen a lot of these cool products demoed, both here and at the New York tech meetup and they all have one thing in common. Their creators? Men. All dudes. 


THAT is where we are lacking, not in support groups, in end product. Off the top of my head I can think of only two female developer leads on projects, Sara Ford and formerly Leah Culver. THIS is how we will attract girls to programming. When they look at us and say "wow, I can do that." We can talk until we are blue in the face, however, unless we take action we are not role models. 


So, I'm challenging you ladies, GET OUT THERE. Fail, over and over until you succeed. Let's show this crop of high school girls how awesome it is to be a woman that produces awesome software. Let's focus on clean code, and beautiful apps, and getting the recognition for what's important; not being a WOMAN in software but for being an amazing developer with great ideas. Let's be the ones on stage showing off our super popular new apps. In short: let's stop talking about it, let's get out there and get awesome. 



Sunday, November 8, 2009

PDC and Python (in that order)

 I just want to preface this post by telling you that I am writing it from the eliptical machine. I had this brilliant idea earlier this evening and it may be the best one I ever had save http://bundl.it. 


 

Things on this end are buzzing aw usual. I am getting ready for PDC next week. Very excited to meet some very cool people and learn about what's coming up in the world of .NET. There are a lot of sessions I am looking forward to, particularly some of the MEF and Azure stuff. Excited about SQL Server support in the cloud, it's the one thing that's been standing between me and the upper hemispheric web apps.

 

I have been dabbling in Python for a little bit now and the contrast to C# is facinating. The thing that gets me the most is that while C# will throw an exception at the first sign of a sin against typing, Python will try its darndest to make things work. I both love and loathe this. Python as a language is intuitive, I have found often when I'm unsure about syntax I think, "well, it would make sense if it were this" and then when I go check that's exactly what it is. 

 

I plan on writing about setting up your local Python environment on a Windows machine later in the week, as it is not as easy as it would seem. Now, is the .NET world losing me to the dark side? No, I see the need for both languages and I'm just adding some more tools to my developer's tool box. 

 

There are some exciting events coming to the NY/NJ area in the following months, as well as one rocking nationwide one that I can't wait to tell you all about. Stay tuned, and if your curiousity is killing you shoot me an email or an IM, I'll get you in the know. 

 

My desk:

 



Tuesday, October 27, 2009

ASP.NET MVC Translated for the Web Forms Programmer (5 in a series) - What the Frig is a View Model?


I wanted to expound on something very important that I kind of glazed over in the last post, View Models. View Models are something that is very pivotal to MVC and were one of the hardest things for me to understand. I feel like it's important to go over them in depth so you can understand them as well. 

 

I actually don't love the concept of a View Model, it's a little muddy for me. I understand that it is important because it allows the View to do what it was made for: rendering and displaying elements. However, like any other programmer I like things clean and easily defineable. I like concrete answers, and non-redundant interfaces. A View Model is none of these things. It is an arbitrary collection of data gathered for the express purpose of conveiniently grouping your views. 

 

Before I completely talk you out of them I must clarify that I love using them in my MVC applications because it alows me to seperate my OO archtecture from my Views. You know, seperation of concerns and all that. 

 

So how do I get started?  A View Model is simply a class that you build to aggregate the data you want to display in your view. 

 

Let's say I have a class Car and a class Train. I want a view to display all the ways I can get from New Jersey to New York. I have a train schedule and a list of rental cars. The classes Train and Car are not associated to each other in my data model. So, what to do? That is where our View Model comes in. They are pretty easy to create, my Car/Train view Model is called TransportationViewModel and it looks like this:

 


To populate my View in my Controller I create an action and when I return my View I pass in an instance of my TransportationViewModel. Like this:

 


As you can see this is just a simple class that contains both a list of Cars and a Train. My view will be strongly typed and inherit from this View Model. This is how it will look:

 


As you can see, my View Model allows me to pass my Data to my view and I don't have to muss with my objects or my model. 

 

 When it comes to data manipulation you want to keep that in the Model, not do it in your View Model. Unless what you are messing with is specifically for that particular view. 

 

Now, the question of the year is: "Do I need a new View Model for each View?" The answer is: it's up to you. If you only need one class in your particular view than you don't need one. However, I find that to be very rare. 


Thursday, October 22, 2009

Bundl.it release and Philly.NET CC

So, Philly CC went great. I started to make a video about it here: however, You Tube ate my video three times.  You can


watch part of it here: http://www.youtube.com/watch?v=2Ej8L1RxDJU


That was a greeeeat minute. 



I will get back to the video later this week and make it for reals now? I just wanted to touch base and say two things. Firstly, http://bundl.it is going great. We now


have a blog at http://bundlitblog.wordpress.com/2009/10/03/well-hello-there/ run by my trusty sidekick Lloyd. 



I also was awarded an MVP award by Microsoft. I am greatful for the honor and can't wait for the summit. 



Everything else will have to wait until later in the week when I have time to redo this video. Tomorrow we will be celebrating the release of Bundl.it at the New Work


City anniversary party. Should be a blast. 



Wednesday, October 14, 2009

Unbridled Endorsement of the Best Code Camp Ever


So, Philly .NET Code Camp is where I made my speaking debut (amid much stuttering and  shaking). I may be biased when I say this is the best .NET Code Camp in the US. They have it twice a year at the Devry Campus in Fort Washington PA. It goes from 8:30 am until 5:00 pm with Breakfast, Lunch and Prizes. It's all completely free and the presenters are a Who's Who in .NET. I'm really excited to see a lot of people speak, and to meet some people that I haven't before. If you live in the area it would be awesome to see you, please come say hi. 



In other news I am working on a website snapshot generator for the thumbnails on http://bundl.it. I'm really unhappy with the service I am using and its reliability. I am also learning some Silverlight stuff thanks to the help of Chris Bennage of Devlicio.us fame. This is a lot of fun as I never expected to learn something so closely linked in design work. The most I've done on a related level is make a picture fade in and out in flash. It is a slow learning process. 


Thanks to all that came out for the NY Nerd Dinner at Stout tonight. We were a mellow group, but I really enjoyed our conversation and meeting some of you for the first time. 



Sunday, October 4, 2009

Nerd Gear - What to wear?


  So, I do a lot of nerd events as you probably notice. This weekend was the MVC Firestarter done by Microsoft. Stephen Bohlen did an awesome write up here), and I did something a little different than I normally do: I dressed like a girl. Usually I like to up my nerd credibility by wearing a tee shirt and sneakers. However, if you catch me on an average day you'll see me in a stylish (well, at least what I consider stylish) out fit and pumps. Not at all casual. 


  I usually figure that if I wear something more low key it will make me more approachable, however what I really think is that if I dress down it will make the gender gap not so gaping. I also think it makes me a little more approachable and likely to make friends at these things. 


  What changed this weekend?  I don't know. The night before I was thinking of what to wear. I have this default pair of cargo khakis that are great for nerd events. I have a small handful of nerdy tees, and I was thinking about which one to put on and lamenting about the fact that I didn't have anything new and I feel like I have outworn a lot of tees. At that moment I decided that was the end of it, I was going to dress normal for once. I didn't wear anything crazy, just khaki boot cut fitted pants, a red and white striped sweater, and white flats. 


  So, was I treated differently? Well, to be honest I feel like less people came to talk to me. However, that wasn't exactly a scientific study, and I think I will do this a few more times before coming to a conclusion. 



   Ladies, do you find yourself doing the same thing? Gents, how do you feel about my attitude towards this? Any stock in being afraid to be different. Please feel free to be candid. 




Non-sequitors: I'm speaking at the awesome Philly .NET code camp in two weeks, I got a ASP.NET MVP award this week, and my new site http://bundl.it launched!!! What a crazy week, will do a write up about its creation soon. 


    



Sunday, September 27, 2009

Concept Camp 2009 Review



Next year we are getting tee-shirts made before hand that say "I Survived Concept Camp 2010" because the odds were against us this year. My friend Erika and I got in around 10pm Friday night. Took us about 4 hours to get down to Hagerstown.We set up our tent in the dark (two of them) and blew up our air mattress in the dark (two of them). We hung out for a bit, exchanged some greetings, then we went to bed. 

 

I was woken in the morning by screaming children at 6:30am. Charming. Our morning keynote was unable to make it so I emerged from my tent rather leisurely around 9am. We started breakfast, eggs, bacon, sausage, turkey sausage. It was hard to wrangle but we did it. After breakfast it started raining a bit. No better campers than engineers I say. The guys put up a great fort to protect us from the rain. It did, and it was the perfect place to start our talks. First we heard from Chris Ballance about Design Patterns for Scalability, then from Steve Andrews about Giving Technical Presentations. The rain got worse as the afternoon went on however we were still in good spirits. 

 

After getting some snacks, and picking up our steaks (thank you to our sponsor,Infragistics) we made our way over to a large open air gazebo where Matt Podwysocki taught us all the power behind F# and Functional Programming. 

 

The consensus at this point was that we should cook our beautiful steaks. This was no easy task as the rain was coming down pretty hard at this point. However, geek ingenuity prevailed again as we stacked some "fire rings" on top of each other and cooked our steaks, corn, and potatoes. We found a covered picnic area to eat under and we had a great dinner. 

 

Then I spoke about working on personal projects, we took a break to start playing some drinking games and rejoined back up at the gazebo for an unforgettable keynote by K Scott Allen that really spoke to me. He spoke about when to declare "Victory" in software. He posted it here, I think it's excellent reading it really gave me insight into all of our mindsets when it comes to success. It has made me revisit things I consider successes/failures. 

 

After his talk the night developed into a real party of games, fun, and real community. I left feeling like I bonded with current friends, and made some awesome new ones. The event was better than I could have imagined even with all the rain I wouldn't have changed a thing. I will be posting pictures tomorrow after I get them all together. 

 

Thank you to everyone who made this an amazing and unforgettable event. 

 

 

Pictures are up!!! See them here. 



Sunday, September 20, 2009

The XX Files

Hello all, hope your machines are treating you well. Just wanted to blag about some news as it relates to Sara.


Tickets to Concept Camp will be sold up until Weds 9/23. Get them while you still can. We recently got sponsors for Concept Camp as well as some great new speakers. News will be going up on the Concept Camp site. You can also follow ConceptCamp2009 on Twitter.


On October 3rd Microsoft in NY is doing a MVC Firestarter and I've been given the great opportunity to present. This is my largest event to date and I'm really looking forward to sharing some of the MVC goodness. It's at the Grand Hyatt New York and you can register to attend here, also it will be broadcast on the web for you at home. You can learn more about Firestarters in Steve Bohlen's great post here.


I'm Beta testing my latest personal web project. It's a URL Aggregator built in ASP.NET MVC. If you would like an invitation shoot me a line, if you are waiting on one you will see it in your inbox shortly.


This weekend I had the awesome opportunity to go to the xkcd book signing party here in NY. I got to meet Randall Munroe and he signed my netbook. It was nerdtastic and I giggled like a 5th grader the entire time. The book is great, you can buy your copy here.




Sunday, September 13, 2009

ASP.NET MVC Translated for the Web Forms Programmer (4 in a series)


 


Ok, so, do you remember learning about HTTP Get and HTTP Post in school? Ok, do you remember when you started building Web Forms and you just chalked that up to another thing that you learned in school that's not applicable in the real world? Well, guess what. MVC is 100% get and post. Never fear, it's an easy concept. Once you get it you will realize it's truly awesome to be working with the web at its root. 


 


Now, for those of you who's memory is a bit fuzzy http stands for Hyper Text Transfer Protocol. It's the way things are sent from your computer to the server and then back. It's an integral part of what we do, and I appreciate that MVC brings us closer to the action.


tree


Today we shall create one page that does both things, a Get AND a Post. We're going to create a new project for a restaurant named TGIW (this place seriously loves Wednesdays, weird). We've already learned about Views so I went ahead and built that myself. Today we're going to learn about two big things: Rest and populating our views with data.


 


REST stands for Representational State Transfer and it was actually created by one of the inventors of HTTP. In REST calls individual requests are made using URIs like hypertext links. You can make GET or POST requests by using URLs. This is how MVC performs its actions.


 


Now, what we want to do is have our daily specials loaded as the form comes up, and then send back our order. Our application is using LINQ to SQL and we have two tables, “Specials” that contain our daily specials, and “Orders.” which is where our orders go.


 


What we're going to do first is create a ViewModel. MVC is very good at simple CRUD behavior with data objects, however, when our application requires data that is more complex the best way to pass this data into our View is through a ViewModel. Since our view needs to be able to manipulate multiple classes we're going to aggregate them in a ViewModel.


view model


Our ViewModel is called OrdersViewModel, and it includes a constructor that gets our special of the day via by creating a special and passing the day of the week.


 


Now we come to the “Get,” we're going to build an action that returns an ActionResult that populates our page. Inside our action we're calling a method called that accepts a string “day” and returns our special. When we return our View, we're going to pass in that special. We reference the special on our page.


orders.aspx


In our view we're going to make sure that the type passed into “System.Web.Mvc.ViewPage” is our “OrderOnlineViewModel” class, because that's what we're binding our page to. This allows us to reference any of the values in that class. We will display today's special, I'm going to throw it in a div. We use Model.PropertyRefrenced as the syntax.


 


So, next we're going to do our Post. We have our text boxes, where we can input how many meals we want to order (this place has a very limited selection). We're going to create our Post action the same way we did our Get, except this time we will be passing IN a our Order to be saved. Within our post we put all the data we grab all the data collected in our form. There are a few ways to do this. The first step, however, is to make sure all our html controls are named in a way that we can reference in our controller.


 


This brings us to an excellent point that we need to go over, the concept of “Convention Over Configuration.” I don't know if you've noticed but this has been floating around a lot recently. It basically means that it's better to agree on a way that things should be set up and make that the way you do things, than it is to manually configure each time. This concept is exhibited in ASP.NET MVC in the way that controllers have to be named after the folder where the views are contained, and how the values on the view are referenced why whatever the controls are named.


text boxes


For this project we're going to use simple text boxes right now, we'll move onto more involved controls. All we need to do is create a textbox to enter our data, then on our controller we're going to name our action the same thing as our “get,” this time however we're going to specify that it is a post. We did this in our last edition, and now we're doing it the same way. Don't forget to specify that your form has a default action of “Post” and you'll be set, your most method will automatically submit after your click event.


post


Next up: the HTML Helper, and ways you can use it.


 


I apologize for the code images, will embedd code in the future. For now you can download the source here.


 


 


 



Thursday, September 3, 2009

More details about Concept Camp


So, ch-check it out: http://ConceptCamp2009.com



I really hope to catch some of you out there. I love camping, and this is a great opportunity to get to know people. More exciting speakers to be announced soon.



I've been extremely busy lately, and my blog has been suffering. I apoligize for that, but I intend to get things back up to normal pace after the launch of my latest project. The saying is true: "After 90% of the work is done, you just have 90% to go." Software isn't easy.


Hope you are having a beautiful week. Please feel free to contact me with any questions about Concept Camp, or if you want to speak. We still have a few spots open.



Thursday, August 20, 2009

Framework Agnostic Web Languages



After a great time at a language agnostic conference this past weekend (I don't have pictures, I got a new camera and I forgot to bring it. I was so mad) I've gotten to thinking about framework agnostic languages. The ones you need to know whether you're a Python, C#, Ruby, or Java developer. I came up with the following list:



  • HTML

  • XML

  • Javascript (JQuery, Prototype, YUI...etc)

  • Querying languages (SQL, MySQL, Oracle)

  • Regex (syntax, not language)


My point is, while it is important to be focused on whatever web framework we currently are working with these languages are a staple to our success. For the past few days I've been playing with Python, and so far I really like it. Say I wanted to switch from .NET, I would still be heavily working with these agnostic languages. 


This is why even though I may not be heavily into writing custom HTML/css I am still paying rapt attention to the HTML 5 / css 3 advances. Unless I decide to become a Doctor or a Fireman I will be no doubt referencing them for a long time. These languages have proven their worth by staying around since the beginning of the internet (when I was a wee lass) and I doubt they have any intention of leaving anytime soon.


Any good web developer should be extremely comfortable with any one of these fab 5. If you're worth your salt you know  that while you may not consistantly use these, your work will consistantly need to communicate on one of these levels, so it's important to know what's happening on the other side. 


I would even go as far to say that if you are a web developer the most important thing you can do is learn Javascript. I never used to make it a priority, and since I have my apps have improved dozens of times over. I hate doing anything in my controllers now. This too may pass, and I can't say that everyone should share my overzealousness.


Here are some great references for info about these framework agnostic languages. 




I realize my list is shamefully short, have any you would recommend?



Saturday, August 8, 2009

Announcing: Concept Camp (Camp)


  So, I've long been discussing Concept Camp (lovingly referred to as Camp Camp) and I've ironed out the details.  The dates are September 26th and 27th. It's looking like we will do the KOA in Hagerstown, MD We will be tenting it, and there is Wifi, water, and electricity (what more can a girl ask for). Friday night I plan on getting there, setting up tents, and roasting some marshmallows. Saturday day we will be giving talks (TBA), discussing frameworks and concepts, and playing some games (nerd games). Saturday night will be the party night so bring your beer hat (I make some amazing Jungle Juice, let me tell you). 



 I'm looking to make this a yearly thing, I think we can have a lot of fun. Contact me for details, to sign up, or to discuss possibly speaking. 



 Hope to see you there!!!! 



Thursday, July 30, 2009

NJ Tech Drinks Take 2 / Camp Camp?



So, the first NJ Tech Drinks was a great time. Met some great people, saw some familiar faces. Going to do it again, August 13 at the Old Bay bar in New Brunswick (despite their site's violating music). 8:00pm, be there or be square. (that means YOU Redmond kids.)



I've been thinking about doing a LITERAL Code Camp the last weekend of September (26th-28th). At a KOA with tents and a fire and s'mores. Interested? I figure we can do chalk talks, play some sports


(nerd sports), and best of all hang out. I am putting the concrete details together this week, more to come soon. Mid-east coast it looks like. If you're interested in coming and/or speaking please let me know. 




If you didn't catch it on Twitter this was my first interview!!!  It's on Tavis Hudson's site Tech Career Tips. It was a huge compliment to be asked. 



Sunday, July 26, 2009

The Coding Ballerina



  Every child has a dream. I remember when he was little my childhood friend Sarah's little brother wanted to be a fire dog. Sometimes it is nice to reflect on these things as adults. However, our modern programmer has taken to fashion himself after one of his favorite childhood heroes: the Ninja. He wants to be quick, skilled, and silent. He wants to get things done without making a stir, be completely agile, and he wants to be incredibly awesome doing it. To illustrate the "Coding Ninja" craze here are a few links:


http://www.azillionmonkeys.com/qed/ninja.html


http://www.codinghorror.com/blog/archives/001163.html


http://saltlakecity.craigslist.org/eng/1247057156.html


http://www.43things.com/person/coreb


http://jsninja.com/



What's the big deal? Who wouldn't want to be a ninja? Well, for one, I don't. I mean, their clothes look like a really tight burka (no offense to those who enjoy wearing a burka, it's just kinda warm out right now). I want my code to be beautiful, graceful, and sleek. On top of all this playing Ninja is totally a boy game. I mean, COME ON. So, I'm taking this one back for the ladies. You guys can have your ninja thing, because we'd rather be ballerinas. 


Dynamic, perfectly composed, and beautiful. Just like our code. 



That's all I have to say about that. On with some announcements. I have been invited to speak at the Boston Thoughtbot sponsored  event Developer Day. I'm really looking forward to it and I hope if you're in the area you will come. It looks like a great event and it's relatively inexpensive.



MVC for Web Forms post is coming within the next few days. 



ROCK!!



Monday, July 13, 2009

Rock Out Like a Girl Developer


I don't know about you but I can't work without good music.


I love Pandora because I feel I get a real variety and I think whatever algorithm they use totally works because I'm always dancing in my chair. I don't know if you have been paying attention (I haven't) but apparently they have been involved in litigation recently over their service. Apparently  Copyright Royalty Board (which is apparently a board incharge of copyright royalties?). I got a nice email from the owner oif Pandora this week apoligizing for the inconvenience and stating that my listening was now limited to 40 hours a month. I could get more, however, if I opted to pay their service of $.99/month. I thought the email sent the message that they really care about their customers.


Before we get started though, you HAVE to check this song made by a guy named Dale Chase. It's called Coder Girl and it's amazing.


So, without further ado, here is what I listen to when I am coding like a mad woman. I figured I'd share with you in case you wanted to join me.


Sara Jo Radio   These are my favorite artists playing some of my favorite songs. Listen at your own risk, Hanson really rules.


Summer 09 Mix I made this station and seeded it with all the awesome tunes I've been rocking out to this summer.


Donated Station A guy named Chris sent me this awesome station he made, it's called "Kanye West"  but it's mostly awesome old school rap. Love it.


Ska Throwbacks Nothing says high school like some Less Then Jake or Save Ferris. I bop at my desk a little harder to these guys.


Rainy Day Radio  More slow jams for when you're just in one of those rainy day moods.


Mellow Radio Some great 70s beats from Cat Stevens, Hall and Oats, Cher and more of my favorites.


Caitlyn Radio  I got together with an old friend lately, and I threw this station full of the songs we used to love together. Hint: I seeded it initially with Trick Daddy



If you listen let me know what you think, if you have good ones of your own I'd love to hear them.



Sunday, July 5, 2009

SVN Support Group


It's gotten so bad I have to share. 


Have you been there? The endless circle of "clean up this folder", "wait, you can't clean up this folder, it is locked by this folder... clean that up" "you can't clean this up, this file is locking it" "this file is no where to be freaking found, go clean that up"... you go down to the root and it can't be cleaned and it's an endless cycle until you move the files that you changed somewhere safe, then you delete the local repository and check out again.... then paste the files you changed and then check them in no problem. A week later it happens all over again. 



Has this happened to you 2437823467234 times? Please join my support group. Or do I just have bad SVN Ju-Ju.



Have you used Git? Is it 100% better? I will switch, but no argument has been convincing enough. Though, with all the trouble I've run into it would make a lot of sense.  



Monday, June 29, 2009

How to Contribute to Open Source (When You're Not Exactly Scott Hanselman)


 

Some of you will remember my rant about open source, and how I couldn't find time to do it and didn't know how anyone could. That post caused a big backlash, lots of people wanted to know how I could say that without ever trying it. Many more shared their personal experiences getting involved in open source and loving it. They explained that it was something you MADE time for. So, to see if they were right I did make time. Let me just tell you, totally worth it.

 

Witty is a WPF project brought to you by some of the guys that do the Herding Code podcast. I initially reached out to Jon Galloway to see if I could get involved with their project. He explained that anyone that wanted to could get involved in Witty, and he linked me to this post by Scott Hanselman.

 

The post was very educational about the process for contributing, but I am no Scott Hanselman. There is a lot of green still left around these ears, and whether or not Scott Hanselman can do something is no indication if I can do it. I knew I would run into issues working on a new application in a new framework I hadn't seen yet (WPF). However, I tried it anyway and I was able to contribute a conversation viewing module to this past Witty release (2.2). I can't tell you how cool it is to think of the fact that so many people use this awesome project and I had a hand in it.

 

I thought that I would demonstrate to you guys how easy and rewarding it is to contribute to open source no matter what level you are at.

 

 

Ok, so the first step is figuring out what change you are going to make. I find that the best way to to do this is to actually use the application.

issue 

 

I actually got this idea for a feature through a tweet someone sent me about usernames not turning into links when they are prepended by a character. This became more noticable when the changes to replies were made and people were leading off

their tweets with a character so all their followers could see. So, I figured we could change this today.

 

Step one is getting the checking out the application through SVN. If you haven't done this before check out this tutorial.

 

Now, what you want to do next is up to you. Some people might want to take a look around first, see how the application is set up. I did that initially, it enabled me to get a handle on how things where done and where things are located.

 

Solution Explorer

 

I looked around at the file structure and kind of got a feel of where they stored things, there is a twitter library, and then the main application where the xaml is stored. Also, a skins project, common classes, and a test project.

 

Our first task today is to find where the usernames are being set as hyperlinks. My initial thought was that it was in the code behind for our xaml files. Or possibly directly in the xaml as a regex. I took a look around and didn't find anything. It was frustrating, but after I pursued that direction for a while I thought to do a Cntl + Shift + F search for the character @. So I did that and found this region in my seach results:

 

Regions

 

Jackpot! I found where they were setting the username as a hyperlink here in the OnTweetChanged method:

 

Original Method

 

As you can see they are treating each tweet as an array and then iterating through that array to check the words for @usernames and #hashtags. Initially, I was going to have this loop check for a word

either starting with, or having the second character be @, but then it occured to me that we only want to check that first word in the tweet, since this issue is only an issue in that first word. It's adding more checks to each word to throw the logic into the loop and there has to be a better way

to do it.

 

I figured a great way to do this would be if I could separate the initial character and the @username into two separate parts of the array. I knew you couldn't insert into a string array, but you can with an arraylist.

 

 First Change

 

 I turned the array into an Arraylist and then I can make the first character and @username two words in the array. Then the loop will treat the see the @username for what it is and make it a link.

 

I was all set to check this in when I realized how much of a performance hit making the array into an Array List would be. So, I've gotta come up with something else. I decided to remove the functionality to format the @username from inside to loop, make it a method and call it before entering the loop if it falls in our char+username if statement, then call it from inside the loop if it is an actual username within the tweet.

 

Format User Name

 

There we go and here are our final changes to the OnTweetTextChanged method:

 

Final Method

 

 

I tested again, and we're looking great.

 

 

test 

 

 

Step next: submitting our patch.

Patch

 

 

 

 

 

 

What you want to do is go to the svn folder where everything is contained right click as if you were committing your work however go to "Create Patch" instead. Select the files you changed and save the patch somewhere.

 

diff

 

SVN will show you a diff for your changes, go through and make sure you put everything in the patch.

 

Submit Patch

 

Now go to the Witty issues list, and submit your patch along with a comment about what it is doing and then submit!

 

That's it! We're golden. All together it took a little over an hour What have I gained here?

 

1. . I got to add a feature I wanted to an application that I use.

2.  After I submitted my first patch I got great feedback and critique from a developer I really look up to (Jon Galloway). You can have the same experience as long as the project you are working on is run by people you think are interesting.

3. I got to work with a new framework.

4. I feel like I've contributed something to the community, I walked around smugly for at least a few hours (j/k, but it's cool).

 

Anyway, I hope this encourages you to get started. I'm certainly glad I did.


Sunday, June 28, 2009

Take a Deep Breath



I just got back from an extremely relaxing weekend in different 'burbs than I own with some seriously amazing people. It occurs to me


that we don't do these things often enough (at least I don't). When you start up Skype, the splash screen when loading says "Take a Deep Breath"  


What an awesome feature! It always makes me smile, 



Speaking of Skype, this past week we did our first WAN party on Ventrilo which is a server dedicated to connecting people It is used 


often for gaming. Our connection was much better than usual, however, I fear making this switch will discourage people from coming 


to the parties because you DO have to download Ventrilo. Has anyone had a good experience with both hosting many people on a


Skype call and recording it? I have had many issues with Skype since we started, a great tool but for multiple people on a call it stinks. 


We have run into a lot of trouble during our calls and that is what makes me want to switch. Can you reccomend a different tool to do these calls? I really


enjoy them and when they work well they are great, but there MUST be a better way.



In other news Girl Developer the news was super fun and will now be a regular feature. 



Also, NJ Tech Drinks is coming up soon!!! If you are from the area it would be awesome if you could stop by, or if you


know anyone forward them the invite! I'm really looking forward to it. Link here. 



Monday, June 15, 2009

ASP.NET MVC Translated for the Web Forms Programmer (3 in a series)

Obviously I've been putting this off a little. I think the controller has been haunting me, it's very intimidating. I've become such a good friend to System.Web.UI.Page, it's hard to imagine my life without him. However, we all get older, grow apart. It's time for me (and you) to go head first into the next layer of MVC, we've started our project, set up our model. Now it's time for View -> Controller.


The thing about the controller is, it's a lot like normal code behind. The biggest adjustment? There is no page load. The View gets all its data from the Controller at runtime. There are a few key terms we need to learn. The first one is ActionResult. This is going to be a little confusing so strap in. The Action Result is what each method returns with relation to the View. Each method in the controller that returns data to a view is called an "Action Method"


To demo this we're going to do something super easy, we're going to do some simple math and post the result as a string on our page. Sounds easy? I think so too, don't forget, we're doing this for the first time together.


I must digress for a moment and move over to our global.asax. We're going to look at a method it's called RegisterRoutes and what it does is let our application know how to look at the Urls we're passing it. The way it's set up now, the first term being passed is the name of our controller, MVC now knows what to do with that, and the second term is the name of our Action Method, the third term will be any parameters, and so on. MVC has some serious RESTful goodness, so the RegisterRoutes method shows our application what to look at and where to go when it gets one of our pretty Urls. I left in the defaults, you can customise it for your application, take a look:


 

Routes


Also, before we get started, we need to cover something that's very important in MVC, and that's naming. In order to implement the intuitive functionality of MVC we need a few things to be the same. The name of our controller (plus the word "controller"), and the folder that contains our views related to it (as children of the "Views" folder). Mine is called CapsuleController.cs and My folder is called Capsule. Two more things that need to match are the name of your view, and the name of your action method that returns the view (though not always, it does make things more convenient). Capsule contains a view called Math and we have a an action method in our controller called Math. Take a look at our tree:



 

Tree

 


This is going to look weird the first time you're looking at it. Our action method is being passed no parameters, this is the action that automatically is called by the controller when our view (of the same name) is loaded. If you have named your view (or action) something different, you can just call View("ViewName") and pass the name of the view you want into your method. When this guy is called we get our page as is, with no data passed in.



 

 

So, say we want to populate a label on the load of this ViewPage?  We can pass data through to our page like so:

 Label Action

 

We can now display "Message" in our page by adding this to our View:

 

View

Our page ends up like this:

First Page

It displays our string as if it were an asp:textbox or an asp:label that we were binding it to. So this kind of makes sense. In order to load something at runtime or bind something to the page we reference it from the controller. How do we handle our events?.

MVC introduces us to a keyword "AcceptVerbs" that tells our action method what HTTP action to look for within our view. In the beta of MVC this was required to use HTTP commands, however, now MVC just searches for the applicable action when your view gets a command. We're going to enter a value, and have it save to our DB as a new Link for this project (a Link is one of our objects). So, we're going to do a POST, and we're going to grab a property of the link from our view that the user has entered in a text box (we will cover validation in the future, right now, though, we have a magical user that does no wrong).  

First we add a form to our method, we can pass the values entered into the form when we do our POST.  I am doing this here by overloading our Math method with a FormCollection. You can also use Model Binders which allow you to specify what objects go with which controls. These are a great alternative to the asp:Repeater and asp:GridView. We will go over them more in depth in the next installment. My action grabs all the data entered into our form through the passing of the FormCollection. In order for MVC to know what data is located where we identify it this way on our form, we are only setting one property of an object called Link, as well as creating a new Link:

Here is the way our Action looks (remember I'm using LINQ to SQL):

 view

And our View:

 Final View

When we are done our page looks like so, I enter my value and save:

 Page Second

 

That is it! That's all you have to do to CRUD it up in MVC.

However, what happens when you have more than one submit button or POST per page? I guess you're going to just have to tune in next time and find out.

 

 

 


Wednesday, June 3, 2009

So, You Want to Come to a WAN Party?

This week we had:


Tonight's WAN party attendees:


Sara Chipps(me)!


Tobin Titus


Lloyd Humphreys


Nick Berardi


Nathan Kelley


Kevin Griffin


James Thigpen


Dane O'Connor


Brian Papa


Teh Norm


James Pendarvis


 This weeks topics are: "Do you think technical interviews are beneficial?", "Are comments (and regions) a code smell?", "Google Wave and Bing Buzz"


Please excuse our audio troubles, and my chomping. This is the first time we are publishing. Thanks to everyone who took part. I am including the text chat below the link, so you can follow along if needed, but it should be fine without. The only things you might want to see is Nick Berardi's code snippet which we discuss.


Oh, and the comment I left yesterday:  'This is really ugly code, I will hopefully fix later


I don't know how this comes accross entertainment-wise, feel free to leave suggestions.


WAN PARTY DELICIOUSNESS



[6/3/2009 7:31:04 PM] *** Sara Chipps added Kevin Griffin, Nathan Kelley, Nick Berardi, Norm, Dane O'Connor, Tobin Titus ***

[6/3/2009 7:31:07 PM] *** Conference call, duration 1:34:50 ***

[6/3/2009 7:31:37 PM] Norm: Yeah solid echo

[6/3/2009 7:32:06 PM] *** Sara Chipps added James Thigpen ***

[6/3/2009 7:32:09 PM] Norm: yay trains!

[6/3/2009 7:32:29 PM] Nathan Kelley: Lloyd Humphreys said he's having trouble talking to you sara

[6/3/2009 7:32:40 PM] *** Sara Chipps added Lloyd Humphreys ***

[6/3/2009 7:32:49 PM] Dane O'Connor: omg

[6/3/2009 7:32:52 PM] Dane O'Connor: whats going on?

[6/3/2009 7:33:04 PM] Lloyd Humphreys: hey

[6/3/2009 7:33:16 PM] Nathan Kelley: i thought you got arrested for that kind of stuff

[6/3/2009 7:33:25 PM] Tobin Titus: me too

[6/3/2009 7:33:25 PM] *** Missed conference call. ***

[6/3/2009 7:33:51 PM] *** Call ended ***

[6/3/2009 7:34:30 PM] Dane O'Connor: sounds like we're in an empty staduim?

[6/3/2009 7:34:47 PM] *** Sara Chipps added James Pendarvis ***

[6/3/2009 7:35:11 PM] *** Sara Chipps added brian papa ***

[6/3/2009 7:35:21 PM] *** Tobin Titus has changed the conversation topic to "Technical interviews" ***

[6/3/2009 7:41:42 PM] Norm: sounds good

[6/3/2009 7:41:56 PM] Lloyd Humphreys: Now I can't hear Sara :P

[6/3/2009 7:42:30 PM] Dane O'Connor: lost ya

[6/3/2009 7:42:36 PM] Lloyd Humphreys: ditto

[6/3/2009 7:42:36 PM] Nathan Kelley: same

[6/3/2009 7:42:39 PM] Dane O'Connor: back

[6/3/2009 7:42:41 PM] Sara Chipps: I can hear?

[6/3/2009 7:48:34 PM] James Pendarvis: Lost Sara

[6/3/2009 7:48:35 PM] Lloyd Humphreys: gone

[6/3/2009 7:48:36 PM] Dane O'Connor: losing ya

[6/3/2009 7:48:41 PM] Norm: lol

[6/3/2009 7:48:46 PM] Lloyd Humphreys: back

[6/3/2009 7:55:48 PM] Dane O'Connor: as an aside. r u a consultant Nick?

[6/3/2009 7:56:00 PM] James Pendarvis: Who here is an employee and who is a consultant?

[6/3/2009 7:56:10 PM] Tobin Titus: I'm an employee now :)

[6/3/2009 7:56:13 PM] Sara Chipps: consulting now

[6/3/2009 7:56:18 PM] brian papa: I'm an employee but I dabbled in consulting

[6/3/2009 7:56:30 PM] James Thigpen: I'm at some nebulous halfway point between the two.  Employed but seeking consulting.

[6/3/2009 7:56:46 PM] Dane O'Connor: employee with consulting about 10-12 hrs a week

[6/3/2009 7:57:01 PM] Norm: More entrepreneur than employee as of now.

[6/3/2009 7:58:05 PM] Norm: So many life lessons in that one!

[6/3/2009 7:58:08 PM] Dane O'Connor: nathan breakin up

[6/3/2009 7:58:11 PM] Nathan Kelley: cue the beavis and butthed

[6/3/2009 7:58:15 PM] Tobin Titus: :)

[6/3/2009 7:59:03 PM] *** Tobin Titus has changed the conversation topic to "Commenting code smell" ***

[6/3/2009 7:59:25 PM] Nathan Kelley: /* no comment */

[6/3/2009 7:59:30 PM] Tobin Titus: lol

[6/3/2009 7:59:37 PM] Lloyd Humphreys: :D

[6/3/2009 8:03:22 PM] Norm: Personally would agree with Sarah if there are excessive or useless comments

[6/3/2009 8:04:16 PM] Tobin Titus: throw new NoEffinWayException()

[6/3/2009 8:04:30 PM] Dane O'Connor: breakin up

[6/3/2009 8:04:34 PM] Lloyd Humphreys: ditto

[6/3/2009 8:04:35 PM] Nathan Kelley: lag

[6/3/2009 8:04:36 PM] brian papa: static

[6/3/2009 8:04:41 PM] Dane O'Connor: NJ connection sux!

[6/3/2009 8:04:44 PM] Lloyd Humphreys: better

[6/3/2009 8:04:45 PM] Tobin Titus: breakin up is hard to do

[6/3/2009 8:04:51 PM] Tobin Titus: but sara keeps doing it

[6/3/2009 8:05:17 PM] Tobin Titus: lol

[6/3/2009 8:05:39 PM] Norm: lol

[6/3/2009 8:06:56 PM] Tobin Titus: as an aside, some code that I commented in 5 years ago just broke after running at a bank without a single error for 5 years... however, the fact that it broke exactly where my comment was... is almost proof for sara

[6/3/2009 8:07:07 PM] Sara Chipps: yesssss!

[6/3/2009 8:07:30 PM] Tobin Titus: I just tweeted about that earlier this week

[6/3/2009 8:08:16 PM] Dane O'Connor: quirks = +1 on comments

[6/3/2009 8:09:00 PM] Nick Berardi: Type targetType = typeof(NameValueCollection);


// get the property for setting readability

PropertyInfo isReadOnlyProperty = targetType.GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);


// set headers as read and write

isReadOnlyProperty.SetValue(context.Request.Headers, false, null);


ArrayList list = new ArrayList();

list.Add(value);


// get the method to fill in the headers

MethodInfo filleInHeadersCollectionMethod = targetType.GetMethod("BaseSet", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(string), typeof(object) }, null);

filleInHeadersCollectionMethod.Invoke(context.Request.Headers, new object[] { name, list });


// set headers as read only

isReadOnlyProperty.SetValue(context.Request.Headers, true, null);

[6/3/2009 8:09:17 PM] Sara Chipps: this is the last comment I wrote (in VB.NET)

[6/3/2009 8:09:18 PM] Sara Chipps:    'This is really ugly code, I will hopefully fix later

[6/3/2009 8:09:32 PM] Tobin Titus: lol

[6/3/2009 8:11:23 PM] Dane O'Connor: haha

[6/3/2009 8:11:24 PM] Dane O'Connor: yeah

[6/3/2009 8:11:42 PM] Norm: lol

[6/3/2009 8:12:40 PM] James Pendarvis: pastie.org right?

[6/3/2009 8:14:20 PM] Dane O'Connor: // Magic. Do not touch.

[6/3/2009 8:20:24 PM] Tobin Titus: back

[6/3/2009 8:20:47 PM] James Thigpen: Some bad smells are really tasty cheese.

[6/3/2009 8:21:12 PM] Tobin Titus: #region

/// <summary> code smell here </summary>

#endregion

[6/3/2009 8:21:18 PM] Dane O'Connor: haha

[6/3/2009 8:22:04 PM] Tobin Titus: I have to be honest. I used to be a HUGe abuser of regions

[6/3/2009 8:23:31 PM] Dane O'Connor: // --- Methods | My Group

[6/3/2009 8:23:39 PM] *** Tobin Titus has changed the conversation topic to "stinky code with regions, and comments as code smells" ***

[6/3/2009 8:23:45 PM] Dane O'Connor: // --- Impl | Idispoable

[6/3/2009 8:24:10 PM] Nick Berardi: even with the mis-spelling and everything :D

[6/3/2009 8:24:14 PM] Dane O'Connor: :)

[6/3/2009 8:24:16 PM] Dane O'Connor: too fast

[6/3/2009 8:24:36 PM] Tobin Titus: like HTTP_REFERER <-- spehlt rowng

[6/3/2009 8:24:53 PM] Nick Berardi: I usually do

[6/3/2009 8:25:05 PM] Nick Berardi: #region exec sp_MyProc

[6/3/2009 8:25:14 PM] Nick Berardi: all the command related connection stuff

[6/3/2009 8:25:17 PM] Nick Berardi: #endregion

[6/3/2009 8:25:24 PM] Sara Chipps: #region methods

[6/3/2009 8:25:30 PM] Tobin Titus: #region Pandora's Box - do not expand

#endregion

[6/3/2009 8:25:31 PM] Sara Chipps: #region code

[6/3/2009 8:25:38 PM] Nick Berardi: LOL nice tobin

[6/3/2009 8:27:07 PM] *** Tobin Titus has changed the conversation topic to "Magical Elixors Framework" ***

[6/3/2009 8:27:40 PM] Norm: Awesome!

[6/3/2009 8:28:13 PM] Tobin Titus: I'm waiting for some to hold the following at a code camp:  "MEF Lab"

[6/3/2009 8:28:42 PM] Tobin Titus: in the same mall?

[6/3/2009 8:29:17 PM] James Thigpen: it's an hour and 20 minutes

[6/3/2009 8:29:25 PM] Lloyd Humphreys: oh gWave seems pretty cool :D

[6/3/2009 8:29:41 PM] Lloyd Humphreys: I've been off school with pretty bad sunburn, so I've watched it ;)

[6/3/2009 8:29:49 PM] Tobin Titus: http://www.youtube.com/watch?v=v_UyVmITiYQ ?

[6/3/2009 8:29:53 PM] Lloyd Humphreys: it's pretty cool, yeah

[6/3/2009 8:30:27 PM] Lloyd Humphreys: there're some really cool concepts

[6/3/2009 8:30:44 PM] Lloyd Humphreys: like, you can take a "Wave" to your blog and embed it there etc

[6/3/2009 8:31:10 PM] James Thigpen: it'd look AWESOME

[6/3/2009 8:31:21 PM] Lloyd Humphreys: not a clue - nothing in the video about it

[6/3/2009 8:31:36 PM] Lloyd Humphreys: I imagine it'll be pretty solidly integrated with Android

[6/3/2009 8:31:50 PM] Tobin Titus: http://wave.google.com/

[6/3/2009 8:32:11 PM] Lloyd Humphreys: yeah

[6/3/2009 8:32:11 PM] Tobin Titus: http://wave.google.com/help/wave/about.html <-- screenshots

[6/3/2009 8:32:33 PM] Lloyd Humphreys: lost you

[6/3/2009 8:32:37 PM] Tobin Titus: lag

[6/3/2009 8:32:37 PM] Nathan Kelley: lag all

[6/3/2009 8:32:43 PM] Dane O'Connor: NJ ftl

[6/3/2009 8:32:44 PM] Dane O'Connor: !

[6/3/2009 8:32:46 PM] Tobin Titus: maybe the dingo ate your baby

[6/3/2009 8:34:28 PM] James Thigpen: Everytime I hear bing I think Chandler

[6/3/2009 8:34:31 PM] Tobin Titus: Cannibis lovers can search bong.bing.com

[6/3/2009 8:34:53 PM] Lloyd Humphreys: yup

[6/3/2009 8:36:27 PM] Lloyd Humphreys: for me, in ff3, that preview thing only works for one of the results and then doesn't work for any of the others?

[6/3/2009 8:36:33 PM] Sara Chipps: me too

[6/3/2009 8:36:34 PM] Lloyd Humphreys: lag

[6/3/2009 8:36:38 PM] Nick Berardi: is the travel feature from Kayak.com

[6/3/2009 8:36:55 PM] Tobin Titus: I'm in FF3 and it works fine

[6/3/2009 8:36:57 PM] Tobin Titus: yeah

[6/3/2009 8:37:00 PM] Tobin Titus: I think so

[6/3/2009 8:37:04 PM] Nathan Kelley: it's pretty accurate too, it says the red wings are 2 wins away from another cup

[6/3/2009 8:37:21 PM] Nathan Kelley: that didn't sound right

[6/3/2009 8:37:36 PM] Nathan Kelley: it said the wings won the 2009 stanly cup finals 4-1

[6/3/2009 8:38:13 PM] Lloyd Humphreys: yeah

[6/3/2009 8:38:29 PM] Tobin Titus: lol Nathan... shut your mouth son!

[6/3/2009 8:38:46 PM] Tobin Titus: There is no accuracy in that .. Pens will win again tomorrow!

[6/3/2009 8:38:55 PM] Lloyd Humphreys: I know Bing is great for newbs - if you look for NHL and it gives you related stuff like NHL tickets or something.. thing is, if I want the stuff in the related searches, I'll *search* for the related searches :P

[6/3/2009 8:39:09 PM] Sara Chipps: hahah, nice

[6/3/2009 8:39:43 PM] Tobin Titus: what about if we gave you a para quarters in stead?

[6/3/2009 8:39:50 PM] Nick Berardi: Tobin you have a really loud keyboard

[6/3/2009 8:40:00 PM] James Pendarvis: What are you using either service for?

[6/3/2009 8:41:11 PM] Sara Chipps: searching?

[6/3/2009 8:42:19 PM] Tobin Titus: http://twitpic.com/6jm02

[6/3/2009 8:43:08 PM] *** Tobin Titus has changed the conversation topic to "Twitter, Bing, Google, Searching, Symantic Web" ***

[6/3/2009 8:43:16 PM] *** Tobin Titus has changed the conversation topic to "Twitter, Bing, Google, Searching, Semantic Web" ***

[6/3/2009 8:43:18 PM] Lloyd Humphreys: give you free money

[6/3/2009 8:43:23 PM] Nick Berardi: PAY ME PER SEARCH

[6/3/2009 8:43:29 PM] Dane O'Connor: lol

[6/3/2009 8:43:31 PM] Sara Chipps: hahaha I love free money

[6/3/2009 8:43:31 PM] Dane O'Connor: omg

[6/3/2009 8:43:33 PM] Tobin Titus: Nick , they sorta tried that

[6/3/2009 8:43:35 PM] Norm: Has anyone used http://www.wolframalpha.com/ ?

[6/3/2009 8:43:37 PM] Lloyd Humphreys: yeah

[6/3/2009 8:44:09 PM] *** Tobin Titus has changed the conversation topic to "Paul Wolfowitz's new search engine" ***

[6/3/2009 8:44:59 PM] Norm: lol - right, it seems useful at some point but a bit unrefined

[6/3/2009 8:45:37 PM] Norm: true

[6/3/2009 8:46:23 PM] James Thigpen: I'm gonna make bing my default search engine in chrome for a few days, see what happens.

[6/3/2009 8:46:36 PM] Nathan Kelley: if people at work ask me search related questions i use http://lmgtfy.com/

[6/3/2009 8:47:36 PM] *** Tobin Titus has changed the conversation topic to "Talking to computer classes" ***

[6/3/2009 8:48:28 PM] Lloyd Humphreys: we have such boring computer classes here :(

[6/3/2009 8:49:25 PM] Lloyd Humphreys: thats wicked

[6/3/2009 8:50:13 PM] Norm: those are the best!!

[6/3/2009 8:50:15 PM] Lloyd Humphreys: :P

[6/3/2009 8:51:41 PM] *** Tobin Titus has changed the conversation topic to "Lego Mindstorm" ***

[6/3/2009 8:51:42 PM] Lloyd Humphreys: I was always more of a Meccano man

[6/3/2009 8:51:58 PM] brian papa: http://www.makerbot.com/

[6/3/2009 8:52:09 PM] Lloyd Humphreys: anybody played with Arduino?

[6/3/2009 8:52:55 PM] Nathan Kelley: http://www.nathanblevins.com/

[6/3/2009 8:53:01 PM] Tobin Titus: http://msdn.microsoft.com/en-us/robotics/default.aspx

[6/3/2009 8:53:41 PM] Lloyd Humphreys: just been playing with WAlpha - try Searching your DOB

[6/3/2009 8:55:22 PM] Lloyd Humphreys: sweet, I'm 815 weeks old :D

[6/3/2009 8:55:50 PM] James Pendarvis: Great..my B-day was the date of the Charles Manson Murders

[6/3/2009 8:55:53 PM] Lloyd Humphreys: I <3 Greys Anatomy :P

[6/3/2009 8:55:58 PM] Nick Berardi: so you want to cut off the recording, since this has degraded in to geeks searching wolfram alpha

[6/3/2009 8:56:08 PM] Lloyd Humphreys: haha

[6/3/2009 8:56:36 PM] Tobin Titus: http://wolframsbeta.com/

[6/3/2009 8:57:16 PM] Norm: or replay the awesome echo laughs

[6/3/2009 8:57:17 PM] Lloyd Humphreys: thats great

[6/3/2009 8:57:34 PM] Lloyd Humphreys: wtf is twiffleball?

[6/3/2009 8:57:59 PM] Lloyd Humphreys: wtf is wiffleball? :P

[6/3/2009 8:58:26 PM] Lloyd Humphreys: yeah

[6/3/2009 8:58:36 PM] Lloyd Humphreys: (y)

[6/3/2009 8:58:45 PM] Lloyd Humphreys: gotcha

[6/3/2009 8:59:09 PM] Lloyd Humphreys: if anybody feels like buying me a plane ticket I'll come on over :P

[6/3/2009 8:59:28 PM] Tobin Titus: "I did it like this. I did it like that. I did it with a wiffleball bat." ... see that just makes no sense.

[6/3/2009 8:59:58 PM] Tobin Titus: http://www.fmcarenas.com/img/wiffleball.jpg

[6/3/2009 9:01:11 PM] Nick Berardi: its all about hte networking

[6/3/2009 9:01:47 PM] Lloyd Humphreys: www.managingthegray.com is great for social media stuff - you'd be surprised

[6/3/2009 9:02:07 PM] Dane O'Connor: tobin!

[6/3/2009 9:02:14 PM] Nick Berardi: what is going on over there

[6/3/2009 9:02:54 PM] Nick Berardi: it's not April 1st anymore Sara

[6/3/2009 9:02:59 PM] Nick Berardi: you don't have to beleive everything

[6/3/2009 9:03:44 PM] brian papa: i'm gonna head out guys, had fun

[6/3/2009 9:03:50 PM] Lloyd Humphreys: bye

[6/3/2009 9:03:51 PM] Tobin Titus: see ya

[6/3/2009 9:03:51 PM] Dane O'Connor: cya bri

[6/3/2009 9:05:05 PM] Nathan Kelley: http://netcave.org/

[6/3/2009 9:05:16 PM] James Thigpen: thanks everyone

[6/3/2009 9:05:19 PM] Lloyd Humphreys: catch you soon :)

[6/3/2009 9:05:30 PM] Nathan Kelley: http://netcave.org/ct.ashx?id=8335804e-124b-4825-9292-2851bcba38bb&url=http%3a%2f%2fvimeo.com%2f3898804

[6/3/2009 9:05:57 PM] Norm: Yup same. Been great!

[6/3/2009 9:05:59 PM] Lloyd Humphreys: bye!

[6/3/2009 9:06:01 PM] *** Call ended ***

[6/3/2009 9:06:25 PM] *** Tobin Titus has left ***