Showing posts with label General. Show all posts
Showing posts with label General. Show all posts

Saturday, December 31, 2016

2016 Year in Review

It's been an interesting year. I've traveled quite a bit, met a lot of great people, made some friends, and learned some new things.

Note: This article is primarily for myself. It's for me to review my year and see what kind of progress I've made compared to previous years. I recommend that you do the same. Compare yourself to yourself last year. Do not compare yourself to me.

Travels
I did quite a bit more traveling this year compared to last year. I was away from home for 95 days (and my cats weren't too happy about me being away that much). But I got to see a lot of new places:

2016 US Travels
2016 European Travels

Fortunately(?) Google has been tracking me all year, so it was pretty easy to get these maps.

I was on lots of airplanes this year (okay, so it was 41 airplanes). A side-effect of that is that I got Silver status on United in April and then Gold status in October. I've also got to know the Denver and Houston airports pretty well.

And even though there are dots on the map for Stockholm and Copenhagen, those were just airport changes (although I did get to learn what a French hot dog was while I was in Copenhagen).

Speaking
I had a really great time speaking this year. I spoke at 35 events - a mix of user groups, corporate events, code camps, regional events, and professional events.

User groups are great because it gives us lots of time with a topic. It's also a bit less formal, so we can dig into questions and have a good conversation. I spoke at 16 user groups, mostly .NET-related since that's where most of my technical talks live. But I also spoke at a couple agile-related groups as well.

I managed to make it to 3 code camps this year. Code Camps are great because they give developers a great chance to get tons of free information all in one place. It's also a great place for developers to get started as speakers. Unfortunately, I didn't get to either of the So Cal Code Camps this year; I had conflicting events. I'm going to try to make it to them in 2017.

My biggest change this year was speaking at regional events. These are great opportunities for developers to get some great information for a lot cheaper than a professional conference. I spoke at 7 regional events (up from 2 last year).

One really cool thing is that I was asked to keynote at AIM/hdc. I had a really great time doing this.

I had the chance to speak at 4 professional events (including 2 outside the US). This was great particularly since I spoke at my first professional conference late last year.

Workshops
I got to expand into something new this year: full-day workshops. This gave me a chance to get into a bit more detail and also engage with folks a lot more. I did 4 workshops, and each was a bit different. The groups ranged in size from 4 to 35. Some people worked together, some were complete strangers. And I got to work with developers with different levels of experience.

I'd like to expand to do more workshops. And I've learned quite a bit from my experience this year. One challenge is that some venues want a majority of lecture and some venues want a majority of labs. I'll have to plan for a lot of flexibility so that I can get the right mix for a particular group.

Note: if you're trying to get the numbers to add up, it doesn't quite match up. That's because there's a bit of overlap for some of the events/workshops. If you're curious, you can check the list of all of the events on my website.

Recognition
I've been meeting more and more people at events who know me through Pluralsight or podcasts or my blog. A big reason why I've been speaking so much (other than I really love to do it) is to help build my brand and get more recognizable.

Here's the best comment that I've received this year (from someone at Music City Code):

"You are a lot taller than you seem on Pluralsight."

Get Your Request In
If you'd like me to come to speak at a particular event, send me a request. There are too many good events to make it to all of them (and I think I traveled just a little too much this year), so I'll have to make some tough choices. If someone puts in a request, it will go to the top of the list.

Consulting
I did a bit less consulting work this year than I did in 2015. I haven't been pushing this much, but it's something that I really love to do.
I don't want to write your code;
I want to make it so your developers can write your code.
I really enjoy helping people in this area. Many times, I'm working with a small team of 2 or 3 developers who don't have an expert in their group. The problem in that scenario is that you don't know what you don't know.

I've had a chance to help out these teams by doing a code review and looking at the pain points that they have. Based on that, I can give guidance on technology and techniques that can help them improve their situation. And if they aren't familiar with those techniques, it gives me a chance to do some teaching.

And that's what I really love to do: make developers better.

I'll be looking to expand this work in 2017.

Streams & Podcasts
I've had several people ask to be part of their streams and podcasts this year. Dave Rael invited me to come back onto the Developer On Fire podcast, Scott Nimrod invited me to have a conversation about programming where we talked about all sorts of stuff, and Steve Bishop invited me to show some of my experience (and problems) with TDD.

I really enjoyed these opportunities because I get to be part of conversation where we can bounce ideas off of each other.

Becoming a Social Developer
There have been some great opportunites for me to share "Becoming a Social Developer" this year. At NDC Oslo, they gave me a full hour to talk about it. It went much better than expected, and I was happy to see the positive response.

"Becoming a Social Developer" at NDC Oslo
I also got the chance to share a bit at Code PaLOUsa in Louisville, KY. A big thanks to them for giving me 10 minutes to share.

Also, a big thanks to David Neal (@reverentgeek) for giving me some time during his keynote at Music City Code in Nashville, TN. That was another great opportunity for me to share (and get some great pictures from the event photographer).

"Becoming a Social Developer" at Music City Code

As already mentioned, Dave Rael invited me back to Developer on Fire to specifically talk about "Becoming a Social Developer". And at AIM/hdc, they requested that I include the topic as part of my keynote presentation.

I'm still amazed at the reaction to "Becoming a Social Developer". It really resonates with quite a few people. I have some opportunities coming up in 2017 to share (including SDD 2017), and I'll be looking for others as well.

Friends
One really great thing about all the travel this year was that I got to meet a lot of great people. In addition, most of the regional events that I spoke at were in the same part of the country. This meant that I got to spend time with the speakers who were making the circuit. At each event, it seems like I got to know one or two people really well. You can read a bit more about it in an article I wrote earlier this year.

I didn't realize how large my circle of friends had grown until I went to the Microsoft MVP Summit in November. I felt like I knew twice as many people as I did the previous year, and this was just from people I had talked to at various events. I spread myself a bit thin at the summit since I wanted to spend at least a little bit of time with everyone that I knew.


And this was just from folks who were at the Microsoft MVP Summit. A lot of the friends I've made were not there. It really made me think about just how big my circle has expanded this year. It's an interesting experience for someone who is not typically a social person.

Videos & Blog
Because of all the traveling, I haven't spent as much time with videos and blogging. (I'm really amazed at how exhausting traveling can be.)

