Monthly Archives: February 2017

Creating a 3D Game With Three.js and WebGL

Prerequisites

  • A browser with WebGL – this game has been tested on Chrome and Firefox. IE still doesn’t support WebGL, unless you’re using Windows 8.1 with IE11.
  • Three.js library available for download from the Three.js website
  • The Keyboard.js helper library I used for this project, created by Arthur Schreiber at No Karma. Download it from my GitHub repository
  • A basic understanding of what Three.js does. Read this super simple, super quick tutorial by Paul Lewis. It’s basically a short-hand version of this article.

Setup

Get a base index.html running

Step one when making a web-based game is to create the host index.html file. In our case, it only needs to be a very simple set of elements, so we can bundle the CSS styling too.

Import Keyboard.js and Three.js

Three.js is a library contained in just one JavaScript file, so we can grab the minified version from the website.

For Keyboard input, we will need to referencethe aforementioned JavaScript file in our index.html as well.

Create setup() and draw() functions

The setup() function will be the start point for the game code. The draw() function will be run every frame and will handle all the rendering and game logic.

In order to loop the draw() function, we simply utilise the requestAnimationFrame() function call, and pass ‘draw’ as the parameter. Remember, not all browsers natively support the call, and you might have to use Paul Irish’s shim to gain maximum compatibility. Also, it is important to realise that requestAnimationFrame() does not guarantee a fixed frame-rate, so you need to use time-deltas to calculate realistic physics. For a basic game like Pong, we don’t really care about that.

Basic World

Set up the Three.js world and camera

Three.js includes these important elements:

  • Scene
  • Renderer
  • Camera
  • Mesh
  • Light
  • Material

Cameras, Meshes, and Lights need to be added to the scene using the scene.add() function.

Attach a WebGL Three.js Renderer to the DIV

The renderer is attached to whichever HTML DOM element you wish to render the scene to, and a render() call is made each frame to the renderer in order to draw the Three.js scene.

Add a camera to the scene

Three.js has the option to create Perspective and Orthographic cameras. For most uses, Perspective camera is the best choice. We can change position and rotation information of the camera like any other object in the scene.

Draw a sphere and light it

Meshes must be paired with Materials in order to give them a defined look and feel. Meshes can be of many types, include primitives such as Cube, Sphere, Plane and Torus. Materials can have different characteristics depending on their type. The basic Material types include Lambert, Phong, and Basic.

  • Basic renders an unlit Mesh with no shadows or dark shading. A sphere will look like a circle if rendered with Basic.
  • Lambert is a simple diffuse-like lighting that creates shading on sides facing away from a light source. It gives a basic 3D look of surfaces that are matte (non-shiny and non-reflective)
  • Phong is used for achieving a plastic-like look and feel, with the ability to gain highlights that give a much shinier appearance to the Mesh.

Show off your sphere with a Point Light. This is the most basic light, with no direction or rotation. Make sure you tweak the light’s intensity and distance to get it looking good.

Add Game Objects

Draw playing area plane

The playing area will be a Three.js Mesh object of type Plane. Make sure the plane matches the play area, giving a small buffer gap to indicate where the paddles can and can’t go.

Draw paddles

The paddles will be Mesh objects of type Cube. Position each of the paddles on opposite sides of the play area.

1234567891011121314151617181920212223242526272829303132333435363738394041
// set up the paddle vars
paddleWidth = 10;
paddleHeight = 30;
paddleDepth = 10;
paddleQuality = 1;
// set up paddle 1
paddle1 = new THREE.Mesh(
new THREE.CubeGeometry(
paddleWidth,
paddleHeight,
paddleDepth,
paddleQuality,
paddleQuality,
paddleQuality),
paddle1Material);
// add the paddle to the scene
scene.add(paddle1);
// Set up the second paddle
paddle2 = new THREE.Mesh(
new THREE.CubeGeometry(
paddleWidth,
paddleHeight,
paddleDepth,
paddleQuality,
paddleQuality,
paddleQuality),
paddle2Material);
// Add the second paddle to the scene
scene.add(paddle2);
// set paddles on each side of the table
paddle1.position.x = -fieldWidth/2 + paddleWidth;
paddle2.position.x = fieldWidth/2 – paddleWidth;
// lift paddles over playing surface
paddle1.position.z = paddleDepth;
paddle2.position.z = paddleDepth;
view rawBNG_Pong_paddlecreateThis Gist brought to you by GitHub.

If you manipulate the camera positions, as seen in the screenshot, you can give a different perspective to the player.

Basic Logic

Ball movement

