Quantcast
Channel: Scott Hanselman's Blog
Viewing all 1148 articles
Browse latest View live

One of Microsoft's Best-Kept Secrets - Python Tools for Visual Studio (PTVS)

$
0
0
Python Tools for VS
 

I've talked some about the sweet support for node and PHP in Azure. You can also File | New | Node.js express application in WebMatrix, or run WordPress and get intellisense as well.

"I installed windows just so i can use PTVS" - Comment on Hacker News

But I'm consistently shocked that folks forget about Python at Microsoft. I am a C# person, myself, but the Developer Division at Microsoft loves their languages. C++, VB, C#, F#, etc and they aren't messing about when they get serious about a language.

One of the least-known and most-kick-butt free products we have is PTVS - Python Tools for Visual Studio. Whether you're just interested in learning Python or you're a hardcore PhD who wants mixed-language Python and C++ debugging or somewhere in between, you gotta check this out. (Seriously, the mixed-mode debugging thing can't be overstressed...)

The Misconceptions

  • Microsoft? Python?  Oh, it must be all about IronPython, that's dead, right?
    • IronPython is a community-run project and just put an 2.7.4 alpha out last month.  PTVS fully supports IronPython, but the most advanced support is for standard CPython!
  • PTVS needs VisualStudio? I don't have any money.
    • PTVS, combined with the Integrated/isolated VS Shell is completely and perpetually free.  And with the advent of VS2013, they've combined them into a single installer: https://pytools.codeplex.com/releases (at bottom of page).

This is Real

Here's my VS2013 after installing PyTools (PTVS). I've got IronPython which is Python running under the .NET CLR, but I've also got Django apps as well as a regular CPython or making a new project from existing code.

Python inside VS

You can see that PTVS knows what Python engines I have installed, and I can easily switch between them. Here you can see that VS is refreshing the auto-completion (intellisense) databases for each version.

A list of Python Interpreters

There's also a complete REPL inside Visual Studio for each:

Python REPL inside VS

Developing Django Apps in Visual Studio

Maybe you're a Django (one of Python's Web Frameworks) web developer, you can use VS to develop your app.

Go File New | Django App, then make a new Python Virtual Environment from the Solution Explorer, and watch Visual Studio freaking installed pip for you (the Python package manager). It's very seamless.

Adding a Virtual Python Environment

Which gives me this:

Python in my VS and I'm FREAKING OUT

Then I right click on "dev" and just like NuGet (except this is Python, so pip) I install django:

Installing Django

Django is massive, so this took a while, but still! And.....I've accomplished Hello World in Django. Well, Hello Django, at least, launched from Visual Studio.

Hello Django

You should feel free to go and run through the whole Django Tutorial if you like and even deploy your app to Azure! You can host Django on a regular Azure Web Site, or a Virtual Machine if you want more control.

You can even interactively debug Python running in Azure on Linux from your Visual Studio instance! Check out Steve do just that at PyCon in this YouTube video.

There's a bunch of great educational and quick start Tutorials on the Python Tools YouTube Channel, they are a great resource to bookmark.

You can attach to remote Python processes over SSL and debug if you like.

Setting up Python Debugging

It's Really Integrated

Let's get real here for a second. Lots of projects plug stuff into Visual Studio. You may have made it this far into the post and be saying "oh, wah wah, this thing sets up some batch files and some syntax highlighting and calls itself a full-featured Python IDE."

Um, no. This is the best of VS and the best of Python and I'm blown away. Check this out. PTVS knows that I'm doing unit testing here and they've integrated Python Unit Testing with the VS Unit Testing UI.

Unit Testing in Python and VS? My heart can't take it!

This is debugging, remote debugging, cross language debugging, tool tips, watches, locals, call stacks, unit testing, full REPL with inline graphics, profiling, cloud publish, best of class CPython support, and so much more.

Nailed it

If you're into Python or knows someone who is, for reals, drink it in and get on board at https://pytools.codeplex.com. Check out their samples. They've got Python talking to Kinect, Python talking to Excel and more. Their PTVS Documentation is really good as well.

Just getting started? Well, go Learn Python The Hard Way.

Installing PTVS

Here's the complete install instrucitons. You need VS, the PTVS, and some Python.

PTVS is free

Finally, explore the Resources and Docs for Python Tools for Visual Studio, including, but not limited to Editing, Refactoring, Unit Tests, Django, IPython notebook and Azure cloud computing, Kinect for Python and Pyvot - an Excel to Python bridge.



© 2013 Scott Hanselman. All rights reserved.
     

Cross-Platform Portable Class Libraries with .NET are Happening

$
0
0

imagePortable Class Libraries are the Happy Little Feature that Could. They've been chugging along, doing their thing, and it's getting to the point where they are going to pop. That's pop in a good way.

If you're not writing .NET apps for more than one target, then you likely haven't bumped into them. However for those people who are writing .NET and want it to run on everything from Watches to Phones to Tablets to Xboxen to Desktops to the Cloud, they are enjoying what PCLs can offer.

There's still a few technical and legal challenges but I'm confident they'll be dealt with and we'll be able to create great binary libraries that can be used everywhere.

There's been a bunch of recent activity in the .NET community around Portable Class Libraries and cross platform .NET.  Overall, Portable Class Libraries are starting to see wider adoption, more open source libraries are being released with portable support, and the MVVM pattern is proving to be a great way to maximize code sharing in cross platform apps.

Portable Library Releases

First of all, there have been a bunch of new libraries released as PCLs recently.  Three of them are from GitHub's own Paul Betts:

  • Reactive UI– Reactive UI is an MVVM framework built on top of the Reactive ExtensionsVersion 5.0 was released last week, which is "totally Portable-Friendly", and supports the following platforms:
    • Xamarin.iOS
    • Xamarin.Android
    • Xamarin.Mac
    • .NET 4.5 (WPF)
    • Windows Phone 8
    • Windows Store Apps (WinRT)
  • Akavache - An asynchronous, persistent key-value store.  Version 3.0, which includes PCL support, was also released last week, and now "nearly all of your serialization and network access layer can be cross-platform." Akavache supports the same set of platforms as Reactive UI. This is a really amazing piece of software that deserves its own blog post. I'll do one soon.
  • Splat–"A library to make things cross-platform that should be." It has cross platform APIs for images and colors, with platform-specific extension methods to go back and forth between the platform-specific native types.  This looks like an elegant solution to the problem you run into if you want a portable ViewModel but you want to expose an image in it.

Next, Scott LoveGrove confessed:

I might be getting a little obsessed with PCLs at the moment. #IHaveAProblem (link).

Scott has released four portable libraries that help access web services:

  • Scoreoid Portable - A Portable Class Library that gives developers access to the Scoreoid scoring system.  The library provides a friendly .NET wrapper for the Scoreoid REST APIs, and uses our portable HttpClient NuGet package.
  • FanArt Portable - A Portable Class Library that gives developers access to the fanart.tv film, TV, and music image resources.  It also uses portable HttpClient.
  • Cineworld Portable - A Portable Class Library that gives developers access to the Cineworld film and cinema listings for the UK and Ireland.  It also uses portable HttpClient.
  • LiveSDKHelper - A helper library to more easily use the Microsoft Live SDK.  Contains strong types which the responses from the Live SDK can be deserialized into.

Another new portable library release is Budgie, a library for accessing Twitter. The .NET and Azure Teams have also released a PILE of Portable Libraries.

.NET Team:

Other teams:

Not to mention all these excellent Portable Libraries that you should be familiar with as well.

MVVM

IoC

Other

and of course, my favorite, the HttpClient, making HTTP calls easier, since, well, since a few months ago.

public static async Task<HttpResponseMessage> GetTheGoodStuff() 
{
var httpClient = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://hanselman.com/blog/");
var response = await httpClient.SendAsync(request);
return response;
}

//build/

One BUILD attendee took issue with the fact that speakers were telling people that you can't use platform specific functionality from a Portable Class Library, and wrote a blog post about how you can do this with abstraction and (preferably) dependency injection.

On at least 2 occasions recently, I have heard speakers tell their audience that you cannot reference a target-specific .NET library (such as a .NET Framework 4.5 library) from a Portable Class Library. While this is technically true, it doesn't tell nearly the whole story. Even though we can't reference target-specific libraries, we can still USE these libraries. We can call their methods and access their properties under the right circumstances. We can gain access to these libraries via an abstraction. My preferred method of doing this is...Dependency Injection.

Cross Platform .NET Coolness

There's lots of great examples of code reuse, like the podcast I did with the folks who wrote "Draw a Stickman EPIC." This app has 95%+ code reuse, all written in C# and is available in every App Store there is. Here's a few others.

Also, be sure to check out my talk from the Xamarin Evolve Conference - How C# Saved My Marriage. I talk about Portable Libraries in this talk. We'll hear more about Portable Libraries at the MonkeySpace Conference in Chicago in July of 2013.

clip_image001[6]

The British and Irish Lions app is a cross platform app targeting Windows Store, Windows Phone, iOS and Android. It uses Portable Class Libraries to share common code across platforms, Azure to host the services it uses, and the MvvmCross MVVM framework which I'm a huge fan of. The UK MSDN blog posted a case study of the development of the app, and there is also a prettier case study (with screenshots, infographics, etc) and a blog post by the developers.  In reference to Xamarin, MvvmCross, and Portable Class libraries, they state "Given the very short time-scales for the Lions apps (less than three months from the first line of code to our first release), we simply could not have delivered a rich native experience across all platforms without the common core."

Lions Rugby