My YouTube channel has been a bit dormant. I published 4 videos this year (compared to 10 last year).

My blog has been a bit down as well. I published 74 articles, including this one (compared to 86 last year). I did have some good series on Euler problems, learning F#, unit testing, and asynchronous programming. In addition, I found myself writing quite a bit about how to help other developers and what we can do to improve the culture of our industry.

Learning
I've learned quite a bit this year. Most of what I've been experimenting with has turned into blog articles, so the list looks pretty similar to what I wrote above: learning F# (using Euler problems), unit testing and TDD, asynchronous programming, and more.

This coming year, I'd like to expand more into machine learning, and I feel like I need to look at containers (like Docker). To go along with the machine learning, both Azure Functions and AWS Lambda look really interesting.

I haven't looked at .NET Core much at this point, primarily because I don't usually do much with pre-release technology. Once it releases (along with the tooling coming with Visual Studio 2017), I'll be looking at it a bit closer.

A great side effect of speaking at so many events is that I'm also attending those events. This has given me a chance to hear great speakers talk about a variety of different technologies. I don't know how many of them will become part of my regular development, but it's important to know what they are good for. Then I can take a closer look when the right problem comes up.

Being Human
A lot of the conversations that I've had with other developers this year have not been about technology. They have been about being human. This is something that is really easy to ignore or suppress in our industry, but it is a very important area. We learn about ourselves, we learn about the people we work with, we learn about the people that we build software for.

I'll be exploring this topic a lot further in the coming year.

Coming in 2017
I'm not quite sure what's coming for me in 2017. I don't have a list of goals for the year. There are times that I feel like I'm living life a bit by accident. But I've also found that the things that I run towards usually don't work out, and that better opportunities come up that I haven't planned. (And for those of you who are curious about my high risk decision, I'll be giving an update in the next couple weeks.)

With that said, I'm heading in a general direction. I don't know exactly which path my journey will take, but I know that it will be an interesting one.

Remember, in the coming year, don't compare yourself to those around you. We all take different paths, and those comparisons are not valid. Compare yourself to yourself in the past. And use that to improve yourself going forward.

Happy Coding!

Monday, October 17, 2016

2016 Microsoft MVP Award

I was honored to be awarded with a Microsoft MVP (Most Valuable Professional) for the 5th time. This is in recognition of my contributions to the developer community including my speaking, blogging, and videos.

This is a great opportunity for me because it opens up access to some of the inside information in the Microsoft world -- including the ability to give feedback and influence future releases of Visual Studio, C#, and other products.

In addition, I get to spend time with the other folks who have been awarded the Microsoft MVP. I've developed a ton of friends in this area. Next month is the annual summit where I get to spend time with lots of these folks (many of whom I haven't seen for a year).

I'm also excited to see some of my speaker friends get awarded for the first time this year including Spencer Schneidenbach (@schneidenbach) and Matthew Renze (@MatthewRenze) - and I know that there are others that I'll be happy to see at the summit.

If you'd like some more information, you can check out my Microsoft MVP profile page.

Happy Coding!

Monday, September 5, 2016

Help Those Behind You

The past few days have been pretty rough for me. I managed to get focused on the wrong things, and that had a pretty bad effect on me. I felt useless. I *know* I'm not useless, but that's different from feeling useless.

In my case, that means I need to reset my focus:
Help Those Behind You
Learn from Those Ahead of You
We are all in different places on our journey. And when we look at other people, sometimes we're on the same path, sometimes we're on different paths, and sometimes our paths cross.

Wrong Focus
Where I got into trouble was focusing on people who are ahead of me (and on some people who are on different paths). Specifically for me, this might mean a person who was selected to speak at a conference I was rejected from. It may mean a person who is teaching topics that are deeper and more interesting than what I teach. It may mean a person who is more productive at producing video content.

