VS2010: My Favorite Extensions

VS2010 - My Favorite Extensions
VS2010 - My Favorite Extensions

My favorite feature of VS2010 so far is the excellent extension support, which allows me to add in my favorite plugins from the Microsoft Visual Studio Gallery.

Since there are thousands of plugins in the gallery right now, I thought it might be useful to share the most useful extensions I’ve found (and currently use) so far:

In alphabetical order…

  1. AnkhSVN
    AnkhSVN is a Subversion Source Control Provider for Microsoft Visual Studio 2005, 2008 and 2010.
    AnkhSVN provides source code management support to all project types supported by Visual Studio and allows you to perform the most common version control operations directly from inside the Microsoft Visual Studio IDE.
    The Pending Changes dashboard gives you a unique insight in your development process and provides easy access to the source code and issue management features. The deep source code control (SCC) integration allows you to focus on developing, while AnkhSVN keeps track of all your changes and provides you the tools to effectively handle your specific needs.
  2. Code4Blog
    Code4Blog is a Visual Studio 2010 extension that allows to convert any code supported by Visual Studio IDE to HTML format with the same structure and colors. Main purpose of this extension is to prepare a code snippet to be published in rich documents, for example in blog posts, Microsoft Word documents or Help files. Some additional styling could be applied: max width and height of the code block, custom background (per code line), font family and font size, line numbering and others.
    Code4Blog is now published on CodePlex. You are welcome to work with the source code directly!
  3. JSEnhancements
    This extension provides outlining and matching braces highlighting features for Visual Studio JavaScript and CSS editor.
    Works both in JS/CSS files and HTML script/style blocks.
    Outlining is like in C# editor. It outlines {}’s, []’s and #region tags
    Brace highlighting is made from MSDN example.
    CodePlex page: http://jse.codeplex.com/
  4. PowerCommands for Visual Studio 2010
    PowerCommands 10.0 is a set of useful extensions for the Visual Studio 2010 adding additional functionality to various areas of the IDE.
    Visit the VSX Developer Center at http://msdn.com/vsx for more information about extending Visual Studio.
  5. PowerConsole
    This extension provides an extensible VS command window with default PowerShell integration. You can now script Visual Studio interactively in PowerShell, and enjoy familiar VS style syntax coloring and tab-completion.
    Prerequisite: Visual Studio 2010 RC (or above) + Windows PowerShell v2 (or above). After installation, open the new tool window from View->Other Windows->Power Console.
  6. Productivity Power Tools
    A set of extensions to Visual Studio Professional (and above) which improves developer productivity.
    (Tons more info at the VS Gallery Page: http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef)
  7. Regex Editor
    This sample was built to ease your pain when working with regular expressions.  It rehosts the editor in a dialog box and provides a basic language service to provide colorization, brace matching, sample testing grouping and selection tracking.  It shows re-hosting of the editor in a tool window, and provides a nice starting point for similar projects.
  8. VS10x Code Map
    VS10x Code Map is a Visual Studio 2010 extension that displays a graphical nested representation of the current editor window code (C# and VB.NET). It helps the developer  visualize type nesting, implemented interfaces, regions, member type and scope, as well as  quickly navigate to their respective position in the code editor.
  9. VS10x Method Block Highlighter
    Highlight entire methods with a colored-marker-like (standard green, yellow, cyan or magenta) background.

Status Update

I just realized that I’ve been totally slacking on blog posts here, partly because the content I want to post is relatively time consuming (development articles, photograph articles, etc.), and partly because it’s just so much easier to post random tidbits on Twitter or Tumblr.

If you have a moment, please follow/add me on both services:

Thanks for reading! =D

Steve Jobs: Thoughts On Flash

This is worth reposting as a whole, IMO:

Screenshot: Thoughts On Flash

Thoughts on Flash

Apple has a long relationship with Adobe. In fact, we met Adobe’s founders when they were in their proverbial garage. Apple was their first big customer, adopting their Postscript language for our new Laserwriter printer. Apple invested in Adobe and owned around 20% of the company for many years. The two companies worked closely together to pioneer desktop publishing and there were many good times. Since that golden era, the companies have grown apart. Apple went through its near death experience, and Adobe was drawn to the corporate market with their Acrobat products. Today the two companies still work together to serve their joint creative customers – Mac users buy around half of Adobe’s Creative Suite products – but beyond that there are few joint interests.

I wanted to jot down some of our thoughts on Adobe’s Flash products so that customers and critics may better understand why we do not allow Flash on iPhones, iPods and iPads. Adobe has characterized our decision as being primarily business driven – they say we want to protect our App Store – but in reality it is based on technology issues. Adobe claims that we are a closed system, and that Flash is open, but in fact the opposite is true. Let me explain.

First, there’s “Open”.

Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.

Apple has many proprietary products too. Though the operating system for the iPhone, iPod and iPad is proprietary, we strongly believe that all standards pertaining to the web should be open. Rather than use Flash, Apple has adopted HTML5, CSS and JavaScript – all open standards. Apple’s mobile devices all ship with high performance, low power implementations of these open standards. HTML5, the new web standard that has been adopted by Apple, Google and many others, lets web developers create advanced graphics, typography, animations and transitions without relying on third party browser plug-ins (like Flash). HTML5 is completely open and controlled by a standards committee, of which Apple is a member.

Apple even creates open standards for the web. For example, Apple began with a small open source project and created WebKit, a complete open-source HTML5 rendering engine that is the heart of the Safari web browser used in all our products. WebKit has been widely adopted. Google uses it for Android’s browser, Palm uses it, Nokia uses it, and RIM (Blackberry) has announced they will use it too. Almost every smartphone web browser other than Microsoft’s uses WebKit. By making its WebKit technology open, Apple has set the standard for mobile web browsers.

Second, there’s the “full web”.

Adobe has repeatedly said that Apple mobile devices cannot access “the full web” because 75% of video on the web is in Flash. What they don’t say is that almost all this video is also available in a more modern format, H.264, and viewable on iPhones, iPods and iPads. YouTube, with an estimated 40% of the web’s video, shines in an app bundled on all Apple mobile devices, with the iPad offering perhaps the best YouTube discovery and viewing experience ever. Add to this video from Vimeo, Netflix, Facebook, ABC, CBS, CNN, MSNBC, Fox News, ESPN, NPR, Time, The New York Times, The Wall Street Journal, Sports Illustrated, People, National Geographic, and many, many others. iPhone, iPod and iPad users aren’t missing much video.

Another Adobe claim is that Apple devices cannot play Flash games. This is true. Fortunately, there are over 50,000 games and entertainment titles on the App Store, and many of them are free. There are more games and entertainment titles available for iPhone, iPod and iPad than for any other platform in the world.

Third, there’s reliability, security and performance.

Symantec recently highlighted Flash for having one of the worst security records in 2009. We also know first hand that Flash is the number one reason Macs crash. We have been working with Adobe to fix these problems, but they have persisted for several years now. We don’t want to reduce the reliability and security of our iPhones, iPods and iPads by adding Flash.

In addition, Flash has not performed well on mobile devices. We have routinely asked Adobe to show us Flash performing well on a mobile device, any mobile device, for a few years now. We have never seen it. Adobe publicly said that Flash would ship on a smartphone in early 2009, then the second half of 2009, then the first half of 2010, and now they say the second half of 2010. We think it will eventually ship, but we’re glad we didn’t hold our breath. Who knows how it will perform?

Fourth, there’s battery life.

To achieve long battery life when playing video, mobile devices must decode the video in hardware; decoding it in software uses too much power. Many of the chips used in modern mobile devices contain a decoder called H.264 – an industry standard that is used in every Blu-ray DVD player and has been adopted by Apple, Google (YouTube), Vimeo, Netflix and many other companies.

Although Flash has recently added support for H.264, the video on almost all Flash websites currently requires an older generation decoder that is not implemented in mobile chips and must be run in software. The difference is striking: on an iPhone, for example, H.264 videos play for up to 10 hours, while videos decoded in software play for less than 5 hours before the battery is fully drained.

When websites re-encode their videos using H.264, they can offer them without using Flash at all. They play perfectly in browsers like Apple’s Safari and Google’s Chrome without any plugins whatsoever, and look great on iPhones, iPods and iPads.

Fifth, there’s Touch.

Flash was designed for PCs using mice, not for touch screens using fingers. For example, many Flash websites rely on “rollovers”, which pop up menus or other elements when the mouse arrow hovers over a specific spot. Apple’s revolutionary multi-touch interface doesn’t use a mouse, and there is no concept of a rollover. Most Flash websites will need to be rewritten to support touch-based devices. If developers need to rewrite their Flash websites, why not use modern technologies like HTML5, CSS and JavaScript?

Even if iPhones, iPods and iPads ran Flash, it would not solve the problem that most Flash websites need to be rewritten to support touch-based devices.

Sixth, the most important reason.

Besides the fact that Flash is closed and proprietary, has major technical drawbacks, and doesn’t support touch based devices, there is an even more important reason we do not allow Flash on iPhones, iPods and iPads. We have discussed the downsides of using Flash to play video and interactive content from websites, but Adobe also wants developers to adopt Flash to create apps that run on our mobile devices.

We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.

This becomes even worse if the third party is supplying a cross platform development tool. The third party may not adopt enhancements from one platform unless they are available on all of their supported platforms. Hence developers only have access to the lowest common denominator set of features. Again, we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms.

Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps. And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5. Adobe was the last major third party developer to fully adopt Mac OS X.

Our motivation is simple – we want to provide the most advanced and innovative platform to our developers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen. We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. Everyone wins – we sell more devices because we have the best apps, developers reach a wider and wider audience and customer base, and users are continually delighted by the best and broadest selection of apps on any platform.

Conclusions.

Flash was created during the PC era – for PCs and mice. Flash is a successful business for Adobe, and we can understand why they want to push it beyond PCs. But the mobile era is about low power devices, touch interfaces and open web standards – all areas where Flash falls short.

The avalanche of media outlets offering their content for Apple’s mobile devices demonstrates that Flash is no longer necessary to watch video or consume any kind of web content. And the 200,000 apps on Apple’s App Store proves that Flash isn’t necessary for tens of thousands of developers to create graphically rich applications, including games.

New open standards created in the mobile era, such as HTML5, will win on mobile devices (and PCs too). Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind.

Steve Jobs
April, 2010

http://www.apple.com/hotnews/thoughts-on-flash/

Revised Top 10 Cydia Apps for 2010

Update: iPhone 4 Jailbreak Info!
(https://blog.wolffmyren.com/2010/08/01/iphone-4-jailbreak-ftw/)

I recently rediscovered my old post about the Top 10 Essential Cydia Apps and thought it might be time for an update after my most recent jailbreak, as I’ve found some exceptionally cool apps since that time that are definitely worth highlighting. BTW, if you haven’t jailbroken your iPhone yet, and you’re still running OS 3.1.2 or lower, check out the blackra1n application at blackra1n.com. Way easier and quicker than the old methods of jailbreaking and you don’t have to reformat/restore your firmware to use it. I’ll post a quick tutorial after this post has been published, but even without instructions, it’s pretty dead simple – there’s only one button in the app. Just remember to shut down iTunes before you try it, otherwise your USB connection will get hijacked by it. (If you’re running OS 3.1.3 and you don’t have an iPhone 3G-S or iPod Touch 3G, this guide might be able to help you out: http://modmyi.com/guides/?p=3041)

My Top 10 Cydia Apps for 2010

  1. Grooveshark With a $3/month VIP subscription to Grooveshark, you can access your entire Grooveshark library from your iPhone and, oh yeah, listen to any song you can think of, immediately. I can’t even begin to explain how awesome this is; if you don’t yet have a Grooveshark account, get one now (free on your desktop, just costs $3/mo for the iPhone access & VIP account) at Grooveshark.com. You can thank me later. 😉
  2. SBSettings This is the reason I waited until 3.0 (and 3.1, and 3.1.2) were jailbroken before I upgraded. And honestly, I’d jailbreak my phone for this application alone, even if there were no other jailbreak apps available. It’s really that useful. I think this post explains it all: http://theappleblog.com/2009/06/22/sbsettings-why-i-still-jailbreak-with-3-0/
  3. iRealSMS This is the SMS client that Apple should have included in the iPhone from the beginning. Instead of having to close your current app to reply to a text message, you can reply directly from the message popup. You can also send a new SMS without leaving your app by pressing a hotkey (default is the volume up button, but you can customize this), and you can save a draft to your Notes application, which makes this super handy for jotting down quick notes, or even tweeting a command to your favorite task management application (I can add tasks to Remember the Milk over SMS via Twitter by prefixing “d rtm” to the task I want to add.)
  4. Backgrounder + Kirikae You know how Apple doesn’t let you run multiple apps at once in the stock iPhone OS? (Well, at least before iPhone OS 4.0 comes out…) These two apps let you do just that. Backgrounder is the app/extension that enables application backgrounding, so that you can choose whether or not an application quits when you return to the SpringBoard (press the home button). Kirikae allows you to quickly switch between running apps or launch new ones.
  5. Orbit Flipping through more than a couple pages of apps on your SpringBoard is a huge pain in the ass. Orbit is one of those apps that definitely should have been included in the stock OS – it allows you to view all the SpringBoard pages in an Expose-like fashion, and navigate directly to any page you like.
  6. Notifier (aka Reminder) Pretty simple app/extension, but very useful – you can set it to display all sorts of notifications in your status bar, like missed calls, voicemail, new e-mail, and unread SMS. Very nice to have.
  7. Insomnia You may have already noticed that your iPhone’s WiFi connection is dropped when the device goes to sleep, which is especially frustrating if you’re connected to an SSH session. Insomnia allows you to keep the WiFi connection active when the phone is sleeping or locked.
  8. Five Icon Dock Pretty self-explanatory; lets you hold five apps in your dock instead of the default four. (And I’m guessing that this might be a built-in feature by the time iPhone OS 4.0 drops, after seeing the iPad’s six-icon dock capability.)
  9. LockInfo (or Element – just released!) For those of you coming from the Windows Mobile world, you probably miss the “Today” screen that lists your calls, appointments and messages. Luckily, thanks to LockInfo or Element, you can have these back, on your lock screen or SpringBoard. I’ve been using LockInfo for months myself and can’t imagine my iPhone without it anymore. On the other hand, there’s been a lot of buzz about Element for quite some time now, and it’s just been released in the Cydia store. (BTW, LockInfo is a paid application and Element is currently free.)
  10. Winterboard (or Desktop/SMS Background) I’m still a little torn in regard to Winterboard. On the one hand, the abilities you get from it are incredible – SpringBoard background wallpaper, custom themes, widgets, keyboard mods, and more. On the other hand, it feels like it drags my 3G down to a snail’s pace, especially with the SpringBoard background enabled. For those of you with a 3G-S or iPod Touch 3G, however, I doubt you’ll notice the speed hit. In my case, I’ve chosen to use the Desktop/SMS Background application instead. You don’t get the custom icon themes or other extensions that you would get with Winterboard, but if all you want is a desktop background, it’s a lot faster (IMO).

Software Development Posts

I’ve started to compile my software development related posts into a nice little category for your reference here:

https://blog.wolffmyren.com/category/software-development/

There’s more to come from that category, both old posts and new, as I dig out old articles and categorize them correctly. =)

For a quick reference, please check out the following articles – they’re the most useful of the bunch so far, IMO:

Thanks for visiting! =)

Grooveshark for iPhone: Icon Fix

Don’t know about you, but the slightly offset icon for Grooveshark 1.x on the iPhone bugged me (yes, I really am that anal ;-), so I popped it into my image editor and tried to make it look a bit more like the stock iPhone icons by overlaying the glossy “button” look and adjusting the size to match the other icons I found.

Just click on the icon above, then save it to your desktop (or wherever) as Icon.png, then do the following:

  1. Connect to your iPhone via SSH, or use iPhoneBrowser (Windows).
  2. Navigate to the /Applications/Grooveshark.app folder.
  3. Replace Icon.png with the icon you downloaded above.
  4. Respring/reboot your iPhone, and when the Springboard comes back up, you should see the new icon. =)

