Friday, 27 November 2015

Batch converting .wav to .mp3

The band I play in (Sevenfold) uses Dropbox to share recordings and song words between band members. We ended up maxing out Dropbox’s free level, so I needed to consolidate some of the files. I found a bunch of .wav files that would save a bit of space if they were converted down to .mp3.

Step 1. Install ffmpeg

FFmpeg is a cross-platform tool for manipulating MPEG audio and video files. I’d previously installed it as part of supporting MP3 with Audacity by installing FFmpeg v2.2.2. If you don’t use Audacity then you could probably install the latest version instead.

Step 2. Use PowerShell

PowerShell is a nice choice to enumerate through the .wav files. It also lets me reset the file LastWriteTime (Modified) so the new files look similar to the old ones.

$files = Get-ChildItem *.wav
foreach ($f in $files) {     
& "C:\Program Files (x86)\FFmpeg for Audacity\ffmpeg.exe" -i $f.FullName -id3v2_version 3 -write_id3v1 1 C:\Users\David\Music\Sevenfold\$($f.BaseName).mp3 -y    
$destFile = Get-Item C:\Users\David\Music\Sevenfold\$($f.BaseName).mp3    
$destFile.LastWriteTimeUtc = $f.LastWriteTimeUtc }

Jon Hall has some good info about transferring the metadata as part of the conversion process (and making the metadata compatible with Windows file properties).

Thursday, 19 November 2015

Connect(); // 2015 Summary

Microsoft have just held their second Connect(); virtual event with quite a few product announcements. If you didn’t get up in the middle of the night to watch it live, you can see all the videos from the event on Channel 9. Here’s my personal highlights:

Visual Studio Code open sourced and extensible

VS Code has now reached ‘beta’, which includes support for extensions. VS Code is now being developed in a public repo on GitHub.


The rewrite of ASP.NET build to run on .NET Core is getting closer to final release. Some nice new tooling additions (Bower support), and early support for “.NET Platform Standard” as a way of indicating binary compatibility between packages.

Entity Framework 7 RC1

The rewrite of Entity Framework that runs on .NET Core (as well as full .NET Framework etc). Consider using it only if you don’t need features that it doesn’t have (kind of obvious advice really!)

Glimpse v2 Beta1

The re-architected version of the ASP.NET diagnostics dashboard that (for the moment) runs only on ASP.NET 5. If you’re (like most people) still using earlier versions of ASP.NET then stick with Glimpse v1 for now.

Visual Studio Dev Essentials

A one-stop shop to get free access to training, tooling and access to services.

Visual Studio 2015 Update 1

Due out on November 30th (so no link yet)

Windows Server 2016

Pretty sure this wasn’t a Connect() announcement but is just as interesting. Windows Server 2016 Technical Preview 4 is now available, which includes support for Hyper-V Containers (a more isolated container technology than the lighter-weight Windows Server Containers that were introduced in preview 3).

North America Trip–SEA to ADL

WP_20151106_022_thumbFriday was another chance to do some final sight-seeing back in down-town Seattle. I went on the Seattle Underground Tour, which was fantastic. A hilarious and entertaining tour guide made for a very enjoyable and educational history tour of the beginnings of the town of Seattle.

WP_20151106_042_thumbI also managed to get back for another look at the Pike Place Markets, which I’d briefly seen the previous Sunday, though Friday’s weather was an improvement. It was nice to look around and having something yummy for lunch whilst the sun poked through the clouds.

On the recommendation of Scott Hanselman I saw (but tried to avoid smelling!) the ‘great wall of gum’. Good timing, as a week later they started cleaning it all off for the first time in 20 years.

Then off to the airport for my flight down to San Francisco. The train from downtown Seattle to the airport only cost $US3 – what a bargain!

I was a bit concerned about the relatively short time to make my connecting flight to Sydney, but I need not have worried. San Francisco airport is relatively small (possibly similar size to Adelaide), so it was literally a 5 minute walk from gate to gate. What a relief – and much less stressful than going through Los Angeles again.


The flight back to Sydney went well (there’s something about flying overnight that makes it easier to go to sleep, or maybe I was just exhausted after a full on fortnight!)