Another cross platform app that uses MvvmCross is Aviva Drive.  This is an insurance company app that you can use to track your driving habits and hopefully get a discount on your insurance.  The app was featured in the Tech Ed Europe day 1 keynote (about 28:40 in), focusing on how it used Azure.

On the game side of things, Taptitude is a successful Windows Phone 7 game (or rather, a collection of minigames) which was ported to Windows Phone 8, Windows Store, iOS, and Android with the help of MonoGame and Xamarin.  The team reports that they have more than 99% shared code between all the platforms, which is especially important to them because they ship updates to the game about every week.

Xamarin

Scan.Xamarin.com

Xamarin has released an amazing .NET Mobility Scannerwhich analyzes code and tells you how "portable" it is and how compatible it will be with Xamarin.Android, Xamarin.iOS, Windows Phone, and Windows Store.  It lists all the APIs your code uses that aren't available on all the platforms, and an overall percentage of how portable your code is.  It's a very slick implementation and similar to what we've wanted to have for Portable Class Libraries.  Here's a sample report for the SignalR client library. The best part is that it does all this analysis without sending your code or binaries to Xamarin. It all happens in the browser. I love Xamarin.

Phil Haack (former PM for ASP.NET MVC and now working at GitHub) wrote a blog post titled Platform Limitations Harm .NET.  He argues that the Windows platform limitations should be removed from the EULAs for BCL NuGet packages.

I personally agree. Being able to reuse existing code, make portable libraries, and write apps that run in 64k or 64gigs is what makes .NET an interesting platform.



© 2013 Scott Hanselman. All rights reserved.
     

Hanselman's Newsletter of Wonderful Things: June 4th, 2013

$
0
0

I have a "whenever I get around to doing it"Newsletter of Wonderful Things. Why a newsletter? I dunno. It seems more personal somehow. Fight me.

You can view all the previous newsletters here. You can sign up here to the Newsletter of Wonderful Things or just wait and get them some weeks later on the blog, which hopefully you have subscribed to. Email folks get it first!

Here's the newsletter that I sent out June 4th.


Hi Interfriends,

Thanks again for signing up for this experiment. Here's some interesting things I've come upon this week. If you forwarded this (or if it was forwarded to you) a reminder: You can sign up at http://hanselman.com/newsletter and the archive of all previous Newsletters is here.

Remember, you get the newsletter here first. This one will be posted to the blog as an archive in a few weeks. 

Scott Hanselman

(BTW, since you *love* email you can subscribe to my blog via email here: http://feeds.hanselman.com/ScottHanselman DO IT!)

P.P.S. You know you can forward this to your friends, right?



© 2013 Scott Hanselman. All rights reserved.
     

Making a better, somewhat prettier, but definitely more functional Windows Command Line

$
0
0
Running htop via ssh under ConEmu
 

I've blogged before, in fact in 2004, (!) that Windows is missing the text mode boat. There is a massive opportunity for a great, nay, awesome and pretty, command line on Windows. If someone cracks this problem, they're gonna be heroes.

I love iTerm2 and its tabs, it's font handling, its simple elegance. I want this on Windows. In 2011 I found Console2, and then in 2012 I moved to ConEmu, a great tabbed terminal for Windows. Even then, it's not "pretty." I love these guys, and the ConEmu is truly an amazing and configurable piece of software, but it was written by developers for developers. I have to change the fonts to Consolas for the main font and Segoe UI for the rest to make it tolerable. Am I being petty and focusing on looks? Absolutely. Gorgeous and functional software is why Mac companies like Panic exist. They make things are are pretty AND functional. Windows folks could definitely "lovingly design" stuff more.

Here's some command line utilities that augment and help - but don't yet complete save - the Windows Command Line.

Clink

I just learned about Clink and I'm hooked. It's hooked as well, directly into your cmd.exe window! *rimshot*

We all know that there's Cygwin for a bash-like experience in Windows, but Click is a small utility that brings some of those productivity and editing features into cmd.exe directly!

  • Bash-like line editing from GNU's Readline library. Read more on Readline's keyboard shortcuts.
  • Better path completion (TAB).
  • Paste from clipboard (Ctrl-V). Oh yes.
  • Support for the completion of executables/commands, and environment variables.
  • Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
  • Improved command line history.
    • Persists across sessions.
    • Searchable (Ctrl-R and Ctrl-S).
    • History expansion (e.g. !!, !<string>, and !$).

The most significant change that Clink makes is to Tab Completion, moving to a more Bash-y "show them the choices" mode rather than the DOS-like "make them cycle through everything." Here I've pressed TAB over 2013-0 and Clink is showing me what I can choose from.

using Clink to make cmd.exe better

PowerShell ISE

Surprise! You already have this on your Windows computer. Ya, it freaked me out also. You can even hide the script pane if you want (Ctrl-R) and just use PowerShell ISE as a console! You get auto completion (see the Directory intellisense below), coloring, aliases and all the power of PowerShell.

Sure, it's not bash, but that may be a good thing. You may not have been exposed to PowerShell and the prospect may frighten you, but try it for a bit. They've aliased the obvious commands "ls" does what you'd expect as does "dir." Moving around will feel like any command prompt.

Not to mention if you are using PowerShell you already get a full debugger experience.

The PowerShell ISE

It won't win any awards for good looks (again, I come back to the importance of fonts, whitespace, and good typography...get a designer) but it is extremely functional and you already have it!

ConEmu lets you put your consoles in JumpLists!ConEmu

I've talked about ConEmu before, but I'll bring some of that over here. ConEmu takes your command prompt and adds tabs, status bar details, admin tabs, freakin'taskbar progress bars on copies (which is hot), and deep support for FarManager (Norton Commander anyone?)

Tabs in ConEmu in Windows

ConEmu is definitely a huge jump for console usability on Windows. The feature that really blew me away was Progress Bar integration. If you're familiar with Windows 7 you are likely familiar with the way that progress bars are overlaid over a Windows 7 Taskbar button. ConEmu looks at the current application running and some heuristics and overlays progress. Madness. Do a chkdsk and watch the progress bar. Love this little detail.

ConEmu Progress Bar

Git for Windows or Cygwin

If you want a Linux-like experience on Windows with a nice shell, Cygwin has long been a choice. However, since the release of Git for Windows most folks I know just install it and use the Git Bash. If you get Cygwin proper you'll get a much more complete "fake Linux" through their very competent set of command line tools, but for most, Git Bash will suffice.

Git Bash gets you close

What about SSHing? That's a fundamental part of command-line life for folks connecting to remote Unix machines. For me, I have a Linux farm I run on Azure that I often need to ssh into.

Random: I like to say I 'shoosh' into the machines, but folks keep looking at me weird. I thought this was a thing?

However, the SSH clients for Windows suck. Ok, they don't suck, but they are ugly. It's scandalous how ugly. Mad respect to PuTTY for being awesome and super functional, but it's like running Windows 95 in a window every time I launch it. Here's some better SSH clients, including a fork of PuTTY itself.

Bitvise SSH Client - more importantly, SSH from the command line

The Bitvise SSH Client is free for personal use and works great. There's a whole GUI, and, bless them, it's not pretty. However! There's also a command line version which is the REAL treasure. I just want to type ssh and be on my way.

In fact, I made a batch file called "ssh.bat" and put it in my PATH that just has this inside: "stermc %1" this means I can just type ssh user@hostname:port and be on my way. This is, for me, WAY easier than putty for most things. Bitcise is definitely worth checking out.

Find a SSH command line too like Bitvise

Kitty

Kitty is a fork of version 0.62 of the original PuTTY. There's also a portable version that I've put in my Dropbox utils folder (which is in my PATH) so it's on every machine I have automatically. Kitty has some nice features like Send to Tray, transparency, session launching (so you don't need Pageant), and lots of little poweruser features like "rolling up" the app if you Ctrl-Click on the Title Bar.

Kitty is a better PuTTY alternative

Kitty also can integrate into your browser to handle ssh:// links, which is a nice touch.

What console app improvers have I missed? What do you use on Windows? Sound off in the comments.


Sponsor: Big thanks to the folks at RedGate for sponsoring the feed this week. Take a moment and check out their free download of Deployment Mananager! Easy release management: Deploy your .NET apps, services and SQL Server databases in a single, repeatable process with Red Gate’s Deployment Manager. There’s a free Starter edition, so get started now!



© 2013 Scott Hanselman. All rights reserved.
     

If you're not using Glimpse with ASP.NET for debugging and profiling, you're missing out

$
0
0
Glimpse NuGet packages

I've blogged about Glimpse since the day I first saw it at Mix 2011's open source fest. It's popular, but frankly, Glimpse is so useful more people need to know about it.

From within your ASP.NET application in Visual Studio, install Glimpse using NuGet. You'll want to install the right Glimpse packages for the ASP.NET features you're using. For example, I'm using MVC4 and Entity Framework 5, so I will use NuGet and:

install-package Glimpse.MVC4
install-package Glimpse.EF5

These packages pull in the core Glimpse libraries plus the hooks for the specific ASP.NET modules and handlers needed for Glimpse to collect all the information about your application and present it to the client side. Be sure to pick the right NuGet packages for your project type.

The releases of Glimpse 1.4.0, and now most recently 1.5.0 improve Glimpse with the addition of a really amazing HUD (Heads Up Display). As you hover over each segment, it pops up with lots of details about the HTTP request, AJAX requests, deep inspection database interactions, and lots more.

Glimpse's new HUD

