Category Archives: Uncategorized

CryptoLocker Trojan

While listening to an episode of the computer security podcast, “Security Now!”, hosted by Leo Laporte and Steve Gibson on the TWiT Netcast Network, I found out about the CryptoLocker trojan, which has been pretty troublesome to those who’s computers happen to get infected with it.

CryptoLocker Background:

CryptoLocker is the name of a trojan horse that has recently surfaced, within the last few months, and has been causing some interesting issues for those who have been unlucky enough to have had their computers infected with this piece of malware, as it actually can encrypt some of the contents of a user’s hard drive, making it virtually impossible for them to access this encrypted data unless they choose to pay a ransom that has been set by the developers of the trojan.

Specifically, the CryptoLocker trojan encrypts the infected hard drive’s files using RSA public-key cryptography, with the only key available to decrypt the data being stored on the servers that control the CryptoLocker trojan. Making matters worse is that users must pay in order to have their files decrypted, with payment types such as Bitcoin or a pre-paid voucher, and users must make this payment by a specific deadline. (According to, the price of a Bitcoin at the time of this posting is equal to around $954.34 US dollars!)

Should a user not make the ransom payment by the set deadline, they may still have the option to get their data unencrypted, but the price will be higher than that which was set before the deadline expired.

Although it is possible to scan for and remove the actual CryptoLocker trojan, if it is activated, thus encrypting one’s files, before the program is scanned for and removed, any files that were encrypted will remain encrypted, so a user essentially has no choice but to pay the ransom, unless they have previously backed up their files and can restore them.

Prevention and Dealing with Infection:

Like many computer viruses and other malicious files and programs, it is possible to essentially prevent one’s computer from being infected with programs like CryptoLocker, simply by being security conscious and taking some basic precautions.

Since CryptoLocker can infected computers via an infected ZIP file, sent to the user in an e-mail attachment, it is important to be cautious as to what e-mails and attachments one opens, especially if they appear to be from an e-mail address that you have never seen before or that looks weird or suspicious.

Many spam e-mails (and those that are infected with viruses and such) may appear as though they are from legitimate sources, such as a school, bank, or even the e-mail provider itself, but looking at the e-mail address that the message was sent from can pretty much give away the fact that the e-mail was sent with malicious intent. This is especially true if the e-mail contains an attachment that is in either .zip or .exe form.

Additionally, one can help to keep their computer from getting infected by a number of viruses and other malicious files or programs by running frequent antivirus, antispyware, and/or antimalware scans. Microsoft Security Essentials is an antivirus program, created by Microsoft, that is available as a free download from the Microsoft website, and can help to prevent, as well as pick up and remove, many viruses and other unwanted or harmful programs and files.

MalwareBytes is a free antimalware program, which has the option to be upgraded to a premium version (though the free version works well), and is another way that users can help to keep their computers free from infection by running frequent scans. MalwareBytes can be downloaded from, where the premium version of the program can also be purchased ($24.95 for a lifetime license for one computer).

Example of Infection:

CryptoLocker actually managed to infect the Swansea, MA police department, forcing them to pay $750 in Bitcoins in order to decrypt the data that the trojan had encrypted on them.

In an article from the website, which talks about the aforementioned infection of the Swansea, MA police department, it is stated that “According to the Security experts and the U.S. Computer Emergency Readiness Team urge people afflicted by CryptoLocker not to pay the ransom, but instead report the incident to the FBI’s Internet Crime Complaint Center. Users should regularly back up important files on external hard drives” (Ryan W. Neal).

However, if one happens to have important or necessary files stored on their computer that have not been backed up and have been encrypted by the CryptoLocker trojan, paying the ransom is the only way to get the files back.

This goes to show that even law enforcement agencies are susceptible to their computers becoming infected with viruses and other malicious files and programs, and that everyone should be careful of what is downloaded and allowed on their computers, so as to prevent things like this from happening.

