Wednesday, June 08, 2011

JustDecompile continues to evolve

JustDecompileIt's only been a few weeks since we introduced the JustDecompile beta to massive online audiences, and in the time that has passed JustDecompile has been downloaded thousands of times. The early feedback has been overwhelmingly positive, and we're happy that the community is as excited as we are to rethink the free .NET assembly browser and decompiler. You can join in the conversation and share your ideas by visiting the official JustDecompile UserVoice page today.

JustDecompile has already been updated a few times since the original beta, adding new functionality, improving performance, and refining decompiled code output. This is an ongoing process, but we hope that the early and frequent access to new bits helps you get the most out of JustDecompile and encourages you to stay engaged in the beta.

Latest Updates

This week, JustDecompile received another round of updates, building on the improvements introduced around the time of TechEd. Full release notes are available online, but I thought I'd highlight some of the things now in JustDecompile that were not in the original beta release:

  • Support for decompiling to VB (in addition to C#)
  • Support for processing variable names from PDB symbols (when available)
  • Ability to customize code viewer fonts, colors, and sizes
  • Support for viewing (and saving) assembly resources
  • Tool tips that display the full type name
  • Better decompiling support for:
    • nested types
    • anonymous delegates
    • lock statements
    • yield statements
    • generics
  • Improved installer

Clearly, this is all in addition to work on memory optimization, and lots of little things being done to improve the product. In the list above, four of the major items (all italicized) are a result of direct feedback through UserVoice! We're listening and improving quickly based on your input, so don't miss your chance to help shape the JustDecompile roadmap.

Custom Colors

One of the new features in the latest release is support for customizing the Code Viewer fonts, colors, and sizes. JustDecompile now provides a simple, interactive dialog, complete with a color picker, for customizing the colors for various code "tokens," along with support for adjusting the font and font size. There are two themes built-in to JustDecompile today: the default and a theme called VibrantInk (essentially, a dark background theme).

Any customizations you make to the theme are saved in the JustDecompile settings file (located in the JustDecompile AppData folder). So, while today's beta lacks the ability to easily add or share custom themes, you can directly modify the Settings.xml file to directly "import" your own custom theme.

justdecompile-colors

For an example, I've created a simple theme that simulates the code viewer stylings of Reflector 6.5 (yellow background, Segoe UI font, etc.). You can use this "theme" by simply replacing the <CodeViewSettings> XML in your settings file with the following:

File: C:\Users\{your username}\AppData\Roaming\JustDecompile\Settings.xml

<CodeViewerSettings>
<ColorSettings>
<ColorSetting>
<Name>Background</Name>
<Color>
<A>255</A>
<R>255</R>
<G>255</G>
<B>225</B>
<ScA>1</ScA>
<ScR>1</ScR>
<ScG>1</ScG>
<ScB>0.7529422</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Reference</Name>
<Color>
<A>255</A>
<R>25</R>
<G>144</G>
<B>55</B>
<ScA>1</ScA>
<ScR>0.009721218</ScR>
<ScG>0.2788943</ScG>
<ScB>0.0382043719</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Key Word</Name>
<Color>
<A>255</A>
<R>16</R>
<G>0</G>
<B>160</B>
<ScA>1</ScA>
<ScR>0.005181517</ScR>
<ScG>0</ScG>
<ScB>0.3515326</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Literal</Name>
<Color>
<A>255</A>
<R>128</R>
<G>0</G>
<B>0</B>
<ScA>1</ScA>
<ScR>0.2158605</ScR>
<ScG>0</ScG>
<ScB>0</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Text</Name>
<Color>
<A>255</A>
<R>0</R>
<G>0</G>
<B>0</B>
<ScA>1</ScA>
<ScR>0</ScR>
<ScG>0</ScG>
<ScB>0</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Write Usage</Name>
<Color>
<A>255</A>
<R>255</R>
<G>200</G>
<B>216</B>
<ScA>1</ScA>
<ScR>1</ScR>
<ScG>0.577580452</ScG>
<ScB>0.6866853</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>Read Usage</Name>
<Color>
<A>255</A>
<R>173</R>
<G>228</G>
<B>240</B>
<ScA>1</ScA>
<ScR>0.4178851</ScR>
<ScG>0.7758222</ScG>
<ScB>0.8713671</ScB>
</Color>
</ColorSetting>
<ColorSetting>
<Name>None Usage</Name>
<Color>
<A>255</A>
<R>173</R>
<G>228</G>
<B>240</B>
<ScA>1</ScA>
<ScR>0.4178851</ScR>
<ScG>0.7758222</ScG>
<ScB>0.8713671</ScB>
</Color>
</ColorSetting>
</ColorSettings>
<FontFamilyName>Segoe UI</FontFamilyName>
<FontSize>12</FontSize>
</CodeViewerSettings>

Enjoy!

Reflector Lists

One final JustDecompile highlight. If you've built-up a library of Reflector assembly lists over the years and want to bring those over to JustDecompile, one of the Telerik product team devs has created a simple WPF tool to help you do just that. You kind find the simple import utility on his blog and start enjoying your Reflector lists in JustDecompile today.

Keep enjoying the JustDecompile beta and stay tuned for more updates. Another refresh is just around the corner!

Friday, June 03, 2011

The Impact of Windows 8

microsoft-store-logoBy now, you've no doubt seen the first preview of Microsoft's follow-up to the hit Windows 7 release (if not, take five minutes and check-out the video on YouTube - don't worry, it's "official" and not a leak). Windows 8 finally has a name and a face, and we finally have a (public) glimpse of where Microsoft is driving the modern OS experience. The preview does not dive deep or provide the full story for Windows 8 (expect more details as Microsoft marches towards the September Windows 8 "BUILD" conference), but it does highlight some interesting facets of Microsoft's plan you should start to think about as a developer.

Win8 Preview Summary

For in-depth analysis of the the live D9 Windows 8 preview, and analysis of the follow-up preview in the aforementioned YouTube video, Windows "super fan" Paul Thurott has your ticket. Microsoft RD and long-time Microsoft insider Andrew Brust also has some interesting commentary on RDN. I'll leave the reporting to the reporters, and simply highlight some of the bigger revelations to come out of this week's news so we're all on the same page:

  1. Windows codenamed "Windows 8" will not ship this fall (no surprise)
  2. Win8 will offer a new Windows Phone 7 like "Start" experience (tile view)
    • Further, according to the D9 Q&A, it will not be something that can be turned-off. (We'll see about that…)
  3. Win8 will still offer "full Windows" (aka Explorer) to run "real apps"
    • Also according to D9 Q&A, OEMs will not be able to prevent/hide access to "full Windows." (We'll see about that…)
  4. The new Win8 experience will feature HTML5/JavaScript "app" experiences
    • Sinofsky has not ruled-out Silverlight, though. He defended Silverlight at D9, so we'll just have to wait and see how that mixes with this story…
  5. Win8 is fully embracing Metro UI theme and touch input

Look Past the Hype

Understandably, a lot of people are very excited by this week's Windows 8 preview. What's being shown is very new (for Windows), and uncharacteristically bold for Microsoft. It's amazing how many people seemed to need this preview to avoid full-out Microsoft depression.

It's important to remember, however, that this is not the first of Windows 8 we've seen. Active industry watchers have been leaking bits-and-pieces of Windows 8 for the better part of the the last year (much to Microsoft's displeasure). From those leaks and other information shared by Microsoft in that period, we also know this about Windows 8:

  1. It's being built to run on Intel, AMD and (most importantly) ARM chips
  2. It won't require any additional horsepower beyond Win7 (in some cases, less)
  3. It will likely integrate (to some degree) with WebCams/Kinect
  4. It may feature more integration with Xbox/Xbox Live/Xbox Avatars
  5. It definitely will feature more native integration with social media (twitter, Facebook)
  6. It will feature direct integration with a Windows (App) Store (confirmed this week)
  7. It will likely feature a renewed cloud integration story (based on Azure)
  8. It will focus on delivering super fast start-up, sleep, and wake times
  9. It will likely use the Ribbon UI throughout Windows Explorer
  10. It will offer native support for mounting ISOs (finally!)

Those last two items are small, but important. Mounting ISOs or using Explorer are features that only matter when you're still using "traditional" Windows. The new "Start experience" getting the attention this week is cool, sure, but Microsoft is not forgetting, abandoning, or even stalling "traditional" Windows evolution. This is still Windows at the end of the day, the OS powering millions of business machines, and that core experience will continue to incrementally improve with Win8.

What Microsoft is showing now is a recognition that it needs to do something dramatic to re-win the hearts and minds of Windows consumers. It needs something to stem the flood of computing happening increasingly on non-Windows devices. It's an important piece of Window's future, but not the only piece.

The Gloves Are Off

What many observers are failing to key-in on with these Windows 8 details is that this is the first time, in a long time, that Microsoft is evolving Windows without the anti-trust consent decree settlement hanging over their heads. In 2002, to avoid splitting the company, Microsoft settled it's long anti-trust battle with the government, agreeing to a number of constraints that have limited Window's ability to evolve aggressively. Those limits expired last month, so now Microsoft, in a landscape where Windows is clearly no longer a monopoly, is freer to make some aggressive moves.

Like what?

Well, the limits imposed in 2002 essentially said that Microsoft could not exclude competitors from Windows, and conversely, that it must make Windows interoperate with non-Microsoft software. The net effect has been that it is difficult for Microsoft to build vertically integrated solutions because doing so could be perceived as excluding competitors.

With that regulation now a footnote in the history books, Microsoft can theoretically pursue vertically integrated strategies that have made rivals Apple and (to a lesser degree) Google very successful over the last 10 years. For example:

  • Maybe Microsoft will introduce tighter integration between Windows Phone, Windows "Slate" (or Tablet or Pad or whatever), and Windows PC.
  • Microsoft should finally be able to add features to Windows that have been conspicuously missing (like mounting ISOs, and maybe a native PDF reader, or more robust unzipping tools).
  • Microsoft might finally start shipping Windows with more of its "core experience" software pre-installed or embedded, like Live Writer (which I'm using now), Zune media experiences, or maybe even Silverlight. And let's not forget that $8.5 billion Skype purchase. We can virtually count on that playing some role in Microsoft's evolving Windows strategy.

Whatever the case, Microsoft is finally free to boldly create experiences that are "better with Microsoft" rather than always creating vanilla solutions designed to support everyone equally.

Bottom Line Windows 8 Impact

With the hype stripped away, and the full perspective in focus, what is the bottom line impact of the Windows 8 news up to this point? What is the real value in this week's very early preview? I think there are a few important takeaways:

  1. Windows 8 is being designed for a multi form-factor world There is a reason most of the demos of Windows 8 so far have been on touch-enabled, ARM-powered, "ultra mobile" devices. Microsoft is making it clear that Win8 is not a "PC" operating system with some device "layers" added last minute. Instead, Microsoft is showing that at its core, Win8 is being designed for different form-factors, processors, and input models. If nothing else, this week's preview plainly signals how Microsoft will bring Windows to tablets, and phones (maybe even replacing what we know as Windows Phone 7 today), while carrying traditional PCs in to the future.
  2. Windows 8 is a renewed push to bring more people in to the Microsoft developer ranks In 2000, Microsoft introduced a brand new way to develop for Windows called .NET. At the time, Java was starting to takeover the Enterprise, and Microsoft needed a language to bring Java developers in to its camp and help reinforce its position in corporate computing. Now, roughly a decade later, Microsoft is watching consumer computing drive the success of phones and tablets, and they're eyeing the HTML5 push by powerful competitors, like Google. Making HTML5 and JavaScript a core part of the Windows 8 strategy does for Microsoft what .NET did 11 years ago. It makes the Microsoft platform appealing to developers with "non-Microsoft" skill sets, and potentially represents the next explosion in Microsoft developer community.
  3. Windows 8 will be significant, but not life changing (and that's good) Yes, Windows 8 will deliver some significant new experiences, it will embrace some new developer languages, and it will extend the reach of Microsoft to the new era of computing devices. But at the end of the day, it's Windows under the hood. Your apps will still run. Silverlight will still run. WinForms will still run. The changes coming to Windows 8 help propel Windows in to the future of computing, but they don't equate to a Windows reboot. Windows 8 is about new opportunities, not about changing the way things are done.

Don't get lost in the emotional buzz of this week's preview. Enjoy it for what it is- an early preview- but then turn to level-heads and facts to see how this all fits the bigger picture. As long-time Microsoft partners, and experts in providing solutions for Microsoft developers, you can be sure Telerik is at the front of the Windows 8 process and you can turn to us to provide our informed analysis of Microsoft's directions.

Until then, have fun with the Windows 8 preview and start planning your travel for Anaheim in September!