Scott Hanselman

Programming's not for you? How about thinking? Be empowered.

March 4, '13 Comments [37] Posted in Musings | Programming
Sponsored By

Used under CC via http://www.flickr.com/photos/dellphotos/6151875304/There seems to be two extremes of this whole "Learn to Code" movement which has come to a crescendo with the "What most schools don't teach" video from Code.org.

People seem to fall on the side of "Everyone should learn to code! Teach the babies Common Lisp!" or "Not everyone can be a programmer! Relax!"

Surely we can ALL agree that this discussion isn't about code at all. "Code" is just a convenient and press-friendly way to say "think in algorithms, think about problems, think about how things fit together."

It seems a little disingenuous to focus so much on teaching first graders to code or third graders about robots while simultaneously shuttering music, art and drama programs. Our expectations of our students when it comes to math, with some suggesting we stop teaching algebra.

We need to teach kids to think and to be excited about thinking.

Code should be taught - in age appropriate ways - as part of a larger "solving problems" curriculum.

Thinking should be cool.

Why is everyone trying to get everyone else to code? One word: Empowerment. Code represents power. The power to create, the power to change, the power to influence. Code also represents money to many. It is a raw representation of both intellect and instinctually property.

But woodworking, art, sculpture, drama and music are all ways to create and influence. They just don't have price tags as impressive.

There's clearly a Digital Divide and it's bigger than just blue collar and white collar workers. It's as big as the STEM (science technology engineering math) divide. Are you a computer person? Or not?

A family friend almost lost their domain a few months back. Had they lost it, it would have decimated their whole non-technical business. It was extremely confusing for them to tease out the difference between who owned the domain and held it, who hosted the DNS and who hosted the site. In their case, GoDaddy controlled it ALL and they got locked out of everything. An hour of whiteboarding and some moving things around got them setup at DNSimple and SquareSpace and put them in control of the tech they cared about.

I hate to see small businesses being charged thousands for things they could easily do themselves.
- Said the Software Engineer who hired a guy to fix his toilet.

How/when could they have learned this incantation? In school? on TV? Or should they have puzzled it out themselves? How far should it go?

Learn the Basics. If you're excited, learn more.

Learning to code, to me, is no different from me having someone teach me basic woodworking, gardening, or kitchen tile. After each of these projects my sense of personal empowerment increased. In each situation learned how to think about a problem and solve it. I can do this. I can change my world.

Take a minute and read 101 Basic Homesteading Skills. I came out knowing about 9 of these, thereby ensuring my quick death in the coming Zombie Apocalypse.  There's a great video of Mike Rowe about how many 'dirty jobs' are available but folks either lack the skills or interest to do them.

We should learn a little of everything and a lot about the essentials. Is learning to code essential? No, not yet. but learning to think about abstractions is.

Maybe you won't be able to create swim lane overlay graphics entirely in CSS3 but you should hopefully get the gist and be excited about how freaking cool it is.

Reading, Writing, Arithmetic, and Algorithms

But perhaps it is time for "Reading, Writing, Arithmetic, and Algorithms" in school. For loops, while loops. I love this idea on "How to train your robot. The parents are the robots and the kids give them a list of instructions (a "program") to accomplish a simple task. A kinesthetic and tactile way to teach a young kid to think without staring at a screen. Read more about this at OffBeatFamilies and get the materials at Dr. Techniko's blog.

Image borried from OFFBEATFAMILIES. Read their article and love them!

Procedural and Functional thinking, as well as other concepts like Project Management and Time Management are essential components of an empowered individual. These are teaching people to think. Teach them a little code and a little music and a little art, then nurture their excitement and try to turn it into empowerment. Everyone should get a chance and be exposed to all of this.

At the very least, I'd love for everyone to come out of high school with enough math/science/technology be able to wallow in the magic and wonder of the greatest joke ever (origin unknown). ;)

An engineer walks into a bar and orders 1.0E20 root beers.
Bartender: "That's a root beer float."
Engineer: "Make it a double."

I'm still giggling at this one, years later.

What do you think?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Building Web Apps with ASP.NET Jump Start - 8 Hours of FREE Training Videos