WP_20151107_003_thumbLanding in Sydney early Sunday morning I managed to get on an earlier flight back to Adelaide than I’d originally booked. It was so great to get home and see my family again Smile.

Wednesday, 18 November 2015

Web Essentials 2015 extension keeps being disabled

I noticed recently that Visual Studio 2015 wasn’t loading the Web Essentials extension. Checking in the Extensions and Updates dialog revealed the problem – it was disabled.

Visual Studio Extensions and Updates dialog, showing disabled extension

But I hadn’t disabled it! So I re-enabled it, restarted Visual Studio and got on with my life…. Until I next started Visual Studio and it was disabled again. Grrr.

Next stop, “Captain Google” – which brought me to a closed issue on GitHub. So it isn’t just me, but no reliable solutions to the problem (yet).

What about running Visual Studio with logging? I did this, re-enabled the extension and chose Restart. Looking at the second log file revealed the following interesting lines:

511 ERROR Extension will not be loaded because an extension with the same ID 'Microsoft.Dev14.VsixTemplatesPackage.443cca91-ec20-41e5-a165-f28e56b89650' is already loaded at C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\DSDWKUM5.2Y2\...
Extension Manager 2015/11/17 23:55:46.703
512 ERROR Extension will not be loaded because an extension with the same ID 'Microsoft.VisualStudio.TeamFoundation.TeamExplorer.Extensions' is already loaded at C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\H0JHYFM3.2KP\...
Extension Manager 2015/11/17 23:55:46.703
513 ERROR Extension will not be loaded because an extension with the same ID '3c61cbb3-7795-4afc-981b-34ea36a333fa' is already loaded at C:\USERS\DAVID\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\YKUJN0FP.3MY\...
Extension Manager 2015/11/17 23:55:46.703
514 ERROR Extension will not be loaded because an extension with the same ID '5fb7364d-2e8c-44a4-95eb-2a382e30fec9' is already loaded at C:\USERS\DAVID\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\LG5OBJ45.EKL\...
Extension Manager 2015/11/17 23:55:46.703

Checking the folders above maps to the following extensions:

  1. Visual Studio Extensibility Templates
  2. Team Foundation Team Explorer Extensions
  3. Cloud Explorer for Visual Studio 2015
  4. Web Essentials 2015

The first two are interesting in that they’re both under C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE. A closer look here reveals that in both cases, the second folder is actually a shortcut that points back to the first folder, so there isn’t really a conflict here – just Visual Studio having to process the same exact folder twice.

The 3rd item is interesting in that I hadn’t notice a problem with Cloud Explorer, but that’s probably because I hardly ever use it. But sure enough, checking back in Extensions and Updates showed that it too was disabled.

Ok. So I selected both Cloud Explorer and Web Essentials, chose Uninstall and restarted Visual Studio. And they were still there! (Zombie Extensions?!!). But I can see how this would be. The duplicates did get removed, but this left the other extensions still there.

Extensions and Updates 2

Righto.. Once more with feeling! Select each extension, choose Uninstall and restart Visual Studio.

Check Extensions and Updates again. Hooray – they’re really gone now.

Now re-install both extensions and really get on with life Smile

Tuesday, 17 November 2015

North America Trip - MVP Summit 2015

Microsoft signI arrived in Seattle on Saturday night. I caught a shuttle-bus to my hotel in Bellevue, and not surprising that my fellow bus-travellers were also MVPs. One of those turned out to be Glenn Henriksen who was the first of many MVPs to make me feel welcome and included in my first Summit. (More about Glenn later!)

View of Seattle Space Needle tower from baseSunday morning I took the opportunity to travel by bus back to downtown Seattle and see some of the sights. It was still a bit cloudy with some rain about, but I gather that’s pretty normal for Seattle. I went up the Space Needle, though the view was limited to to lots of low cloud and a bit of rain.

Microsoft Store at BellevueGetting back to Bellevue later in the afternoon, I registered for the Summit and bumped into a few familiar faces before attending the “1st Time MVP Event” (which was food & drinks with a mix of fellow first-time MVPs along with a bunch of ‘old hands’), followed by an Australia/New Zealand MVP Dinner, where again I was made to feel welcome by even more familiar faces.

In fact the best compliment I received was along the lines of, “Dave, we thought you already were an MVP!”