The ball will have an X-direction and a Y-direction that determines the movement per frame.

// ball’s x-direction, y-direction and speed per frame
var ballDirX = 1, ballDirY = 1, ballSpeed = 2;

The ball will move at a constant speed in the X-plane every frame. To this end, we will specify a ballSpeed variable that acts as a multiplier for the direction values.

// update ball position over time
ball.position.x += ballDirX * ballSpeed;
ball.position.y += ballDirY * ballSpeed;

We want the ball to have some unpredictable characteristics (e.g. when it gets sliced quite hard) so we will allow the Y-direction to go up to a maximum of ballSpeed * 2. You can tweak the values until you’re happy with how the ball behaves.

// limit ball’s y-speed to 2x the x-speed
// this is so the ball doesn’t speed from left to right super fast
// keeps game playable for humans
if (ballDirY > ballSpeed * 2)
{
ballDirY = ballSpeed * 2;
}
else if (ballDirY < -ballSpeed * 2)
{
ballDirY = -ballSpeed * 2;
}

Ball wall bounce logic

Simple collision detection logic is required to check if the ball is touching each of the side ‘walls’. Using a series of ‘if-else’ statements, we check the ball positions against the predetermined wall positions. In the case of a collision, we simply switch the Y-direction of the ball, creating a bounce effect.

// if ball goes off the top side (side of table)
if (ball.position.y <= -fieldHeight/2)
{
ballDirY = -ballDirY;
}
// if ball goes off the bottom side (side of table)
if (ball.position.y >= fieldHeight/2)
{
ballDirY = -ballDirY;
}

Later, we will edit some of this code in order to implement scoring when the ball passes a paddle.

Keyboard input for paddles

We will utilise a very effective short-cut in order to easily get keyboard input working in this game. Using the Keyboard.js file provided, we simply have to include the reference to it in the index.html file and we are set. Only one function call is required, the Key.isDown() call. Given a parameter, the library checks if that particular key is current being pressed, and returns a boolean value.

// move left
if (Key.isDown(Key.A))
{
// code to move paddle left
}

We use the ‘A’ and ‘D’ keys to move the paddle left and right, but you can edit the Keyboard.js with additional values if you want to use your own control scheme.

var Key = {
_pressed: {},
A: 65,
W: 87,
D: 68,
S: 83,
// add your required key code (ASCII) along with the name here
// for example:
SPACE: 32,
};

While dealing with keyboard input, it is also important to ensure that the input is never blindly updated in game. We have to check that the paddle isn’t made to move off the play area, and we do that with some ‘if-else’ statements as well.

// move left
if (Key.isDown(Key.A))
{
// if paddle is not touching the side of table
// we move
if (paddle1.position.y < fieldHeight * 0.45)
{
paddle1DirY = paddleSpeed * 0.5;
}
// else we don’t move and stretch the paddle
// to indicate we can’t move
else
{
paddle1DirY = 0;
paddle1.scale.z += (10 – paddle1.scale.z) * 0.2;
}
}

Note that we use a paddle direction variable, rather than simply applying a change to the position values. This will come in handy when programming the ball to ‘slice’ when hit at an angle with a fast-moving paddle.

Opponent logic

When you code a game of this calibre, it is of utmost importance that you create a vivid, lush environment with a host of emotional, highly-relatable characters that showcase this generation’s strides forward in technology. Instead, we will code a Pong A.I. that blindly follows the ball, because that is even better.

We can update the opponent difficulty by using a variable instead of introducing magic numbers. This variable will affect the ‘reaction rate’ of the opponent by increasing the Lerp (Linear-Interpolation) time.

When using a Lerp (Linear-Interpolation) function, we must ensure the opponent plays fairly by limiting their maximum travel speed. We do that with a few more if-else statements.

// in case the Lerp function produces a value above max paddle speed, we clamp it
if (Math.abs(paddle2DirY) <= paddleSpeed)
{
paddle2.position.y += paddle2DirY;
}
// if the lerp value is too high, we have to limit speed to paddleSpeed
else
{
// if paddle is lerping in +ve direction
if (paddle2DirY > paddleSpeed)
{
paddle2.position.y += paddleSpeed;
}
// if paddle is lerping in -ve direction
else if (paddle2DirY < -paddleSpeed)
{
paddle2.position.y -= paddleSpeed;
}
}
If want to extend immersion, you could also using the paddle.scale property to stretch the paddle when it can’t be moved. This indicates an issue to the player which they can then address immediately. In order to accomplish this, we must ensure the paddle always Lerps back to the default scale size.
// We lerp the scale back to 1
// this is done because we stretch the paddle at some points
// stretching is done when paddle touches side of table and when paddle hits ball
// by doing this here, we ensure paddle always comes back to default size
paddle2.scale.y += (1 – paddle2.scale.y) * 0.2;