February 28, '13 Comments [41] Posted in ASP.NET | ASP.NET MVC | ASP.NET Web API | Screencasts | SignalR | Speaking
Sponsored By
image

Last week Jon Galloway, Damian Edwards and myself (with a raspy throat) were up in Redmond at the Microsoft Campus filming at Microsoft Virtual Academy.

They've got a whole studio there so we spent the whole day presenting LIVE. There were several thousand folks watching live and interacting with

Very special thanks to Brady Gaster and ASP.NET community members Scott Koon, Peter Mourfield, and Rob Chartier who were furiously handling questions in the chats! Your volunteerism and dedication to the community is deeply appreciated! Let's give them a hand, eh?

Jon worked very hard to put together a great day of content based on the successful Web Camps classes we've given all over the world. We took all this and worked to update it with all the new improvements in the ASP.NET and Web Tools 2012.2 release last week so it's very up to date.

Building Web Apps with ASP.NET Jump Start: (01) What's New in ASP.NET 4.5

Building Web Apps with ASP.NET Jump Start: (01) What's New in ASP.NET 4.5

This module will review what's new in ASP.NET 4.5. It will provide an overview of strongly typed data controls and model binding in web forms, friendly URLs, page inspector, Visual Studio Web Editor features and much more.

 

Building Web Apps with ASP.NET Jump Start: (02) Building and Deploying Websites with ASP.NET MVC 4Building Web Apps with ASP.NET Jump Start: (02) Building and Deploying Websites with ASP.NET MVC 4

In this session the instructors go over ASP.NET MVC 4 and provide several demos on creating a new site; adding a model, controller and view, to using entity framework code first. Lastly they demo how to deploy to Windows Azure Web Sites.

 

Building Web Apps with ASP.NET Jump Start: (03) Creating HTML5 Applications with jQueryBuilding Web Apps with ASP.NET Jump Start: (03) Creating HTML5 Applications with jQuery

This module introduces you to the new standards of HTML5 and provides a demo of how powerful it is. Additionally you will see how it works with ASP.NET MVC 4, jQuery overview, Visual Studio Web Tools, Web Essentials and SPLA Template.

 

Building Web Apps with ASP.NET Jump Start: (04) Building a Service Layer with ASP.NET Web APIBuilding Web Apps with ASP.NET Jump Start: (04) Building a Service Layer with ASP.NET Web API

Have you always want to know how to build a service layer with ASP.NET Web API? This segment shows how ASP.NET Web API fits in, and how to consume Web API from jQuery and Windows 8.

 

Building Web Apps with ASP.NET Jump Start: (05) Leveraging Your ASP.NET Development Skills to Build Office Apps Building Web Apps with ASP.NET Jump Start: (05) Leveraging Your ASP.NET Development Skills to Build Office Apps

Get ready to see several Demos leveraging ASP.NET skills to build apps for Office specifically using HTML 5+ jQuery and ASP.NET Web API. This module will also go into further details regarding apps for Office and how they work. Using jQuery inside Office is freaky and cool.

 

Building Web Apps with ASP.NET Jump Start: (06) Building and Leveraging Social Services in ASP.NET Building Web Apps with ASP.NET Jump Start: (06) Building and Leveraging Social Services in ASP.NET

In this session you will see how to using social authentication with ASP.NET as well as an overview of the new Facebook application template.

 

Building Web Apps with ASP.NET Jump Start: (07) Building for the Mobile Web Building Web Apps with ASP.NET Jump Start: (07) Building for the Mobile Web

This module will provide and overview of adaptive rendering in ASP.NET 4.5 and ASP.NET MVC 4. This is especially important since mobile is fast becoming the primary way people browse the web. We'll also cover jQuery Mobile.

 

Building Web Apps with ASP.NET Jump Start: (08) Real-time Communication with SignalR Building Web Apps with ASP.NET Jump Start: (08) Real-time Communication with SignalR

In this segment the instructors go over SignalR, and an incredibly simple real-time web for .NET. It will also provide an overview for real-time hit counter, what SignalR is and how to build a chat application, a multi-player game and load balancing SignalR.

 

Building Web Apps with ASP.NET Jump Start: (09) Taking Advantage of Windows Azure Services Building Web Apps with ASP.NET Jump Start: (09) Taking Advantage of Windows Azure Services

