CAM (Computer Aided Manufacturing) – Machining on Steroids

Machining techniques for creating parts has advanced and changed dramatically in the past 25 years. Today, computers and software are used together with technologically advanced CAM (Computer Aided Manufacturing) machines to create both high-quality custom and mass-produced parts. Those skilled in the fine art of old school machining are now forced to either update their skills to the new computerized techniques, or find a new line of work.

Let's face it, human beings, even exceptional ones, can not compete with the repeatability and accuracy of today's computerized machines. Today's 5 axis CNC milling and turning machines can crank out part after part with tolerances tighter than 1/1000 of an inch without ever having a lapse in judgment due to overexertion or long hours. Try working your regular employees 20 hours a day, and see what kind of scrap rate develops. The only human factor that is required is for maintenance and programming.

Additionally, robots and the concept of "cells" can be used for more complex parts. An automated assembly line consisting of different machines can be set up to increase the efficiency and independence of the individual machines. A series of holes can be drilled in one cell in a given part. The part is then moved by a robot or some other type of mechanical process to the next cell while a new part is loaded into the last cell. The part continues from cell to cell until a finished part comes out of the last cell. This setup often requires only the presence of one relatively low skilled worker to monitor the setup and handle any jams or mechanical malfunctions that occurs in addition to doing some loading and unloading of material.

CNC machines are not cheap. The price varies very depending on the capabilities of the machine, but it is not unusual to pay over $ 200,000 for this equipment. However, compare this against the cost of paying a crew of skilled machinists to do the same job, and the high price tag not only sees more reasonable, but actually makes good business sense. It is possible to replace 3 skilled machinists with 1 low skilled "maintenance" worker, 1 high skilled CAM programmer, and a few CNC machines. Plus, part throughput will go up while scrap rate will go down.

CAM is just one more example of how old processes are being improved by technology. More and more, the mundane and repetitive tasks previously performed by human beings are being automated by machines and robots and people are being used more for their brains than for their muscles. Computers, software, and machines can be used to turn one person into a super machinist capable of doing the job of three normal machinists. It's machining on steroids, and a trend that is going to continue to gain momentum as time progresses. …

Let Dish Network Be Your Source Of Relaxation

For most people, the television is a source of current news, sports, and entertainment. When you watch your television you want reliable service with plenty of choices in programming and high quality picture and sound. Of course, you want the price to be reasonable too, because television should be a source of relaxation, not stress. With cable TV, prices have been rising quickly while programming selection has been stagnating. In fact, many areas still can not access service like digital programming and HDTV. Dishnetwork, however, offers only digital programming and brings the latest technology and best programming to your screen- all at a very low cost. And, because Dish Network offers the most choices in programming and equipment, you can select the best options to meet your needs.

When you sign up for a Dishnetwork package, you need to determine what type of programming you want and how many channels you need. By using Dishnetwork's channel directory, you can see what channels are included with each package. For a limited selection at a great price, DishFamily brings the best family-oriented entertainment to you. With channels that include Food Network, Discovery Kids, C-Span, and TV Land you are sure to be guided with this package. If you are enticed by the idea of ​​a larger selection, America's Top 60 might be for you. This package includes favorites like VH1, TNT, ESPN, and Comedy Central for a good all-around selection. Budget-minded sports fans might like the America's Top 60 Plus- a combination of the Top 60 and a regional sports network at a great price. For a great mid-level package with plenty of options and a low cost, America's Top 120 provides most of your favorite channels and extras like SIRIUS satellite radio. And America's Top 180 offers an even larger selection with channels like Bloomberg TV and Encore Mysteries. For the ultimate in television entertainment, America's Everything Pak combines all the channels of the other packages with the HBO, Starz, Showtime, and Cinemax movie packages.

Of course, if you have invested in a high definition television set, you will want to explore Dish Network's many HD programming options. With 29 HD channels, Dishnetwork offers the most HDTV channels you can currently get. From the Bronze HD package with 25 HD channels and 80 standard definition ones to Platinum with 29 HD and over 200 standard, you can pick the option that most appeals to you. All HDTV packages let you experience movies, sports, news, culture, arts, and much more in this incredible format.