Adding Gameplay

Making the ball reset after missing a paddle

To get the main scoring gameplay working, we need to first remove the ball’s ability to bonce off the paddle-facing walls. To do this, we remove the bounce code from the two corresponding if-else statements.

// if ball goes off the top side (side of table)
if (ball.position.y <= -fieldHeight/2)
{
ballDirY = -ballDirY;
}
// if ball goes off the bottom side (side of table)
if (ball.position.y >= fieldHeight/2)
{
ballDirY = -ballDirY;
}
//// ——————————— ////
CHANGED CODE
//// ——————————— ////
// if ball goes off the ‘left’ side (Player’s side)
if (ball.position.x <= -fieldWidth/2)
{
// CPU scores a point
// update scoreboard
// and reset ball
}
// if ball goes off the ‘right’ side (CPU’s side)
if (ball.position.x >= fieldWidth/2)
{
// player scores a point
// update scoreboard
// and reset ball
}

We can handle scoring in many different ways. For a simple game like this, we can simply increment the corresponding score count variable.

// if ball goes off the ‘left’ side (Player’s side)
if (ball.position.x <= -fieldWidth/2)
{
// CPU scores
score2++;
// update scoreboard HTML
document.getElementById(“scores”).innerHTML = score1 + “-” + score2;
// reset ball to center
resetBall(2);
// check if match over (someone scored maxScore points)
matchScoreCheck();
}

We can then update the HUD element in the DOM by setting its innerHTML value. Finally, we have to reset the ball once someone has scored. A simple function can be written to reset the ball, with a parameter indicating which paddle just lost (so we know which paddle to send the ball to next time).

// resets the ball’s position to the centre of the play area
// also sets the ball direction speed towards the last point winner
function resetBall(loser)
{
// position the ball in the center of the table
ball.position.x = 0;
ball.position.y = 0;
// if player lost the last point, we send the ball to opponent
if (loser == 1)
{
ballDirX = -1;
}
// else if opponent lost, we send ball to player
else
{
ballDirX = 1;
}
// set the ball to move +ve in y plane (towards left from the camera)
ballDirY = 1;
}

Making the ball bounce off paddles

Alright, this is it. The big one. Literally the biggest feature of this game. It’s time to get the paddles hitting the ball. In a simple Pong game, paddle-ball physics are nothing more than a couple of if-else statements. We check the X-position and Y-position of the ball against the paddle’s rectangular bounds, and if they intersect, we bounce the ball away.

// if ball is aligned with paddle1 on x plane
// remember the position is the CENTER of the object
// we only check between the front and the middle of the paddle (one-way collision)
if (ball.position.x <= paddle1.position.x + paddleWidth
&& ball.position.x >= paddle1.position.x)
{
// and if ball is aligned with paddle1 on y plane
if (ball.position.y <= paddle1.position.y + paddleHeight/2
&& ball.position.y >= paddle1.position.y – paddleHeight/2)
{
// ball is intersecting with the front half of the paddle
}
}

It’s also important to check the direction of the ball’s travel, as we only want to check collisions in one direction (the direction towards the opponent.)

// and if ball is travelling towards player (-ve direction)
if (ballDirX < 0)
{
// stretch the paddle to indicate a hit
paddle1.scale.y = 15;
// switch direction of ball travel to create bounce
ballDirX = -ballDirX;
// we impact ball angle when hitting it
// this is not realistic physics, just spices up the gameplay
// allows you to ‘slice’ the ball to beat the opponent
ballDirY -= paddle1DirY * 0.7;
}

We will also affect the ball’s lateral movement depending on the relative speed of the paddle when hitting the ball. This is particularly useful in introducing the biggest variable in Pong: the slice. Slicing the ball is often the only way to confuse and outmaneuver the opponent, so it is vital in this game.

Remember to duplicate the code, but update the values to match the opponent’s paddle. You can use this opportunity to gimp your opponent’s ability somewhat, by reducing the hitbox size or decreasing the slice amount. It’s what we would all do.

Here is the final paddle-ball collision function:

// Handles paddle collision logic
function paddlePhysics()
{
// PLAYER PADDLE LOGIC
// if ball is aligned with paddle1 on x plane
// remember the position is the CENTER of the object
// we only check between the front and the middle of the paddle (one-way collision)
if (ball.position.x <= paddle1.position.x + paddleWidth
&& ball.position.x >= paddle1.position.x)
{
// and if ball is aligned with paddle1 on y plane
if (ball.position.y <= paddle1.position.y + paddleHeight/2
&& ball.position.y >= paddle1.position.y – paddleHeight/2)
{
// and if ball is travelling towards player (-ve direction)
if (ballDirX < 0)
{
// stretch the paddle to indicate a hit
paddle1.scale.y = 15;
// switch direction of ball travel to create bounce
ballDirX = -ballDirX;
// we impact ball angle when hitting it
// this is not realistic physics, just spices up the gameplay
// allows you to ‘slice’ the ball to beat the opponent
ballDirY -= paddle1DirY * 0.7;
}
}
}
// OPPONENT PADDLE LOGIC
// if ball is aligned with paddle2 on x plane
// remember the position is the CENTER of the object
// we only check between the front and the middle of the paddle (one-way collision)
if (ball.position.x <= paddle2.position.x + paddleWidth
&& ball.position.x >= paddle2.position.x)
{
// and if ball is aligned with paddle2 on y plane
if (ball.position.y <= paddle2.position.y + paddleHeight/2
&& ball.position.y >= paddle2.position.y – paddleHeight/2)
{
// and if ball is travelling towards opponent (+ve direction)
if (ballDirX > 0)
{
// stretch the paddle to indicate a hit
paddle2.scale.y = 15;
// switch direction of ball travel to create bounce
ballDirX = -ballDirX;
// we impact ball angle when hitting it
// this is not realistic physics, just spices up the gameplay
// allows you to ‘slice’ the ball to beat the opponent
ballDirY -= paddle2DirY * 0.7;
}
}
}
}
view rawBNG_Pong_paddlecollCompleteThis Gist brought to you by GitHub.

Scoring

In Pong, it is usually simplest to have a maximum score value, such that a game is won when either player reaches that score. To that end, we can easily create a maxScore variable and set it at the start of the match.

We then create a function to check if either player has scored equal or higher than the maximum. This function should be called only when a score has been changed (i.e. when someone scores a point.)

// checks if either player or opponent has reached 7 points
function matchScoreCheck()
{
// if player has 7 points
if (score1 >= maxScore)
{
// stop the ball
ballSpeed = 0;
// write to the banner
document.getElementById(“scores”).innerHTML = “Player wins!”;
document.getElementById(“winnerBoard”).innerHTML = “Refresh to play again”;
}
// else if opponent has 7 points
else if (score2 >= maxScore)
{
// stop the ball
ballSpeed = 0;
// write to the banner
document.getElementById(“scores”).innerHTML = “CPU wins!”;
document.getElementById(“winnerBoard”).innerHTML = “Refresh to play again”;
}
}

After a match is deemed complete, it is simplest to just return the ball to the centre and stop any movement, so that play doesnt inadvertently continue.

Prettifying the Game

HUD

It’s important to give feedback to the player so they know what’s going on. For Pong, the least we can do is keep a scoreboard ticking over. Instead of trying to draw the HUD on the same layer as the game, we can use the other DOM elements to provide the required feedback.

It’s also good to indicate the maximum score as well, so we have another element for that which we will update at match start.

// update the board to reflect the max score for match win
document.getElementById(“winnerBoard”).innerHTML = “First to ” + maxScore + ” wins!”;

Shadows

Finally, it is time to make things look a tad more polished. Three.js has the awesome ability to create shadows for primitive objects (Cube, Plane, Sphere, etc.) so we can utilise that to make the game look nicer.

Shadows can’t be created with just a Point light, so we have to add a DirectionalLight or a SpotLight. A SpotLight shines a circular beam of light onto surfaces, which DirectionalLight simply shines a light in a certain direction with no regard to positioning.

We will use a SpotLight because it clearly indicates where the light originates from and shines towards.

We can update the SpotLight to follow the ball around to give a more dynamic look and feel to the game, whilst showcasing the hard work we just put into the lighting.

// we can easily notice shadows if we dynamically move lights during the game
spotLight.position.x = ball.position.x;
spotLight.position.y = ball.position.y;

To make an object in the scene cast or receive shadows, we simply set their .receiveShadow and .castShadow variables to true. For example,

paddle1 = new THREE.Mesh(
new THREE.CubeGeometry(paddleWidth, paddleHeight, paddleDepth, paddleQuality, paddleQuality, paddleQuality),
paddle1Material);
// add the sphere to the scene
scene.add(paddle1);
paddle1.receiveShadow = true;
paddle1.castShadow = true;

Conclusion

This is but a basic introduction to the power of Three.js, which should allow you to create a basic Pong clone.