There will always be someone better than you at anything you can come up with. We want to look to those people because we can learn from them. But it's very easy to get focused on not being as good as someone else. When we get into that mindset, it can make us feel useless.

Right Focus
I find that I'm at my best when I'm helping someone else be better. In my world, that often means taking a previously obscure topic and making it clear and approachable.

And I can do this for everyone who is behind me on the path. I've had trouble learning certain topics. I've made mistakes and had failures. I've had some great successes.

I think about how I can guide the people behind me:
"Hey, watch out for that pothole."
"Take this detour; it's a bit longer, but you'll get there faster and easier."
"Slow down a bit here; there's a speed bump." 
When I do this, I know that I'm not useless.

Hang on to Positive Feedback
One thing that I do to keep myself on track is to review the ways that I've been helpful to people. That means digging through feedback from my presentations and comments on my videos & website.

When I have something like this:
Thank you so much; DI has been one of my weaknesses for years, but you've finally made it clear. It makes sense AND looks elegant to boot. Your presentation was clear, concise, and a simple explanation of confusing (at least to me) topic. Thank again!  
or this:
Thanks, Jeremy. Your tutorials really made me understand delegates properly, I now feel like I can identify when the proper time to use them is. I'll continue to check out your videos!
Then I know that I've helped someone along the path.

And now I don't only know I'm not useless, I feel like I'm not useless.

Continuous Learning
This doesn't mean that we stand still to help others. I know that I need to keep moving forward as well. I can learn a lot from the people who are ahead of me, and I try to do that as much as I can. (And I often don't do that as much as I should.)

In addition to learning from those ahead of us, we should also keep track of the not-so-positive feedback as well. I've used this to slowly improve over the years. A very specific thing I remember is someone who asked me to repeat questions from the audience when I was giving a talk -- it's usually difficult for other people to hear the question. (And thanks to Andrew, an attendee at one of my code camp sessions, for being the first one to point this out to me.) It took me a really long time for that to become a habit. But it is a habit now, and it's been a very good habit to have. (And I usually share that with other speakers when I notice that they don't do it.)

Sometimes you get feedback that is not positive and not helpful. It can hurt when this happens. We like to please everyone. But it's also impossible to please everyone. So don't focus too much on the negatives.

Instead, look for places to improve.

You Don't Have to be an Expert
But I've also found that it doesn't matter how far along the path you are, you can still be helpful.

As a recent example, I did a dive into learning F# by going through some of the Euler problems. I am not very far along the path of using F#. And I was using the Euler problems to better understand things myself. I wasn't sure if the articles that I wrote were useful to other people. Most of the feedback that I got was from the people ahead of me who sent in some good advice to help me move forward.

But when I was at Music City Code a few weeks back, I talked to 2 people who told me that they were following those articles and that it was helpful to them. That was encouraging for me considering that I knew there was a lot of information on F# out there, a lot of information on Euler problems, and all of it from people who were way more experienced than I was.

I encourage other people to try speaking at least once. A lot of people think that they don't have anything that's worth sharing (I know that I spent a good chunk of time thinking that). But it turns out that if you know 10% more than someone else, you are the expert in the room. It doesn't matter that there are people who know way more than you do. If you know just a little bit more than the people you're talking to, you can be helpful.

I usually tell people to think of that one moment in their career where they said, "I wish someone had told me about this earlier." This usually comes after struggling through a tough problem, or learning about something in the standard library you didn't know was there. If you've had that experience, then other people have had it too. You have something to share to help people avoid that same problem.

You don't have to be an expert.

You know more than someone else; you can help that person.

Moving Forward
So after spending a few days focusing on how far behind I am, I'm going to start focusing on how far ahead I am. I've never considered myself an expert in anything; that's because I know that there are lots of people who know lots more than I do. But there are a lot of people who are behind me on the path. And I can help them.

Reach out and help someone behind you.

Happy Coding!


Monday, July 11, 2016

Some Thoughts on Mob Programming

This past weekend, I had a chance to attend a Mob Programming Workshop with Woody Zuill (@WoodyZuill).



Mob Programming - The Really Short Version
Mob Programming is Pair Programming with more people -- usually between 4 and 8. Just like with pair programming (when done right), the person at the keyboard is typing code based on the direction of someone else. The main idea for this is that the code always goes through at least 2 people's brains before it gets committed.

A mob group consists of programmers, testers, QA, and (as often as possible) a product owner. Meetings are eliminated as everyone is working together and knows the state of the work. When everyone is together, many "blocks" are eliminated (such as "we need more input from the business area before we move forward" or "we need QA to explain the problem they found a bit better").

Advantages
People generally balk at the idea of so many people working on one thing. (Just like some managers don't like the idea of pair programming because 2 developers could be writing twice as much code separately.)

But I don't see it that way. Programming is a creative process; there is a lot of thought and problem solving involved. So having more minds working on the problem could be much better. In addition, mistakes are caught earlier (since there's more than one person looking at it), and misunderstandings or incomplete information that would normally "block" the process get cleared up much more quickly.

Also, there are no need for code reviews (which no one does anyway) because the code is constantly being reviewed.

