In this article, we present a simple approach for implementing a pulse analyzer for devices with limited computational power, such as mobile and wearable computers. The main purpose of this system is to continuously monitor the ECG of a person and detect any possible heart abnormalities. The idea is to break the required computation in two parts. The learning and model building part that requires high computation is done on a desktop computer. Once the model for a person is built, it uses a low computational cost signal analysis approach to analyze the signals in real-time. The system has been implemented on an IBM WatchPad, a wearable Linux computer designed as a watch. The experiments conducted show that the system produces reliable results. This approach can benefit the embedded systems in the medical domain, such as the personal health monitoring devices, etc.
Read the rest of this article »
We begin the article by presenting a brief historical perspective on software development. We present the view of several software practitioners, who express different views on how software should be developed. Two major schools of thought in this context are presented: Software engineering and software craftsmanship. We will then see how agile and iterative development learns from the mistake of the flaw of the traditional Waterfall model in software development. We incorporate some of the best practices based on our experience and beliefs, inspired by a few famous agile and iterative development methods, in an attempt to formulate a well-rounded method. The article is concluded by presenting some interesting yet controversial views in agile and iterative development, such as the right team size, good estimation technique, and the debate on high tech or high touch approach. We also give some advice for a successful adoption and implementation of agile and iterative development.
Read the rest of this article »
Creating a 3-D game engine is not a trivial task as gamers often demand for high quality output with top notch performance in games. In this article, we show you how various real-time rendering algorithms can be applied to implement a practical 3-D game engine. We explore the general architecture of a 3-D engine and discuss the role of a scene graph in a 3-D engine. We will look at scene graph from the software engineering perspective. In particular, we show you the way to design a scene graph that is object-oriented and portable across different rendering engine. Then, we explain the algorithms that we apply to speed up the performance of our 3-D engine. We optimize the 3-D engine on the scene graph and object geometry levels. The algorithms that we propose are expected to perform reasonably well for both static and dynamic scenes. Finally, we give you a brief preview on the possibility of parallel processing in scene graph to create a 3-D engine with multiprocessing capability.
Read the rest of this article »
The rapid increase of complexity in today’s games has made managing game resources and assets become a major challenge to game developers. This article presents a lightweight resource and asset manager that can be used to manage the resources in most games effectively. We show you how a centralized resource manager is built and used to increase the reusability of game resources. This resource manager is then used by the asset manager to create various game assets. We propose a specification that describes 3-D object (one type of game asset) that is constructed from the resource manager. We extend the specification further to allow game developers to configure the 3-D object flexibly to suit various needs. Finally, we give a few thoughts on how the asset manager can be extended further for creation of other game assets through the resource manager.
Read the rest of this article »
After much anticipation, the demo of Sun Crusher: The Great War is released. This is a unique blend of third person action and real-time strategy game by Bad Nose Entertainment, where you take a role of a prisoner trapped in a prison armor designed to hold rather than protect, you are sentenced to indefinite service to the Corporation’s military service.
Read the rest of this article »
After months of planning and design, finally I am able to show you the first look into Sun Crusher: The Great War. This is Bad Nose Entertainment’s upcoming exciting sci-fi action game, which is a unique blend of third person action and real-time strategy game. In Sun Crusher, players take a role of a prisoner trapped in a prison armor designed to hold rather than protect, you are sentenced to indefinite service to the Corporation’s military service. Engage in the Sun Crusher’s unforgiving universe as you, a mobile weapon of destruction in the employ of the Corporation wage war against rival forces and ultimately will you attain freedom from the very prison that binds your very soul. Follow story driven missions and embark on espionage within massive interstellar warships to planetary battles and unravel the very corruption of the Corporation. Players must utilize a mix of stealth and tactical decisions and mastery of state-of-the-art weaponry and occasionally brute force to complete missions.
Read the rest of this article »
IP telephony or Internet telephony had been used by a lot of Internet users as well as organizations and companies as a cost effective telecommunication tool. As the usage of IP telephony become wider, its role had been expanded into more than merely a communication device. Some IP phone software also provide additional services like email, file transfer, whiteboard, etc. IP phone users will value these extra services and choose the one that fulfill their needs. As a result, the IP telephony service operators and IP phone developers have to keep revising and rebuilding their program with new and exciting services. This process is undoubtedly very time consuming and costly.
This article introduces a framework to develop a highly extensible IP telephony system. A great effort had been put to carefully design each module in the system to ensure its reusability and extensibility. The key components in this system are: (1) a general phone engine specification that can be implemented using any proprietary telephony API, (2) a communication interface module that performs client/server communication in a predefined XML message, (3) service plug-in and service provider manager that allows new services to be added into the system easily. By following this framework, we will be able to develop an IP telephony system, which allows rapid development of new services into the system with the minimum amount of time.
Read the rest of this article »
This is a casual arcade that we are developing in Bad Nose Entertainment. You play the role as a reputable hotshot bounty hunter, being sent off to the woods for the hunt. Being the last defender of your bunny clan, prepare to defend the very future of your kind from existence! We had decided to release this playable demo online for free. Challenge your best friends to get the highest score. Only the best bounty hunter will survive in this exciting Jungle Bash.
Read the rest of this article »
This Java applications let you play around with an Agent that uses simpe artificial intelligence to help him navigate through a somewhat complicated tiled-based map. The AI that the Agent used for pathfinding is an A* search algorithm. You can think of the whole map as a huge search tree with each map tile as a node in the tree. An A* search is an informed search algorithm that utilizes a cost function and a heuristic function to determine which node to be considered next in order to expand the search tree towards the goal. Cost function of Node N calculates the actual cost of path from the starting node to Node N. Whereas the heuristic function of node N will return the estimated cost from node N to the goal. A* search algorithm is a complete and yet optimally efficient search algorithm. Meaning that, given there are finite number of nodes in the search tree, it will always returns an optimal solution (either a shortest cost path, or no solution if the goal is not exist or unreachable) with the minimum nodes expansion. With this properties, it makes a perfect solution for applications that required automated pathfinding on a big domain.
Read the rest of this article »

As we all should know, two heads are better than one. Teamwork is the key to success. When you enter the industry to work as a software engineer, you will be working with groups. However, when working on a project, how do you get access to all the information you need to accomplish your assigned task? This is where I introduce you to the practice of distributed software development. Distributed software development is the sharing of information between others to accomplish a main specific task. In today’s industry, almost all company’s used distributed software development practices. In this article I will be discussing issues relating to why we use distributed software development, what type of tools support distributed software development, and how distributed development may influence the effective construction and use of an application framework. I will also discuss issues such as heterogeneous platforms, project management concerns, communication barriers, cultural and social differences, time zone changes, system integration challenges, and best practices. Then I will discuss the advantages and disadvantages of software collaborative development. This article should give great insight to those who just entered the industry to work in the profession as a software engineer.
Read the rest of this article »