If you want extra programming, you will love Dish Network's additional options. Sports fans can get their fill of their favorite sports with subscriptions to shows like MLB Extra Innings, NHL on the Ice, and ESPN Gameday. And people looking for a better life will love the A La Carte channel, Lime, which broadcasts only programs that help people create a healthier, greener and more balanced life. Of course, entire families can enjoy all the selection of the …

OpenGL Terrain Generation – An Introduction

Introduction

NOTE: For the HTML version of this article with graphics and downloads please visit the following link:

http://www.codeproject.com/opengl/OPENGLTG.asp

I have always been interested in computer graphics and their applications. Data representation and visualization is one of the main areas of HCI (Human Computer Interaction), and the better you make the interaction between a machine and a human, the more productivity will be generated by both the human and the machine. I had some experience with OpenGL during my undergraduate studies while attending the California Polytechnic University. Unfortunately, I never got a chance to pursue the more advanced features of the OpenGL library, given my time and work responsibilities.

You can find more about OpenGL at http://www.opengl.org . There are also a bunch of good literature available on the topic of Computer Graphics and OpenGL that you can refer for further advances. Please check the Background / Reference section for a list of some reference material that I have used, in general, for computer graphics.

The following project is a very simple example demonstrating how to generate a terrain based on a bitmap file. The objective of the project is to generate a three dimensional terrain based on some data file. Please note, that this could have been any data file, but for the purpose of our example, we are going to be using a 32×32 dimensional bitmap file. We could have easily used a text file, and defined logic for each word or letter to represent it graphically.

The project also contains a good Windows framework that can be used for your other OpenGL applications. The current project allows you to rotate the camera using your mouse.

Once again, this is a simple approach to terrain generation, which can be a very difficult task in complex environments.

Background / Reference
Since Computer Graphics is kind of an advanced topic, it is necessary to have at least some king of understanding and exposure to the concepts and theories in the field. However, this does not mean that you will not be able to use the following code or understand it. I have made it as simple as possible, and hopefully, it will give you a good start, or some additional source of information that you can use for your projects. Also, please note that you will need to have a good understanding of C / C ++ programming.

Some books I have used for learning Computer Graphics and OpenGL programming:

Books I used while attending the California Polytechnic University:
OpenGL Programming Guide, or better know as the Red Book.
Computer Graphics Using OpenGL, 2nd Edition.
Books I used while attending the California Lutheran University:
OpenGL: A Premier, 2nd Edition.
Interactive Computer Graphics: A Top-Down Approach Using OpenGL, 4th Edition.

What is a Terrain?

Some background information on a terrain and their uses in a game application: A terrain in an environment is one of the most critical components in the scene that is being rendered. It could easily be the …

The Challenges of a Software Engineer

While it's true that the engineer is also a programmer, and there are some design duties included in the core job functions, there are also some very fundamental, critical differences in the manner in which software engineers, programmers, and designers complete their work. Many engineers would also argue that there is a marked difference in the quality and performance of the products they produce as well.

Software engineer jobs take a more formal approach to the process of programming software. The manner in which engineers complete their work is much more similar to traditional engineering processes than it is to software programming or designing methods.

Software engineers are often involved in the most complex of design or programming activities. Though every day, run of the mill programs can be designed by less skilled people, many programs can not be trusted to just any old programmer.

For example, programs that control important processes – especially in circumstances where human lives may be lost if an error occurs in a program – are primarily the realm of highly skilled software engineers. After all, you do not want the software that runs a key piece of medical equipment or that which drives the operating system of a nuclear submarine to fail.

This is perhaps the most challenging aspect of design engineer jobs with which incumbents must constantly contend. They are tasked with including the smooth and efficient operations of incredibly complex and sometimes frightening processes with computer enhanced systems.

Design engineers are tasked not only with creating a software program that will serve the basic needs of a business, organization, or other client, but they must also foresee the potential pitfalls associated with the program as well. They must be able to grasp the technological concepts of the methods or practices with which the program is intended to interface and design the software appropriately for the highly technical, and often potentially dangerous, environment in which it will be used.