Another advantage is that everyone is constantly learning from each other, from simple things like keyboard shortcuts to more advanced language features.

Here's an interesting video that shows a typical day of mobbing that was recorded back in 2012: A day of Mob Programming

This is Not Proscriptive
The main thing that I appreciate about the mob programming movement is how Woody presents the idea. Woody tells about how mobbing developed organically in their environment, and it became very successful for their team. (In fact, the company (Hunter Industries) now has 6 teams working the same way.)

So Woody describes something that they were successful with, but he does not say that all teams should work this way. It is something to explore.

The Workshop
I've known Woody for several years, and I've heard him talk about mob programming at meetups and things like that. I've also known many of the developers at Hunter Industries for several years, and I've been invited down to mob with them for a day. Unfortunately, I haven't had a chance to make to down there (it's about 70 miles from where I live and other priorities get in the way). So when I saw the workshop opportunity come up, and it fit into my schedule, I had to jump on it.

I won't go into the details of the workshop or the exercises other than to say that it was designed to show a different way of approaching collaboration and the difficulties and advantages of that. Much of the day was spent split up into mobs (there were 5 people in my group), and it was a good experience to go through.

Specific Teams
I will say that the experience reinforced my view that mob programming is highly dependent on the make up of the teams. There are a couple types of developers who would be toxic to the environment and bring down the productivity. (These are typically the type of people we don't want to work with anyway, but that's a conversation for another day.)

I can also think of people who may or may not thrive in this environment. (I think I might fall into that category; more on that in a bit.)

Successes
The idea of mob programming has spread, and there are teams around the world who are using it successfully. My primary experience is talking to the folks that I know from Hunter Industries in Southern California.

As I mentioned, the idea of mob programming grew organically on one of the programming teams. As they developed the idea and were able to successfully deliver software and be very productive during the process, they decided to expand.

Late last year, they set up a new space to handle more mobs. They currently have 6 mobbing stations set up. You can see what they look like in the picture above: 2 80" monitors (a couple stations have 3 monitors), 2 keyboards/mice (which are hooked up to a single computer), whiteboards, and lots of chairs.