One caveat: You’ll have to replace this icon using the steps above every time you get a Grooveshark update from Cydia/Rock/wherever until they fix the icon themselves, but it should work fine between updates.

Let me know if this works for you in the comments. Thanks!

(BTW, in case you haven’t installed Grooveshark yet, here’s a link to their information page: http://mobile.grooveshark.com/phones/iphone)

Quick Update: CSS/JS Auto-Minification in ASP.NET

I’ve been trying for weeks to write up a good technical article about a recent CSS/JavaScript minification handler for ASP.NET (ASHX/HttpHandler) that I whipped up, but our current release has been so busy, I haven’t had enough time to really put it all together.

Just wanted to post a quick update for everyone who mentioned they’d like to hear about it that I’ll be posting more info as soon as I can. =)

In the meantime, here are links to some of the articles that helped me construct the custom handler in the first place:

And, my own pride and joy (this damn code took me forever, only because I had to do all sorts of research and testing with Regex in C#), the function that will fix relative paths in the combined CSS files by replacing them with absolute paths based on your application root:

/// <summary>
/// CSS Only: Replaces relative paths in url(...) properties within the specified script.
/// </summary>
/// <param name="scriptBody">The pre-combined script, passed from CombineScripts().</param>
/// <param name="scriptPath">The relative path where scripts are located (ex: ~/CSS/).</param>
/// <param name="applicationPath">The absolute application path. (ex: /ApplicationRoot).</param>
/// <returns></returns>
private static String FixRelativePaths(String scriptBody, String scriptPath, String applicationPath)
{
 scriptPath = VirtualPathUtility.AppendTrailingSlash(scriptPath);
 String relativeRoot = VirtualPathUtility.Combine(applicationPath, scriptPath);

 Regex cssUrlReference = new Regex("(?<=url\\()(.+?)(?=\\))", RegexOptions.Singleline);
 Regex invalidPathChars = new Regex("[ '\"]+", RegexOptions.Singleline);

 MatchCollection urlMatches = cssUrlReference.Matches(scriptBody);
 foreach (Match m in urlMatches)
 {
 String oldPath = Regex.Replace(m.Value, "[ '\"]+", "");
 String newPath = VirtualPathUtility.Combine(relativeRoot, oldPath);
 newPath = VirtualPathUtility.ToAbsolute(newPath);
 scriptBody = scriptBody.Replace(m.Value, newPath);
 }

 return scriptBody;
}

I’d love to read your comments and/or questions about this code, so please feel free to post your thoughts in the comments on this post.

I’ll try to get you the full meal deal on this code as soon as I can. =)

