Move over TortoiseGit, welcome SourceTree

imageSince around 2005, I, and teams I’ve led, have been using the Tortoise flavor of source control clients.  TortoiseSVN, TortoiseHg, and TortoiseGit.  Each came with the command-line client as well for specific use cases, but most of the time, we used the Windows explorer shell integration.  To this day I’m using TortoiseGit with GitHub, BitBucket, and Team Foundation Service+Git.  It works well with all of them.  I’m not sure why it took so long for me to figure out that Atlassian has a Git and Hg client called SourceTree.  Here is what it looks like, and it seem to work seamlessly with my existing repositories and working copies.  In addition, it integrates diffs very well so that it’s obvious right off the bat what has changed in the file. 

One feature that SourceTree does not provide is explorer shell integration so that I can right-click on the repository working copy and perform functions directly from there.  It will remain to be seen how often I reach for TortoiseGit with the new slick interface that SourceTree has.  I’m not sure, but I don’t think it will take long to see.

Announcing Party with Palermo: DevTeach 2013 edition!

Jean-Rene Roy has graciously helped to sponsor a Party with Palermo at DevTeach in Toronto.  If you are not yet signed up for the conference, please head on over to www.devteach.com.

If you have already signed up, make sure to RSVP for Party with Palermo on 5/29 at 6:30PM.  Also on the schedule for that evening is a .Net Rocks show just for the 10th anniversary of the DevTeach conference!

RSVP now!

 

Team Foundation Service my new default GIT repository

imageGIT works great with the new Team Foundation Service (TFSvc?).  I’m an old school Tortoise guy (SVN, Hg, GIT), but I had to laugh at the little branding touch they through in when doing a pull.

Notice the Visual Studio logo in ASCII art.  I’ve actually been using it for some time, but I hadn’t notice that until today.

The good news is that this is just GIT.  Not some Microsoft GIT build, but it’s regular old GIT hosted for me and integrated with the other TFS features like work items, story boards, etc.  All I have to have is Microsoft accounts for my team members, and it all works.  We have three systems hosted here now, both code and work tracking.  One is an HTML5 smart client, one is a C++ system including some MFC as well as driver code, and the third is an ASP.NET Web API system with NServiceBus back end.  In short, it doesn’t matter.  It’s just GIT.

I do like the work item tracking at the story level and at the task level.  And the visualization works well also.

image

The stories are the rows on the left, and the sticky notes are the tasks that are what needs to be done for this story to be completed.

In short, they did a good job with Team Foundation Service.

Launching AzureAustin user group May 13, 2013

On May 13, 2013, I’m launching a new user group, AzureAustin (please RSVP so we can plan food accordingly).

For those who know me, you know that I led the Austin .Net User Group for 5 years, that I was on the founding board of directors for AgileAustin, and that I co-founded AgileATX (now known as ATX Code Lunch – and superbly facilitated by Chad Myers).  I’m launching this new group because the nature of the data center is changing rapidly, and Microsoft is one of the big 3 lending momentum behind the trend.

I also see the Microsoft technologist having a key role to play in the new DevOps world, and this group will be central in bringing together developers and technologist responsible for running critical software systems for their companies.  By coming to together, sharing successes, and discussing challenges, we can mutually sharpen each other and learn from each other.  This group is sponsored by Microsoft and will be held at the Austin Microsoft office.  In addition, each month will have a food/drink sponsor for dinner.

At 5:30, please arrive for 30 minutes of networking and getting started with the food.  The business meeting/presentation will begin at 6PM.  We will conclude at 7:30 and have final announcements and a give away drawing.

Please share this with all you know: managers, executives, developers, I/T admins, and anyone who has a hand in developing and running business software systems.  Along with Windows Azure, we will discuss all relevant topics around the technologies used to build and operate systems that can run in Windows Azure.

I look forward to seeing you there.  Please contact me if you have any questions about the group, or if you would like to volunteer to help make the group better!

And RSVP for the first meeting!

Xamarin Evolve conference brings cross-platform mobile development to the enterprise

Today, I am here at the Xamarin Evolve worldwide developer conference.  Xamarin has employees in  many countries, and as far as I can tell, the company has flown most of its research & development department in to Austin to serve as speakers and staffers for the conference. 