Everyone I know at Hunter really likes the environment and they enjoy working there. (And they are hiring if you're interested: Career Opportunities.)

Is Mob Programming for Me?
I'm still not sure if mob programming is an environment that I would thrive in. I've always like collaboration and working with other developers. But these have all been in relatively short chunks. I'm sure that I would be fine for a few hours at a time, or even a few full days at a time. But as an introvert, I don't know if that level of interaction is sustainable for me.

Aaron Griffith (@Aaron_Griffith), who works at Hunter, has written several articles about the challenges of being an introvert in that environment. He really loves working with the mob, but he does find it somewhat draining and has come up with ways for managing that. Here's one of the articles that is worth a read: Mob Programming for the Introverted.

I'm not sure that I could thrive in that environment. I think that if I have a job where I constantly have to think about managing my energy, then I'm probably not in the right job for me. I would much rather be in a position where my job is energizing. The things that I'm doing regularly are extremely draining (and also extremely rewarding), but they are only a few days at time, so it is very manageable for me.

More Exploration
These are just my thoughts based on the experiences that I've had. I'm planning on doing some more exploration. For example, I would like to more closely observe of a mob programming group to see what the levels of interaction, noise, and collaboration are like in a real environment. I'd also be curious to try mobbing over a several day period to see how it would affect my energy.

Mob programming is an intriguing idea. And I can see how the benefits of constant collaboration would result in faster delivery, fewer bugs, and happier clients.

If it's not for me (or for you), that's fine. And I really appreciate that Woody presents it that way.

Are You Intrigued?
If you're interested in exploring this for yourself, you're in luck. Woody is doing workshops around the world on a regular basis. If you're in Southern California (like I am), then you have a chance to attend a FREE workshop at Hunter Industries on August 20th, 2016:
Mob Programming Workshop, Aug 20, 2016 - San Marcos, CA
Space is limited, so sign up soon.

It's always useful to explore different approaches to software development. That's how we find out what's most effective for us -- especially those things we never would have thought of on our own.

Happy Coding!

Thursday, December 31, 2015

2015 Year in Review

It's time to see how things went this year. That's how we make sure the next year is even better. I feel like I was really busy this year, and I also feel like I didn't accomplish all that much. So let's take a look.

Speaking
Of course, speaking is at the top of my list. This is something I love to do. It makes me feel really good to watch people learn and to hear about how I was able to give someone new ideas or help them over a technical hurdle.

And I was busy. I spoke at 28 events and did 47 presentations. I did a bit more traveling further from home this year, which means I was on 21 airplanes. (I know that's not a lot to some people, but it was to me.) New states on my speaking list include Florida, Nebraska, Colorado, Michigan, and Wisconsin. You can see a full list of my activities here: JeremyBytes - Demos.

Needless to say, I really enjoyed the events that I went to this year. I met a ton of great people. And speaking of meeting new people...

Becoming a Social Developer
I've had a great adventure breaking out of my shyness at developer events to talk to new people. This year, I formalized things a bit with a website and newsletter: http://www.becomingasocialdeveloper.com/



I've had a chance to share this on the .NET Rocks podcast as well as at the LIVE! 360 conference in Orlando.

As more and more of us talk to each other, we learn from each other's experiences, we get perspectives other than our own, and we become stronger as a developer community.

Milestones
I hit 2 really big milestones this year (and a few smaller ones).

.NET Rocks!
The first was being a guest on the .NET Rocks! podcast. This is a podcast that I listened to when I was a corporate developer. And 6 years ago, this podcast inspired me to go out and speak publicly for the first time.

I always had a "dream" that someday I would be a guest on the show. It wasn't very a very serious dream when I first had it (back when I was a not-at-all-notable developer). But as my circle grew bigger and bigger, I started to interact more with people who had been guests on the show. And I had a few chances to interact with the hosts (Carl and Richard) as well.

So, when I was hanging out with some folks in Detroit earlier this year, and Carl said to me, "We'd love to have you on the show sometime," I was totally excited. Fortunately, I had a topic to pitch, and we recorded a couple weeks later.

I had a lot of fun on the show, and it was great to share something that I'm passionate about with a huge audience. And I'm honored and proud to be among the list of people who have been on the show.

LIVE! 360
The other big milestone for me this year was speaking at the LIVE! 360 conference. This was my first chance to speak at a professional conference, and it was a great experience. LIVE! 360 is a co-located conference with one of the conferences being Visual Studio LIVE!

Visual Studio LIVE! was one of the conferences that I attended several times back when I was a corporate developer. It was one of the conferences I really liked attending because the quality of the speakers was good and the topics were relevant to what I was doing.

So it was quite an experience to speak at this event in particular. Some of the people I used to go see speak years ago are now people I'm speaking at the same event with. My world has changed quite a bit.

If you want to read a bit more, I put down some thoughts and reactions in the previous article.

Corporate Events
Another smaller milestone is that I spoke at several corporate events. It's really great when someone invites you to come and speak... and they want to give you money to do it.

The majority of my speaking has been at community events (i.e. free). I've spoken at a few regional events that have covered hotel or partial travel (and INETA was also great at helping defer some travel expenses). But ultimately when I speak, I end up at a financial loss. (That goes to show how much I love doing it.)

So it was really great to have a couple of events that covered my expenses plus additional funds. I think the biggest thing for me is that it validates that what I'm doing has value.

Guest Appearances
This year I made several guest appearances on various programs. This included a screencast with Dustin Davis on //c0deporn where we had a good conversation about lambda expressions and delegates. Dustin is someone I know from the So Cal developer community, and I'm glad I had a chance to be on his channel.

I also had a chat with Dave Rael on the Developer on Fire podcast. I had a chance to share a bit about my history, some of my successes and failures, and a bit about what I love to do. I met Dave earlier this year at Denver Dev Day, and it was great to talk to him.

I already mentioned that I was on the .NET Rocks! podcast. I think I've already said how excited I was about that.

Finally, this fall I had a chance to be on Coding 101 on the TWiT network. This was a panel discussion with several Microsoft MVPs. It was an unexpected opportunity that came up at the Microsoft MVP Summit from my friend Sarah Dutkiewicz (@sadukie). I met Sarah at the Microsoft MVP Summit last year, and it's been great to interact with her online and at events. I'll look forward to seeing her again at CodeMash next week.

Blog and YouTube
I haven't been blogging as much as I think I should. I did publish 86 articles this year (including this one). And several of my technical articles have been pretty popular (for me, pretty popular is over 1,000 views -- everything is relative).

The traffic has been increasing, and I'm now getting 16,000 hits per month compared to 8,000 last year. It's really great to see that so many people are reading my articles, and I hope that most of them find them useful.

I also would have liked to publish more videos on my YouTube channel. I did publish 10 videos this year, including a series on Lambdas & LINQ and a series on Task and Await. My viewership on YouTube has been increasing as well. I picked up 1,000 new subscribers this year (for a total of 1,500), and I've had 55,000 views of my videos this year.

Banjo!
Of course, no review of the year would be complete without mentioning my banjo. Back in January, I got a banjo from Amazon. I've been slowly learning to play it. I really should practice more than I do, but I have improved quite a bit. I use the banjo when I'm speaking locally to show people that it's okay to not be perfect at something. We are all new to things at some point (and in our industry, we're new to lots of things a lot of times). It takes practice to get good at something, and we shouldn't be embarrassed if it takes us some time.

To see my progress, take a look at You Aren't Instantly Awesome, and That's Okay and the follow-up article: You Aren't Instantly Awesome, but You Can Get Better With Practice.

And I'll just leave this here:



What's Next
So, 2015 was a productive year. I went to a lot of places and talked to a lot of people. I got to share my experience with new audiences. And I hit a couple of big milestones. There is always room for improvement, and I've got some things on my list to work on for the coming year, including more articles, more videos, and more learning.

2016 is going to start out pretty exciting. Next week I'm headed to CodeMash in Ohio. I'm really looking forward to seeing some people I haven't seen for a while and meeting tons of new people. And the following week, I'm headed to NDC in London. That will be my first international speaking engagement and yet another professional conference under my belt.

Happy Coding!
And Have a Wonderful 2016!

P.S.
Sue!


Wednesday, October 7, 2015

Microsoft MVP Award 2015

I was honored with the Microsoft MVP award again this year. As you can see from the picture, this is the 4th time I've been awarded.

The Microsoft MVP award is a way that Microsoft recognizes people who contribute to the community -- whether through answering forum questions, speaking at developer events, writing technical blogs, producing videos, running events, contributing to open source projects, or many other ways.

My passion is making developers better. One of my primary outlets for that is speaking. So far this year, I've given 44 presentations at 27 events. If you haven't figured it out yet, I enjoy this quite a bit.

In addition, I've produced 10 videos for my YouTube channel on Clean Code, Lambda Expressions & LINQ, and Task & Await. I've been sharing lots of stuff on my blog as well -- 73 articles so far this year, and hopefully mostly useful content. And I've got some more cool things planned before the end of the year.

I'm doing what I'm doing because I love to do it. It's a great bonus to get recognized by Microsoft for my contributions. This also gives me the chance to associate closely with other Microsoft MVPs -- a great community of smart and friendly people who share their expertise with other people.

Share what you know with other developers. This is how we all learn, and how we grow stronger as a community.

Happy Coding!

Wednesday, September 2, 2015

Jeremy on .NET Rocks! (for real this time)

A couple weeks ago, I had a great conversation with Carl Franklin and Richard Campbell. I'm really excited to see that it's now published as .NET Rocks! # 1187: Becoming a Social Developer with Jeremy Clark.

Back in 2010, I announced that I was on .NET Rocks! (sort of). This is when Richard read my email on the show. My email was about how an episode of the show had inspired me to speak at a developer community event for the first time. And then last year, I was on .NET Rocks! (at least for a little bit). This was for Show 1000, and I got to tell that same story in about 5 minutes.

This time, I'm on for the full show. Be sure to check it out:


Becoming a Social Developer
The topic is how to become a social developer -- someone who meets new people and talks to other folks at developers events, whether a local user group or a large conference. This is a challenge, particularly since developers are often introverts (the nature of the business attracts us). But we can get over our fear and make some great connections.

I first put down my thoughts about this last December: Becoming a Social Developer: A Guide for Introverts. Rather than repeating the same points, I'll just recommend that you read that article.

Five years in to my experiment, I made some observations at a conference that I attended recently: On Being a Social Developer: Observations from That Conference. I talk about some of these experiences on the show, but this article gives some more details (including pictures).

[Update 09/2015: Be sure to visit the official website: Becoming a Social Developer]

Thank You!
I really appreciate the chance to share this topic. It's one of those things that was hard for me to learn, but I've found it extremely valuable to my career. (This is my experience with the technical topics that I share as well.)

Based on Carl's question during the show, I decided to pitch this as a topic for Code Mash. This would be a great "day one" talk at any conference to encourage attendees to make the most of their opportunities to spend time with other developers. And I'm sure that I'll be talking about it at developer events in the future.

Some of My Friends
On the show, I mention several of my friends. I want to give a few more details about them:

Filip Ekberg (blog, twitter, Pluralsight)
I first met Filip at the Microsoft MVP summit. We were both first-time MVPs, and we spent quite a bit of the week together. He was living in Sweden at the time, and he's since moved to Australia. He was also nice enough to help me out on my Pluralsight course about localization and globalization.

John Strobel (twitter)
I met John at That Conference just a few weeks ago. We ended up talking quite a bit that week, and I'm sure that we'll have lots of great conversations in the future. Read a little more on my observations at That Conference.

Matt Johnson (blogtwitter, Pluralsight)
I met Matt at the Desert Code Camp when he was living in Phoenix, AZ. We've had some great conversations over the years. He's since moved to Washington to work for Microsoft. Matt is Mr. DateTime, and he's helped me out with some of my own code. Be sure to check out his Pluralsight course and also his talk with Scott Hanselman on Hanselminutes #485. He knows what he's talking about on the subject.

Deborah Kurata (blogtwitter, Pluralsight)
I met Deborah at the Silicon Valley Code Camp a few years back. She is an author and speaker, and she runs a user group in Berkeley, CA. We've talked quite a bit because we know each other through several channels, including the Microsoft MVP program and through Pluralsight.

Since several of us are Pluralsight authors, it's really easy to think that we met through Pluralsight. But that's not the case. Filip's first course published a couple weeks before mine. In fact, when we met at the Microsoft MVP summit, neither of us were Pluralsight authors. We talked to Dustin Davis (Pluralsight, video channel) about his experience with Pluralsight, and that encouraged us to give it a go.

I was one of the folks who encouraged Matt to go forward with his Pluralsight audition, and I was very happy to hear when his first course published. And Deborah's first course published about a month after my first one. So I knew these folks before we all became authors. (BTW, I think that means that John needs to become a Pluralsight author, too.)

Wrap Up
Enjoy the show. And I hope that it encourages you to break out of your comfort zone and talk to someone new. It's been an amazing journey for me. I've made some great friends. I've broadened my technical skill. And I've make my world a little bit bigger. You can do the same.

Happy Coding!

Monday, August 24, 2015

Twitter Photo Preview - Smart Cropping

So, I just noticed something in Twitter that I find kind of amazing. It seems like photos attached to tweets are cropped intelligently for the preview.

I noticed it with a tweet that I put out this morning (these are just screenshots):


When I first uploaded it, the preview was less than flattering:


But it seems like there was some analysis done on the photo (full photo below), and the preview was moved to show the face in the picture.


This is pretty cool in itself, but nothing too amazing. Lots of sites and applications have face recognition, so centering the primary face (or faces) shouldn't be all that difficult.

But then things got a bit more interesting.

The Really Cool Preview
Here's a tweet from last week where I was showing how excited I was to be on an upcoming episode of .NET Rocks!


Here's the full picture:


And when I first uploaded the picture, it showed the middle part in the preview:


But notice what Twitter eventually did when it re-cropped the preview: it used the part of the picture that had my name on it (the bottom part of the picture).


This tells me that in addition to facial recognition, they must also be doing some sort of OCR to figure out that the main part of this picture -- the part that I cared about -- was the part with my name in it.

Kind of freaky, but really, really cool.

I know I shouldn't be amazed by technology. But sometimes I have to marvel at the cool stuff that people come up with.

Happy Coding!

Sunday, August 23, 2015

Two Full Weeks of Awesome

I spent two weeks on the road in August, speaking at both the Quicken Loans Technology Conference (in Detroit, MI) and That Conference (in Wisconsin Dells, WI). Since I haven't spent time in that part of the country before, I took some time for sight-seeing as well.

Nothing code related this time; just a few pictures of my time on the road.

Day 1 - Flying Out
With time changes and flight times, it takes a while to travel from Southern California to Detroit. The entertainment started at John Wayne Airport where I saw two planes staring each other down.

Who will win?

Day 2 - Detroit
I had a day to sight-see in Detroit. This is not the blighted city that we often hear about in the media. The downtown area has been going through an amazing transformation over the last 5 years. Abandoned buildings are being renovated, and improvements to public spaces invite people to spend time downtown.

Detroit
Detroit has a view of Canada. It's just across the river.

Windsor, ON - Canada
Later that night, I attended a dinner for the Quicken Loans Technology Conference. Lots of good conversations with some folks I haven't seen for a while, plus good conversations with people I met for the first time.

Dinner
Day 3 - Quicken Loans Technology Conference
The next day was the Quicken Loans Technology Conference. There were lots of interesting speakers, including keynotes by Dan Morales, CIO of eBay and Richard Campbell & Carl Franklin of .NET Rocks.

I had a great time speaking about Clean Code (as I usually do).

Jeremy Talks "Clean Code"
I met a lot of great people at Quicken Loans and got to see first-hand all of the good things that I've heard about the company.

Day 4 - Henry Ford Museum
I had decided to rent a car and drive from Detroit to Wisconsin Dells (it's only about 400 miles -- I'm driving that far this week just to get to the Bay Area in California).

Along the way, I stopped at the Henry Ford Museum in Dearborn, MI. What an incredible place. If you like mechanical things, this is the place to be. I was amazed by things that seem simple now but were a great innovation at the time. For example, here's a hay mower:

Hay Mower
The blades look like a modern hedge trimmer (with an oscillating blade moving over a stationary one). But it was geared into the wheel, so the blade would move as the wheel turned. Really cool stuff.

Plus, planes, trains, automobiles, tractors, plus the Dymaxion House by Buckmeister Fuller. If you're ever in the area, you need to stop by.

Day 5 - Indiana
The next day was mainly travel. I drove across Michigan and into Indiana. It was beautiful and green along the way.

Welcome to Indiana

Day 6 - Wisconsin
The next day was more travel. I drove by Chicago, IL and Milwaukee, WI. It was great to see the skylines of the cities (and I was looking forward to going back to Chicago the following week).

At a rest stop in Wisconsin, I saw that they take their recycling really seriously.

Recycling

Day 7 - Madison
I stayed in Madison,WI and went to the Henry Vila Zoo. It's a free zoo that has quite a selection of animals. I spent quite a bit of time with the goats (someday, I'll have goats of my own):