iPad: Official Video and Specs

Error
This video doesn’t exist

Tons more info available at Mashable:

http://mashable.com/2010/01/27/official-ipad-video/

Update: Official specs from Apple’s own iPad website (http://www.apple.com/ipad/specs/)

Size and weight

Height:
9.56 inches (242.8 mm)
Width:
7.47 inches (189.7 mm)
Depth:
0.5 inch (13.4 mm)
Weight:
1.5 pounds (.68 kg) Wi-Fi model;
1.6 pounds (.73 kg) Wi-Fi + 3G model

Display

  • 9.7-inch (diagonal) LED-backlit glossy widescreen Multi-Touch display with IPS technology
  • 1024-by-768-pixel resolution at 132 pixels per inch (ppi)
  • Fingerprint-resistant oleophobic coating
  • Support for display of multiple languages and characters simultaneously

Capacity

  • 16GB, 32GB, or 64GB flash drive

Processor

  • 1GHz Apple A4 custom-designed, high-performance, low-power system-on-a-chip

The rest of the specs can be found at Apple’s site, but what I’m really interested in is the display and the processor:

Display:

In-plane switching (IPS)

In-plane switching is an LCD technology which aligns the liquid crystal cells in a horizontal direction. In this method, the electrical field is applied through each end of the crystal, but this requires two transistors for each pixel instead of the single transistor needed for a standard thin-film transistor (TFT) display. This results in blocking more transmission area, thus requiring a brighter backlight, which will consume more power, making this type of display less desirable for notebook computers.

Processor:

The Apple A4 is a CPU, used in Apple‘s iPad tablet computer, which runs at 1 GHz.[1] It was announced on January 27, 2010.

It is a system on a chip-processor with integrated graphics processing unit.[citation needed] The graphics processor design is likely to be licensed from Imagination Technologies, which confirmed Apple was a licensee on 18th December 2009 [2]. It is designed by Apple’s in-house chip design department, formerly known as P.A. Semi. The CPU uses the ARM architecture. [1] [2]

I’m still trying to track down more info on the A4 itself, but from what I’ve seen in the official video and some of the other videos from Mashable and Gizmodo, this thing is *fast*. =)