Here I've hovered over one segment and you can see the time it took to render this first page, and exactly how much time was spent during each activity, from rendering to action methods to database connections.

The Glimpse HUD expanded

You can move from the HUD to the standard Glimpse view. The best part is that each Glimpse Tab is a plugin itself! There's a whole community creating Glimpse Plugins. If you're using RavenDB, or NHibernate, or SignalR or whatever, you can get introspection into what's going on in a Glimpse Tab.

You turn Glimpse on and off with cookies, and you can setup security policy however you want. Glimpse isn't in the background creeping around - you have absolute control over when you want it used. Perhaps local and only when debugging, or perhaps always and with a specific cookie value, it's up to you.

Below you can see the actual SQL query executed by my Entity Framework code and how long it took to execute. I didn't have to change any part of my code or do anything more than just install Glimpse. Glimpse added the modules and handlers, and Glimpse policies can be installed to turn Glimpse on or off based on any option I can think of. I can even put Glimpse into production and only turn it on for certain requests, giving me a profiling tool I can peek at whenever I like.

EF SQL queries viewed within Glimpse

You likely use F12 developer tools in Chrome, IE and Firefox, and you've seen Timeline views before. But remember that Glimpse is JavaScript and HTML on the client - it's NOT a browser plugin - and it's a series of plugins on the server that give you a holistic view that's way more than just what's visible on the client.

Glimpse's Timeline View shows you exactly what's happening on the server, how long it's taking, and how it all fits together.

image

Sessions within Glimpse are all tracked and be optionally named. Since the server is collecting what's going on, you can pull out a popup browser window of Glimpse and connect to sessions from other browsers. Below I'm using an iPhone mobile emulator from ElectricPlum and inspecting requests from another browser window.

Using Glimpse to debug remotely against an iPhone Emulator

Glimpse is all open source and under the Apache 2.0 license. You can certainly help out, but the most interesting thing in my opinion is writing Glimpse Tabs - extending Glimpse to collect and show new data. Tabs can show technical stuff, but even business stuff that's specific to your application or style of application. For example, the Umbraco CMS could make a Glimpse Tab that puts configuration or technical Umbraco specific details up front. A line of business app could show tax details or shopping cart contents.

Glimpse is so useful that it's the first thing I install after I File | New Project on any non-trivial thing I'm working on. It's replaced Mini-Profiler as my go-to "production profiler" for web apps, and if you use ELMAH to collect and manage your application errors, there's even a Glimpse ELMAH plugin!

Check it out and go talk to Anthony and Nik about Glimpse on Twitter and thank for their work!

DISCLOSURE NOTE: The Red Gate company sponsors the Glimpse open source project. Red Gate also sponsored my blog feed this week. That is a cool coincidence, but it's just a coincidence. Red Gate does a lot of stuff. This post about Glimpse was written earlier. Just an FYI for y'all.


Sponsor: Big thanks to the folks at Red Gate for sponsoring the feed this week. Take a moment and check out their free download of Deployment Manager! Easy release management: Deploy your .NET apps, services and SQL Server databases in a single, repeatable process with Red Gate’s Deployment Manager. There’s a free Starter edition, so get started now!



© 2013 Scott Hanselman. All rights reserved.
     

The impact of a compliment

$
0
0
womenintech

This is the beginning of a great compliment. Here, the President is speaking about the Attorney General of California:

You have to be careful to, first of all, say she is brilliant and she is dedicated and she is tough, and she is exactly what you'd want in anybody who is administering the law, and making sure that everybody is getting a fair shake.

Here's where it goes too far.

She also happens to be by far the best-looking attorney general in the country.

Is it a gaffe? Is it a nightmare? Is it tacky or inappropriate or any of a dozen other adjectives? Perhaps. That's not the point. It's simply not necessary and it's completely beside the point. This happens every day and it happens often in computing and technology contexts.

How you look is a combination of things, not the least of which being a genetic roll of the dice that you can't control. How you are, how you conduct yourself and how your work is perceived by your peers is absolutely under your control. And it is from this place, where your merits lie, that compliments spring.

When you compliment someone in a work or professional environment solely on their looks you are minimizing years of hard work, struggle and mental effort.

I like compliments as much as the next person, but it's important to not conflate personal compliments ("What great shoes!") with professional compliments("What an amazing slide deck!).

I would not like to see a comment like "Watch the kind (and well-dressed and hot) Scott Hanselman presenting on HTML5."

I'd rather see "Watch this ruthlessly competent presenter talk about HTML5."

You get the idea. Compliments to other developers should always be gender non-specific like "ruthlessly competent" or "bad ass."If someone is good at their job, you can always say "you're really good at your job." No need for extras.

Too sensitive? No, this is simple. Compliment the work and the person's effort in the creation of that work.

Your favorite presenter's outfit, hair, makeup (or lack of all three) didn't make that code run.



© 2013 Scott Hanselman. All rights reserved.
     

Choosing the right Portable Power Phone/Tablet/Gadget Battery Charger

$
0
0

microusb-vs-miniusb[1]I travel a lot and I've talked about the importance of having power while on the go. I carry a small Four Outlet Mini Power Strip, for example, as well as an all-in-one travel plug adapter. I like tools and gadgets that solve more than one problem and/or have multiple-functions.

Until phone and tablet batteries batteries can last for a day of solid use, I also carry a portable battery charger. In fact, I have been testing a bunch over the last few months in search of the Perfect Portable Battery Charger. Spoiler Alert, it doesn't exist yet, but each of these chargers has one of those characteristics.

What do I want? I want a 8000mAh or greater portable charger that weighs less than a pound, has a USB port. It should support a full 2A output for iPads or large tablets, but at LEAST 1A for phones. Bonus points for built in cables for iPhone and micro USB. It should have Solar for emergency charging. Bonus points if it can charge two phones at once, or at least take a 2A load. The fewer dongles or adapters I need to carry, the better.

NOTE: For reference as you read, here's mini-USB vs micro-USB using a photo from PowerLet and Rob Jackson.

What kind of charger do I need?

As you look at these devices and their Pros and Cons, ask yourself these questions:

  • How many times will I need to charge a single phone in a day?
    • Look at your phone's battery and see if one of these batteries will charge it once, twice, or ten times.
  • How large a battery do I want to lug around?
    • Some of these are the weight of your phone, one over a pound and a half. You WILL notice that.
  • Do I live somewhere with a lot of sun and not a lot of outlets?
    • Consider a solar charger, especially if camping (or urban camping)

WakaWaka POWER Smartphone Charger

That black part isn't a phone, that's the battery and on the side is a Solar Cell. The WakaWaka will charge in sunlight in about 8 hours, or in about 4 hours when charge it using micro-USB input.

71-7UCaCJBL._SL1500_WakaWaka

Pros

  • Charges with Solar if needed
  • Extremely light, less than half a pound (200 grams!)
  • Flashlight with several brightness levels, good for camping
  • Small company, supports micro-finance and charitable giving

Cons

  • Only a 2200 mAh Lithium battery.
    • NOTE: Given that an iPhone 4/4s battery has 1420/1430 mAh battery this will give you about a single charge and a bit more. This device would be great with a 6000 mAh battery.

 

myCharge RFAM-0007 Portable Power Bank 6000

This simple and light charger charges with whatever micro-USB AC adapter you already have. It's claim to fame is the three built in cables for charging.

61N9tMfZVbL._SL1436_71cnXqNibzL._SL1500_[1]

Pros

  • Built in old-style iPhone cable. Built in mini- and micro-USB cable.
  • 6000 mAh, very light.

Cons

  • Built in cables are wonky. My iPhone one has failed and no longer charges. I can still charge via the one USB port.
  • In my experience it's power drops off FAST. Feels more like a 2500 mAh device.

Yell BPS66 6600mAh Dual USB Energy Bar

This weirdly shaped battery is a full 6600mAh and weighs only 180 grams (well under a half-pound.) It has a mini-USB in for charging and two USB ports for output. It comes with 8 little adapters, but I haven't used any of them. I just use what came with my phone. It will also charge a large iPad which is a great plus. Charges in about 9 hours.

81ExbDgkRNL._SL1500_201895144254

 

 

Pros

  • Very small and extremely powerful
  • Inexpensive given how much power it packs.

Cons

  • Still needs a mini-USB charger, preferably one that puts out 1A or more.

i.Sound Portable Power Max with 16,000 mAh

Ok, TO BE CLEAR, this thing is a BEAST. It weights 1.4 pounds, almost half what my Ultrabook laptop weighs, but - it puts out an obscene 2.4A if need be and can charge as many as 5 small phones at a time. It adds over 24 hours more usage to an iPad with a 16000mAh battery. This is a great overnight charger.

71n2sddoy-L._SL1500_814rHMTWcKL._SL1500_[1]

Pros

  • 16,000 mAh. There's nothing else that packs this much power. Charges an iPhone 10 times.
  • Up to 6 devices (if you use their splitter, otherwise 5)
  • Flashlight

Cons

  • Requires a proprietary AC charger - Don't lose it!
  • Heavy as heck.

PowerTrip 6000mAh with 50mA Solar Panel

This is a nice charger that plugs right into the wall. The solar panel is very small and will top it up a little in a day of full sunlight, although I've never been able to full the battery only on solar. It's the built in AC that sets it apart.

PowerTrip-with-iPhone-5powertrip2

Pros

  • Built in US AC plug. Just plug the whole charger into the wall. Big win.
  • 6000 mAh, 1.5A output.
  • Small solar panel built in.
  • Comes with three little 6 inch cables for mini, micro and Apple, useful.