GOAT!

I've always loved goats, and they seem to like me as well. They would run over to folks who had food to give them. But once the food was gone, they would come back to me for scratches.

Then I drove on to the Kalahari Resort in Wisconsin Dells -- the location of That Conference. I spent about an hour in the registration line that night. It sounds like a long time, but it gave me a chance to talk to 10 new people. If you want to hear more about that, be sure to tune in to .NET Rocks! on September 3rd, where I'll be talking about becoming a social developer (or check out this recent article about That Conference).

Day 8 - That Conference
That Conference was a really great event. I met tons of great people and saw a lot of great tech.

Day 9 - That Conference
There were tons of great sessions, and a few pearls of wisdom. Here's one from Stephen Cleary in reference to asynchronous programming:

Every Time You Use Async Void, Rory Dies
And here's something from David Neal that we should never forget:

You Don't Need Permission to be Awesome
Later that night, there was a party at the water slide park at the resort. I think I figured that I hadn't been on a water slide for over 20 years, but I didn't let that stop me. I went on pretty much everything, including the 4-story, straight down slide. I had chlorine in my sinuses for the next 2 days. But it was totally worth it.

Day 10 - That Conference
The last day of That Conference, I was mostly on the hallway track -- speaking to folks I had met during the week, and hosting an open spaces session with Ondrej Balas on building your brand as a developer.