For more information about the CryptoLocker trojan, you should check out this article from Wikipedia, which is where most of the information regarding CryptoLocker in this post was found, along with additional information.


Five Year Giveaway Winner!

About a month ago, it was the fifth year anniversary of the day that I registered the TechnicalCafe domain name at

In celebration of TechnicalCafe’s fifth birthday, I decided to do a giveaway to someone who comments on either the TechnicalCafe blog or YouTube channel, with the winner being chosen randomly.

As for the prizes, the winner would get to choose from either a $25 gift card and a $25 iTunes gift card, depending on what they wanted. Additionally, the winner will receive a choice of either a TechnicalCafe t-shirt, hat, or other item from the VistaPrint store.

Well, about a week ago, the winner was chosen randomly in a YouTube video, and is Epic, a user who commented on the TechnicalCafe blog post announcing the giveaway.

Congratulations to Epic on being chosen as the winner and thank you to everyone who entered and participated in the giveaway!

Also, thank you to everyone who watches, subscribes to, and takes the time to comment on the TechnicalCafe YouTube channel and videos, as well as to those who read the TechnicalCafe blog. I appreciate it!

– Jamie

Five Year Giveaway

Hey everyone!

Believe it or not, today, July 30, 2013, marks the fifth anniversary of the day I registered the domain name, making it TechnicalCafe’s fifth birthday!

Since five years is a pretty big milestone to have reached, I figured it would be a fun idea to have a giveaway, both to celebrate TechnicalCafe’s fifth birthday and to also give back to those who have helped to make the TechnicalCafe blog and YouTube channel what they are today!

The winner of the giveaway will receive a $25 gift card to either or iTunes, as well as a choice of a TechnicalCafe t-shirt, mousepad, or coffee mug with a TechnicalCafe logo on the item that the winner chooses.

All you have to do to enter the giveaway is to either post a comment on this blog post or on this video from the TechnicalCafe YouTube channel! (Feel free to subscribe, too!)

After a week or so, the winner will be chosen in a video that I’ll post to the TechnicalCafe YouTube channel, after which I’ll try to get in contact with the winner to obtain their choice of gift card, item, e-mail address, and shipping information.

Thank you to everyone who has followed and subscribed to TechnicalCafe over the past five years! It’s been fun to read people’s feedback and see how people have benefitted from what TechnicalCafe has to offer and I hope that we can continue to provide great quality information and tutorials in the future!

(Just so you know, if you leave a comment below, please ensure that you leave your e-mail address or Twitter username so that we can get in contact with you!)

Thank you,

Jamie McGibbon

Classes, Objects, Methods, and Constructors

As a fan of the website and YouTube channel, I am also a member of the TheNewBoston forums, where there are a bunch of knowledgeable and helpful people when it comes to computers, programming, and technology.

Recently, one of the users of the website posted in the Java section of the forums, asking what the difference was between classes, objects, methods, and constructor methods in Java, which I thought was a pretty good question, and figured I’d write a blog post about it to explain it to those who may not be a member of the TheNewBoston forums.

Since Java is an object-oriented programming language, many programs and applications written in the language are made up of multiple classes, which contain attributes, methods, constructors, etc., all of which work together to make the program run the way the programmer intended.

In a procedural language, like C, Pascal, Fortran, or BASIC, classes don’t really exist, so the idea of objects and object-oriented programming doesn’t apply (though there are some things that are similar to object-oriented programming languages with some procedural languages),  Java and other OOP languages rely on the concept of classes and objects, so it’s important to understand what these things are and how they work.


In object-oriented languages, like Java and C++, classes are essentially sections of code that are combined into a project to create a program.

Classes are useful, as they help to break up the various sections or pieces of code that may be a part of a larger program, and can be helpful when organizing and diagramming how a program or application should work.

Classes can contain attributes, such as variables and constants, as well methods (similar to functions in other languages, like C, JavaScript, PHP, etc.).