Play the latest build of this game here: LATEST BUILD*

Find the latest code at its GitHub page*

You can still do quite a number of things to polish your game, such as

  • Create animations for the paddles and ball
  • Update the HUD to look prettier
  • Import complex objects created in Modeling packages, to design a more immersive environment
  • Move HUD elements inside the game view to allow for full-screen gaming
  • Mess around with complex shaders to create reflections and other cool effects

Gigabyte Launches Latest Game Keyboard K7 FORCE Stealth with Anti-ghosting feature

Gamers can now obtain the latest gaming keyboard option in the shopping list. The new gaming keyboards come from Gigabyte called FORCE K7 Stealth. And as a gaming keyboard, FORCE Stealth K7 is also equipped with several features gaming supporters.

The main feature on the keyboard is the anti-ghosting. This feature allows players to be able to press 7 keys simultaneously without conflict. But not all of the support this feature. There are only seven buttons, namely the Q, W, A, S, D, left Shift and Spacebar.

In addition keyboard also comes with a three-color illumination that can be arranged. Three colors are blue, green and cyan. Not only that, the keyboard buttons also have a thin structure. With so each button is pressed, aktuasinya very close distance.

Acquainted with BASH Scripting

It is undeniable that over time, the popularity of Linux is increasing every day. Linux Kernel project which was originally just a fun project by Linux apparently transformed into a project that became the basis for the evolution of the digital world today.

We can see that more and more digital devices are therein using Linux in it. Changes were made in all areas so that Linux can be used by all users, both from the ground level up to the experts though.

One thing that remains a hallmark of Linux is the existence of a shell that is never lost on any Linux distro. Shell is a command-line interpreter on duty to translate the commands entered by the user directly to the system through the help of a terminal or console as a zoom interface (such as Command Prompt on the Windows platform). Although today most of the Linux distributions already to offering graphical display, the shell is still regarded as one of the strengths of Linux shell bridge where users can interact with the system in order to be more flexible. Many things can be done on a shell because we are dealing directly with the system, coupled with the many variants of the shell that offers a variety of features in it, such as csh, sh, bash, ksh, tcsh, ash, zsh, etc.

One of the most common type of shell used is BASH (Bourne-Again Shell) which was created by Bryan Fox in 1988. Shell is a replacement of the Bourne Shell (sh) existing first and is still used in some Linux distributions. Currently BASH shell has become a de facto standard for almost all Linux distributions because it is considered the most feature-rich and has a fairly high degree of portability. For comparison between variants shell can be seen on the Wikipedia website

To be able to understand the Linux system with better and also improve your productivity and take advantage of the flexibility offered by Linux, so it’s good we are trying to learn programming BASH script. PCplus using Slackware Linux distro, but this tutorial can be applied to all Linux distributions for use BASH version 4.2 and above. You can use any text editor because basically BASH script is plain text file. You can also try it on a Windows platform with the help of Cygwin,

open the editor:

1. The first step in creating a shell script is telling the system what shell you want to use, because it could be available in a Linux distribution over the shell variant. Because we want to use bash, then write this line in the first row of each bash shell script that will be created

This code is called the shebang and a special instruction that will determine what the interpreter is going to be used to process a shell script. For example, for a script that utilizes Perl interpreter, it will contain information

2. Because the shell script is basically able to execute commands on the shell, then we can run shell commands from a shell script. For example, we want to display today’s date along with the name that we use username to login. Use the code on the listing-1 as an example. Before you can run the script, give it execute permissions on the file with the command chmod + x’s listing 1.sh (adjust the file name you gave) then run the command.

Date command displays the current date information while whoami will menapilkan your user information to login.

3. What if we want to display the text coupled with a shell command? Use the echo function to display a message to the screen shown in listing-2. Echo function accepts parameters in the form of a text message that will be displayed kelayar. You might ask, why the date and user information are on different lines with text displayed? This is due essentially echo function will display a message and then change the next line. To be able to display an information to the right of the text is displayed, use the-n parameter on the function like echo in the listing-3.

4. You can try some of the commands contained in the location / bin and / usr / bin. If not sure of the usefulness of a command, run the command man <nama-perintah> on the console or terminal, for example, man ls and manual information about the ls command will be displayed. Each command has a variation of different parameters with each other, so there are times when we have to read the manual to know every option available.

Microsoft Will Release Various Xbox & PC Game For iOS & Android Mobile Platform

Undeniably kepopularan iOS and Android mobile platforms on the market today has made Microsoft reportedly plans to bring even more variety of games specifically designed for both platforms.