Update #2: More info about the A4 can be found here:

http://modmyi.com/forums/ipad-news/698840-inside-apples-new-a4.html

iPhone Restore Instructions: v3.1.2 + Jailbreak

Thought I might share a little guide I’ve compiled. Enjoy. =)

Restore + Jailbreak Steps

  1. Perform full restore from iTunes with stock 3.1.2 firmware
  2. When prompted to “Restore From Backup,” decline and choose Setup New iPhone…
  3. Download blackra1n, and run it to jailbreak the iPhone: http://blackra1n.com/
  4. Once Jailbroken, install Rock, Cydia, and Sn0w.
  5. Run Rock to update, and exit. Then run Cydia to update, and exit.
  6. Open Rock or Cydia and install MobileTerminal, Aptitude, and APT.
  7. Change your passwords for “mobile” and “root” users!
  8. Install OpenSSH and respring/reboot.
  9. Optional: Run the following commands to install the most used software through an SSH session:
    1. apt-get install bigbosshackertools com.ericasadun.utilities
    2. apt-get install rotationinhibitor sbsettingsinsomnia notifier irealquicksms
    3. apt-get install jp.ashikase.kirikae backgrounder us.scw.afctwoadd
    4. apt-get install com.weiphone.setwallpaper3 com.saurik.iphone.fid
  10. Performance Improvements: Remove unnecessary LaunchDaemons

    1. cd /System/Library/LaunchDaemons
    2. rm com.apple.DumpPanic.plist
    3. rm com.apple.ReportCrash.*.plist
    4. rm com.apple.CrashHouseKeeping.plist
    5. rm com.apple.aslmanager.plist
    6. rm com.apple.syslogd.plist
    7. rm com.apple.powerlog.plist
    8. rm com.apple.stackshot.server.plist
    9. rm com.apple.tcpdump.server.plist
    10. rm com.apple.iqagent.plist
    11. rm com.apple.mobile.profile_janitor.plist
    12. rm com.apple.chud.chum.plist
    13. rm com.apple.chud.pilotfish.plist
    14. rm com.apple.AddressBook.plist
    15. rm com.apple.datamigrator.plist
    16. rm com.apple.AOSNotification.plist
    17. rm com.apple.AdminLite.plist
  11. Performance Improvements: Remove unnecessary Language Packs

    1. apt-get install find
    2. updatedb; locate lproj | grep -E proj$ | grep -E -v -i ‘(en.l|English)’ > langpacks.txt
    3. while read file; do rm -rf “$file”; done < langpacks.txt