Variables and constants usually hold values (and constants are usually “permanent” values, meaning they can not be changed in the program), which can be used elsewhere in a class, or referenced from another class, via an object of a particular class.


Methods, which are contained in classes, are used to perform operations on data, such as mathematical operations like addition, subtraction, multiplication, and division, obtain data from the user or from elsewhere in a program or file, parse data entered by a user, program, or file, and more.

Many classes available in the various Java libraries, such as the Math class, contain a bunch of methods (and attributes, like pi and e), that can be used to perform a variety of different operations or functions.

In the case of the Math class, there are methods, like sqrt()pow()abs(), and a variety of other methods, many of which also take parameters, which are values that are passed into a method, by putting attributes in the parenthesis of a method.


Objects are basically different instances of a class, and allow you to access and use the public methods and attributes of the class that has been instantiated, or created, as an object.

For example, in the Scanner class (a class in the java.util.* package), you can use, or “call”, the various methods that are contained within the class, such as the nextInt()nextDouble()nextLine(), and other methods, provided that you have instantiated an object of the class.

When instantiating an object of a class, you usually use the following syntax:

ClassName objectName = new ClassName();

(Note: In the above line of code, the “ClassName()” segment, after the “new” operator, is actually a call to the class’s constructor method, which will be discussed later in this post.)

If you would like to call a method of a class, you can do so by placing the method name after the object name, using the “dot” operator, like in the example below:


Many times, methods will return values, which can be stored in a variable, such as when finding the square root of a number, getting user or file input, etc., which could look something like:

double myDouble = Math.sqrt(27);

In this case, the value of the variable myDouble would be 3, since the square root of 27 is 3.

Constructor Methods:

Since Java is an object-oriented programming language, there are times when an object of a class requires a value upon instantiation, or creation, of an object of that class.

This is where constructor methods come in handy, as they enable objects to be created with initial values, either entered by a user or taken from elsewhere in the program, such as from another class, a return value, an attribute, etc.

Every class in Java contains a constructor method by default, even if one is not explicitly written in the class, regardless of whether or not the class requires one or not. Because of this, the default constructor will execute when an object of the class is instantiated, but won’t change any data or affect how the class or object works.

However, if a class requires a constructor method, a programmer can write one, therefore overriding the class’s default constructor method.

Whenever an object of a class is instantiated, its constructor method can be used to initialize or change the various values and attributes present within the class, which can be useful if a class requires user entered data or information from somewhere else in the program.

Below is a link to an example class that I wrote, called CircleClass, where you can see various parts of a class being used, including attributes, methods, a constructor, etc.

Also, here is a link to another class that I wrote, called MainClass, which shows how an object is instantiated and how methods of an object are called, including how the constructor is used to initialize class attributes.

After I wrote and compiled the code for these two classes, I was able to run the program successfully, and got the correct results (I checked using Google’s calculator functionality), which are below.

Area: 78.53975
Circumference: 31.4159

If you’d like to see my reply to the thread/post referenced in this blog post, you can check it out here, at the TheNewBoston forums.

For updates on future posts or if you’re interested in what I’m up to on a day to day basis, please feel free to follow me on Twitter (@Jamiemcg)! You can also follow TechnicalCafe’s Twitter (@TechnicalCafe) for news and updates regarding the website, YouTube channel, and more!

Skullcandy Hesh 2.0 Headphones

If you’re looking for some new, good quality, headphones that won’t break the bank, perhaps you should check out the Skullcandy Hesh 2.0 headphones.

I found out about these headphones while in my local Target store with my father recently, and after giving them a listening test, using the music samples that were available at the store, I decided to purchase them, as I was unable to find my Apple earbud headphones, that came with my iPhone 5.

At the store, however, there weren’t too many sample audio tracks to listen to, and the two that I did listen to were RAP or hip-hop style songs, so I didn’t to hear how other song types sounded, but did like how the bass sounded when listening to the available tracks.