Meanwhile, according to a report compiled by the Nikkei recently, Microsoft will most likely be a third party to bring even more variety Xbox and PC games that can be run through iOS and Android mobile platforms. And even one Japanese company named clubs reportedly have obtained permission from Microsoft to release a variety of Xbox games and PC specifically intended for both the mobile platform in the near future.

Related to that, a game called “Age of Empires” is said to be the first game to be released exclusively for both the popular mobile platforms.

Yahoo!’s Earnings and the Future of Display Ads

Investors were upset that Yahoo! Inc.’s (YHOO) quarterly results showed a sharp drop in display advertising revenue. And, based on its forecasts, that will not get any better soon. The Yahoo! trouble is not an isolated case. Display rates have started to collapse across the industry, making a chance for Internet advertising to expand as fast as it has over the past decade impossible. That represents trouble for tens of thousands of businesses.

Yahoo!’s revenue fell 7% in the second quarter compared to last year, drifting down to $1.22 billion. Wall St. focused mostly on one comment:

Iconic Brands That Just Vanished

GAAP display revenue was $472 million for the second quarter of 2013, a 12 percent decrease compared to $535 million for the second quarter of 2012.

At the same time, there was no evidence that Yahoo!’s audience fell, so the yield from the average display ad fell considerably.

Yahoo! holds a special place among America’s Internet companies. In the United States, according to research firm comScore, it had a monthly audience of unique visitor that was above 192.9 million in May. That put it a very close second to Google Inc.’s (GOOG), which was 193.5 million. Because of its huge size, the trends set by Yahoo! almost certainly represent those of most of the balance of the industry.

States That Drink the Most Beer

The bane of display advertising today is that so many Web properties have decided to stake their futures on content delivered on small devices, which include, primarily, smartphones. All of the evidence indicates that advertisers will pay less for messages they post on these smaller screens. Actually, the amount marketers will pay for this content environment is much, much less than for traditional display ads that appear on personal computers (PCs). In an attempt to chase the online content audience as it migrates away from PCs, Internet companies have badly damaged future revenue prospects. The trouble is that people will watch content on smaller screens whether online content sites like it or not.

Most experts hope that falling display ad rates can be offset by the increase in video content on the Internet. Advertisers will pay a great deal more for video ads than display ads. So, there is a rush to create this sort of programming. But the likelihood that video can balance the drop in display rates appears unlikely.

Beyond Google’s YouTube, the amount of video posted on the Internet by large content companies is relatively small. In May, Google sites had 154.4 million unique video viewers, driven almost exclusively by YouTube. These visitors spent an average of 437 minutes on Google sites in May. After that, video viewership at other sites drops very sharply. For example, Microsoft Corp. (MSFT) sites had 45.2 million unique video viewers in May. The average time these viewers spent watching video on Microsoft sites was only 36.9 minutes, barely more than a half-hour TV show.

Internet advertising may remain at current levels in terms of volume, but the monetary yield from these ads likely will never return.

Cisco’s acquisition of Sourcefire Rp 27 Trillion

California – The company manufactures and network equipment Cisco Systems Inc. will buy security firm Sourcefire. Companies based in San Jose, California that want to expand their business network security sector.
According to the Head of Business Development Cisco, Hilton Romanski, the company wanted to find a target security firm to grow its business. “We look at the major players security business, Sourcefire apparently the most fitting,” she said on Tuesday (23/7) local time.
With this purchase, the shares of each Sourcefire will be priced at U.S. $ 76. Sourcefire’s stock price jumped 28 percent from Monday’s closing price, U.S. $ 59.08.
Cisco is now focused on the security sector. They will mengenjot safety factor in the hardware, software and cloud. Sourcefire is strong in the security sector, especially the matter of detecting and protecting against any attacks.
According to analysts, this penjuala is expensive but worth it. Because in the security market, the market pie Cisco rivals such as Juniper Networks seized Inc., Check Point Software Technologies, and Palo Alto Networks Inc.. But Cisco reluctant to let market. Cisco Security Head Chris Young said the company will not stop until I can be a pioneer in the field of security.
With this acquisition, research firm IDC rate, Cisco should reach growth of as much as 7.8 percent. Brian White, analyst at Topeka Capital Markets judge, with this acquisition, the kinds of large competitors Dell and Hewlett Packard will also provide bid security for their clients.

Vectorform’s Toolbox For Windows 8 Is Great For Multi-Tasking

