Steve Jobs is gone, but will never be forgotten

As we have moved into the year 2012, we must stop for a moment to think and to consider what we have lost in 2011. It was a year with huge stories full of drama, happiness, revolutions and change, but 2011 also brought us its fair share of tragedy and deaths as well. The most notable losses among them were of Steve Jobs, who revolutionized our modern lives and changed the way we look at technology and business. He died after a long and tiresome battle with pancreatic cancer.

Steve Jobs; a visionary transformer

Steve Jobs single-handedly transformed Apple into a multi-billion dollar revenue generating machine with his blunt and straightforward business ethics while completely changing how an average person listens to his music, uses his cell phone, and works on his computer. He made a long-lasting impact on the global consumer electronic products market with a series of top notch successful products starting with the iPod, the iPhone and finally the iPad. In just about a decade’s time, he dragged Apple from the clutches of total bankruptcy to the world’s # 1 consumer electronic company. Steve’s intelligence, brilliance and passion cannot be replaced anytime soon because the world lost an innovator and a visionary.

Reactions of employees and fans

From Apple’s highly sophisticated headquarters in Silicon Valley to its high tech retail stores (over 357 as of October 2011), employees and fans alike were all greatly taken back by the sad demise of the man they loved. He was lovingly called as just ‘Steve’ by his followers.

Few days after the death of Steve Jobs, the realization started to sink in the hearts of Apple’s sixty thousand plus workforce that he was no longer there with them. Some employees have publicly announced that they will be working extra hours with increased dedication in honor of Steve Jobs because he personified the work ethics and how success can be achieved through complete dedication.

One inventor’s opinion of the other

Even, his long time rival and partner, Bill Gates had nothing, but praise for the man. Bill Gates recently said that Steve’s loss will have a considerable impact on how creativity and inventions are pursued and its impact will be felt for generations to come in the world of technology. He was quoted, “For those of us lucky enough to get to work with him, it’s been an insanely great honor. I will miss Steve immensely…”

Steve Jobs, A role model for many

Similarly, his large legion of fans spread across the globe, considered Steve Jobs as a hero and a larger than life character. His fans were intrigued by his casual personality and lifestyle decisions. There was something really unique about the man, his thinking and the way he presented himself before the public. He was considered as some one with a touch of craziness inside him.

Steve Jobs was an inspiration for many particularly the young generation. In August 2009, Jobs was chosen as the most admired entrepreneur among teenagers. It doesn’t really come as a surprise because he represented energy, passion and the will to take absolutely crazy risks.

How Steve Jobs had an impact on an ordinary person’s life?

In the wake of his death, many of his loyal followers and fans are of the opinion that Steve Jobs should be awarded the Nobel Prize for his efforts and be officially recognized for his success in the world of technology. Steve Jobs did not just change the lives of normal healthy people; he also created all his products with the problems and issues of the disabled in mind. Many of his fans belong from families that have a disabled person with them. It shows how user friendly Apple’s (Steve’s inventions) products were.

Steve’s impact on the IT world

Every new product that Steve Jobs created was an invention by itself and not just an upgrade of a previous model or design. His inventions appealed to the mass market and the public at large. People were dumb founded how for example the iPhone revolutionized the cell phone design. Job’s products are worthy of being placed in a museum not because of it’s age, but rather the ground-breaking effect it had on the technology industry and on the daily lives of people.

Steve Jobs is no longer among us, but his legacy will live on forever. He’s already being called the greatest personality of our modern age and is being compared to inventors like Albert Einstein, Henry Ford and Thomas Edison.

Written by Frederic, freelance  writer, web blogger and data recovery software consultant.

BACKUP, CLONE & Restore WordPress With 1 Click!

If you use WordPress to blog, here is an awesome WordPress BackUp tool a friend showed me. This thing backs up everything… Posts, pages, images, plugins, all the settings, all of it!

I’ve been blogging for over 7 years and have always had this scary thought in the back of my mind, “What is it crashes, I don’t have any back ups”. I have looked into backing it up but nothing is convenient enough to stick to. The plugins out there are half-decent but not worth investing in.

When I got an email from a friend of mine that blogs a lot, to say the least, and he told me about this plugin, I was shocked at how awesome it is. So I am tellign everybody about it today. If you run WordPress, you need this plugin. At least do your self a favor and take a look at it. I am sure you will love it and will probably thank me.

Go there now, Backup Creator: http://bit.ly/xWDtfm

Yes, that’s my affiliate link. I will get a cut if you buy it. No reason to lose out on free money while helping people out. :)

~ Valik

S.O.P.A. Internet Blackout Strike