There were other headphones available to test out, as well, including Beats, by Dr. Dre, though I wasn’t able to get the sample music to play through them (probably some issue with the audio source, connection, etc. and not the headphones themselves.), and did not want to spend too much money on headphones anyway, so I decided to go with the Skullcandy Hesh 2.0s.

Once I got them home and opened them, I tested them out, using my iPhone 4 as the audio source, with a variety of songs that I had on the phone, including rock, dub-step, piano, and other styles and types of music.

As far as sound quality goes, I think these headphones offer great sound quality, with a rich bass and the ability to handle higher treble sounds without any sound issues. They also produce a clear sound, with great quality, that may even rival that of more expensive headphones.

While the Hesh 2.0s do not offer noise-cancelling capabilities, they do have padded earphones, which do a pretty good job of keeping external noises, such as the sound of a TV or people talking, out, leaving you to enjoy your music without too many distractions (at least at a low sound level, anyway).

As for the actual hardware, the headphones themselves are made of plastic, but don’t feel as though they’re cheaply constructed. Also, like mentioned before, they have padded earphones, which offer a decent amount of comfort. (However, at the time of this writing, I haven’t worn them for an extended period of time.)

These headphones also don’t require any batteries or charging, as they’re powered solely by the device that is providing the audio, which adds some convenience, as you don’t have to worry about the need to carry extra batteries with you or having to recharge. However, the downside to this is that they may pull some extra power from your iPod or other device, draining the battery a bit quicker than usual.

Additionally, the Hesh 2.0 headphones come with a detachable 3.5mm cord, which is nice when it comes to storing them or even if you find the need to replace it, should anything happen to it.

Also included is a carrying bag, which doesn’t seem as though it would offer too much protection, but is nice for storing the headphones, and maybe the cord, should you want to put them together.

All in all, for around $60 (at Target, where I purchased them), I think the Skullcandy Hesh 2.0 headphones are a pretty good deal, as they provide great sound quality and offer good comfort when wearing them.

While there may be some higher priced alternatives available, the Skullcandy Hesh 2.0 headphones are definitely a good pair of headphones to consider if you’re on a budget and are looking for a good pair of over-the-ear headphones that offer great sound quality and comfort!

If you would like to check out these headphones, you can do so from, where they are offered (at the time of this posting) at $38.15, which is a 36% savings from the retail price of $59.99.

For updates on future posts or if you’re interested in what I’m up to on a day to day basis, please feel free to follow me on Twitter (@Jamiemcg)! You can also follow TechnicalCafe’s Twitter (@TechnicalCafe) for news and updates regarding the website, YouTube channel, and more!


iOS 7

If you’re an iPhone, iPad, or iPod Touch owner, or perhaps an Apple enthusiast, you have probably heard about the newest version of Apple’s iOS operating system, iOS 7, which was revealed yesterday, on the first day of Apple’s WWDC event in San Francisco, California.

While there was no new iPhone announced, it was announced that Apple’s iOS would be getting a pretty significant update, to iOS 7, this Fall and would be available on the iPhone 4, iPhone 4S, iPhone 5 and the newer iPod Touch and iPad models.

Included in this update are a variety of new features including a new design for the user interface (which includes app icons, the app dock, as well as many of the Apple applications themselves), the addition of the “Control Center”, an update to the “Notification Center”, improved multi-tasking capabilities, iTunes Radio, the camera app, Safari, Siri, and other updates, as well.

User Interface & Design:

The user interface and design that we have been used to in previous iterations of iOS, including the current version, iOS 6, will be receiving a pretty significant update, with many of the Apple made applications’ icons and user interfaces getting face-lifts. Included in this list of apps are Notes, Safari, Calendar, Photos, Camera, Weather, Stocks, Compass, and many of the other Apple apps that are included in iOS.

In addition to the icons themselves being updated with new looks, many of the Apple application user interfaces will also be getting new looks, with many of the apps featuring new, simplified UIs.

