“HTTP” Hyper Text Transfer Protocol

HTTP is a protocol to transfer files across the internet.  Usually, this involves loading a web page from a web server to a web browser, but is certainly not limited to that.  This protocol is usually used over TCPIP, the protocol that the internet uses.

To learn all the gory details of HTTP, I recommend w3 schools.

“SOAP” Simple Open Access Protocol

SOAP is a standard way of allowing applications to transfer data over HTTP using XML.  As you can see from the title, “SOAP” is an acronym for “Simple Open Access Protocol”.

SOAP is probably used most often with XML Web Services.  But, it’s certainly not limited to that.

For a full tutorial of SOAP, I recommend w3 schools’ tutorial on SOAP.

What’s XML?

XML is a TLA (Three Letter Acronym) that stands for eXtensible Markup Language.  It’s essentially way to create a text file that’s both machine readable and human readable.  It’s probably one of the most successful ways to exchange data between different programs, different machines, and different operating systems that’s ever been put into real world use.  Almost all programs support XML now.

Below is an example of an XML file:


  1: xml version="1.0"?>
  2: <note>
  3:     <to>Johnto>
  4:     <from>Maryfrom>
  5:     <subject>Remindersubject>
  6:     <body>Meet me tomorrow at 12pm.body>
  7: note>

XML files are made of “tags”.  In the example above, the tags are surrounded with .  The text between the opening and closing tags is the data.  As you can see, this XML file represents some data object called a “note”.  Inside the note are 4 data items (to, from, subject, and body).  What makes XML extensible is that there are no pre-defined tags.  You make them up as you need them.  The only thing that’s important is that the program that creates the XML file and the program that reads the XML file both agree on the tags and how to handle them.

Even though there are no predefined tags in XML, there are formatting rules:

  • Any opening tag (like “” in the example above) must have a corresponding closing tag (“” in the example above).
  • Indentation doesn’t matter.
  • line breaks don’t matter (except for the data parts, possibly).

This article is not an XML tutorial, so I’ve not made any attempt to include the full list.  If you would like a complete description to implement XML in your own, custom software, w3 schools is an excellent resource.

Web Service Development

A definition first:  A web service is essentially a collection of subroutines on a web server that can be called remotely, by other machines on the web.  Web Services are sometimes referred to as “XML Web Services” because all communication to and from a web service is by transmitting XML data back and forth.  It’s not just any old XML data.  It has to be formatted via the SOAP specification.  SOAP web services usually provide a WSDL file (pronounced Wizdul) that describes the methods (subroutines) available, their names, the parameters they take, the types of the parameters, the data types they return, and a description of each method.

WSDL makes them easier to consume by 3rd party developers.  With this, they don’t necessarily need printed documentation which means the web service provider doesn’t have to worry (as much) about how to get the documentation to the 3rd party developers to being writing software that makes calls to the web services.

A web service method can do pretty much anything any subroutine can do.  They’re generally used to simplify distributed computing application development.  By putting the web services on a public (or partially public) server, as opposed to distributing DLLs, it gives the web service provider the ability to make internal changes without having to notify all other application owners.  If the changes are only internal, and don’t affect the names of the methods or their parameters or the types of their parameters or return types, then no changes are needed to any of the multitude of remote applications that may be making use of the web services.

Some examples of web services:

Google:  Google hosts a plethora of web services, though none of them are SOAP web services.  Though this does make them accessible to more developers, it also makes them more difficult to code against because a lot of software development products have direct support for SOAP web services, eliminating the need to manually encode and decipher the custom XML that Google uses.

UPS:  UPS provides web services for providing live costs for packaging.  For example, an online merchant, such as www.MichaelsAttic.com can provide their shoppers with instant quotes on shipping expenses by sending the ship from address, the customer’s ship to address, and the sizes and weights of the packages to the UPS web services.  In response, the UPS web services provide the cost of shipping.  The United States Postal Service provides similar web services.

Google Checkout and PayPal:  Both of these services provide online purchase transaction capability via web services.  www.MichaelsAttic.com uses Google Checkout, for example.

There are many many weather related web service providers, stock quote web service providers, foreign currency exchange web services and just about anything you can imagine.

Creating a Web Service:

Pretty much any language can be used to create a web service.  I’m partial to .NET technologies to create web services.  To create a web service is significantly different depending on the language and the technology you choose to create them.  Some development technologies make is ridiculously simple by coding all of the monotonous XML translation for you.  Others have zero support, requiring you to hard code it all yourself.  With .NET technologies, you simply create a “web service” project, which creates a new class for you in code, then you put “[Webmethod]” on the line above each class method you want to expose as a web service method.  It really couldn’t be simpler.