It’s been talked about a lot and the time has come to act. January 18th, 2012 marks the largest Internet protest ever, to stop the Internet censorship bills SOPA and PIPA. Raise awareness about these bills by blacking out your website for a day and redirect your visitors to the SOPA Strike web page where they can tell Congress to stop these bills on January 24th when it goes for a vote.

If this bill passes, the Internet as we know it will no longer exist. The blackout is in a way a taste of what the Internet will be like if SOPA passes and they start cracking down and shutting down websites they don’t like.

Join the protest very easily. Add the code below into your website before the tag and it will do the rest. It will enable the protest on the 18th and go back to normal on the 19th. Then you can just remove this code.


<script type="text/javascript">

var a=new Date,b=a.getHours()+a.getTimezoneOffset()/60;
if(18==a.getDate()&&0==a.getMonth()&&2012==a.getFullYear()&&13<=b&&24>=b) { 
  window.location="http://sopastrike.com/strike";
}

</script>

If you have a WordPress blog, just add this code to your header.php file right above the tag.

Visit http://sopastrike.com/strike for more information.

Instant JavaScript Tab Menu Revealing DIVs Tutorial

This is a quick tutorial or a note on how to make your tabs content display instantly on-click, rather than have to reload the page and send them to a new page. This is really simple and not formatted but illustrates the concept, plus I just wrote it up for one of my friends so it’s perfect to post here for everyone else.

Here is the code:

START HTML:

<!-- ###### Tabs/Links -->

<a href="javascript:void()" onclick="seediv('features')">Features</a>
<a href="javascript:void()" onclick="seediv('prices')">Prices</a>
<a href="javascript:void()" onclick="seediv('demo')">Demo</a>

<!-- ###### Divs Holding Content -->

<div id="features" style="display:block;">
	Features content stuff goes here. 
	Because this is the main div, it will display by default that is why 
	it's display is set to block, so it is visible but others are hidden 
	with display:none;
</div>

<div id="prices" style="display:none;">
	Prices content stuff goes here
</div>

<div id="demo" style="display:none;">
	Demo content stuff goes here
</div>

<script language="javascript">

<!-- ###### JavaScript function to handle the action -- >

function seediv(whichdiv) {

	// ###### Hides all the content DIVs first
	document.getElementById('features').style.display='none';
	document.getElementById('prices').style.display='none';
	document.getElementById('demo').style.display='none';

	// ###### Then displays only the one that was called
	document.getElementById(whichdiv).style.display='block';

}

</script>

/ END HTML

Now take a look at it, you have the navigation at the top, notice the href is using JavaScript to void out the redirect and instead initiating a JavaScript function using the onclick parameter. Each link is passing it’s div id value to the function so it knows which DIV to display.

Second, we have the divs that are holding the content for each of the tabs. Only the main div is set to be visible using style=”display:block;”, the others are set to none, so they are hidden until their tab is clicked.

Thirdly, the JavaScript function. It listens for a call with a value and as soon as it receives that value, it hides all the divs and then only displays the one that has the value that was passed to it.

That’s is. This is a basic concept of a JavaScript instant tabs content displaying… or whatever you would call this.

Do you have a better, or a different way of doing this? I’d love to see it. Please add it in the comments.

Did You Just Allow Some Facebook App Access To You Bank Account?

That’s something you should watch out for. Some of those Facebook apps out there will ask for access to parts of your Facebook account they have no business accessing. Read all the permissions they are requesting before clicking allow or something like what you see below may go through without you knowing.

Facebook Dev Tips List

These are some handy queries you will need when building Facebook Apps. As I work on Facebook stuff building out FanPageEngine tool and building various Facebook Apps, I spend hours figuring this stuff out so I don’t want it to vanish after I use it. Bookmark this page. I will be adding more and more to it as I find new nuggets of useful code.

CURL Code For Getting Data From Facebook Graph API

<?php

function getsomeinfo($id,$token) {
	
  $url = "https://graph.facebook.com/YOUR_QUERY_HERE;
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: graph.facebook.com'));
  $output1 = curl_exec($ch);
  curl_close($ch);
	
  return $output;
	
}

$thedata = json_decode(getsomeinfo(PAGE_ID/USER_ID,ACCESS_TOKEN),true);

?>

List of Apps Already Installed On A Page
https://graph.facebook.com/PAGE_ID/tabs?access_token=PAGE_ACCESS_TOKEN

Need A Page_Access_Token? Here Is How To Get It
https://graph.facebook.com/PAGE_ID/?fields=access_token&access_token=ACCESS_TOKEN

Get Information About A Given Page
https://graph.facebook.com/PAGE_ID/?metadata=1&access_token=ACCESS_TOKEN

Connect To Facebook From A Web Page

<?php

session_start();