Although the average programmer or designer may be able to afford a few minor glitches, for those working in design engineer jobs, there is often no such thing as a minor glitch. Of the software fails, the consequences can be great. The pressure that design engineers face on a daily basis is splendid for this very reason.

Software engineers also face some other unique challenges in the IT world. They must often complete a lot more paperwork than most IT professionals. Once again remaining true to the engineering trade, software engineers will draft designs, test them for quality, integrity and performance, and will frequently redesign them several times before moving from paper or prototypes to the real deal. In fact, many of those who work in software engineer jobs will spend as much as 70 – 80% of their time dealing with paperwork and only 20 – 30% actually writing code for the software itself. …

Can I Learn Computer Programming?

Computer without any software application is worse than a dumb human baby. This is because; software acts as a knowledge base and teachers your PC how to solve a given problem. Solving problem in computer is nothing but to process the data it receives to get some useful information as output. The process of teaching computer how to process data to solve a given problem is called computer programming. But can anyone learn computer programming?

This question is important as many people try to learn programming not because it's interesting, but mainly because they want to earn money by developing and selling a software application. However, even after reading lots of books and online tutorials, some of them feel that they still can not develop any new application. They feel that they simply wasted time in learning computer programming.

People, who are thinking of learning computer programming to make money, should first understand that, computer programming is not something that could have been learned in few days or months. Understand that, books can only teach you a programming language but that does not mean you will be able to solve complex problems. In other words, books will not teach you how to develop a new application. Only experience can teach you that. To develop computer applications, you need to have a logical mindset and sometimes it takes more than two years of continuous efforts to develop that kind of mindset and gain confidence.

If you are thinking of learning computer programming because you find it interesting, then you can simply go ahead and learn it without worrying about the time it might take. However, if you are planning to learn it for developing and selling your own application, then you do not have to learn programming for that. You can hire any freelance developer to develop an application for you. You simply need to worry about marketing and selling it.

There is no method to know if one can learn computer programming or not. Some people take more than 5 years to learn computer programming. You should also remember that, technology changes pretty quickly and you should be able to adapt to it as fast as possible. Adapting yourself to new technologies is a challenge that every software developer faces. By considering the time you need to adapt to new technologies, and time you need to understand basic concepts, you will be able to decide for yourself whether you can learn programming or not. …

How To Develop An RTS Game – Brief Guide

Red Alert 2 (Westwood Studios) and Age of Empires 2 (Microsoft) were two games which defined the era of computing just getting used to GUI (mid/late 90’s).

Originally designed for DOS, Red Alert was built by Westwood Studios – RTS pioneer through titles including Dune. The game was a breakthrough due to its realtime nature.

Add to that a killer storyline, amazing graphics and near-mythical gameplay mechanics and you have a winner. As a software developer, it’s easy to be in awe at games like this… but it’s another knowing how they work. This tutorial is a brief introduction into what I know about it.

OOP (Object Orientated Programming)

The most important thing you need to appreciate with any game is that they are programmed using OOP principles. OOP stands for object orientated programming, and basically the opposite of flow-based programming:

  • Flow based programs work with the flow of an application. They will focus on user input and manage their system based on forms – typically refreshing the UI each time an input is provided.
  • Object orientated programs work by loading a base application and using that to load a series of variables (objects). These variables are held in memory and can be interacted with on the screen in realtime.

The core of OOP is the ability to “invoke” classes. Classes are a type of variable which allow you to store “attributes”, and use those attributes in “public” (class) and “private” (instance) methods.

The way almost all games work is to invoke a number of data objects into memory, populate them with the appropriate attributes (hit points etc) and then proceed to call the various instance / class methods on them as the user interacts with them in-game.

Data + Renderer

On top of a core OOP architecture, RTS games work with two elements – a data backend and “renderer” front end. Understanding how these work together is the core of whether you’ll understand how to make an RTS game work from a programmatic perspective.

Imagine an RTS as a simple application. Ignore the graphics and artwork etc – focus on how you’d make the objects move around on-screen.

It works like this – the application loads up. This gives you the ability to manage your credentials (load past games, change your details etc). The job of the application (in an RTS) is to then create new “games”. These games exist between two or more players, and acts like a giant chessboard onto which you’re able to add new buildings, units etc.