Cons

  • Expensive and hard to find, about $100
  • Just one USB port

Related Posts



© 2013 Scott Hanselman. All rights reserved.
     

Initial Impressions - Intel Haswell 4th Generation Developer Prototype Ultrabook

$
0
0
Haswell Intel Prototype

I've reviewed Intel Ultrabooks before that were sent by the software development team at Intel. I review them from a software developer's point of view, so I'm pretty hard on laptops. I want them to be fast, light and fast. They should put up with a development environment being open most of the day, lots of compiling and some virtual machines for good measure.

Last year I looked at the 3rd gen "Ivy Bridge" ultrabooks:

After the Ultrabook experience, I replaced a Lenovo W520 with a Lenovo X1 Carbon Touch as my primary machine. My primary beef with the X1 Carbon is its screen resolution, a barely passable 1400x900, but everything else (plus it's just over 3 pound weight) keeps me using it. However, I get about 5-6 hours typing on the X1 but about 4 hours of "hard work" which just isn't enough considering I'd like to sit AWAY from an electrical outlet for once. If the X1 Carbon Touch had a better 1080p (or better) screen and Haswell, it could be the perfect PC. But do I really need Haswell?

All Ultrabooks are Thin Now

From The Verge, Intel has made some bold statements regarding the Haswell generation:

Intel's been branding the new processor tech as its "largest generational leap ever" with "the biggest performance improvement ever in battery life," as Intel's executive VP of sales and marketing Tom Kilroy boldly stated at Computex's opening keynote speech. The superlatives don't stop there: Navin Shenoy, vice president of the company's PC Client Group, told VentureBeat that "it’s the complete reinvention of the computer as we know it."

imageIntel folks are also saying things like "we can look forward to a 50 percent increase in battery life in the coming wave of devices, with no loss of performance."

So you'll forgive me if I have high expectations. I want this laptop generation to do nothing less than blow my mind.

The software development department at Intel has sent me an Intel Prototype Haswell Ultrabook to review, from a developer's perspective. it's a "no-name" brand (it says Intel on the outside) and it will never be sold. It's a reference hardware example, as it were. I'm not looking to review it as the Ultimate Haswell Laptop, rather as an example Ultrabook with the characteristics I would hope to see in other vendor's Haswell systems.

I will do an in depth review after a month or so of using this, but here's my initial impressions after using this Haswell Laptop exclusively for two full days of actual work.

Size/Weight

Three pounds, baby. That's the standard for nice laptops now. If it's five pounds, it's too heavy. This is a lovely size and a lovely weight. The best part about this Ultrabook is that it's 3.5 lbs and it has a 1080p screen. YES! That's almost enough for me to start using it full time over the Lenovo Carbon X1 Touch. Air-sized is the new size. If it's not this size then I'm not interested in it.

Look/Feel

While this is a prototype that will never be produced, it is definitely nicer than the Ivy Bridge I looked at last year. That one had a lousy keyboard and a nightmare trackpad that has since broken. (My wife can no longer "left click" with that Intel Prototype. This Haswell 4th gen has stepped up the casing part of the hardware, at least, considerably. Remembering that the insides are presumably what this device is aiming to showcase, regardless, the touch pad on this device is WAY better than my X1 (whose touchpad I despise with the heat of a thousand suns) and the keyboard, while it doesn't have Lenovo's legendary quality throw, is still comfortable and fast.

This machine is a matte, almost gunmetal black, with light but firm plastic housing. The major fail is the weak/flimsy power connector, but that's a small complaint. I would also have preferred dedicated page up/down buttons. Otherwise, it's a pleasant and appealing housing.

UPDATE: Sorry, of course, it has a touchscreen, as all Ultrabook's do, by spec definition. It also has a 1080p screen.

Specs/Performance

Setting this machine up from initial boot to a usable machine including Office 2013, Visual Studio 2013 and Windows 8.1 to just 5 hours, working at night watching TV. Mostly it was "next, next, next, finish" as the hard drive light blinked. Part of this is due to the speed of the machine, and part of it is due to newly re-written setup programs. With Office 2013's Click To Run I had Word running in 10 minutes, and VS2013 Pro Preview running in 30. Windows 8.1 took a few hours, and the rest of my developer tools were installed with Chocalatey (apt-get for Windows).

While I wasn't initially impressed with this Ultrabook having only 4 gigs of RAM and an i5 processor (Id' have preferred 8 gigs and an i7), I really haven't noticed a speed difference (yet) against my 3rd-gen i7 Lenovo X1 Carbon. I will do more profiling later to understand the characteristics of this machine and how it affects compilation and app debugging performance.

Battery Life

I have mixed feelings about this. I think the hype machine has us all in its grips. I keep hearing "12 hour battery life" and "all day battery life." But of course I realize that intellectually this means "lower the brightness and watch a movie that has the GPU do all the work and don't touch the laptop all day battery life." It's not "work really hard and compile and run VMs and Outlook and Visual Studio" battery life.

That said, I worked for 6.5 hours before the battery died. It wasn't 12, and it wasn't 10. It was nearly 7 and the brightness was at about 70%. I'm going to wait a bit and do some more formal benchmark. Yes, it's 50% more battery life than the pathetic 4 hours I get now, but it's not all day. Still, the hype machine. I am withholding judgment because it's clearly BETTER, and it's just been a few days.


Disclosure of Material Connection: Intel sent me this Haswell Ultrabook in the hope that I would review it on my blog. Regardless, I only recommend products or services I would use and think you would find useful. This opinions are mine and mine alone as is this entire post. I am disclosing this in accordance with the Federal Trade Commission’s 16 CFR, Part 255: Guides Concerning the Use of Endorsements and Testimonials in Advertising.



© 2013 Scott Hanselman. All rights reserved.
     

Download Visual Studio 2013 while your feedback still matters

$
0
0

That's a lovely scrollbar!

Lots of stuff is happening at MSFT right now. Windows 8.1 is around the corner (did you download the 8.1 Preview?) and development is still happening on Visual Studio 2013.

UPDATE: Don't like the Light Theme? The old VS2010 Blue Theme is back, use it instead. Use whatever Theme relaxes you and whatever text colors make you happy.

Change your theme

Use whatever colors make you happy. Here's 2013 with the 2010 theme.

vs2010

Anyway, the ASP.NET and Web Tools team is hard at work on VS 2013 with Web Tools. Remember that the tooling for ASP.NET was pulled out of VS in 2012 and remains an "out of band release." This gives us more flexibility than we had before and will let us get more time to put features in and fix bugs than some groups.

Truth is, the next 4-6 weeks is when we need to be fixing bugs and finding any edge cases or weird stuff. For example, we know that Glimpse doesn't work well with Web Forms and FriendlyUrls. We are actively working on that now.

Download Visual Studio 2013 (and ASP.NET with Web Tools) while your feedback still matters.

What we need from you is bugs and feedback. You can put suff on:

Should you install VS2013?

I have it installed on all my four machines and nothing has broken yet.

Since Visual Studio 2013 installs side-by-side with VS2012 and VS2010, if you already have .NET 4.5 and VS2012 it's not that risky to install VS2013. This has a Go-Live license and includes .NET 4.5.1.

RISK: If you have only VS2010 and .NET 4.0, .NET Framework will upgrade your .NET 4.0 to 4.5.1. If you are shipping to a server with .NET 4 you'll likely be OK, but you ARE taking a risk, so don't use a work machine you deeply care about to test on if you also have to ship .NET 4.0 only code.

BENEFIT: That said, anything that breaks under 4.5.1 we DO want to know about. Meaning, if ASP.NET 4.5.1 breaks your ASP.NET 4 app we need to know and we will only find out if you test. But, don't use the only machine you have to work on every day if it's all you have to ship with.

We would REALLY appreciate folks testing ASP.NET 4.0 apps to run them up ASP.NET 4.5.1 and find bugs. It's that scenario that is the most interesting.

What do you need to get?

All this works in the Free Web Express version so you don't need to have a paid copy of Visual Studio to install VS2013.

Useful VS 2013 features

There's lots of new stuff (check the ASP.NET Release notes) but here's just a few highlights:

Edit and Continue for 64 bit applications - In VS2010 and VS2012, the edit and continue option is disabled by default when creating a new web application project. In VS2013 preview, we turned it on by default. You can find this option on the Web tab in the web project’s properties window.

One ASP.NET with Updated Templates - You'll see this in my talk at BUILD on What's New in ASP.NET and Visual Studio 2013. The dialog isn't done, but we are moving forward with lots of new improvements. Also, ASP.NET includes Twitter Bootstrap out of the box as the default template.

Extensible Scaffolding Framework with new Web Forms Scaffolds and improved MVC scaffolders. You can now enable an ASP.NET app for MVC or Web API and get all the required packages via NuGet. This moves us towards One ASP.NET. There is no "MVC Project Type" or "Web Forms Project Type." There is just one and you can mix and match as you like.

image

Entity Framework has Async Query and Save support, better POCO support, improved perf, connection resiliency, and Code First mapping to Stored Procedures (and more).

VS tooling enhancements - Editor enhancements, Browser Link. There's an all-new HTML editor that understands HTML5 at the core, lots of stuff there but you'll be most impressed with Browser Link (name will likely change)...it's a bi-directional link between ALL running browsers and Visual Studio, powered by SIgnalR.

3324.clip_image001_thumb_10A440B5

So you can do this:

Updating two browsers and an iPhone from VS2013

New Authentication & Identity Model - Auth and ASP.NET Identity is being fixed and rewritten with extensibility in mind. That includes the existing support for Google, Facebook, Microsoft ID, Twitter, Open Auth in general as well as Windows Auth and Windows Azure Activity Directory. (That last one means you can run an intranet app in Azure and authenticate it against your company's existing Active Directory! That means cloud-hosted intranet apps.)

aspnetauth

New Web API and SignalR functionality - Web API now supports Portable Formatters that can be shared on client and server and you can create clients that work on Windows Phone and Windows Store apps. Web API is also updated to support easier Unit Testing of Controllers. Web API also supports AttributeRouting via an OSS contribution from Tim McCall, and CORS via an OSS contribution from Brock Allen. ASP.NET Web API also supports OWIN and OWIN hosts (it can be hosted outside IIS or in your own Service). SignalR now has iOS and Android support via MonoTouch and MonoDroid in Xamarin tools! SignalR also includes a Portable .NET Client.

We are also (quietly) making other changes moving towards bigger ones, including removing the "Windows-only" Restriction for the ASP.NET Project codenamed "Katana" that will be a big part of the next version of ASP.NET and is a part of the plumbing of this release of ASP.NET as well.

A few of my favorite small Non-ASP.NET specific features are viewing method return values in the debugger (duh!)

Return Values

and "Peek Definition" which lets you look at a method definition without opening the file.

Looking at a method definition without opening the file

Also, the return of "RockScroll" in the scrollbar:

That's a lovely scrollbar!

Consider also getting the newly open source "Web Essentials" - This is our "unofficial Labs" extension where we try crazy stuff. We hope you dig it and even better we hope you help us make it all better.



© 2013 Scott Hanselman. All rights reserved.
     

Do you have a digital or social media will? Who will maintain your life online when you're dead?

$
0
0
Will used via CC - Flickr user Ken Mayer http://www.flickr.com/photos/ken_mayer/5599532152/in/photolist-9wP4PN-9wP4Sf-8KxmQx-f7FzSF/

As we continue to pour our few remaining keystrokes into walled gardens we should be asking ourselves - who controls our content? You don't want all your words to be wasted so I hope you own your own domains and have backup copies of all these years of content.

If you die, will everything you've written become a 404? Some people choice to quit the internet, commit infosuicide and make everything return "410 Gone" but most us want our content to live on.

If you die, who will maintain your sites?

If you have kids, you likely have designated a godfather or godmother to raise your kids if you're gone. You should also designate a blogmother and blogfather.

If you  have a Google Account (although, oddly and sadly, not a Google Apps account) you can set up the Google Inactive Account Manager to decide what you want done with your account when it's 'inactive' (you're dead). You can have your data sent to a relative, or have the account deleted. It's a great idea.

You can also sign up for a service like Legacy Locker which promises to manage all your digital stuff and handled the hard questions like "is he or she really dead?" and "are you the digital beneficiary?" At $30 a year or $300 one time it seems a little spendy, but it exists and there's clearly a market for the idea.

Here's what you can do for free.

  • You should already have your content and life backed up in three places, one of which being the cloud.
  • You should have a "Getaway Thumb Drive." This is your "the house is burning, RUN" drive.
    • Consider using TrueCrypt or BitLocker To Go to encrypt one and give a copy to two friends or family members (or lawyer). Make a "readme.txt" or a "soiamdead.txt" explaining what you want done with your sites, passwords, etc."
  • Add your social media sites, blogs, code, repositories and anything else as an asset in your will that is handled by an executor like any other asset.

Even the US Government thinks we need a Social Media Will and I agree. Except for the part where you give your friend an Excel sheet with all your passwords in plaintext. Oh, US Government, you!

They suggest:

  • Review the privacy policies and the terms and conditions of each website where you have a presence.
  • State how you would like your profiles to be handled. You may want to completely cancel your profile or keep it up for friends and family to visit. Some sites allow users to create a memorial profile where other users can still see your profile but can’t post anything new.
  • Give the social media executor a document that lists all the websites where you have a profile, along with your usernames and passwords.
  • Stipulate in your will that the online executor should have a copy of your death certificate. The online executor may need this as proof in order for websites to take any actions on your behalf.
  • Check to see if the social media platforms have account management features to let you proactively manage what happens to your accounts after you die.

You should have a plan for your blog, your domains, and anything that has a login. I use a Password Manager and my family has access to that as well.

This may seem morbid or overwhelming, but this is a project that should take you only a few hours. Imagine your family, spouse or partner in the wake of your death and how it will feel for them, wondering how to manage all this digital flotsam you've left. They'll have no idea where to start. It could take them months, or never, to figure it all out. Just take a few hours and write it down.

* Photo via Ken Mayer on Flickr, used under CC



© 2013 Scott Hanselman. All rights reserved.
     

A rich new JavaScript code editor spreading to several Microsoft web sites

$
0
0
Where is this JavaScript-based editable code area coming from?

I noticed yesterday that some C#, JavaScript and CSS files I had sitting in SkyDrive were suddenly editable.

Editable code in SkyDrive

Not just editable, but there's also autocompletion of strings (not quite intellisense, as it's just one file at a time) and token/symbol recognition.