if($_GET['pros'] == '1') {

    if(isset($_SESSION['access_token']) && isset($_SESSION['uid'])) {
       $graph_url = "https://graph.facebook.com/me?" .
         "access_token=" . $_SESSION['access_token'];

		$_SESSION['ai'] = $ai;
		$session = $_SESSION;
		$uid = $_SESSION['uid'];
		$me = json_decode(file_get_contents($graph_url), true);
		
     } 

}

if(!$me) {

   $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] :
       "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
   
   $url = $url.'&pros=1';
		
   $loginUrl = 'https://www.facebook.com/dialog/oauth?'
        . 'client_id=YOUR_APP_ID&redirect_uri='.$uuurl.'&'
        . 'scope=email,manage_pages,OTHER_PERMISSIONS_REQUEST_LIST&'
        . 'response_type=token';
		
   echo '<center><a href="'.$loginUrl.'">'
        . '<img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif" border="0">'
        . '</a></center>';

} else {

   echo "Hello ".$me['first_name'];

}

?>

Cut Your CSS File Size by 30%

Yep, when you are done editing your site, removing the white spaces from your CSS file can trim your file size down up to 30%. But who wants to go and  remove those pesky white spaces and carriage returns out by hand? Not me, I can tell you that. And yes I am sure they have tools for that out there… somewhere… But I went and created a simple one for my self so I can optimize them CSS files and then Un-Optimize them back if I need to so I can actually read them.

Click here to go to the Optimize CSS & Un-Optimize CSS Tool

Sometimes I also want to go and see how some element is made on another site but I go and view source and all I see is a bunch of code all clumped up together (it’s just optimized), but I can’t read any of it like that. So I use the Un-Optimizing tool to make it all readable again.

Bookmark this tool! You will need it, I guarantee it. :)

YouTube (and other) Video Placeholder Image On-Click Swap Tutorial

I’ve received a good question or a tutorial request from one of my readers Andrew, he asked that I do a tutorial on how to make the video placeholder image hide on click and get replaced with the video itself. This is what this tutorial is going to be about. The first thing you will need is a placeholder image, and you can use the YouTube style video play button Photoshop layer PSD file For video placeholder images I posted in the past.

Once you have the place holder image, now we just need to code it in. First I will tell you how I do it and then I will show you. Maybe it’ll be easier to grasp this way.

First I create two DIVs, one will hold the placeholder image and the other will be where the video will go. I do not directly paste the video embed code into this second DIV but instead I have javaScript insert it in there when someone clicks the image. The reason is because we want the video to be set to autoplay but if we stick it in the DIV when the page loads, it will start playing right away in some browsers. So we leave that second DIV empty until someone clicks the placeholder image.

The image DIV has a onclick function call that will engage the function that swaps everything. It will first hide the placeholder image DIV and then insert the video embed code into the video VID and then will make this DIV visible.

You can preview how this works here.

Here is the code:

<div style="width:467px;margin:50px auto;">

	<div id="video_pholder" onclick="seevideo()"><img src="images/video-placeholder.jpg" width="467" height="286" /></div>
    
    <div id="video_code" style="display:none;"></div>
    
    <script language="javascript">
	
		function seevideo() {
			
			document.getElementById('video_pholder').style.display='none';
			document.getElementById('video_code').innerHTML='<object width="467" height="286">
				<param name="movie" 
					value="http://www.youtube.com/v/zIoFnfMhq_Y?version=3&amp;hl=en_US&amp;rel=0&amp;autoplay=1"></param>
				<param name="allowFullScreen" value="true"></param>
				<param name="allowscriptaccess" value="always"></param>
				<embed src="http://www.youtube.com/v/zIoFnfMhq_Y?version=3&amp;hl=en_US&amp;rel=0&amp;autoplay=1" 
					type="application/x-shockwave-flash" width="467" height="286" allowscriptaccess="always" allowfullscreen="true"></embed>
				</object>';
			document.getElementById('video_code').style.display='block';
			
		}
	
	</script>
    
</div>

That’s it, you should now be able to make your own placeholder image swap to a video.

Simple Login App for Iphone Tutorial

I just wanted to make some notes on this new project for mine while I work on it. I am trying to build an iPhone App for my bookkeeping website Cakeio.com. This would be my first iPhone app, so some stuff may take a while to figure out. So far I got the login part working. The app connects to a PHP file on the server and checks the username and password.

The PHP/MySQL

So to start, I created a php script on my server that checks the login info and responds with a Yes or a No.

<?
session_start();
require("dbconnection.php");

$u = $_POST['u'];
$pw = $_POST['pw'];

$check = "select ui, pw from users where ui ='" . mysql_real_escape_string(strtolower($u)) . "' and pw ='" . $pw . "'";
$login = mysql_query($check, $connection) or die(mysql_error());