Each “game” loads up two sets of data (your data & the other player’s). The job of the game is to help you manipulate this data to beat out your enemy.

Data (Buildings / Units / etc)

When a new “game” is loaded, the data for you and your enemies are loaded into memory. For example, you may have a data-set which looks like this:

  • Player #1
    – Buildings
    – 12
    – 34
    – 81
    – 19

Learning About Project Management

Project management is the discipline of planning, organizing, and managing one's resources. It involves acting as a manager for a specific project, as opposed to a general and continuing mission. A project manager is responsible for the successful competition of a task, regardless of how other circumstances affect that task. The great responsibility of this position means that it is only for the most dedicated of workers.

This is how project management is understood in the business world. In order to succeed as a project manager, workers require technical skills specific to their industry (such as computer manufacturing or programming). They also need a proper understanding of business skills, such as separate management philosophy. A worker who understands the field receives specifics on scope, quality, time, and budget. Such a task also demands a proper understanding of finances, psychometrics, materials and supplies, energy, communication, and logistics.

As such, education is an important part of project management. The prospective project manager must learn computer certification, along with the related business skills. Fortunately, there are many ways to get this education. Training organizations and seminars provide the necessary instruction. The Knowledge Solutions International Company is an example of this. The company teachers computer certification along with related business skills to promoting students. The school uses conferencing technology and other methods of effective communication. Remember that the more you know, the more you can help others, and the more money you can make in the long run. Visit TrainWithKSI.com on the web for more information. …

What Is the Right Software Development Language for Your Web 2.0 Startup?

Recently, I wrote an article about Rapid Java development and how grails compares to other languages ​​such as php and ruby. At a networking event someone approached me and talked to me about that very article. She asked me what software development language and framework I'd choose for a Web 2.0 application.

Interestingly enough when you perform a Google search on this topic you'll find plenty of answers to this question. However, most of them are ideologically charged, so it's hard to get an objective answer. Do not get sucked into these kinds of discussions among your team members, as in my experience they will lead you now. Actually they do lead you somewhere; and believe me, you do not want to wind up there.

I'm of the opinion that most software development languages ​​give you a similar kind of functionality. If you are a startup and have a great idea for a web application there is one single thing I would consider: What is the fastest way to build a working prototype that gets your investors on board?

The choice of programming language should only be based on this single goal. From the top of my mind I can think of a couple of categories you may want to evaluate to come to a decision.

Experience:

Do you or your team have experience in a software development language? Eg In case you and / or your team are wizards in C #, stop reading right here, drink a six-pack of Red Bull and start cranking out that ASP.NET application. Same goes for any other mature software development language as well as the chosen energy drink.

Framework:

Use development frameworks when possible. Development frameworks such as CakePHP or CodeIgniter for PHP can really speed up your development. Most of them follow the convention over configuration pattern and can increase your productivity tremendously. You will have to write less code, which generally translates into fewer bugs and you can focus on what differentiates your application from others faster, sometimes your business logic. On top of that you can leakage plenty of plugins developed by other users which will increase your productivity even further.

Maturity of web development framework:

Choose a well-established language and framework. Yes, you can develop an ASP.NET application on Linux using Mono or use Lisp to code the next generation version of Facebook, but this is certainly not the fastest way to get things done. There are a couple of points that say something about the maturity of a language and framework.

Community

How large and active is the community: Grails, RoR, Symfony, Zend, CakePHP, ASP and Django all have thriving communities. Should you ever have a question, you can simply go to one of their forums and get an answer within hours, sometimes even minutes. That will help you not get stuck in your development.

Plugins / Code stubs

The more code you can reuse, the better. No need to write a PayPal integration from scratch when …

911 Misdials – Programming Your PBX To Minimize