Based in Royal Oak, Michigan,Vectorform invents digital products and experiences with a focus on innovative mobile and emerging technology solutions. Vectorform partners with premier global brands including Microsoft MSFT +0.72%, Disney, Coca Cola, and Volkswagen to create the next iconic experience. Vectorform was founded in 1999 and now has over 100 employees across the globe with additional studios in Seattle, New York, Munich and Hyderabad.

Aside from designing experiences for clients, their elite team of artists, engineers, entrepreneurs and technologists has also developed a number of its own applications that have proven very successful.

 

“Vectorform has evolved from a digital agency to part think tank, part lab, and part studio,” stated Vectorform Director of Product Vision, Kevin Foreman.

One of Vectorform’s most popular applications is the ever-evolving Toolbox for Windows 8.  The free application has recorded over 850,000 downloads and is currently the number 1 productivity app available on the Windows Store. With Toolbox you can view and interact with up to six different tools at once, giving you the power and flexibility to customize your workspace for maximum productivity.

There are currently 12 tools available within Toolbox, including a Facebook FB -1.02% application, voice notes, real-time currency converter, web browser, and a Twitter client that was added just this past May. The Twitter application refreshes in real time so that you can view details of content without having to leave the timeline.

When asked why Vectorform was primarily focused on developing apps for the Windows 8 app store, Foreman said “Toolbox specifically was focused on Windows 8, and Toolbox may be ported to additional operating systems.  As a company, we’re focused on mobile and emerging technologies.  We’re platform agnostic.”

Foreman told me that they were one of the companies that had the Microsoft Surface table product a few years ago.  They created a 360-degree user interface where music chips could be dragged around and they used this application create the Vectorform Surface DJ.

Another major project for Vectorform involved the 2008 election where President Barack Obama faced off against John McCain.  Vectorform worked with MSNBC to create virtual charts of aggregated electoral votes used on air by anchor Chuck Todd.

Vectorform was able to take this campaign from concept to final product in 3 weeks.  Vectorform has a passion for creating great products and this is what keeps the company growing.

Lawyer Plugin for WordPress Promises Legal Resources and Nationwide Attorney Network

After two years of development, Lawyer Plugin (www.lawyerplugin.com) launched their first public version of what promises to be an essential plugin for any lawyer running a WordPress website.

Lawyer Plugin is the first plugin of its kind: it gives law firms access to hundreds of local resources which are automatically added, updated, and synced with Lawyer Plugin’s central servers every 24 hours.

The registration takes care of all settings automatically. For example, a bankruptcy lawyer in Tampa, Florida, creates his profile with his law firm’s name, address, city, state, and practice area(s). The plugin automatically pulls bankruptcy- and Florida-related resources onto the resource page which is created by the plugin. With that, the firm becomes part of the peer-to-peer legal directory which is then displayed on the websites of every plugin user.

Block Competition

When creating the plugin, the peer-to-peer directory presented a major challenge. A law firm does not want to display competing law firms on their website. To solve this problem, Lawyer Plugin has been designed to filter competitors and only displays non-competing listings on each user’s website.

Here is how the filter works:

Smith & Smith bankruptcy lawyers in Tampa, Florida, install Lawyer Plugin.

Lisa Johnson & Associates, elder law attorneys in Asheville, North Carolina, also installs Lawyer Plugin.

Bradley Baker & James bankruptcy lawyers in Tampa Florida installs Lawyer Plugin.

Foz & Oz Attorneys at Law, bankruptcy lawyers in Los Angeles, California, installs Lawyer Plugin, too.

On the Smith & Smith resources page, Lawyer Plugin will display the listing for Lisa Johnson & Associates, because that firm does not compete in Smith & Smith’s local market. It will also display the listing for bankruptcy attorneys Foz & Oz. Even though they are bankruptcy lawyers, Foz & Oz are in Los Angeles, and therefore not competing with the Tampa, Florida practice.

However, Bradley Baker & James will not be included on Smith & Smith’s website, and Smith & Smith will not be included on Bradley Baker & James website. Lisa Johnson & Associates will display listings for all three of the above firms, because none of them compete with her practice.

A Fun Brand for a Serious Industry

Lawyer Plugin breaks out of the stuffy legal mold. On Lawyerplugin.com, users will not find any bookshelves, gavels, or court house columns. Instead, they are offered an outlet for venting with a “Hate Mail” form and noting in their legal disclaimer that the plugin has not displayed any “violent behavior,” but cautions that the “adolescent years are right around the corner.”

Last year, Lawyer Plugin posted teasers on its Facebook and Twitter profiles as beta testing began. The question was asked: “How awesome will Lawyer Plugin be?” The answers —

Coffee will drink Lawyer Plugin to wake up.