if (mysql_num_rows($login) == 1) {
    $row = mysql_fetch_assoc($login);
    echo 'Yes';exit;

} else {

    echo 'No';exit;

}

mysql_close($connect);

?>

Then in the Xcode I created a new View-Based Application project. Before I did anything I loaded up some extra files into the Classes directory. The ones we need is the ASIHTTPRequest and SBJson files. First lets take a look at the ASIHTTPRequest.

ASIHTTPRequest

You can download the files here: http://allseeing-i.com/ASIHTTPRequest/

Once unzipped, you will find the files you need inside the Classes folder and then some in a couple other folders. Here is a list of the files you will need:

Inside Classes folder:
ASIAuthenticationDialog.h
ASIAuthenticationDialog.m
ASIHTTPRequestConfig.h
ASIHTTPRequestDelegate.h
ASIProgressDelegate.h
ASICacheDelegate.h
ASIHTTPRequest.h
ASIHTTPRequest.m
ASIDataCompressor.h
ASIDataCompressor.m
ASIDataDecompressor.h
ASIDataDecompressor.m
ASIFormDataRequest.h
ASIInputStream.h
ASIInputStream.m
ASIFormDataRequest.m
ASINetworkQueue.h
ASINetworkQueue.m
ASIDownloadCache.h
ASIDownloadCache.m

Inside Classes/done folder:

ASIHTTPRequestConfig.h
ASIHTTPRequestDelegate.h

Inside External/Reachability folder:

Reachability.h
Reachability.m

Just drag these files right into the Classes folder in the Groups & Files box in your Xcode.

Adding SBJson Files

Download the SBJson files here: https://github.com/stig/json-framework

Drag all the files inside the Classes folder to the Classes folder in the Groups & Files box in your Xcode.

Adding Frameworks

Next I added some necessary Frameworks. To do this follow Step 2 instructions on this page: http://allseeing-i.com/ASIHTTPRequest/Setup-instructions. I also added libxml2.2.7.3.dylib in addition to what they listed there.

Header Search Paths

I had an issue with Xcode trying to include a libxml source by that name but on my Mac I have it named libxml2 so it could not find it. To fix that I went to Xcode at the top tool bar and clicked Preferences. There click the Source Tree tab and add a new setting by clicking the + button at bottom left. There add this:

Setting Name: HEADER_SEARCH_PATHS
Path: /usr/include/libxml2

This might not be the same for you, so use your Terminal and cd over to /usr/include and see if you have a libxml or libxml2… maybe even some other one, so set it to whatever you have there.

ViewController.h

Ok, here is the fun part, here is what I did in the ViewController.h file:

#import <UIKit/UIKit.h>

@interface AppViewController : UIViewController {

IBOutlet UITextField *usernameField;
IBOutlet UITextField *passwordField;

}

@property (nonatomic, retain) UITextField *usernameField;
@property (nonatomic, retain) UITextField *passwordField;

- (IBAction) btnClicked:(id) sender;

@end

ViewController.m

And here is what I added into the ViewController.m:

#import "CakeIOViewController.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"

@implementation CakeIOViewController

@synthesize usernameField;
@synthesize passwordField;

- (IBAction) btnClicked:(id) sender {

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/app/login.php"]];

[request setPostValue:[self.usernameField text] forKey:@"u"];
[request setPostValue:[self.passwordField text] forKey:@"pw"];
[request setDelegate:self];
[request startAsynchronous];

}

- (void)requestFailed:(ASIHTTPRequest *)request {
NSLog(@"Request failed: %@",[request error]);
}

- (void)requestFinished:(ASIHTTPRequest *)request {
NSLog(@"Submitted form successfully");
NSLog(@"Response was:");
NSLog(@"%@",[request responseString]);
}

- (void)didReceiveMemoryWarning {
// Releases the view if it doesnt have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that arent in use.
}

- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (void)dealloc {
[super dealloc];
}

@end

ViewController.xib

In the ViewController.xib file I added 2 text fields and a button, then Ctr+Dragged From File’s Owner box to each text box and assigned each the appropriate textfield variable. Then I Ctr+Dragged from the Button to the File’s Owner box and assigned the btnClicked event to it.

That’s that, save and Command+R it to see if it worked. I also open up the Debugger window by doing Command+Shift+R.

Good luck.

Google+ PageRank 12?

Just out, Google Plus seems pretty stable and clean. Simple to use and nicely integrated into the rest of the Google stuff. So far I like it but am having a hard time choosing to post stuff there rather Facebook. I don’t really have much time poking around on social sites as it is and when I do find a minute to post something, it’ll naturally go to Facebook. With time I think, as more and more people make their way to Google Plus, I’ll probably feel a bigger pull towards G+ but until then enjoy this.

lol.