Monday morning things started in earnest with well-organised buses providing transport from our hotels to Microsoft’s Redmond campus. And ‘campus’ is a good term as it is in many ways like a University campus. Microsoft almost takes up the whole of the suburb of Redmond. I only got to see a tiny part of it, but I was very impressed with what I saw. A beautiful location with impressive buildings, landscaping, gardens and playing fields.

Microsoft Conference Centre at RedmondMost of my time was spent in the Microsoft Conference Centre (yes, they have their own conference centre on campus!). It’s big enough that I reckon they could fit in the entire Australian TechEd/Ignite conference.

You aren’t meant to take photos inside, but I can show a few outside shots I took on an early morning walk around part of the campus.




Because more and more of Microsoft’s ASP.NET development (and .NET in general) is now being done as open-source on Github, many of the sessions I took part in were not under NDA. Look out for recordings of these on MSDN’s Channel 9 soon.

Not surprisingly, the Summit is a bit of a “who’s who” of Microsoft technologies – there were a lot of names I recognised from blogs that I follow, or who I’ve heard on various podcasts over the years. The nice thing is that all the “big names” that I encountered turn out to be just nice friendly regular people who are more than happy to chat and welcome a “New MVP”. I also made a point of inviting everyone to come and visit Australia (and this was made more enticing by reminding them that NDC Sydney is on next year).

Dan Wahlin and Glenn Henriksen holding popcornWednesday night I caught a late session of the movie “The Martian” with a few fellow MVPs, including Glenn. As you can see, Glenn and Dan realised that it was more efficient to get the free popcorn refills before we went into the theatre. Smart thinking!
One of the benefits of attending the summit is direct contact with product teams. Both giving feedback but also being able to pick their brains. Thursday was ‘hackathon day’. I know I was really encouraged from meeting the Glimpse developers Anthony and Nik and getting some feedback on an open source Glimpse plugin I’m working on.

And at the end of Thursday afternoon, that was the end of the summit. A final bus ride back to the hotel at Bellevue for my last night in Seattle.

Sunday, 15 November 2015

North America Trip–YYZ to SEA

So I’ve actually been home for a week, but I’ve only now had a chance to sit down and work on the remaining posts for this series!

Toronto skyline, including CN TowerI had a fantastic time in Toronto. It was great getting to know all the wonderful people who work for RL Solutions there. There’s nothing like sitting down face to face to get to know people better. Well except maybe doing that over a meal – and there was certainly a few of those!

RL Solutions signI did feel the effects of jet-lag kick on on the Monday, so managed to get a little rest in the afternoon before catching up with the Metro Toronto .NET group, where I was the guest speaker. Great to share with them.

View from Toronto shore looking across the lakeToronto is a big city, but quite beautiful too. The weather was cooling – a definite chill in the air, and the leaves were turning to wonderful autumn colours.

NBA Basketball game with Toronto Raptors playing Indiana PacersAnother highlight was going to my first NBA game – a bonus that the Toronto Raptors won their season opener over the Indiana Pacers.

Sunrise view from apartment

My accommodation in Toronto was “down-town”. Right next to the Air Canada Stadium in fact (where the basketball and ice-hockey is played). It was also just a short walk to the office each day. Most days the weather was overcast and cold, though one day it was quite stormy and wet, so I made good use of the Toronto PATH underground and covered walkways

Cakes and slices in bakery display

Friday (being the day before Halloween) was a bit of a crazy day in the office. Everyone dressed up and decorated all the work areas. This culminated in a company lunch and staff meeting. Definitely great timing to be in town to be a part of these.

But eventually my time in Toronto was at an end, and the flight to Seattle began, via a stop-over in Minneapolis. Nice bakery in the airport there by the way Smile

Tuesday, 10 November 2015

Windows 10 and dodgy ATI Mobility Radeon HD 4670 drivers

My old Dell XPS 1645 laptop is still kicking along. Sure, I might have nick-named it “Big Iron” due to the fact that it single-handedly technically put me over the carry-on baggage weight limit on my recent trip overseas, but it does the job, and runs Windows 10 quite well.