Misdialing 911 from your business telephone system not only can cause disruption to your business but can put lives at risk. It happens, more than we'd like to think, but when 911 is dialed, and the 911 operator can not speak to anyone on the line, your receptionist will receive a call back from your local 911 Emergency Center and is told that 911 was dialed from your location and wanting to know what the problem is? Unaware of any Emergencies within the building a frantic check begins. Sometimes even a call to the PBX vendor to see if they can find who dialed 911. If the 911 Center is unable to contact anyone with a return call, they will dispatch Police to check out the situation. This ties up 911 Operators from handling other calls, and pulls a Police officer (s) away from another call where they may need, and can delay a response to a real Emergency, only to later be found that it was a simple misdial.

How does a 911 misdial happen? The most simple explanation is that typically people calling from a PBX will dial 9 for an outside line, 1 for long distance, look again to verify the number they are dialing and then dial 1 plus the number. The actual dial string then looks like this: 9 + 1 + 1 ++. Notice the emergency services number in the string? Since the telephone system and the local carrier will ignore anything after the 911, a call to 911 has just been made!

Vince Foisy, Supervisor of Communications Systems for Rochester Hills Michigan, says that also many misdials are due to improperly dialed international long distance. For example, the country code for India is "91" and the city codes for Delhi and New Delhi are "11". When someone does not know how to or programs to dial the international access code of "011" the actual dial string, again, is "911". Mr. Foisy says that often in these cases, the person calling does not speak English well enough to be understood so a Police Officer may be sent to insure there is no actual Emergency, or the 911 Center may have a contract with a Language Translation Service they connect the caller to that can communicate with the caller again to only find out there is not a problem, then again tying up a 911 operator and costing the centers for the translation service.

Businesses are obliged to ensure that in the event of a real Emergency the 911 call can get out. Often, to help eliminate most misdials, the PBX vendor will program the pbx to force the user to dial "9911". This, of course, looks logical in that the user must dial a "9" for outside line access and then 911. But there is a major flaw in this logic. When in an emergency situation, the user will fall back to what they've been trained to do and that is to simply dial …

Ruby on Rails Proves It Deserves the Hype

With the multitude of programming languages ​​out there such as Fortran, Java, C ++ and C #, you may wonder why Ruby on Rails has suddenly become such a hot topic in the development world. Created in the late 1990's by an individual in Japan, the Ruby programming language had a cult following but never reached top-tier status. In 2004, a company called 37 Signals released a Web programming framework called Rails, which was originally developed for their own in-house projects. Rails was written using the Ruby programming language. It is the combination of Ruby and Rails together that has generated capable excitation in the development community, and the emerging language and application framework is proving to be a game-changer to the world of Web application development.

Ruby on Rails' Impact on Productivity

Rails is an integrated framework that utilizes the dynamic nature of the object-oriented Ruby programming language. Rails developers emphasize features of the framework for productivity rather than tools, and they take a common approach to Web architecture that should satisfy the needs of a large portion of the Web application projects in the wild.

As Rails was developed, the innovators of the framework realized that there were a multitude of features inherent to the framework that could benefit all Web applications. Rails is an extremely productive framework for database-backed Web applications. It is different from other frameworks in that it preaches convention over configuration. Typically, if you were building a computer program, you had to start from scratch and readily heavily on the skills and experience of the team's architect to develop and adhere to standards of writing good software. Rails primarily uses conventions to avoid configuration when possible, resulting in time saving and enhanced productivity. In a study by IBM, Rails applications needed a fraction of the configuration code of Java counterparts, often by a factor of ten or more (1). Where the programmer must specify configuration, Rails usually relations on Ruby programming language to provide configuration. The strategy saves developers many lines of code and simplifies the code that does need to be written. By taking mundane but essential decisions away from the developer, productivity increases substantively because more time and attention is absent satisfying the customer's requirements rather than the technical plumbing that can burden most projects.

Ruby on Rails is known for its ability to build Web applications quickly and with ease. For first-time users of Java, it could take about five to ten days to build a moderately useful web application that will communicate with a database using accepted Java Web best-practices such as separating business logic, from display logic (commonly referred to as Model-View-Controller). With no prior training on Ruby on Rails, it takes about one day to accomplish the same goal using the Ruby programming language. In several more days, it is possible to build a relatively complete Web application with Ruby on Rails.

In Java, a developer has countless decisions to make about how to proceed when communicating with …