For example, the Messages application will be updated with a new UI that features new speech bubbles that look “flatter” than the ones in previous versions of iOS. The keyboard section of the app will feature a keyboard that contains combinations of black, white, and grey. These updates provide a “cleaner” and more simplified look to the app, while still looking similar to the previous version of Messages.

Another significant app update is present in the built-in Weather app, which will feature animations detailing the current weather conditions, in a way that is similar to those seen in other, third-party, weather apps available in the App Store. So, if it is raining outside and you launch the Weather app, you will see rain drops falling on your iPhone’s screen, along with other weather information, like the temperature, etc.

Siri will also be receiving an update in iOS 7, which will make it look more simple and will feature a new screen that appears when talking to or asking questions of the application. In addition to asthetics, Siri will also feature a voice update, and users will now be able to choose between a male and female voice.

Control Center:

Another update included in iOS 7 is Control Center, which provides users with quick access to what their phone is doing at the current moment. Accessible by swiping up on the screen at any time, even from the lock screen, users can perform actions, such as set their phone to Airplane Mode, enable or disable Wi-Fi, turn on the “rotate-lock”, adjust screen brightness, and view information regarding music and volume.

The new Control Center will also enable users to quickly access several apps, including the Calculator app, enable the new “Flashlight” feature, use the camera, and use their timer application.

Notification Center:

The Notification Center, which has been around for a while, and can be accessed by swiping down from the top of the screen from almost any application, is also getting some updates in the newest version of iOS.

Among the updates to the Notification Center include the ability to view the weather, your calendar, reminders, missed calls, text messages, and more. Users can also choose whether they would like to see notifications for “Today”, “All”, or “Missed”, which gives them better control over the information they would like to see.


Multitasking is another feature that has been around for a while that is receiving some updates.

In iOS 7, the operating system learns which applications users like to use, and when, and has the ability to update the app’s content before the user even opens it. This feature may be good for checking applications like the weather, stocks, Facebook, Twitter, and any other app that you check frequently or at a specific time of the day.

Also, like before, pressing the Home button twice will reveal the applications that are currently running on the phone. However, in iOS 7, not only will apps appear in the bottom, dock area, you will also be able to view previews of the applications and if you would like to quit one, all you have to do is swipe up, putting it out of view.

Additionally, iOS 7 will schedule updates to your phone at times that are more convenient for the battery, such as when the phone is plugged in and connected to Wi-Fi.

Other Updates:

In addition to the updates mentioned and explained above, many other features of iOS will be receiving updates, including the camera application, Photos application, Safari, AirDrop, the App Store, Siri, and more.

Also, iOS 7 will feature iTunes Radio, which enables users to stream music and more from “radio stations” available  from within the app, which sounds similar to other third-party applications, like iHeartRadio.

If you would like more information about the updates that will be included in iOS 7, you should check out the iOS 7 page on the Apple website.

Also, if you have any questions, comments, or suggestions related to this blog post or any other matter, please feel free to use the Contact page to send me an e-mail. Alternatively, you can send a Tweet to either @TechnicalCafe or @Jamiemcg!

What is the Difference Between Java and JavaScript?

If you’re a computer user, especially one who uses the Internet on a regular basis, chances are that you have heard of both Java and JavaScript, two programming languages that some people may unintentionally confuse, due to the similarity of their names.

However, these two programming languages are not the same, and are actually used to do different things, though they do share some of the same syntax and other features. They are also both frequently used by programmers, and in fact, you may use them both everyday and not even know it!


Java, though it shares some syntax and other features with JavaScript, is a totally different programming language, and is used for different purposes than one might use JavaScript for. And actually, Java was created first, before JavaScript existed, which may be where the inspiration of the name “JavaScript” came from.

One of the major differences between Java and JavaScript is that Java is a compiled, high-level, multi-purpose programming language, which can be used for a wide variety of different tasks, both online and in a browser and offline and running on a computer’s operating system, independent of whether or not the computer has an Internet connection.