And where would we be if we could not scale it all up or down. This flexibility can be provided with Windows Azure. Here you will see how Windows Azure fits in with mobile services, virtual machines while managing caching and storage.

 

I hope you enjoy the day! Here's a complete course outline with jumps to specific spots:

Building Web Apps with ASP.NET Jump Start

If you’d like more information, including links to a lot of the sample code, see Jon’s wrap-up post.

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

The Internet's Best Placeholder Image Sites for Web Development

February 28, '13 Comments [25] Posted in Musings
Sponsored By

Placeholder images of Nicholas CageSo you're making a site but you haven't got the images ready. You'll need placeholders, but things are changing quick and you don't want to make a bunch of images you'll eventually throw away.

Enter placeholder image sites. The de factor standard for these sites is that you call a URL similar to sitename.com/width/height and you'll get an image back. Sometimes you can add text, or add a g for gray scale. You'd be surprised how much more compelling it makes basic layouts.

For example, <img src="http://fillmurray.com/200/300"> gets you this:

Here's a collection of the web's best sites for dynamic placeholder images.

PlaceCage.com

The internet was missing the ability to provide custom-sized placeholder images of Nicolas Cage. Now it can.

FillMurray

The internet was missing the ability to provide custom-sized placeholder images of Bill Murray.

PlaceBear.com

Color: http://placebear.com/200/300
Gray: http://placebear.com/g/200/300

 

DummyImage.com

More complex but more flexible, DummyImage lets you do colors, gradients and announce the size.

For example http://dummyimage.com/450x250/f00/fff is

PlaceHold.It

The original and cleanest, you get gray placeholders.

http://placehold.it/350x150 is

FPOImg.com

For Placement Only is similar.

http://fpoimg.com/300x300?text=Hanselman gets you:

BaconMockup.com

Like bacon? http://baconmockup.com/300/200

Did I miss any awesome ones?


Sponsor: Thanks again to Red Gate for sponsoring the feed this week. Download their free ASP.NET performance ebook from http://red-gate.com/50ways

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Being a Remote Worker Sucks - Long Live the Remote Worker

February 27, '13 Comments [68] Posted in Musings | Remote Work
Sponsored By

My voice coming out of a Polycom phone. Is anyone there? It's me, Scott!I've been a 100% remote worker at Microsoft for just about 5 years now. My last two jobs were both 7 year long gigs, so this isn't the longest I've worked somewhere, but clocking in at a half-decade, it's the longest I've worked remotely. Given that I haven't yet been fired, it's fair to say that I'm a pretty good remote worker.

I've been writing about Being a Remote Worker on the blog here for a long time.

Being remote is wonderful and it sucks.

This week former Google Employee #20 and current Yahoo CEO Marissa Mayer declared that all remote workers need to head into the office (and in some cases, move house) before June.

If I got this memo while working Remote at Yahoo I'd quit that moment. I would probably quit with some flair as well. Talk about completely demotivating.

I see this ban on Remote Work at Yahoo as one (or all) of these three things:

  • A veiled attempt to trim the workforce through effectively forced attrition by giving a Sophie's Choice to remote workers that management perceives as possibly not optimally contributing. It's easy to avoid calling it a layoff when you've just changed the remote work policy, right?
  • A complete and total misstep and misunderstanding of how remote workers see themselves and how they provide value.
  • Pretty clear evidence that Yahoo really has no decent way to measure of productivity and output of a worker.

Ultimately, though, this comes down to trust, and trust can be found or lost on every page of a company's policies. You were hired as a professional; are you trusted to be a professional? Working remotely requires your company to trust you can do the work not only without them seeing you, but also without constant physical interaction with your teammates.

I saw this tweet yesterday and I agree. Remote working isn't awesome. There are great aspects, but parts just sucks.

Here's why it sucks and what I do about it.

Why Working Remotely Sucks

There's a few reasons why being a remote worker sucks.

Guilt Sucks

Animated gif of a worker not workingAll this said, it's REALLY hard to be remote. I propose that most remote workers work at least as hard, if not more so, than their local counterparts. This is fueled in no small part by guilt and fear. We DO feel guilty working at home. We assume you all think we're just hanging out without pants on. We assume you think we're just at the mall tweeting. We fear that you think we aren't putting in a solid 40 hours (or 50, or 60).

