Sunday, January 18, 2015

Passing the 70-480 HTML5 Exam

This week I finished up the long journey of passing the Microsoft 70-480 HTML5 and CSS3 exam. I had been studying pretty steady since late September for this one. During that time, I referred to a number of resources, and I wanted to mention them here in case they could be of use to someone else.

First, I attended the live live HTML5 class. My employer was generous enough to foot the bill for this. If you are an experienced web developer, you may not need this, but it was really nice for me to be fully immersed in the new features of HTML5 to kick off my studying efforts.

Next, I read the HTML5 Training Guide. The HTML5 Exam Ref had also just been released, but it hadn't been reviewed yet. The Training Guide had been out for a while and had very good reviews, so I decided that it was the way to go. I felt like it was a good investment of time and money, as it had a lot of hands on exercises and covered a broad range of topics.

Third, I used the Measure Up Practice Test. I have mixed feelings about this item. It was somewhat helpful, but in the end, I'm not convinced that it helped me as much as I would have liked. There were a couple of questions that were quite similar to questions on the test, so I give them props on that, but I felt like I still was surprised by some of the questions that were on the final exam. Also, the interface for this is quite clunky. If they could clean up the scrolling functionality within the question presenter, it would be much easier to use.

Fourth, I leveraged Anki to create my own flash cards. I feel like this was quite helpful to me, and I ended up looking at the flash cards every other day. Anki remembers which items you got wrong and it presents them more frequently.

Fifth, I watched the course videos on Microsoft Virtual Academy. I had already reviewed a lot at this point, so this was mostly just a good refresher, although there were a few tidbits here and there that I was unaware of.

In some ways, it may seem like I over-prepared for the exam. Mostly, thanks to this, I felt confident when I went to take the test that I had a good command of the material. However, I was still surprised as I started to look at the actual exam questions, as there was some material on there that I did not study as well as I should have. Thankfully, I did get a passing score in the end, but it would have been nice if I would have felt more confident of passing while I took the test. In the end, it was a long journey, and I'm glad that I did it, but I'm also glad that it's over. I definitely won't miss studying for a while.

Saturday, September 13, 2014

Windows Phone Apps: When Will I Get Paid?

For a large portion of 2014, I have been dabbling with Windows Phone and Windows Store apps. A common question that I have seen asked by app developers is when will I get paid. If you have a paid app (not free) in one of the Windows stores, you have to meet a minimum revenue of $200 before Microsoft will pay you.

For Windows Phone, you can find out how much is currently owed to you by going to to the Dashboard in Windows Phone Dev Center, click on Reports, and click on Financial summary. There you will see the amount you are owed under the "Proceeds since last payment" label.


I noted that I was owed more than $200 at the beginning of August. I assumed that I would get paid right away. However, I couldn't find anything stating that they did actually issue payments right at the beginning of the month. I finally received my initial payment on September 11th.

Based on my experience, I'm guessing that it takes roughly a month and a half from the time that you end a month with more than $200 before you get paid. Additionally, it seems that the amount of your payment will be based upon the amount that you were owed at that time instead of the amount that you were owed when payments were actually distributed. Of course, this is just speculation on my part.

I noticed that a lot of people were asking about this, but did not offer up definitive answers. I'd be interested to hear what the experiences of others are in this arena. Did you get paid in about the same amount of time, or did it seem to work differently for you?

Sunday, July 14, 2013

Adding A Google Map To Your Site Using Google Maps API

Recently I redesigned one of my old web sites (turbografx.net), and decided to add a few Google Maps on pages where address information was important. It was nice to see that this simply required a little bit of JavaScript to get up and running. Minimal effort is needed to add a simple map that will include a marker on a specified address.

Below is a simple example of how to setup your map using a provided street address. The Google Geocoding API makes it possible to use a street address instead of the standard GPS coordinates. This made my life a lot easier, as I already had street addresses stored in my database and did not also want to store the GPS coordinates.

To get started, head over to the Google API Console and get yourself an API key. Once you've done that, you can reference the Google API script using a script tag like the one below.

<script src="http://maps.googleapis.com/maps/api/js?key=your-key-here&sensor=false"></script>

After doing that, you can add your own JavaScript similar to the example below. Replace the address information with the street address that you would like to appear on the map. This can easily be fed from a database to make the maps dynamic. I am adding a marker that points to the address in this example, as well as centering the map to the specified address. If you don't want a marker, you can easily remove the code that references the marker variable.



One final thing that you will need to do is to add a container for your map. Mine is a div with an id of "google-map." As you can see, it is referenced in the JavaScript above, so you will need to update that if you use a different id.


You'll want to specify a size for your div container. Below is some example CSS for this. As you can see, I also surrounded it with a border and added a margin on the bottom.


All in all, adding a simple Google Map is quite painless. I found the Google API Tutorial at w3schools to be quite helpful in getting me on track with Google Maps development, so you may want to check that out if you'd like to delve into some of the many additional features that are available.


Tuesday, June 18, 2013

Forcing Internet Explorer to Automatically Launch a File Type

This week at work I was asked to get Internet Explorer to automatically launch a custom file type for an application that I am working on. I was able to do this manually with IE8 by clearing a checkbox that asked if I should always be prompted when opening the file type. Unfortunately, I could not find a similar option with IE9, which happens to be our target browser for this project.