Unlike JavaScript, which can be written and then immediately executed with a user’s browser, after writing Java code, it must first be compiled, or turned into code that can be understood by the computer, or more specifically, the Java Runtime Environment’s, or JRE’s, virtual machine (JVM), since Java code runs with the help of a virtual machine.

Once a programmer writes their Java code (a “.java” file), and the complies it, it turns into a “.class” file that contains the compiled Java bytecode, which can then be read and understood by the Java Virtual Machine. The JVM, in turn, takes the compiled Java bytecode and then runs, or executes, the code, thus causing the computer to do what the programmer originally asked it to do.

Since Java runs with the help of the Java Runtime Environment and its virtual machine, Java code can be run on any device that supports the installation and running of the JRE and JVM, which includes computers, cell phones, routers, cameras, and other devices!

Another difference between Java and JavaScript is that, when writing code in Java, a programmer has to define which datatype they will be using, which includes defining the type of variable that they would like to use, where as in JavaScript, this is not usually the case.

For example, in Java, there are a variety of different datatypes, such as: String, int, float, and double. (There are also others, which can be found by doing a search online.) In JavaScript, the variable type var can contain all of the above datatypes that one has to specifically define in Java, thus making the writing of Java code a bit trickier.


JavaScript is a type of programming language, as its name implies, called a “scripting language”, and is mainly used in web development, as it allows programmers to add more interactivity and functionality to webpages than just HTML and CSS alone. JavaScript is also frequently used with languages like PHP and MySQL, in the form of AJAX or by use of the jQuery library.

To be more specific, JavaScript is considered a “client side scripting language”, which means, unlike languages, such as PHP, which is a “server side scripting language”, it can be used to interact with a user’s web-browser, adding interactivity that otherwise would not be present with just HTML or PHP alone.

For example, when used in conjunction with the jQuery JavaScript library, JavaScript enables users to enter data into a database without having to refresh the page that they are currently on. This helps to reduce the number of page loads, thus making interactions on a website quicker than they would otherwise be.

An example of how data can be entered and retrieved from a database without having to refresh the page would be with Facebook’s chat service. When a user types a message to another user, the data is entered into a database, but is also then retrieved from the database relatively quickly and shown to the receiving user or users whom the message was intended for.

Because of languages like JavaScript, especially in the form of jQuery and AJAX, the user does not have to refresh the page they are on, making the user experience faster and easier for the user.

Additionally, JavaScript can be used on its own to create alert, or pop-up, boxes, which we have all seen while using the Internet. Also, using JavaScript, programmers and web designers can create redirects, so that a user does not have to enter in another URL, should they need to be transferred or directed to another webpage – the JavaScript code will do this for them automatically.

However, programmers can not create full-featured stand-alone programs that can be compiled and run on a computer’s operating system alone, as JavaScript is intended for use within web-browsers and for other, similar, applications — this is where languages like C, C++, and Java can be useful. 


In addition to all of the differences between Java and JavaScript, there are also similarities between the two languages (and other programming languages, as well)!

For example, in both Java and JavaScript, much of the syntax is the same, especially when it comes to writing basic code, such as with loops, if/elseif/else statements, methods, and more!

Also, both languages are object oriented, which means that they both support the use of the various features of object oriented programming, such as the creation and instantiation of classes, manipulating objects, encapsulation, polymorphism, as well as some other features.

However, there may be some slight differences between the various things that can be done when related to OOP, since the two languages are different and serve different purposes, but for the most part, the two languages support much of the same features when it comes to writing object oriented code.

If you were someone who was unsure of what the differences between Java and JavaScript were before reading this post, hopefully you are now in the know as to what the differences and similarities are when it comes to writing and using both Java and JavaScript code!

Also, should you have any questions, comments, or suggestions on this post, or any other post or topic, please feel free to contact me!