Editable code in SkyDrive

Plus, this editor looked REALLY familiar to me. I started looking.

I looked over at the Windows Azure Portal, where developers can write node.js to make web services directly in the browser. Here we've got dropbox autocomplete, tooltips with syntax errors and even some basic symbolic refactoring!

Azure Mobile Service's rich code editor

Below you can see the editor in Azure Mobile Services throwing a tooltip syntax error. Is this happening on the server?

Untitled2

Then I remember TypeScript's "playground" online that shows how TypeScript turns into JavaScript. This is split-screen with TypeScript on the left and JavaScript on the right.

The TypeScript Playground

Then I went to look at TFS Online's stuff at http://tfs.visualstudio.com/ where I made an account http://hanselman.visualstudio.com to host private Git repos for side projects.

Inline comments in TFS online

Notice that in TFS Online this editor is used for diffs and comparisons, but also includes inline threaded comments! This is all in JavaScript, people.

The editor in a side by side diff

I brought up F12 tools just to check.

The javaScript editor open in SkyDrive

That's pretty unambiguous. Looking at the CSS by just clicking on editor.main.css. The "vs" in the div's class point to a vs-theme.css that I presume is to set the colors and make the text editor look familiar.

editor.main.css

Looking in editor.main.js, it's all minified, but it's cool to see.

editor.main.js

This JavaScript code editor/viewer component is on a TFS site, an Azure site and a SkyDrive site, being used very different divisions across Microsoft. Very cool to see code reuse, but also a good experience replicated. Kudos to the SkyDrive team for recognizing a good thing and putting it into production. It'll be interesting to see where else this editor pops up in the future.



© 2013 Scott Hanselman. All rights reserved.
     

Download Windows Live Writer 2012

$
0
0

imageWhy is this blog post called "Download Windows Live Writer 2012?" Because that's all I wanted to do. I love Live Writer. If you love it too, put a note in the comments and maybe the team will notice, because I will carry Windows Live Writer with me until you pry it from my cold, dead hands. I use Windows Live Writer exclusively for writing my blog posts and I recommend you use it too. Windows Live Writer is the best windows blog authoring application I have found so far.

This post now exists so when I google for download Windows Live Writer I will find it.

The TL;DR version of this post is this:

I googled with Google for "Windows Live Writer 2012" and got this mess, including the slightly creepy "you visited this page on" message. Um, thanks for noticing.

* These images are poorly resized on purpose you don't think they are clickable.

image

When I googled with Bing for "Windows Live Writer 2012" I got this mess. Three results from a bunch of evil download sites that I don't trust because they will just install toolbars and I'm generally afraid of them.

image

The second link looks promising since it's at Microsoft's own Download Center, BUT the date is from 2009.

Finding this thing is too hard so this blog post exists so you can find it and because I felt like complaining a little. Just a little.

Again, the point of this post is this:

Have a nice day!



© 2013 Scott Hanselman. All rights reserved.
     

Hanselman's Newsletter of Wonderful Things: July 2nd, 2013

$
0
0

I have a "whenever I get around to doing it"Newsletter of Wonderful Things. Why a newsletter? I dunno. It seems more personal somehow. Fight me.

You can view all the previous newsletters here. You can sign up here to the Newsletter of Wonderful Thingsor just wait and get them some weeks later on the blog, which hopefully you have subscribed to. Email folks get it first!

Here's the newsletter that I sent out July 2nd.


Hi Interfriends,

Thanks again for signing up for this experiment. Here's some interesting things I've come upon this week. If you forwarded this (or if it was forwarded to you) a reminder: You can sign up at http://hanselman.com/newsletter and the archive of all previous Newsletters is here.

Remember, you get the newsletter here first. This one will be posted to the blog as an archive in a few weeks. 

Scott Hanselman