Because of this, we tend to work late, we work after the kids are down, and we work weekends. We may take an afternoon off to see a kid's play, but then the guilt will send us right back in to make up the time. In my anecdotal experience, remote workers are more likely to feel they are "taking time from the company" and pay it back more than others.

You might poo-poo the guilt, but ask around to your remote brethren. It's there, they just don't talk about it.

Being Unseen Sucks - Out of Sight, Out of Mind

A few months back we had a standup meeting and a boss couldn't get the web cam to work (It's been 5 years but even now they usually spend about 10 minutes messing about with the webcam before giving up and just having me call in). All this while 20 workers who "showed up" stare daggers (I'm assuming) into the Klingon Phone and the guilt piles on.

Anyway, we were going around the table (remember I'm the invisible guy in the center of the table) and then the meeting ended. I was muted, and was like "Hey, guys? It's me...Scott...I'd like to get you up to date on what I'm working on..."

"Guys?"

VPN is a Second-Class Citizen

No matter what your IT says, no matter how fancy your Smart Card is, or even if you have "Direct Access" enabled at work (basically your machine is at home, but always internal) you're remote. Every week you'll hit a site that doesn't work unless you're inside. You'll be constantly prompted for passwords, you'll be told certain scripts or installers don't work as a remote worker.

I have to drive into the office at least quarterly JUST for the purpose of dealing with issues like this.

People Ask "When you are up next?"

This one is the worst. "When are you coming to campus next?"

I'm online all day, every day. I've got HD webcams, Lync, Skype, GChat, hell I got Chat Roulette, on every machine I own. You don't think to call me for 3 months, but when you see me, you're all like "let's get you plugged into the project..."

I'm absolutely available anytime to talk. We can do a call, a chat, or best yet, a hi-def video call. Trust me, I'm at your disposal if you'll only take a step forward.

Ways to make Remote Working work

They are watchingFirst, it DOES depend on the job. We have folks like Brian Harry who lives on a farm in the Carolinas, but he's also got a large team over there. They aren't on campus, but there are folks he works with closely. We have folks like Steve Sanderson who works in London for a team in Redmond, but his job is very focused and "the code don't lie." I suspect that directing a complete feature team while remote would be considerably harder than participating on a feature team. That's one of the reasons I moved jobs and gave up my team. I feel better as an individual contributor with a clear focus.

Before I started on the ASP.NET Product Team, I used to run a team of folks when I worked in MSDN. Every one of us was remote. In fact, we were in all four corners of the US - Oregon, San Diego, New England, Florida.

Our jobs were discrete, directed and clear. We were laser-focused and each worked well remotely. Here's some things that have worked for me and others.

Status, Status, Status

Remote workers need to make it easy for folks to answer the question "What is that person working on?" This is somewhat of a double standard, since they may have no idea what the person in the next office is working on, but that woman shows up every day, so she must be productive, right?

Regardless, when I ran the team, we'd send out a list of three things each Monday that we wanted to accomplish that week. We'd follow up on Friday with what happened to those three things - what worked and what didn't.

Do be seen

I used to come up every month, but since I travel to conferences and customers a lot (plus budget issues) I go to Microsoft about once a quarter. When I'm there it's a flurry of meetings as "relationship building." That's business-speak for talking, talking, talking so that they remember why they hired you. It's comforting to the locals when the remote shows up. Try to get to the office when you can.

We made a "virtual portal" from Portland to Seattle so that anyone could peek in an see either side. We just need to circle it in Orange and Blue.

Team Building

When you ARE in a group, take any opportunity to "team build." I used to think this was touchy-feely nonsense, but truly, shared experience in a non-work context can totally transform relationships. I try to hang out with the team whenever I'm in town, and just check in with them, their families, and other non-work stuff.

Find a Place to Be Productive

Often just being a home can drive you nuts. I try to get out a few times a week. I've worked from the mall, from Starbucks, from McDonald's (free wi-fi, sue me) and from a park bench. I find that just having people walking around makes me feel more productive. Their movement and energy keeps me focused.

Try different places, find your place, but don't be afraid to mix it up.

Get Feedback

During 1:1s with my boss I always come with lists and lists of what I'm working on and why it's useful. There's always this Spidey Sense that "well, it's been a good gig, but this remote thing isn't working out." He's very good and assuaging that concern, but it's still there.

Make sure you're getting feedback on your work and you know you're on track with you're working on. Ask for feedback. That means ASK. "Do you feel I'm on track with X? Are you happy with what you're seeing with Y?" It's hard but it's important.

Know Every Collaboration Tool

We use Lync at work, but I also use Skype, GChat, Join.me, straight VNC, Windows Remote Assistance, CoPilot and a dozen others. If one doesn't work for some reason, don't waste time, just move to the next one. If someone starts to associate you, the remote worker, as a symbol for technical difficulties it will slowly warp their perception of you. Make it easy.

I have a small shared office space with a camera I can turn on remotely. This means a boss can walk in and "meet" me without them having to think. That makes it easier for a boss to work. Bosses need to manage, not mess around with cameras.

Be Available

A caveat to this one: Be Available During Work Hours. Don't overcompensate and be the person who is online at 5am or answers emails on Sunday. Just make sure that from 9 to 5 you are 100% available via SOME way that your boss knows about.

How do you make remote working work?

Related Links


Sponsor: Free eBook - 50 ASP. NET & SQL Server performance tips from the dev community, to help you avoid, find, and fix performance issues in your ASP.NET app. Download it from http://red-gate.com/50ways

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

RELEASED - Download Internet Explorer 10 for Windows 7

February 26, '13 Comments [58] Posted in ASP.NET | HTML5 | Win7
Sponsored By

IE10 for Windows 7Just about a month ago the IEBlog published a post to allow business to manage the update schedule for Internet Explorer 10. It says "this approach lets organizations control when they are ready to deploy IE10 to their Windows 7 users." I took from this that IE10 on Windows 7 was imminent.

Today it's out. You can download IE10 for Windows 7 now. The details are over at the IE blog.

In the next few weeks and months Windows 7 machines will get automatically upgraded to IE10. For Web Developers like me, that means that between Windows 8 which already has IE10 and all these Windows 7 users who will now have IE10, that more people will have a modern browser than ever before.

IE10 was faster on my machine than IE9, and they say it is smarter about battery life. It also has IE10's upgraded JavaScript engine and includes spell check with auto-correct (finally!). Benchmarks are benchmarks but SunSpider implies about 40% faster than IE9, while PeaceKeeper looks like 25%. The V8 benchmark looks more like 100% faster. Point is, it's faster. How much faster? Depends on who you ask. Your mileage and machines will vary.

Once you've upgraded to IE10, go check out some of these sites. Be sure to view the source!

  • http://ie10bethethief.com - Robert Kirkman from Image Comics (You know him from The Walking Dead) also has a great comic I get each month on Comixology called Thief of Thieves.
    • This new site for Thief of Thieves not only has some great art (lots of SVG!) but also is a good example of using touch and the W3C Pointer Events standard. According to the IE blog, it also uses:
      • CSS3 animations for some of the larger scene transitions on the site
      • MSGesture API for handling more advanced pointer interactions like the safe cracking exercise
      • pageVisibility API to detect when an open page isn’t being actively used so we can control audio appropriately
      • setImmediate API to improve performance and power consumption on tablet devices. SetImmediate, like setInterval and setTimeout, is a timing API and requests the CPU to process the instruction as soon as it’s possible to.
  • Atari Arcade - Lots of classic Atari games, remade using HTML5 and Touch on the web.
  • Pulse - Very cool news aggregator done entirely in HTML5 with support for swipes and multi-finger gestures. Also works nice on mobile phones with responsive design.
  • Contre Jour - The 2011 iPad game of the year is now written in HTML5/JavaScript and CSS3. It works really well on touch systems like my Ultrabook. This originally came out in October but they've just added 20 new levels and it's free!

Developers

Enjoy!


Sponsor: Free eBook - 50 ASP. NET & SQL Server performance tips from the dev community, to help you avoid, find, and fix performance issues in your ASP.NET app. Download it from http://red-gate.com/50ways

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.