What is “Windows Service Development”?

To answer that, first I have to define what a Windows Service is.  The Windows OS has the ability to run (or “execute”) several diffeMMCrent types of programs.  The types of programs most Windows users are familiar with are the ones stored on disk with the name “.exe” appended to the end of its file name.  Users generally double-click the file with their mouse (or a link to the file or an icon representing it) and the program is then loaded and executed.  These programs generally have a GUI.  Sometimes they have a plain old text (or “console”) interface.  But, they usually have some kind of a user interface.  These programs also require a user to be actively logged onto the machine.  These programs also run with the same security as the logged on user.  Any permissions the user has, so do the programs the user started.

Windows Services are different types of programs.  They’re not Windows Services in Task Managerlaunched (or started) directly by the user.  They generally start when the OS starts and do not require that a user be logged on to run.  As such, since they can run without a user interacting with them, they don’t have a user interface.  They run in the background.

A typical Windows machine has dozens of Windows Services running all the time.  They range from anti-virus programs, to web servers, to database servers.  Even some viruses run as Windows Services.

Development:

Windows Service Development is the act of designing and writing one of these Windows Service programs.  They can be written in pretty much any language that a normal Windows program can be written in.  Most Windows Service applications are written in C or C++.  Though, more and more are written in a language that supports the .NET framework, such as C# or VB.NET.

A Windows Service program can be written to respond to 4 different events:

  1. Start
  2. Stop
  3. Pause
  4. Resume

Start and Stop events are required events.  In other words, you have to write event handlers for those two events.  The pause and resume events are optional.

In the start event handler, you generally spin off a new thread and in that thread create an infinite loop, exiting only when the stop event is triggered.  Inside this loop, you perform your work.

What’s XBox Live?

image

XBox Live is an online service available to original XBox and XBox 360 consoles.  You must have an XBox to connect to this service.  And, your XBox had better not be modified to play pirated games, or your console and your account will be banned for life.

There are two tiers to the online service:  Gold and Silver.  The silver tier is free and allows you to view the free content available, which is usually movie and game trailers, access to the marketplace where you can upgrade your membership, buy Microsoft points (online currency) to buy games, and download and play free demos of imagegames.  The gold membership is a paid membership which is about $50/year.  You automatically get 1 free month with the purchase of your XBox console.  Many games come with a 1 month free code.  With the paid, gold membership, you have access to your Netflix account (if you have one) and can watch live, streaming movies from your Netflix queue, right there on your living room TV (no PC required for viewing).  You also get access to your facebook account, twitter account, and the primary purpose of XBox Live Gold membership:  You can play games with or against online imagegamers, “friend” online gamers, be able to brag about your online achievements, and be placed in global high score lists.  There are more services than this and the list of services keeps growing.  If you’re a software developer, you can even write your own games using XNA technology and publish your games on the XBox Live “Indie Games” section for anyone else to purchase.  You get real money in your account.

Beware of cheap XBox 360 consoles!

image

If you’re in the market for a used XBox 360 console this holiday shopping season, you might want to think twice about snatching up that too good to be true price on one you found online.  Microsoft just banned somewhere between 600,000 to 1,000,000 XBox 360 consoles from the XBox Live network.

Lots of people have been hacking or “modding” or “chipping” their XBox 360 consoles.  This means they’ve replaced some of the chips inside their consoles to prevent their consoles from detecting their pirated game discs so they could easily play the pirated games.  (An unmodified XBox 360 will refuse to play a pirated game disc).  Here’s the kicker:  One of the great features of an XBox 360 is its ability to go online to the XBox Live service and use all of the features like playing against your friends online, chatting, bragging with your game trophies, watch Netflix movies, use facebook and twitter, buy games for download such as community games written with XNA, etc…  Microsoft has just recently started detecting which consoles were modified and which weren’t when these consoles connect to XBox Live.  As soon as the XBox live service detects a modified XBox 360 console, it takes note of its serial # (and presumably the XBox Live account) and bans them from ever connecting to the XBox Live service again.  This ban does NOT get undone if the XBox 360 console is sold to an unsuspecting buyer.

What does this mean for you?

Well, if you’re one of the ones that modified you XBox 360 console, it means you’ve either already been banned or you will be next time you connect.