I finally got to speak on the last day of That Conference. In fact, I presented during the last breakout session of the conference.

Jeremy Talks "Clean Code" (again)
Thanks to all the people who came. We had a great time together. Here are a few tweets from that afternoon:


There's a lot more that I could say about That Conference, but we'll save that for another day. I met a ton of great people, got to catch up with a few old friends, and had some really amazing conversations. I'll look forward to going again next year.

Day 11 - Circus World
After That Conference wrapped up, I had a few days to make my way back to Chicago where I would be flying out.

I spent a day at Circus World in Baraboo, WI. This was the winter home for the Ringling Bros Circus, and the site dates back to the early 1900s.

Novelty Musical Intruments
I got to see the novelty musical instrument show, which included this interesting contraption. The cranks were attached to hammers that struck a xylophone-type tuned bar. In addition, there was a big top show with unicyclists, clowns, performing dogs, camels, elephants, and aerialists.

Later that day, I went to the Timbavati Wildlife Park, where I got to pet a kangaroo:

Kangaroo
And I went to the races as well:

Pig Races
Day 12 - Wisconsin State Fair
The next day, I spent the day at the Wisconsin State Fair (just outside Milwaukee). I was especially happy to be there since I was missing the Orange County Fair back home.

Wisconsin Cows
This was much different from my local fair. For example, at the Orange County Fair, most of the animals are 4-H or FFA projects. The Wisconsin State Fair had tons of animals from working farms. There were 2 cow barns, a 2-story horse barn, a sheep barn, a goat barn, and a bunny and chicken barn, plus a big covered arena (which was nice since it was hot and sunny out).

