Tagged with Development
When I announced my upcoming course, I had a lot of people ask me about what I thought of X framework versus Angular (which I’m covering in the course). I feel like I have to say something.
Before I bestow my blessing, let’s talk about the fundamental problem of frameworks in general. They can be a boon or a bust and many developers have been hurt by a selection of a specific framework in the past. I know I’m being asked so that some devs can go to their architect to confirm their particular positions. I’m hoping to avoid that in this post, but I doubt it will work.
This selection of a framework isn’t new. It’s ancient in fact. I had to battle the same problem in my past; whether it was Oracle v. SQL Server in my ADOGuy days, MVVMLight vs ever other MVVM library in Silverlight, or even Mongo v. every other NoSQL Store. The argument is the same:
I do enjoy building things with code. When I started 28 years ago, that’s what I thought was the essence of what a “computer person’s” (e.g. software developer) job was to sit dark in a room and grind out computer code. Of course we know that it just isn’t true.
For me technical acumen is a decent mark of a good developer. But if you can marry technical ability with communication skills, you’re a huge asset to any company.
No matter what kind of development you do, you have to interact with what I’ll call stakeholders. Stakeholders can be direct users, managers, companies or anyone who will benefit from your software. This interaction is where the magic happens in software projects. If you can’t communicate with the stakeholders, the project is doomed to failure.
I started with database ‘languages’ twenty-eight years ago. My experience in those days was that when you got a new package or solution, you were going to learn a new language. A language was part of the experience, not a separate piece of the puzzle. If you look back at how Paradox, dBase and others worked. The language was simply ‘in the box’.
Back in 2008, I posted an entry that showed what I used for my dev kit. It is about to to update it with what I am using now. A lot has changed from back them, but a lot hasn’t. While I do a lot more web development than I did back then, some of the tools haven’t changed but the hardware has.
I am going to be on the road this year, but that’s not the only reason my gear is mobile. I spend most of my time at a coffee shop or onsite with clients so I need gear that all fits into my backpack. The difference with my upcoming year on the road is that my recording gear for my Pluralsight videos and Hello World Podcast have to fit in my luggage too.
For my main machine I use a Dell M3800 (which is just a Dell XPS-15 in business clothing). I max this 4.15lbs machine out with as much power as I could afford:
I recently released my new writing project: “The Opinionated Software Developer”. This short book (about 35 pages according to Kindle) is a quick look at my experience in software development. It includes a history of my experience in the field as well as a look at the software developer psyche. The hope was to share my opinions about being a developer in the industry including how to deal with co-workers, how to avoid being a brat developer and how to motivate developers in larger organizations.
The eBook is free of specific technology choices and focuses on experience, skills, and opinions about being a coder in this fast-moving field.
In the last couple of years, I've been adding the HTML/JS/CSS skillset to my stack of required skills and my talks and courses have reflected that change. To my readers who are deep in the XAML stack, this change seems to have come at somewhat a shock to many. I've even been accused by some of abandoning the Silverlight, WPF, Win8, WinPhone folks. This has caused me a lot of frustration because I don't believe that developers can or should only know one possible stack. To reach the full breadth of users, sometimes you need to be able to develop across the ecosystems. In this same time, I've also done quite a number of HTML/JS/CSS talks where I didn't use Visual Studio. Some have conjectured whether I am moving away from the Microsoft stack as a result of the lessened use of Visual Studio in my demos. The frank answer is: nope.
So what is really happening here? I believe the development world is evolving. In fact, this isn't new…in the past 26 years everything has continued to change my entire career. And I expect (and hope) it continues. Software development is unlike many other similar professions. We think of ourselves as engineers but many engineering professions the rules don't change all that often. In civil and mechanical engineering, it can be somewhat stagnant. The requirements change, but torque and setbacks are similar to what they've been for years (AFAIK). But in software everything changes.
With the surprising news of Sinofsky's leaving Microsoft still fluttering in the winds, I knew I'd hear some rants about Silverlight be heard among the XAML-lovers out there. I decided I needed a blog post (albeit a short one) to say my peace.
I've heard many say that Sinofsky is responsible for the death of Silverlight and that it's absence on Windows 8 is a shame. I hear a lot of Silverlight enthusiasts (or apologists) that Silverlight, while being a great technology, was killed because DevDiv and Windows couldn't get along. At last year's build, it was big news that Sinofsky actually said the word Silverlight made news. While the idea that Silverlight ran on a Mac certainly caused waves in the Windows team, it's not the reason for it getting pushed to the pile of technologies that are now in 'sustaining engineering' mode. If any executive is responsible for the current state of Silverlight it's one who is no longer with us...and not even part of Microsoft: Steve Jobs.
When Silverlight launched the target was clearly Flash. Flash was a great platform for advertising, games and starting to push into line of business apps. Silverlight was the dual barreled shotgun that Microsoft was pointing in Adobe's face. But at some point Flash became irrelevant. When did this happen? It wasn't Silverlight, it was iOS. When Steve Jobs decided to not allow Flash to be installed on any iPhone, Flash was demoted from the web.
What a weekend. Much to the chagrin of my beleaguered girlfriend, I signed up to be part of Startup Weekend here in Atlanta. I haven't had the chance to do one of these events before and it was a lot of fun. I want to thank the organizers and the great people at ATDC for holding a great event.
For the uninitiated, a Startup Weekend begins with a series of business idea pitches. This has to be a new idea that you haven't worked on before (no code, no design, etc.). After the pitches (2 rounds) you join a team to help build a business proposal over the next 54 hours. This usually entails a prototype, a business/marketing plan and a 4 minute presentation at the end of the event.
I've always been a big fan of George Carlin. I remember watching one of his first HBO specials when I was quite young. No matter whether you agree with his point of view, you had to admit he had an impressive mind and a way to stay relevant no matter where the country went.
Recently, I was watching Louis CK talk at a Carlin Tribute when he told the story (that I'd heard before) of Carlin's philosophy of throwing out his act once a year to work on a new show. This got me to thinking how this could apply to what we do.
Learning new technologies, tools or languages expands what we are good at. In fact, I would argue that developers are paid to learn. That is what we are good at. In this way I think most developers should be learning new technologies every year.
Nearly a week ago I installed Windows 8 as my main laptop operating system. I could finally do this once the Windows Phone 7.1.1 SDK update was released (making the Windows Phone emulator work on Windows 8). So I am not knee deep into Windows 8 as a desktop operating system.
NOTE: is that I am using Windows 8 on a non-touch laptop. This means I want to test it as a replacement for Windows 7 on my development machine. This is a particularly important test for the Operating System for me. I've used it on a Tablet for several months now and I really like it. The Samsung Tablet that we were given at Build is a good machine to see how real tablets will be. The lack of apps and battery life make it an approximation of real tablet use for me, otherwise I'd use it a *lot* more!
When I set up the Tablet for Windows 8, I just used my LiveID so that I could get the full integrated experience that consumers would get. But since I use domain authentication for my laptop, I was worried about how the experience would be. Luckily, I was able to login easily with a domain account like I figured. But what I didn't realize was that if I link my domain account with a LiveID, I could do pin and picture password. I've been told that authenticating with an Exchange server breaks this, but for me it's working grand! Pin login FTW!
- 1: A New World
- 3: A Better CSS
- 4: Debugging
- 5: Joy and Pain of jQuery Plugins
- 6: Packaging Assets
- 7: Distributed Version Control (this article)
- 8: Working with Facebook
- 9: Mobile Pages
- 10: Deploying to the Cloud (upcoming)
Before I wax poetically about why to use distributed source control, let me talk about what it is (and why it is different).
Back in the very old days (did I mention I am old?) I would keep my source on a floppy disk and put in a safe every night (no, not 9 track tapes like some of you are thinking..I am not *that* old). This was a way to secure the source in case of disaster…but all it did was keep the source secure. Source control was more than that. Later as I used a myriad of source control vendors (yes, including the dreaded Source Safe), they all seemed to have some common features:
While I know some companies still don’t use source control of any kind, most do. For many companies they use source control so that they have control of the source. They know where it is and they can back it up and not rely on developers to secure their assets.
Ok, maybe I like my distracting titles…my apologies.
As many Windows Phone developers have noticed, Mango (e.g Windows Phone SDK 7.1) supports background processing through something called Agents. While Agents are certainly a welcome addition, I am exceptionally impressed in the fact that Mango also supports a bunch of features to avoid having to have background processing agents. In this post, I’ll show you one of these: Alarms.
Recently, while working on my Windows Phone 7.5 book, I found the need to display a short URL to some specific documentation. I found that you could use msdn.com to do this but the results were not very satisfying. In fact, if you take a typical documentation ID (e.g. “ff402535”), you can simply do this:
This works but takes you to a simple page that reformats the topic instead of the full MSDN documentation. I didn’t like that solution so I registered http://msdnlink.net. With this new address you can do the same thing:
This is a simple redirect to the full documentation. Just take whatever MSDN documentation and look at the URL:
While I have been exceptionally fortunate to get a Windows Phone 7 device, I still am using my Motorola Droid as my primary phone. The primary reason is that I use Verizon and my WP7 phone uses a SIM chip (Verizon doesn't use SIM chips). I expect you're reading this post to gleam some information about the WP7 phone, but let's start with the Android.
As some of you may know, the 2.2 version of the Android operating system (a.k.a. Froyo) was released and finally made it's way to the Motorola Droid last week. Google had promised a big performance boost with Froyo (100-500% by some accounts) mostly based on the new JIT compiler. So my expectations were pretty high. I got Froyo installed and while I liked the new features and home page changes a lot, I didn't see much performance change. In fact, the new phone felt downright sluggish. Event swiping the home screen was slow. So what gives?
I've been speaking at user groups and conferences for a long time now. Usually at these short talks I don't get asked much about how I use Visual Studio. But now that I am teaching Silverlight, my students are never shy about asking what I am doing while in Visual Studio. I am often amazed by how people use Visual Studio without learning some of my favorite hotkeys/snippets. Here are some of mine:
After reading John Lam's blog post "My Dev Kit" where he explains what he uses on a day-to-day basis to do IronRuby, I decided I wanted to do the same...so here's my take.
I am not a typical developer as I almost never at a desk so my laptop is crucial to my work life. My laptop right now is a HP dv7t machine. Its a larger machine with a 17" screen and full-size keyboard (e.g. has a NumPad). Its an Intel Duo 2 Core 2.8GHz, 2x320 GB hard drives, 4GB memory (max 8GB but who can afford that right now) and a respectible 512MB NVidia Video card. All this in a tight 7 1/2 lb package (including the tiny power supply). After lugging around desktop replacements (I'm looking at you XPS M1730), this laptop seems tiny.
I usually prefer to avoid just link posts, but since I have gotten this question a lot lately in my class and at user group talks, I thought i'd share. A couple of months ago Scott Hanselman convinced Microsoft to allow him to release something called RockScroll:
I've been helping Chris Sells and the Genghis Group for a couple of years. I am proud to announce the newest build of Genghis (version 0.8) that includes all the features of version 0.5 ported to .NET 2.0. Between versions 0.5 and 0.6 a conversion to .NET 2.0 was performed but a number of classes were dropped for one reason or another. We've addressed these missing classes in this latest release.
If you are working with Windows Forms 2.0, check it out. Its a great addition to the library.