Except that earlier this year Microsoft (or AMD/ATI) updated the video drivers (15.200.1060.0 [15/07/2015]) and introduced a bug that causes the maximum resolution to change to 1280x1024, which looks ridiculous. The only solution I’ve found is to revert back to the older driver.

  1. Open Device Manager
    Windows Device Manager
  2. Right-click on the ATI Mobility Radeon HD 4670
  3. Choose Update Driver Software
  4. Select Browse my computer for driver software
  5. Select Let me pick from a list of device drivers on my computer
  6. In the list, select the older version (8.970.100.9001)
    Update Driver Software dialog
  7. Click Next
  8. The screen will flash a few times, and a few beeps later you should be returned to your regularly scheduled 1920x1080 resolution again.

The Windows Feedback tool shows that this error has been reported by a number of people, but unfortunately I suspect it hasn’t registered as a high enough priority to fix (and may not be considering the age of the video hardware).

Sunday, 25 October 2015

North America Trip–LAX to YYZ

Looking back over Los Angeles beachesI had a few hours break at LAX before my connecting flight to Toronto. Just as well, as I forgot that it was actually a code-share with Air Canada and had to walk to a different terminal (fortunately not too far).

I didn’t sleep very much at all on the flight from Sydney, and I tried not to doze too much in the waiting lounge at LAX in case I missed my flight! I slept a little more on the Toronto flight. Probably being quite tall doesn’t help matters. I remember the last time I few to the USA, I got seats next to the galley, so we could stretch out – but maybe they don’t have seating in that configuration anymore.

Flying over Los Angeles

Leaving Los Angeles. Looks very dry – don’t seem to have many parks or gardens in the suburbs I flew over. Just the occasional golf course. Quite a contrast from home.

Sunset on cloudsA pretty sight of the setting sun lighting up the clouds on the way to Toronto.

Our flight arrived into Toronto right on time. Unlike LAX, clearing customs & immigration was a breeze (I guess it isn’t quite as busy). Always a relief when your bag shows up on the baggage carousel too. Tom (who’s also over from Adelaide) met me at the airport and drove me back into town to where I am staying. We then went out for some tea and a chat (had some nice burgers). I’ll see Tom (and the rest of the RL Toronto crew) at the office first thing Monday morning.

North America Trip–ADL to LAX

United Airlines plane at terminalMy trip to Canada and USA has begun. My alarm went of at the early time of 3.45am, left me enough time to get ready for my ride. My sister and brother-in-law very kindly offered to give me a lift to the airport. My sister is doing a travel agent course at the moment, so she’s been able to use me as a bit of a case study and look up my flight details, which has been fun. It was also nice that I got to give my youngest daughter a final hug goodbye as I managed to wake her up in my tromping around the house. Not sure if she went back to sleep, or made the most of being up before her big brother and sister.

I discovered when checking in at Adelaide that my bags would indeed be checked through to LAX. I wasn’t sure about this when booking. Also no dramas with carry-on bags. I was worried that my (quite old) laptop might push me over the weight limit.

I wish I could say my flight from Adelaide to Sydney was uneventful, but that would be ignoring the friendly, but slightly inebriated passenger who had trouble picking up his cup of hot coffee off of the tray being offered by the flight attendant, and promptly spilled it down my leg. A small scald mark on my shin – just glad it didn’t land in my lap. Spent the rest of the flight with cold compresses on the burn area, and it’s settling down a bit now.

Arriving at Sydney, then transferring to the international terminal. Wow, is that a crazy place. Managed to find the United desk (right up the other end from where we were dropped off), and sailed through check-in and the border control/security stuff. Got to my departure gate with time to spare, so was able to make a couple of calls home.

Looking back over Sydney HarbourBoarding United Airlines was straight forward. I ended up in “Economy Plus’ somehow – not complaining! My sister again was able to do some digging and informed me that I was the only one booked in my three seats. That didn’t last, as another traveller decided he’d move to the seat across from me to share some of my elbow room. That’s ok, there’s still an empty seat in between.

I’d heard that some United planes didn’t have individual entertainment/tv consoles, but I’m pleased to find that I must have one of the more modern ones – my own screen on the seat in front, and there’s also power under the seat (and the other guy doesn’t seem to need to use it – bonus).

So now another 12 odd hours until we land at LAX (Los Angeles International Airport). I hope that goes as smoothly (if not with less coffee precipitation) as everything else has gone so far.