(BTW, since you *love* email you can subscribe to my blog via email here: http://feeds.hanselman.com/ScottHanselman DO IT!)

P.P.S. You know you can forward this to your friends, right?



© 2013 Scott Hanselman. All rights reserved.
     

Add Social Sharing Links to your Blog without widget JavaScript

$
0
0

This sharing button thing is out of controlI'm always trying to tidy up my blog layout and remove 'noise' but every time I try to remove those social sharing buttons for Twitter and Facebook I get a barrage of email asking me to put them back. Personally, I use bookmarklets in my browser for tweeting links, rather than relying on AddThis or ShareThis or any of the other garish sharing JavaScripts.

This sharing button thing is out of control. Links work too, folks. It's the web. Let's not have our blogs turn into Vegas Billboards.*

Twitter, Facebook and Google+ all offer JavaScript that they'd LOVE for you to add to your site. Tracking is one of the reasons that they'd love you to add these. That may or may not be a strong reason not to add their JavaScript, but a concrete reason not to is speed.

When you add three services' JavaScript you're adding three DNS lookups, three (or 20) HTTP requests for their JavaScript and images, and on and on. That JavaScript has to execute as well, of course, but the value it provides isn't justified over the speed and hassle involved in my opinion.

I wanted to add social sharing links without adding JavaScript. Fortunately all these services support sharing via simply visiting a URL. Stated differently, you can share via an HTTP GET.

Below, I'm adding "YOURURLHERE" in the places you'll want the URL for your blog post. You should change these templates for your own blog engineer. WordPress, BlogSpot, DasBlog, etc all have different macro formats. Your mileage may vary.

NOTE: Make sure you check that you have the right number of quotes and ampersands when adding these to your blog template.

Twitter

Note that twitter's sharing format includes the URL, the Title and the "via" which is your twitter name.

<a href="http://feeds.hanselman.com/~/t/0/0/scotthanselman/~https://twitter.com/intent/tweet?url=YOURURLHERE&text=YOURPOSTTITLEHERE&via=YOURTWITTERNAMEHERE">Twitter</a>

Facebook

<a href="http://feeds.hanselman.com/~/t/0/0/scotthanselman/~https://facebook.com/sharer.php?u=YOURURLHERE">Facebook</a>

Google+

<a href="http://feeds.hanselman.com/~/t/0/0/scotthanselman/~https://plus.google.com/share?url=YOURURLHERE">Google+</a>

You can share THIS post by clicking the links just below here on the same line as the Comments link.

Let me know about other social sites that support this kind of sharing in the comments, and I'll add your tips to this post.

* Yes, I know I have ads on this blog. It's taco money and it pays for the gadgets I review. It's hardly Vegas.



© 2013 Scott Hanselman. All rights reserved.
     

Review: The Blackberry Z10 - In the land of the blind, the one-eyed man is king

$
0
0

imageI've been hating my iPhone lately and I've got a love-hate relationship with my Lumia 920 so my buddy at AT&T loaned me a Blackberry Z10 for a month to try out. This is the same buddy who loaned me an AT&T Unite Hotspot in May. These are loans, I don't keep them.

Imagine a world where there is no iPhone and there is no Android and there is no Windows Phone. In this world, the Blackberry rocks. Not just rocks, present-tense, but rocked, past tense.

I mean, seriously, the RIM 950 had an Intel 386 and 4MB of RAM. That thing ran for a week on a AA battery and changed my life. Blackberry connected me. That was truly innovative. Research in Motion changed mobile forever.

The Blackberry Z10 changes nothing. It pains to me to say this, truly it does. I'm sure that in some parallel universe Blackberry is on top and Mr. Spock has a beard. But on this planet, Mr. Spock has an iPhone (or probably a rooted iPad Mini that runs LCARS).

rim-850

But, still, I ran with a Blackberry Z10 for a month and I tried, I really did. It's a lovely device, the Blackberry Z10, make no mistake. But, it's a Blackberry-iPhone. It's evil Spock, not Spock - a mirror if you will.

BlackBerry_Z10_front_and_back

Don't we all appreciate the innovation in phone design that's happened since the introduction of the iPhone?

image

But is it a Blackberry? Kind of. It has BBM (BlackBerry Messenger) but that's where it ends. It actually feels more like the lovely HP TouchPad's webOS than like anything I've seen in the Blackberry universe. It's certainly more visually polished and consistent than any Android I've used, has more clarity and depth than a Windows Phone and is some how as fluid as an iPhone.

Moving Around

You can move in and out of apps within a grid of four running apps. It's similar to the row of thumbnails you see on iPhone iOS7 or Windows Phone, except in a grid. One nice touch is that some apps, like the NYTimes for example, can opt-in and draw a custom tiny thumbnail of their own. Apps that choose not to just show a standard thumbnail. This is a small but under-utilized touch that has potential if it takes off with developers.

You swipe left and right between the Blackberry Hub on the far left, the running task list, and the actual app launch takes up the remaining screens.

IMG_00000017IMG_00000018 IMG_00000008

Browsing

The browser is excellent. It supports much of HTML5, CSS3 and Media Queries and modern sites like my blog and podcast site rendered great. It's not quite Mobile Safari but it's very close. Fonts render clear and clean and the 1280x720 screen is fantastic.

IMG_00000001 IMG_00000002 IMG_00000003

Your Information

The calendar has such potential, although the Month View is useless, as it is on literally ever smart phone I've ever used. It's all birthdays and wasted space. Week View tips over quickly as well once you start having anything that resembles a normal person's schedule.

IMG_00000011 IMG_00000012 IMG_00000014

Email and The Hub

The one differentiator that this Blackberry has is the omnipresent "Hub." It is always off to the site accessible from any app. It's Email and Facebook and Twitter and Texting all in one.

IMG_00000015 IMG_00000009 IMG_00000010

Pros

  • Mini HDMI connection - I'm not sure I'd never use this, but I love that I have the chance. However with things like the Chromecast (and Miracast, AirPlay and Wi-Di) there's just no reason to have a physical connection to a large screen anymore. Or at least there soon won't be.
  • Feels great in your hand - It feels like an iPhone 5. It's weighty, but not heavy, firm and well built. Even though the back comes off (a plus, so you can swap batteries) it still feels tight.
  • Fast - It never lagged, swipes were recognized and responsive
  • Blackberry Hub - Everything (Twitter, SMS, Email, etc) is all in one place. Reminiscent of the Windows Phone People Hub, but more "swiss army knife" with all your messages in one giant list, my only complaint is that the swipe to access the Hub is not-intuitive. You swipe up from the bottom, then turn 90 degrees and keep swiping to the right, like a right-turn sign.
  • Browser - I was really impressed with the browser. It supports CSS3 media queries nicely and scrolls fast.

Cons

  • Smallish battery - I never made it a full day without having to charge. To be clear, my iPhone barely makes it past 2pm, but I somehow expected more from a Blackberry. This battery is only 1800mAh.
  • Small App Ecosystem - The Angry Birds, Twitters, and Facebooks are all here, but once you start digging it's clear that this is a paper dragon of an AppStore.

If you're #teamblackberry and you have #iphoneenvy then this is likely the phone for you. However, there's no compelling reason to switch if you already have a smart phone. If you're in the market for your first smart phone, I'd consider one of the top three phones, as I just don't see Blackberry winning. Still, it's an impressive first outing.



© 2013 Scott Hanselman. All rights reserved.
     

Penny Pinching in the Cloud: When do Azure Websites make sense?

$
0
0

imageI had a great conversation on Twitter with Frans Bouma about pricing where he asked a number of questions that weren't easily answered in 140 characters. The pricing for these things isn't clear or easy. It's not clear or easy because it's complicated.

Frans is thinking about moving his product’s website over to Azure but he’s thinking it’s too expensive for his one website. Good question.

Here's my own Q&A about Azure Websites and Pricing. Folks are always emailing me with confusion so I'm writing it up. If you email me questions from now on (since I have only so many keyleft.com) I'm going to point you here.

Disclaimer: This is written by me, not Marketing. I'm sure they'll be on the phone in a minute when the see this post. It doesn’t make it less true, though.

I wasn't an Azure fan until June of last year. I run all my sites on Azure except for this blog (which is at OrcsWeb where it's been for years).

Today, I have 13 websites and two VMs (one Linux and one Windows) running in Azure. 11 sites run in one VM instances with Azure Websites in the West US, and the other two are in different datacenters.

Q: I have a small website on a custom domain that I'm paying US$5 a month for at FooHost. Should I move to Azure?

A: Probably not. While you can get 10 free websites per data center (meaning, more than 10, technically) to play in Azure, if you want to point a custom domain at it you'll need at least one "shared" (multi-tenant, meaning you get a slice of a CPU) website. That's US$9.68 a month, running full time. If $9.68 is too rich for you, stick with your $5 host. However, you do get to use the same management tools and deployment subsystems even with just one shared site so it depends on what you find valuable. Free sites are great for development and test scenarios where you can experiment with new concepts before you start spending money.

If you’re trying to get by with the minimum for a few bucks a month, I don’t think it’s far to compare Azure to a random $4.99 PHP host. You get command line management tools, lots of deployment choices, elastic scale in minutes whenever you want, etc.

Q: What if I am OK with $10 a month? What do I get with one shared site?

A: Whether it's 1 site or 500, all websites get Git deployment (and redeployment, also known as the "oh shit button") as well as deployment from Visual Studio and TFS. Everyone gets the same infrastructure and control panel.  You can also scale out to up to 6 shared instances if you need.

Each instance is a copy of your code running on a different shared server with its own quota of CPU and memory. We chose to limit the number of instances to 6 since having more than 6 instances ends up being more expensive than having one Standard server. You can have up to a 100 sites in Shared mode per data center, each site can have up to 6 instances.

Q: What about running my own VM and not using managed Websites?

A: If you know what you're doing, you can run your Website in a VM, but you need to setup IIS and manage it yourself. You need to keep the VM updated, and configure it however you want. But, you can get an extra small VM for $15 a month with 768MB RAM, which is nice. I run an instance of MySQL in one of these as well as PHP on Apache.

image

Q: When would I run a VM over a Website?

A. It comes down to what you want to manage. If you're cool with managing a VM and you want the flexibility, do that. If you want the OS and updates handled for you, as well as the deployment choices and scale out, use web sites.