If you’re just shopping for a good price on a used XBox 360 console, it means there are now thousands of banned XBox 360 consoles for sale on e-bay, Craig’s List, and other online outlets.  I doubt ANY of those seller will tell you their console is banned!  Your best bet is to just not buy ANY used XBox 360 consoles online.  The probability of buying a banned console is extremely high and you’re totally screwed if you buy one.  Microsoft will have absolutely NO pity on you whatsoever and will NOT undo the ban.  Your only option at that point is to try to get your money back from the person you bought it from.  This may mean imagecontacting e-bay for buyer’s protection and of course leaving negative feedback on the seller unless they make good.  If you buy it on Craig’s List, you’re at the mercy of the seller.  Of course, you can always file suit in small claims court.  It’s illegal for them to leave out such pertinent information.  You should read the seller’s fine print too.  They may have hidden it in there.  If so, you have no recourse.

If you buy a used XBox 360 console locally, insist that the seller hook it up to XBox Live in front of you to prove it has not been banned.  If they refuse, you should obviously assume it has been banned.  Do NOT take any excuses as to why they won’t hook it up.  You should tell them that you refuse to buy it until they can prove it’s not been banned.

I’ve sent a message to XBox support to see if there’s a way for you to determine by serial # if an XBox 360 console has been banned.  I’m awaiting a reply.  Check back here frequently for a response.  I got a response from Microsoft.  Short answer:  According to the e-mail response (but their phone support says otherwise… read below this e-mail response), there’s no way to determine if a used console has been banned, short of attempting to connect to XBox Live and see for yourself.  Here’s their response (and they need to teach their techies how to write proper English too, BTW):

We suggest that customer will purchase the new xbox 360 because there is a possibilty that the previous owner has been modified or violated the code of conduct for the console. We dont have any information on how to check if the console that you will be purchasing was banned or not.Only our system  can track down weather it was modified or not/

For US and Canada customers, please contact Xbox Customer Service at 1-800-469-9269 at your earliest convenience, and we’ll be happy to help you. We are open everyday from 6am to 10pm US Pacific Time.