The conference has two parts, training, and lectures.  The first two days are hands-on training sessions with two tracks: fundamentals, and advanced.  Essentially, the fundamentals track appears to be full of long-time C# programmers who are new to the Xamarin tool and developing for iOS, Android, and Mac.  The advanced track are targeted topics for folks already intimately familiar with the popular mobile operating systems.

For readers not familiar with Xamarin, this company, run by Miguel de Icaza and Nat Friedman of Mono fame, produces a stand-alone IDE for development of cross-platform native mobile apps on the Mac, and a Visual Studio extension for developing these within the Visual Studio project system.

You can read more about Xamarin here

For many years, the consumer markets have driven the mobile development technologies.  The market demanded mobile applications, and the industry used the tools available to serve those customers.  The cost of developing multiple code bases for the different platforms almost forced some enterprises to give HTML5 a look for cross-platform apps.  There are some interesting HTML5 approaches to this, but Xamarin brings the promise of native applications to the C# developer using Visual Studio.  Moreover, after researching and playing around with the product, it now appears feasible for enterprise developers to take native mobile applications in-house.  The ability to use C# and Visual Studio to target iOS, and Android as well as WP8 is a game changer.

I will continue to watch this technology closely, but this is a transformative moment.

Adding a second SSD to my Lenovo Yoga & 8GB RAM

Over the weekend, I upgraded my Lenovo Yoga ultrabook/tablet to 8GB RAM and added a second SSD hard drive.  First, I must give credit where credit is due.  I watched this great video on YouTube that demonstrated how to do it all.

Video demonstration of second SSD install

The following was my experience, and I had a bit of difficulty in a few areas.  First, in December, I purchased a Lenovo Yoga 13 from Best Buy for $999 + tax.  I looked at Amazon, and Lenovo.com, but Best Buy had them for the same price and ready to go.  The i7 machines were on back-order, so I took a chance on the Core i5.  I have not been disappointed, actually (and I run LOTS of stuff).  The base model had 4GB RAM and 128GB SSD.  This laptop is super-thin, and coming from an Apple Retina MacBook Pro, I can say with a straight face that I love this laptop way more than the Apple.  First, if you are going to run Windows (which I do), this thing does it better.  And it’s a touch screen.  And it’s a tablet convertible.  And it’s light.  And it’s thin.  And the battery lasts all day for me.

What we are going to do here is upgrade the RAM to 8GB and add a second SSD hard drive.  The parts I purchased are 1) Crucial m4 256GB mSATA Internal Solid State Drive CT256M4SSD3 & 2) Crucial Single 8GB DDR3 1600 MT/s (PC3-12800) Notebook Module, CT102464BF160B.  As I write this blog post, I have both installed into the computer, and they are working great.  I bought both from Amazon, and they arrived pretty quick.

Taking the keyboard off

IMG_0400

I used a razor blade to carefully pull up the top right corer of the keyboard.  There is double-stick tape under both corners, and there are small plastic catches across the top of the keyboard frame.  IMG_0402Use something small, like a straight-head computer screw-driver to pull the top edge of the keyboard up just slightly.  Don’t pull up, just release the catches.  Then, as you see in the image to the right, you need to slide the keyboard up and toward the screen.  There are several slides that will slide in the same direction.  After you have slid the keyboard up, it will be completely released.  Watch out for the cable.

Replacing the RAM

IMG_0403IMG_0404This is the easy part because if you have ever done it on any computer before, it’s exactly the same.  The picture on the left shows the keyboard flipped upside down.  I don’t have to detach the keyboard for the RAM upgrade.  The picture on the right shows the RAM and the SSD.  Note that the RAM is 1600 MT/s, and the SSD is a 1.8” chip mSATA drive.  This is my first time using a hard drive that is the same size as my camera’s compact flash memory chip.  It’s amazing.  Everything is now a computer chip, and the fan is now the only moving part.  Next, they will just figure out how to induce air flow, and then there will be no moving parts at all!

Installing the second SSD

IMG_0405