Luckily, I stumbled across this post on the Microsoft forums, which provided a key registry entry that can be used to force IE9 to auto launch files of a given type upon download. The details of this entry are buried three pages deep in the responses, but it works like a charm. The registry key in question is this one:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\{0002DF01-0000-0000-C000-000000000046}]
You have to add a DWORD value that is named after the file type for which you want to auto launch downloaded files. The example given was AcroPDF.PDF.1, but I had to provide the key name associated with my file type under HKEY_CLASSES_ROOT (i.e. My.File.Type). After testing out the change manually and ensuring that it worked properly, I added some code to my .NET app to check for the existence of the registry value and create the registry value if it does not exist.

Below is an example of what this code would look like. Note that I am checking for null to see if the registry value is missing altogether.

Thursday, April 18, 2013

Giving Back to the Community

Many of us developers spend all day at the office writing code only to turn around and work on our own coding projects at home. Based on discussions with other developers, I know that I am not alone in being at a stage in my life where I have many more ideas for personal coding projects than I have time available to work on them. I suspect that this very scenario may keep many developers from giving of their time and talents within their community.

Giving back can come in several forms. A number of my friends have participated in area Give Camps, which is a sort of weekend long blitz where developers converge on a single location and knock out reasonably sized projects for local organizations. Another way that many give back is to give presentations at local user group meetings that are open to the public. Even if you aren't so keen on public speaking this groups often can use someone to do some of the behind the scenes work for their organization. Perhaps even better yet is to seek out an organization in your community whose cause you're passionate about. I've found that these organizations are often open to receiving development help, even when they are not publicly asking for it. Take it upon yourself to ask if they could use your services.

Not everyone may have time to meet with an organization face to face in order to serve. However, another trend that continues to be on the rise is to write open source applications and utilities. These can be of benefit both from the standpoint of an application's utility and from the standpoint of giving other developers the chance to learn from your code.

I have to give a tip of the cap to commercial software developers that have decided to generously release their legacy games and applications as freeware and/or open source software. I recently was the beneficiary of this, as I had just completed converting a JAMMA arcade cabinet to a MAME arcade cabinet, which now runs a number of arcade and console emulators on an old computer that I was no longer using. This was a great way to consolidate some of my old games into a single interface. It just so happened that I read a posting which talked about how Cinemaware had released all of its old games as freeware. Much to my delight, I found that they were so generous as to offer download links on their web sites for these classic games in many formats, including Nintendo, TurboGrafx, and Gameboy.

Chances are that I have only scratched the surface on the number of ways that developers can give back to their communities using the skills that they have honed in the workplace. If you haven't sought out such opportunities yet, make it a point to do so. I have to say that I have by and large enjoyed my experiences when programming for a cause, and I'm confident that you will to.

Tuesday, January 1, 2013

.NET 4.5 Behaviors

My company made the move to Visual Studio 2012 back in the fall. Since making the move and updating our projects to the .NET 4.5 framework, we had been noticing an error relating to behaviors when building our apps. The error was something along the lines of the following:

The type 'MyType' from assembly 'MyAssembly.Stuff' is built with an older version of the Blend SDK, and is not supported in a Windows Presentation Framework 4 project.

Despite seeing this error, we could still run the app successfully. However, this would also cause issues with loading the window in the XAML designer.

After some research, I found that there is a 4.5 version of System.Windows.Interactivity that needed to be referenced in order to fix the issue. This DLL comes as a part of the Blend + SketchFlow Preview for Visual Studio 2012. As the title indicates, this is a preview version, so we can expect the final version in the near future. According to Microsoft, the final release of this DLL will come as a part of Visual Studio 2012 Update 2.

Saturday, November 17, 2012

Price Is Right

This past summer, a friend of mine tipped me off to Coursera, a site where many big name universities are offering free online courses to large numbers of students. I had really hoped to take a traditional university course in the fall, but was unable to, due to my schedule, and decided to give one of Coursera's offerings a try. I have to admit that I was pleasantly surprised by how much I got out of the course.

After reviewing the directory of available courses, I decided to take Stanford's Human Computer Interaction, which is a course on software design. For those interested in software development, there are a good variety of courses to choose from. Even if you're not, there are money other topics that are touched on in the 200+ courses available.

The assignments proved to be very interesting, and it will be fun to apply some of these techniques to a real world project. To start out, we had to observe three people performing a particular action, determining areas where technology could help them improve their experience. Next, we had to draw up storyboards (similar to a comic strip), demonstrating a scenario in which our proposed technology could be used. After this, we created a prototype using Balsamiq Mockups. Once this was done, we built an interactive version of our prototype. Finally, we sought out three people to test our prototype and identify flaws.

The video lectures were informative as well, but I personally got the most out of the assignments, and would whole-heartedly recommend this class. You can't really beat an offering like this for the price.

The only thing that proved slightly annoying to me was the grading. Due to the size of the course, students grade each others' homework. Each person is responsible for grading the homework of five other people. Some weeks this took a considerable amount of time. Towards the end of the course, the faculty did recognize that this was the case and made adjustments so that a lesser amount of time was needed. One other small annoyance with this method of grading was that I found that other students tended to add requirements that were not outlined in the instructions for grading, due to their own idea of how the assignment should be completed.

In the end, the minor annoyances were not of importance, as the key was the amount of learning that was gained via the assignments. If you have a chance to take a look at one of Coursera's courses, I would certainly recommend it. The friend that pointed me to the site is just wrapping up a course that he is taking as well and sounds like he is equally satisfied with the one that he chose to take.