image

Q: There's Free, Shared and Standard Websites. What's the difference?

A. Free means it's free, there's no uptime guarantee and you're low priority. I put demos and tests and dev on free stuff. I also run some services where it doesn't matter what the URL is because no one can see it. You can't use custom domains or SSL with free.

Shared means you're getting a slice of a computer and you're packed in with a lot of other folks on the shared plans. Most small websites (<20,000 PV) work just fine with shared.

Standard used to be called Reserved. You get your own VM and you can run ASP.NET, nodejs, PHP, etc (the same things you can run on Free and Standard). You can go from 1 core and 1.75G of RAM all the way up to 4 cores and 7G of RAM. I run all my sites in 1 standard small instance. Even with small I've got almost 2 gigs of ram and even though some of my sites (like Hanselminutes) do caching and may use 100-300 megs of RAM on a busy day, I've never had any issues.

If you need more than one server to run your sites you can scale out to 10 instances of your Standard server, if you need more than 10 server instances you can contact support services and they’ll work something out.

Here's the thing about clouds generally and Azure specifically. If you're not packing things densely you're not going to save money.

You can put up to 500 websites into a single instance using Azure Websites. That's not a typo. The more you put in the more value you get from your VM/standard instance.

Tip: Pack sites in tight. To be clear, if you are going to run more than 8 websites in Azure, you're a tool to not move into Standard/Reserved. It's just cheaper. Plus, if you have a bunch of sites in one Data Center (like, I had 10+ in West US) you want to put them all in the same VM. If you can keep serving traffic then effectively all sites you can put comfortably in your existing instance are "free." You're paying for the instance, use it.
image

Q. You're insane, what kind of sites could provide value and also be packed that tight?

A. There's lots of little sites, like my podcasts for example, that get a few tens of thousands or even hundreds of thousands hits a month. If you're working for a digital agency and putting together simple sites, you can start saving big money after about 6 to 8 sites.

Here's the Azure Pricing Calculator. In my opinion it's silly that it goes past 8 in Shared mode. Anything more than 8 shared sites is a waste of money.

image

You might look at this and thing, 8 for $77? That's real money and too rich for me. I'm going to stick with my $5 host. And you probably should if you can pack 8 sites onto that $5 machine.

However, things get cheap when you move to Standard mode. Once you have 1 standard website VM you can put lots of stuff on that one machine.

image

Again, each web site is all alone, isolated and separately deployable and manageable, but they share your 1 VM. But the value is that you never think about the management of the VM. It's always up to date, they're looking for malware, patching the OS, handling stuff. Web Sites sits above the VM and you use FTP, Git Deploy or MS Deploy to get your site there. You can run ASP.NET, PHP, node.js, Python, hell, Classic ASP if you want to.

You're paying for the compute time, 0.10/hr and you're being billed as it's running. If it runs all month long it's $74.40. I run all my sites inside this VM. It's actually a little large, and I could probably get away with an "Extra Small VM" if they would make one for Web Sites (the team is telling me that this is coming soon). Note that I am charged 0.10/hr even if my sites get no traffic, I am essentially paying for “renting” the CPU from Azure.

Q. When do I scale, and how?

A. I talk to customers a lot and most of the ones doing public sites always overstate their traffic. What they want is the ability to scale IF it becomes popular. You can scale UP (bigger instance) or scale OUT (more instances).

You can set you sites to auto-scale if you get on Hacker News or your startup becomes popular. Azure will add (and remove!) instances to make sure traffic gets handled. It will never go above or below the settings you choose.

image

This is a way to control costs. In this screenshot, I will never go above 3 instances, so my site can fall over if it gets slammed, but I decide how hard it tries to scale. I want to balance costs with availability. I could change this however I want from just 1 small VM to 10 large ones, so that's 1 core to 40, as I like.

Q: Are Azure Websites running all the time, 24/7?

A: If you have a standard VM with a bunch of websites in them, the VM is running all the time and you're paying for that VM. If one of the web sites isn't used for some large number of hours, it will be put to sleep, freeing up resources for other sites on the same VM. If you're worried about the web site not warming up quickly, you can use the build in Monitoring feature to not only ensure they are always up but that they are always warm.

image

Q: I’ve got an MSDN Subscription, what does that get me?

Link your MSDN and Azure accounts and you can get up to $150 a month in Azure credits, so up to two free VMs running all day for a month.

I've done a few posts on "Penny Pinching in the Cloud" that you may enjoy.



© 2013 Scott Hanselman. All rights reserved.
     

Saving and Retrieving Browser (and other) Passwords

$
0
0

The security balance is always user convenience vs. absolute security. You want security? Disconnect your computer from the internet. Don't save your passwords. Use multi-factor authentication. But that's not reasonable.

  • Browsers let you save the contents of Forms that you fill out, including passwords.
  • Some browsers sync those settings/histories/passwords to other computers with that browser running, if you are signed into a service with a master password.
  • Those passwords need to be stored somewhere locally, and they need to be retrieved by the browser (who is not running as administrator) so that the browser can fill our your form for you.
  • Someone writes code to retrieve those passwords.
  • If you, running as you, the user, can access those passwords, than other code running as you, the user, can also access them.

If you don't like this, don't save your passwords.

I think the concern (I know I was concerned) about the recent hubbub about browser security is the feeling of casual disclosure. It is uncomfortable when it seems easy to get your passwords. But they are still there.

Remember the 10 Immutable Laws of Security, specifically #3.

Law #3: If a bad guy has unrestricted physical access to your computer, it's not your computer anymore.

Every password vault has this behavior. If your passwords are stored locally, they may be encrypted but they are stored with reversal encryption.

Is this a security problem/bug/flaw? No. You saved your passwords as the user and they can be retrieved by code running as the user.

Here's some just a few lines of code to retrieve and dump your Windows Password Vault on Windows 8.

using System;

namespace DumpCredentials {
class Program {
static void DumpCredentials(Windows.Security.Credentials.PasswordCredential cred) {
Console.WriteLine("Resource: {0}", cred.Resource);
Console.WriteLine("UserName: {0}", cred.UserName);
Console.WriteLine("Password: {0}", cred.Password);
}
static void Main(string[] args) {
Windows.Security.Credentials.PasswordVault vault = new Windows.Security.Credentials.PasswordVault();
Console.WriteLine("{0}", vault.GetType());
foreach (var cred in vault.RetrieveAll()) {
cred.RetrievePassword();
DumpCredentials(cred);
}

}
}
}

Feel free to change your browser settings if you like to not save your passwords, or consider other password vaults like LastPass, KeePass, or 1Password.

Chrome

image

...and also...

image

Internet Explorer

image

FireFox

image

The code to dump Windows 8 Paswords is here. It will compile with VS2012 on Win 8. If you just want the EXE to run, download it here.



© 2013 Scott Hanselman. All rights reserved.
     

Over 400 Virtual Machine Images of open source software stacks in the VM Depot Azure Gallery

$
0
0
Open Source VM Images in Azure

When you want to make a new Virtual Machine from the Azure Portal, from the menu you "Create New | Virtual Machine" and you'll see the default images alongside images you have uploaded or created yourself.

A list of a bunch of Windows images

There's a pile of Windows stuff, and if you scroll down, some good Linux images like openSUSE, CentOS and Ubuntu.

Note: There's also a Visual Studio Ultimate 2013 Preview, so remember, you can sign up for a free Azure trial and remote into Visual Studio in the cloud and mess around if you like. If you have MSDN you have credits already, so associate your MSDN with Azure.

It's nice to have Linux on Azure, but this isn't the richest selection of images.

A list of a bunch of Linux images

There SHOULD be a new section here, in my opinion.

There should be a community section. There isn't. Yet.

Or here:

There should be an Open Source section. There isn't. Yet.

Ah, but if you go to the Virtual Machines area, then click Images, there is a link to Browse VM Depot. One of the great secrets of Azure. I'm working with them to get this more obvious, because it really is epic.

You can click Browse VM Depot at the bottom of the Images Pivot

And then…bam. Now we're talking.

Wow, a pile of existing images. More than 400, in fact.

There’s actually over 400 open source VM images in there, made by the community and companies like BitNami, and hosted by MS Open Tech. You can create VMs from this interface within the Azure Portal, but I think it's even easier to make VMs from the command line.

Get the Azure Command Line

This assumes you have the Azure Command Line Tools. You can get them one of two ways. If you have node and npm, just install azure-cli like this:

npm install azure-cli --g

Then get your account certificates and import it.

azure account download
azure account import "foo.publishsettings"

Then, select a subscription. This is all a one-time thing.

azure account set "some other account name"

At this point I can "azure vm create" this and that. I can manage most of the Azure Cloud from the command line. This tool works on Linux, Windows and Mac, is open source and written in JavaScript.

Creating a VM from an VM Depot Image

Let's say I want a Redis image. I can visit http://vmdepot.msopentech.com and find a Redis one. Here's a customized Ubuntu 12.04 image with Redis configured and hardened security.

If I select Deployment Script at the top, I will get a command line like this:

azure vm create YOUR_DNS_PREFIX -o vmdepot-147-6-1 -l "West US" YOUR_USER_NAME [PASSWORD] --ssh 

That vmdepot number there is the image identifier that tells Azure to copy that VM image over from the VM depot and make a new instance. Make sure you add --ssh or you won't be able to get in at all!