IMG_0417In order to get to the slot for the second SSD (or the first), you will need to separate the top of the case from the bottom.  The first step is to remove the keyboard ribbon cable.  This is a very delicate cable.  The black catch holds the cable in place.  Use a small screwdriver to flip it up.  Then, with the tiny screwdriver, ease it away using the side tabs.  I took care not to touch anything metal.  Then, take out all the black screws on the top that hold the aluminum plate down to the motherboard.  After this step, nothing will be lose.  Turn it over and using a T5 TORX screwdriver, take out all the screws on the under-side of the computer.  I had to go to buy a T5 TORX driver because I didn’t have one.

IMG_0420

IMG_0421With all the screws out, I started at the bottom right corner and pulled the case apart.  Magnets hold this part together.  There is plastic catches along the side, so you just have to give it a tug.  Don’t separate it too far because there are two cables still connected.  These do not have to be removed to install the SSD.  Notice that the second hard drive bay is right next to the power plug.  You can’t see it in this picture, but the primary hard drive “bay” is just to the left of the photo frame. I was able to twist the frame a bit to install the new SSD.  Just like RAM, you insert it at a slight angle and make sure it is fully seated.  My mSATA drive came with two screws.  I only had to use one of them to keep it down.

Performance

image

The Yoga has a built-in GPU, but I don’t do gaming, so I wasn’t concerned about this.  The RAM turned out to be faster than the one provided.  Here were my scores before the upgrade.

image

Moving files to the new drive

The reason I needed a new drive was because I was out of disk space.  Literally.  With Visual Studio (and add-ons), SQL Server, lots of GIT and HG repositories, I didn’t have much space left.  I was already using a 64GB SD card in the external slot for glacial-speed extra storage.  I immediately moved my Desktop, Documents, Downloads, Pictures, and Videos folders to this new drive, along with my working folder for code repositories.

image

As you can see, I chose the B: drive for the new guy.  I was pretty sure I would not be connecting more than one floppy disk in the future, and some older software has some hard-coded weirdness around the A: drive, so I ignore that letter.

imageHow did I move these things, you ask?  With a few clicks.  When you right click on c:\users\YOU\My Documents, and go to properties, you can get here and move it.  Windows will automatically copy all your stuff. 

This isn’t so easy with the SkyDrive and Google Drive folders.  I may have to reinstall them!  I don’t know yet.

Another tip on drive space is that Lenovo has a hotfix for the wonky default partitioning of the main drive.  I was able to capture 6GB storage back after running this tool that sucks free space from the recovery and driver partitions. Get it here.

 

Conclusion

I love the YOGA, and I am so impressed that it is expandable in this way.  And with USB 3.0, it is expandable externally as well.  See my previous post for how I have a 2 monitor desk workstation powered by the Yoga.

Growing Clear Measure: need architects

As many of you know, I helped start a new company at the beginning of 2013.  Clear Measure is a custom software company, and we work directly with CEO/COO/President/GM types to solve business problems where custom software will be a help.  To do this, we are building the company around software architects.  If you have read my blog for a while, then you know my stance on non-coding architects (need not apply).  If you started your career as a programmer and have progressively moved closer to the business and are currently leading custom software projects and supervising or otherwise mentoring other developers, then you might be interested in taking a look at our careers page.

We need architects across a spectrum of skills and experience ranges.  If you have always been a continuous learner, you might fit right in here. 

If this sounds interesting, I look forward to meeting you.  Please feel free to comment here or on twitter.

Web development as we know it, is dead

Web development as we know it, is dead.  We keep looking for the common runtime that can run everywhere.  We yearn (remember Java) for the platform that allows us the promise of “write once, run everywhere”.  This, in the global sense, is a pipe dream.  My comments here are targeted for custom software that businesses rely on.  These are commonly referred to as business applications, or line of business applications.  The days of writing a business application for the web and expecting it to serve all users is over.  Only in a world where 99% of your users are using pretty much the same type of computer is this possible. (desktop/laptop computers – PCs/Macs)

I started web development in 1997 using Microsoft’s IDC/HTX technology that ran on IIS on Windows NT 4.  Soon thereafter, Microsoft developed Active Server Pages (ASP), then .Net, then MVC, now Web API, and is now working on TypeScript as a way for C# programmers to develop JavaScript for HTML5 applications using classes, namespaces, and some typing help (see my TypeScript FizzBuzz example)