For international customers, please contact Xbox Customer Service in your local region. (To find the correct Customer Service number for your region first use this link http://www.xbox.com/en-US/ChangeLocale.htm to select the appropriate country and then use the contact number found under the support menu). You may also choose to call international assistance (direct dial to the US) by dialing 425-635-7180.

If you need to reply to this e-mail, please reply ‘with history’ (include any previous e-mail) or reference to Service Request Number *———- * so we can expedite our service to you.

Thank you for visiting Xbox.com. If you should have future questions on Xbox products or services, please be sure to revisit our Web site as we continually adding information to enhance our service.

Best Regards,

Kim

Microsoft XBOX Support Services

http://support.microsoft.com/

I just called the number and it’s the customer support #.  They have a recording talking about the ban and direct you here:  http://www.xbox.com/en-US/consoleban

BUT!  I just spoke to an agent and they CAN tell you if a used console is banned, BUT that console has to have already been registered.  Here’s what you do:

  1. Contact the person selling the suspect XBox 360 console.
  2. Get their name, address, phone #, and of course, the XBox’s serial number.
  3. Call 800-469-9269 and go through the menus to get to an agent.
  4. Tell the agent you’re about to buy a used console, but need to check if it’s been banned and that you have all the information they need to check, including the serial #.

At that point, the agent should be able to confirm or deny if it’s been banned.  Again, the console must have already been registered.  If it hasn’t, it could still be banned, but the agents would not know.  So, if it’s not been registered, have the seller register it, then you can call and check.  If the seller refuses, consider it a banned XBox and don’t buy it!

BUYER BEWARE!!!!

Have you been affected by this either as someone who modded their console and gotten banned or who has been the unwitting recipient of a banned console?  Let me know in the comments below.

Administrator locked out of Vista

I recently got this question:

So sorry to bother you, but I had a question and thought you might could shed some light on the issue.  Our girls each have a Dell Inspiron laptop.  We have set up parental controls, with an account for us as "Administrators" to protect them from going to inappropriate sites.  If you log in with the wrong password 3 times, it totally locks the system, which has happened on both laptops.  This means they are unable to get any updates, downloads, etc. since we can no longer log in as Administrators.  Chris has been on the phone for 3+ hours with Dell tech support trying to get it unlocked/reset, and they are having him re-load all the software, Windows Vista, etc..  This seems absolutely crazy to me that it is this difficult to get reset.  I know it is for "protection", but there has got to be an easier way.  We got a free upgrade when we bought the laptops for Windows 7 – is this a Vista issue or just a Microsoft issue???   Any ideas/thoughts???  Very frustrating and would seem to me to be a widespread problem.  I appreciate your input!

Thanks,
Amy

It turns out, it’s entirely possible to completely lock yourself (and anyone else ) out of your Vista computer.  When you install Vista, it asks you for an administrator password that it will apply to the built in Administrator account.  Then it’ll create a standard user account, that’s also an administrator.  If you somehow end up locking out or disabling both accounts, it’s almost impossible to get back in.

This video demonstrates, first, how to hose your computer by disabling both accounts.

[youtube=http://www.youtube.com/watch?v=ecYHxIoMFJc]

Next, it shows how to fix them.  To fix the admin accounts and regain access to your computer, reboot your computer.  While it’s booting (before it gets to the graphic lights that slide back and forth, hit the [F8] key multiple times.  You should get the advanced boot options menu:

image

From there, choose “Safe Mode” and hit [Enter].  You’ll be taken to the logon prompt for the Administrator account.  The account is now temporarily enabled.  Once you get to the desktop, follow the instructions demoed in the video to re-enable the Administrator account and any user accounts you need.  Then reboot and you should have control of your computer again.

Note that it has been reported that this does not work for everyone!!

Got an alternate tip on how to resolve this problem?  Post it in the comments below.

What is “Google Android Development”?

image Google has created an operating system for smart phones and Verizon has just released their Android phone that uses the Google OS.

To write software for this smart phone, you first need to register with Google to get access to the SDK.  The registration is free, but Google could, theoretically, deny you access.  If you’re accepted, you given instructions on how and where to download and install the SDK.  You program in the Java programming language.

That’s about all the information I have on it at the moment since this is so new.  Check back later for updated information.  I am almost certainly going to start developing for this smart phone fairly soon, so I’ll be updating this blog at that time.

Of course, this is just a very very basic and very broad description of Android development.  This article is just a very very thin, intro explanation of what Android development is.  Please see the following articles about the other types of software development to see a contrast to this style of programming:

(check back later for these bulleted items to become links to new articles).

If you have any questions about this, feel free to enter them in the comments section just below this article.

What is “iPhone Development”

image Unless you’ve been living under a rack for the past 3 or 4 years, you already know what an iPhone is.

iPhone development is simply the task of designing and writing a program that runs on the iPhone.  To do that, you need an Apple Macintosh computer.image  Then you need to purchase the iPhone SDK.  With that you’ll get the Object C compiler and editor.  That is the language you use to write programs for the iPhone.  Once you’ve written your software and have tested it thoroughly, you then submit it to Apple for consideration for sale on the iTunes app store.  Every time you submit an app, you have to pay another $99.  This is the only way to distribute your iPhone application.  Apple has locked down the iPhone making it impossible (without hacks) to deliver your software any other way.  Apple has had numerous complaints from developers on how long it takes them to approve a new iPhone application (we’re talking months!).  After Apple finally gets around to looking at your application, they very well may reject it.  It could be for technical reasons (they found bugs in your software) or because they just don’t like the program.  Sometimes, they don’t give an explanation.  If, however, you know that it was because they found bugs, you can the fix the bugs and re-submit it for Apple’s approval (which will cost you another $99).

Assuming Apple accepts your application into the iTunes store, other iPhone users can find your application in the HUGE catalog (as of this writing, the 100,000th app just arrived in the app store).  They can download and purchase your software.  You keep a large portion of the sales of your software and Apple keeps a portion too.

Back to developing for the iPhone.  I attended an iPhone development demonstration at CodeStock 2009.  The demonstration was perfectly fine, but when I saw the amount of coding effort just to bring up a blank window, I felt like I’d gone back in time 17 years.  It is incredibly laborious.  I decided then and there that I’d never want to do iPhone development.  But, then came along MonoTouch, which is essently .NET development for the iPhone.  It’s created by the same group that brought us Mono for Linux, which is a .NET rewrite from scratch from a bunch of open source geeks.  Unfortunately, because of Apple’s really tight restrictions on what you can and cannot do on an iPhone, the MonoTouch development team had to put considerable effort into getting MonoTouch to both work on the iPhone and pass Apple’s overly strict policies.  For that reason, MonoTouch costs no less than $400 per developer.  But, I’d buy it in a heartbeat if I had to do iPhone development.

Contrary to iPhone development, Windows Mobile is completely open and unlocked.  Anyone can develop for Windows Mobile.  There’s no permission form to fill out.  There’s no fee to pay.  There’s no waiting for approval.  There’s no rejection.  There are multiple compilers that can develop for Windows Mobile, though I highly recommend Visual Studio 2008.  As for deploying your applications, there are zero limitations.  You can give them away to friends on disk, put them on your website, charge whatever you want and keep 100% of the proceeds.  There’s no lengthy process that you’re forced to endure just to get your apps in the hands of the public.

Of course, this is just a very very basic and very broad description of iPhone development.  This article is just a very very thin, intro explanation of what iPhone development is.  Please see the following articles about the other types of software development to see a contrast to this style of programming:

If you have any questions about this, feel free to enter them in the comments section just below this article.