C:\>azure vm create hanselredis -o vmdepot-147-6-1 -l "West US" scott mypassword --ssh
info: Executing command vm create
+ Looking up community image
+ Retrieving storage accounts
+ Copying blob
+ Looking up image
+ Looking up cloud service
+ Creating cloud service
+ Creating VM
info: Deleting image
info: VM image deleted: vmdepot-147-6-1-8d169700
info: Blob deleted: http://hanselstorage.blob.core.windows.net/vm-images/comm
unity-520-3ed9b6e9-97c6-42f4-b2bd-349fca785b64-6.vhd
info: vm create command OK

At this point Azure has made the VM from this image. You can than open up endpoints and port forward to the outside world so you can access your service, or create virtual internal networks to keep this VM private.

VM Highlights

A lot of these images come from a startup called Bitnami that configures images with popular packages. Some highlights of this depot, IMHO, are Discourse, the new forum software from Jeff Atwood and friends:

Discourse

There's a recent Ruby Stack image:

The Ruby Stack

And a good Drupal one:

Drupal

As well as a nice Debian Wheezy image:

image

Remember, these are community driven so YOU can publish images of your open source stack if you want.

As with all galleries of community-grown stuff there will be some gems and some duds. I like the Bitnami stuff, for example, as they appear to know what they are doing. Regardless, use good sense and explore and evaluate before you bet your startup on an image. Still, these are a great way to get a VM running in minutes, not hours or days.

If you think that these images are useful, feel free to sound off in the comments and guilt inform the Powers That Be that you think this is useful. Or not. (I will make sure they see these)

Related Links:


Sponsor: Big thanks to Red Gate for sponsoring the feed this week. Be sure to pick up their Free eBook: 25 Secrets for Faster ASP.NET Applications - Red Gate has gathered some great tips from the ASP.NET community to help you get maximum performance from your applications. Download them free.



© 2013 Scott Hanselman. All rights reserved.
     

Leap Motion: Amazing, Revolutionary, Useless

$
0
0
Tom Cruise looks so cool in Minority Report

I desperately want it to work, don't you? Just like Minority Report. You wave your hands and your computer interface moves effortlessly.

Frankly, let's forget all that. I'll lower my expectations WAY WAY WAY down. I'd just like to wave my hand left and right and the system move a window between one of my three monitors? Seems reasonable.

This is what I want to feel like with the Leap Motion.

Amazing Minority Report Interface 

Here's how I really feel using Leap Motion.

Fantasia Fighting the Air

Venture Beat says:

The $80 device is 200 times more accurate than Microsoft’s Kinect, sensing even 1/100th of a millimeter motions of all 10 fingers at 290 frames per second.

Really? I find them both equally bad. 1/100th of a millimeter? That's lovely but it makes for an extremely hyperbolic and spastic experience. I have no doubt it's super accurate. I have no doubt that it can see the baby hairs on my pinky finger - I get it, it's sensitive. However, it's apparently so sensitive that the software and applications that have been written for it don't know how to tell what's a gesture and what's a normal twitch.

Hey, it's my fingers!

My gut says that this is a software and SDK maturity thing and that the Leap Motion folks know this. In the two weeks I've had this device it's updated the software AND device firmware at LEAST three times. This is a good thing.

Perhaps we need to wear gloves with dots on them like Tom Cruise here. When you hold your fingers together and thumb in, Leap Motion sees one giant finger. Digits appear and disappear so you are told to keep your fingers spread out if you can. This becomes a problem if your palm is turned perpendicular to the device. Since Leap Motion only sees up from its position on your desk, it can't exactly tell the difference between a palm down with fingers in and a hand on its side. It tries, but it's about 80% by my reckoning. That may sound great, except when it's 20% completely insane.

I also found that wearing my watch confused the device into thinking I had a third hand. I'm not sure if it's glints off the metal of the watch, but I had to take it off.

To be really clear, I totally respect the engineering here and I have no doubt these folks are smarter than all of us. Sure, it's super cool to wave your hand above a Leap Motion and go "whoa, that's my hand." But that's the most fun you'll have with a Leap Motion, today.

OK, you can see my hand.

There is an excellent diagnostics system that will even warn you of fingerprints. You'll be impressed too, the first time you get a "smudge detected" warning.

Smudge detected?

The software is impressive and organized, but on the down side, the Leap Motion Service takes up as much as 6-7% of my CPU when it seems something near it. That's a lot of overhead, in my opinion.

6% CPU?

The software that I WANT to work is called "Touchless for Windows." It's launched from the AirSpace store. This Leap Motion specific store collects all the apps that use the Leap Motion.

Having a store was a particularly inspired move on their part. Rather than having to hunt around the web for Leap Motion compatible apps, they are just all in the their "store."

The TouchLess app bisects the space above the Leap Motion such that if you're in front of the device you've moving the mouse and if you've moved through the invisible plane then you're touching the "screen." Pointing and clicking is a challenge to say the least.

Touchless for LeapMotion

Scrolling on the other hand is pretty cool and it's amazing when it works. You move your hand in a kind of forward to backward circle, paging up through web sites.

Scrolling is cool

It's not foolproof by any means. Sometimes the Leap Motion will go into what it calls "robust mode." I am not sure why the device wouldn't want to be "robust" all the time. It seems that this really means is "degraded mode." There are threads on the Leap Motion forums about Robust Mode. Lighting seems to play a large factor.

Here's me attempting to use the Leap Motion with Touchless to do anythingto this folder. Open it, move it, select it, anything.

Touchless is REALLY hard to use.

Today, I look at the Leap Motion as an amazing $80 box of potential. Just like the Kinect, the initial outcropping of apps are mostly just technology demos. It remains to be seen if the Leap Motion will mature in the coming months. I still think it's an amazing gadget and if you have $80 to blow, go for it. Set your expectations low and you won't be disappointed.


Sponsor: Big thanks to Red Gate for sponsoring the feed this week. Be sure to pick up their Free eBook: 25 Secrets for Faster ASP.NET Applications - Red Gate has gathered some great tips from the ASP.NET community to help you get maximum performance from your applications. Download them free.



© 2013 Scott Hanselman. All rights reserved.
     

Recent JavaScript Jabber Podcast - Microsoft, not Microsoft, and the Web

$
0
0

loraxI was a guest recently on a podcast called JavaScript Jabber. I enjoy checking out other folks' podcasts and how they run things. I actually talked to the guys about sound quality for about 30 min before the actual recording started.

Their show is about JavaScript exclusively so we spent about an hour talking shop.

Here's a few quotes...yes, I'm quoting myself. On my blog.  We talked about Open Source:

I don’t care if it’s not Entity Framework. If you want to use NHibernate or RavenDB or CouchDB, dude, knock yourself out. But ultimately, the dirty little secret about Microsoft is they want you to run on Windows. Okay, well you don’t run Windows. You guys run Macs. Okay. But maybe you’ll discover that Azure is actually a pretty kickass cloud service and you’ll run your stuff on Azure, which is Windows.

We talked about using the client machine more effectively:

I hear a lot of people say, "Hey, we run a web farm and we’ve got about ten machines in the farm and it just can’t handle the load. We’re going to need to buy an 11th machine." Then you talk to them and they’ll say something like, "Well we’ve got 10,000 people hitting the site," and I’ll think to myself, "Okay, you’ve got 10 machines in the farm and you have 10,000 people hitting the sites. All those people have quad processors, even if they have a phone. Are those processors really working hard? You’ve got 40,000 unused processors just sitting there and they’re waiting for your 10 processors to give them angle brackets. What if you gave them curly braces and let them do the work?”

I think the podcast turned out fairly well, although there was a little tension as I felt I was being asked to make declarative statements and defend historical stuff I didn't work on. I think I made it very clear that my opinions about the industry are just that, opinions, and mine alone. That said, we talked about node, JavaScript in general, the way the industry is moving with respect to where work happens (client vs. server) and a bunch of other things.

They called this episode "JavaScript Strategies at Microsoft with Scott Hanselman." Other than the "with Scott Hanselman" part, this title is problematic.

The hosts are fine folks and I had a pleasant time. I think because of the title of the episode this particular episode has been getting a LOT of Tweets and appeared on Hacker News and Reddit for a short while. I wouldn't have chosen this title, myself.

  • It implies I have anything to do with JavaScript at Microsoft.
    • I don't. I do work in Azure and Web Tools and I often give my opinions on the JavaScript Editor, on what we do with Node, and how frameworks like Ember and Angular will be presented in VS, but I am not in charge of anything. I give feedback just like dozens (hundreds?) of other random folks inside the Big House.
  • It implies I'm some how strategic, strategically involved or know strategery within JavaScript at Microsoft.
    • Again, JavaScript on the client is the Chakra engine and the IE team. I don't work for them, no do I claim (and never have) to speak for them.
  • It implies I'm a spokesman for Microsoft.
    • I'm an enthusiast and a teacher, but not a marketer or spokesman. I speak, and yes, I do have this blog, but it's mine and its writings and opinions are mine. I often write about Microsoft stuff because I work there, but I worked elsewhere for 15 years and blogged that also. I blogged and podcast before I got to Microsoft and I will continue to blog and podcast after I leave. I am not my job.

I would encourage you to check out the podcast episode yourself and see what you think. It also includes a complete transcription, which is a nice touch and very important.


Sponsor: A big thanks, and a welcome to Aspose for sponsoring the feed this week! Check out their Aspose.Total for .NET has all the APIs you need to create, manipulate and convert Microsoft Office documents and a host of other file formats in your applications. Curious? Start a free trial today.



© 2013 Scott Hanselman. All rights reserved.
     
Viewing all 1148 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>