You will never need a flu shot. The flu will need a Lawyer Plugin shot.

The earth will no longer rotate around the sun. The sun will be too busy rotating around Lawyer Plugin.

And it was even predicted that Christmas will begin celebrating Lawyer Plugin.

The Lawyer Plugin’s financial backers plan to keep the plugin free. Lawyer Plugin will continue to receive funding indefinitely as add-ons are developed, and a paid, professional version of Lawyer Plugin is also in the works.

Lawyer Plugin is free and out in the court of public opinion. The developers are thirsty for user feedback and additional ideas for features.

DataCore Software Builds on Software-Defined Storage Momentum and Names Paul Murphy as Vice President of Worldwide Marketing

DataCore Software, the premier provider of storage virtualization software, today announced the appointment of Paul Murphy as the vice president of worldwide marketing. Murphy will oversee DataCore’s demand generation, inside sales and strategic marketing efforts needed to expand and accelerate the company’s growth and presence in the storage and virtualization sectors.  He brings to DataCore a proven track-record and a deep understanding of virtualization, storage technologies and the pivotal forces impacting customers in today’s ‘software-defined’ world. Murphy will drive the company’s marketing organization and programs to fuel sales for DataCore’s acclaimed storage virtualization software solution, SANsymphony™- V.

“Our software solutions have been successfully deployed at thousands of sites around the world and now our priority is to reach out to a broader range of organizations that don’t yet realize the economic and productivity benefits they can achieve through the adoption of storage virtualization and SANsymphony-V,” said DataCore Software’s Chief Operating Officer, Steve Houck. “Murphy brings to the company a fresh strategic marketing perspective, the ability to simplify our messaging, new ways to energize our outbound marketing activities and the drive to expand our visibility and brand recognition around the world.”

With nearly 15 years of experience in the technology industry, Murphy possesses a diverse range of skills in areas including engineering, services, sales and marketing, which will be instrumental in overseeing DataCore’s marketing activities around the globe. He was previously Director Americas SMB Sales and Worldwide Channel Development Manager at VMware, where he developed go-to-market strategies and oversaw both direct and inside channel sales teams in both domestic and international markets.

Prior to that, Murphy was senior product marketing manager at NetApp, focusing on backup and recovery solutions and their Virtual Tape Library product line. In this role, Murphy led business development activities, sales training, compensation programs and joint-marketing campaigns. An excellent communicator, he has been a keynote speaker at numerous industry events, trade shows, end-user seminars, sales training events, partner/reseller events and webcasts. Before moving into sales and marketing, Murphy had a successful career in engineering.

“The timing is perfect. DataCore has just updated its SANsymphony-V storage virtualization platform and it is well positioned to take advantage of the paradigm shift and acceptance of software-defined storage infrastructures,” said Murphy. “After doing the market research and getting feedback from numerous customers, it is clear to me that there is a large degree of pent-up customer demand. Needless to say, I’m eager to spread the word on DataCore’s value proposition and make a difference in this exciting and critical role.”

About DataCore Software

DataCore Software develops storage virtualization software leveraged in virtual and physical IT environments to obtain high availability, fast performance and maximum utilization from storage. DataCore’s SANsymphony-V storage hypervisor is a comprehensive, yet hardware-independent solution which fundamentally changes the economics of provisioning, replicating and protecting storage for large enterprises and small to midsize businesses. For additional information, visit the DataCore website at or call (877) 780-5111.

DataCore, the DataCore logo and SANsymphony are trademarks or registered trademarks of DataCore Software Corporation. Other DataCore product or service names or logos referenced herein are trademarks of DataCore Software Corporation. All other products, services and company names mentioned herein may be trademarks of their respective owners.

Yahoo Acquisition of Chinese Startup

Beijing – Yahoo Inc. back shopping. A pioneering company alias startup from Beijing so the target. Is Zletic, a company that provides data analysis services purchased Yahoo social network on Thursday (July 18, 2013). However, the acquisition value is not known how many.
In its website pages, Zletic was pleased to acquire this. Founder Zletic is Hao Zheng, a former employee of Yahoo China. Hao Zletic founded only a year ago.
One of Yahoo spokesperson stated, with this acquisition, the eight employees Zletic will be brought to the office of research and development of Yahoo in Beijing.
This is Yahoo’s acquisition of the 19th under the control of Marissa Mayer. Yahoo under control Mayer likes shopping startup. Mayer wants Yahoo to focus on the realm of mobile and new generations still.
Some time ago Yahoo acquired wide startup Summly, Xobni and Tumblr. Tumblr purchased with cash worth U.S. $ 1.1 billion.