For custom software, the web was a HUGE breakthrough in a world that saw software packages as things you deployed via floppy disk, and then CD ROM, and installed on every single computer on which it was used.  For companies developing and deploying custom software to a large number of users, this was a huge pain.  Remember that some of the first proponents of browser-based custom software and business applications were from corporate I/T departments that were bearing the burden of deploying and updating desktop applications.

Over the last decade, web applications for business have dominated.  This was a big new capability: run the software without installing it.  We can’t discount this.  It was huge.  The computing form factor, however, was unchanged.  It was the desktop.  In 2000, you were lucky if you had a 17 inch CRT monitor.  By 2003, 19 inch was becoming more popular, so early web applications were build with 1024x768 target resolution. 

Fast forward to 2013, and if a web application doesn’t have a responsive design, we scoff because it’s difficult to use it on the smaller web browsers found in mobile devices.  HTML5 represents a huge leap forward in capabilities for web browsers everywhere.  HTML5 is the next incarnation of the “write once, run everywhere” dream.  The same pipe dream.  The problem isn’t in the “write once”.  The problem is in the “run everywhere”.  And don’t get me wrong, I love HTML5.  This is my real license plate.

With HTML5, we try to target HTML5, CSS3, and JavaScript (ES5) in order to make one codebase function the same across all types of computers.  This isn’t possible because our code is being interpreted radically different across browsers on Windows, Mac, Linux, iOS, Android, and WP8.  Because the runtimes are different, we find ourselves using libraries like jQuery to on-the-fly adapt to platform differences.  We look to things like LESS to help us decompose our CSS that is bloated with browser/platform specific tags.  Because of all these issues caused by differing runtimes, we sometimes find it easier just to tell our business users: “just run Chrome.  It will save us a lot of money”.  Essentially, that puts us right back in the boat of choosing a runtime platform.

I’m discussing the world of business software here, not the consumer space where even a wrong choice of color will cause users (and revenue) to be lost. 

Web development, as we know it, is dead.  It had a great run.  Applications were greatly simplified with only 2 tiers to manage: the application, and the database.  We “told” ourselves that we were still 3-tier because the browser was the 3rd tier, but we had little control over that. 

The new world and the new face of web development for the business world of custom software is one where the application runs on the web server and is merely a set of APIs.  No presentation.  Talk about forcing separation of concerns (SoC).  This new world is one where we must recognize that the shape of computers has radically shifted and that clients are, once again, fragmented.  We will not be able to write one client application to serve all people or all platforms.  The new web applications of this decade run headless on the web server and merely interact with multiple clients.  We will be on the hook for developing as many of these clients as we determine is necessary to serve the business need.  And these different computing form factors will likely be differently designed.

For instance, an HTML5 client is likely going to be common for many scenarios including seldom-used features like maintenance screens (it’s really easy to do these here).  On the other hand, for people on the go, they will need to perform some functions from wherever over a 3G/LTE connection.  For this, the business needs to select iOS/Android/WP8 for the target platform.  This mobile app with then just talk to the application running on the server.

Soon, we will need to develop some client apps that run on the upcoming wristwatch from Apple and the eyeglasses (Glass) from Google.  And with TVs becoming so cheap, it is just a matter of time before it makes more sense to write a client for a display in the office instead of hooking a full PC into it (we’ll control the UI with the TV remote).

Yes, an era of web development has passed.  It will certainly have a long tail, but existing web systems need to expose their functions with HTTP APIs in order to support clients for necessary platforms.  We will never, as an industry, stop chasing the dream of “write once, run everywhere”.  After all, it makes too much sense.  But as long as the definition of “everywhere” keeps changing, we will be forever chasing.

Prediction: Dell & others to sell new Windows Azure mainframe server

Dell is clearly getting into the Windows Azure business.  With recent news of Microsoft investing in the privatization of Dell, many are wondering what the future holds.  My predictions are more about Microsoft and Windows Azure than Dell.

For several years, Microsoft has been creating a new operating system for data centers.  This operating system has been called “Azure”.  For now, Microsoft has created its own data centers.  We may speculate that Microsoft is trying to become a hosting and data center company.  After all, why stand up data centers all over the world?