While in the arena watching a horse competition, I heard someone say, "I'm more of a cow person. I would buy a cow if I could afford one." Not something I'm used to hearing.

There was also a Cream Puff building where they were making tons of fresh cream puffs (and selling them just as fast as they made them).

Cream Puffs being made
Really tasty. Lots of other great stuff to eat, too.

Day 13 - Little Amerricka
The next day, I found myself in Marshall, WI at the Little Amerricka amusement park. This was an awesome little place between the corn fields and the cemetery. Lots of rides and lots of fun. The Mad Mouse was a historic little ride that is a lot more terrifying than it looks.

Mad Mouse at Little Amerricka
This is one of those rides that was made before lawyers existed. You just get in the little sled with wheels and hang on -- no lap bars or seat belts.

In addition, a great wooden roller coaster, a toboggan ride, a "monorail", ferris wheel, bumper boats, haunted house, mini golf, and lots more. I had a really great time. And I was hot and exhausted by the time I was done. A great place to visit.

Day 14 - The Field Museum
My last day was in Chicago, IL. Rather than trying to park in the city, I decided to take the "L" in.

The "L"
This was a great system to use. It was easy, the trains and stations were well marked, there was good air conditioning, and the station announcements made it easy to know where to get off. As an aside, I always thought the Chicago train was referred to as the "el" -- short for "elevated train" -- I stand corrected.

This was also a great way to see the city. There were good views from the elevated track, and I got to see a variety of neighborhoods (at least until it went underground near the "Loop").

The goal was The Field Museum. I've wanted to go there for many years for one reason: to see Sue the T-Rex. And I was very excited when I finally saw her:

Jeremy and Sue
This journey started many years ago when I first heard about Sue on television. Then a bit later, I visited the Black Hills Institute in South Dakota (the folks who found Sue). Then I got to see a replica of Sue in Orlando, FL a few years after that. I was excited to reach the end of the journey.

There was lots of other cool stuff at The Field Museum. This little picture really made me laugh, though:

Oxygen
This is showing how photosynthesis in early cells resulted in the oxygen in the atmosphere. I got a chuckle out of the cell farting out oxygen like "What are you gonna do?".

Out one of the windows, I got a good picture of the Chicago skyline.

Chicago, IL
Day 15 - HOME
I ran myself pretty ragged during these two weeks. So, I was really glad to be headed back home. I didn't get to do an architectural tour of Chicago (there are tons of really cool skyscrapers), but I'm sure I'll have plenty of other opportunities to go to Chicago. And I bought a "Pocket Guide to Chicago Architecture" at the airport. So I have a good reason to go back.

I'll get back to the technical articles soon. Plus, my YouTube channel just passed 1,000 subscribers, so I'd better produce a new video soon. Until then...

Happy Coding!