I think the Azure data centers are a means to an end.  Microsoft, at its core, is a platform company.  They build tools that the industry uses to build solutions for companies.  Microsoft doesn’t want to compete with Rackspace and OrcsWeb for business.  On the contrary, Rackspace and OrcsWeb are great customers.  Microsoft sees the change in the industry in computer.  Microsoft is designing a new server operating system that manages multiple servers.  In fact, this new operating system is a data center OS.  Windows Azure is an operating system for a data center.

Microsoft needs Dell to create a new type of mainframe.  This mainframe will run Azure and will fit into a normal data center cabinet.  Dell and Microsoft can collaborate and deliver on the dream of a private cloud.  With a server form factor that fits in existing data center, Dell and Microsoft can deploy Windows Azure into every I/T department and colocation facility in the world.  This cabinet would have a set number of CPU cores, RAM, and storage.  It would be “gridable” so that it could collaborate with other Azure servers in the data center.

If Windows Azure is only available in Microsoft data centers, it will not succeed in becoming as successful as Windows Server 2008/20012.  In fact, Amazon could purchase and provide Azure hosting as well in its offering.  At its core, Microsoft doesn’t want to dominate the data center hosting business.  Microsoft wants to create the next operating system for the data center that will dominate the server market and enable hosting partners all over the world to serve their customers.

What a Windows 8 workstation looks like

With all the hype about Microsoft Surface, we desk-dwellers might be left wondering what’s in Windows 8 for us?  In fact, all the media attention we see about Windows 8 is filled with folks dancing around and clicking keyboards to tablets in unison.

I have recently set up a new workstation configuration with Windows 8 at the Clear Measure offices.  Here is what it looks like.

On the bottom-right of the photo, you will see a Lenovo Yoga Ideapad 13”.  The screen is 13.3” in diagonal, but because Windows 8 mandates a 16:9 screen, the laptop is the same width as the old 15” dimension that we normally associate with a full-size laptop.  The screen is a bit shorter, but this is a full-size laptop.  In fact, the slightly shorter screen made it fit nicely on the tray table on the Southwest Airlines flight I took on the way to the MVP Summit.

The Yoga is amazing.  The battery life is outstanding, and I can routinely make it last five hours with continuous use.  The only complaint is the track pad.  It requires a firmer touch for the left mouse click than I’m used to.  If you aren’t familiar with the Yoga, it is first a laptop with a touch screen.  Then, you can fold the screen all the way back around to form a tablet.  The computer disables the keyboard so you can hold it in your hand.

imageNext, I have a regular, boring USB keyboard and USB mouse (I no longer like wireless mice or keyboards because of the battery changing maintenance required).  Mounted at the back of the desk is Halter dual monitor stand.  It clamps onto the desk and has 8” and 10” VESA monitor mounts.  Mounted on the arms are two ASUS VS239H-P 23” LED IPS monitors.  The keyboard, mouse, monitors, and a couple other small peripherals are all attached to the Toshiba Dynadock Docking Station (PA3927U1PRP).  This USB 3.0 docking station is amazing.  It has ports for CAT5, DVI, HDMI, audio, 2 USB 2.0 ports, and 4 USB 3.0 ports.  It runs all the desk accessories and only requires one USB 3.0 port on the laptop, which it has.

The results have been great on everything except the monitors.  The docking station uses DisplayLink technology to paint the images on the screen through the USB cable and Toshiba device.  The DisplayLink technology use the computer’s processor to paint images on the screen.  Playing some video maxed out the processor a few times.  Now, if I wasn’t using my development tools, it would have been perfect.

In the end, I ended up plugging one monitor straight into the HDMI port on the laptop and leaving the other large monitor on the docking station.  The speed of the screen refresh isn’t seamless with this dock, but it does a decent job.  I only notice a jump when playing video or other fast refreshes.

This setup is working very well for me.  I run all kinds of programs on this configuration including Adobe Photoshop and Visual Studio 2012.  I spread screens out across the two monitors.

I would like to know what Windows 8 configuration you are running.  Post a comment here.
Feed: http://feeds.jeffreypalermo.com/jeffreypalermo