Wednesday, February 29, 2012

Ethical Issues in Computer Engineering: Software Testing





Computer and software engineers are often creating software that will run on a great variety of platforms, from embedded microprocessors to PCs. The code they are creating can be in many different languages, and can be performing many different tasks. Most people probably know about that much, but there is another side to things that they may not understand. When writing code that is going to be produced for a consumer product, there is software testing that happens. Alongside the engineers creating the code for the consumer, there will be others working on code that is built to test the products code. Companies do this so that they can try and work out bugs in their programs, or at least as many as they can. Even though this may seem to be a minor thing, there can be a large ethical debate on how much testing is really enough. There are many bumps on the road to bug free software!


When a company is running software testing not only are they paying the engineers in charge of the testing, but they also have to keep the engineers who are the creators of the original code, and any other support staff necessary. Really on the bottom line, it is a very expensive thing to do. The point where this becomes a problem is when companies want to test their code while also trying to save a buck at the same time. There are many tools available for code testing, and I have even used a couple of them at my job at John Deere Electronic Solutions. Software test programs run the test code and analyze how efficient it is, and if it really is testing everything it should be. In many cases companies will use these kinds of programs to help them with their software testing, but they may not always follow completely though with the test results. Depending on how well the software was written on its first attempt, there could be very few bugs or there could be a seemingly infinite amount of bugs. Ideally as a consumer you want the software you buy to have no problems with it, but that is a very difficult request to make.


Buggy software is a nightmare for both producer and consumer, and both really don't want to deal with it. Our ethical problem comes in here, because most companies will accept that there will be a number of problems with the software they release. The companies will accept the fact that there are bugs, but they will put it out to market just because they need to stop spending time on it. Then we start treading into dangerous waters. How many bugs can a program have for it to be acceptable? How many problems should users just expect to happen? How many problems can the users run into before they get upset, and demand the software be updated?



Consumers want their program to have a minimal number of problems, but they also want their software. In many cases people will present the company with a really "lose - lose" situation. Consumers want their product AND they want it to work. Which from a companies side is a very difficult order to fill, believe it or not. Especially if the company is working under a tough deadline, these sorts of things become nearly impossible. As you can see now, this is indeed a hefty ethical issue. 


The only salvation we seem to have now is in software patches. Because so many of the devices we use today are connected to the internet, it is very easy for companies to update any buggy software via a patch released online. Even though this does fix the issue in a way, there are still some issues to be considered. Some people strongly believe that the ability to release patches like this has made many companies lazy and less motivated to make their software right the first time, because they can just patch up any errors post-release. While it is good that the patches can be made, it is not ideal for them to be used, and it is especially not ideal for them to be abused. I think patching is a fine thing to do, but I don't believe it should be relied upon too heavily. Even understanding that often times the scope of software may be too great to fully iron out all of the bugs, companies should still be trying their very best to make sure as few bugs reach the final product as possible. 



Where I stand on the issue is where most companies get to. I think the best thing for the company to do is to work on the code for as long as feasibly possible, and probably have their testing and debugging set on a timeline so they have a strict due date for their product. It is a dangerous thing for a company to get caught in a cycle of testing and debugging when there is no hope of a solid finish line. It is a ethically wrong thing to release code that has not been completely tested , but it is also ethically wrong for a company to be forced to debug a program for an unrealistic length of time. So there has to be a meeting ground between consumer and developer, on how much testing is enough. Sadly in this situation we end up in more of a gray area of ethics, compared to a clear cut right or wrong side.

Until next time,

-Ian "E Money" Wichmann

Monday, February 27, 2012

Moore's Law: Can it Still be True?!

For those who many not know, Moore's Law is a principle that applies to technology and electrical/computer engineering. Gordon Moore is the co-founder and a Chairman of Intel Corporation, and in 1965 he penned a law stating that the number of transistors that can be placed on an integrated circuit doubles every 18 months. Moore's Law was intended to last for at ten years, and it has held true to today providing industry goals and targets for research and development. Although now in 2012 many people are starting to think that Moore's Law cannot hold true for much longer.


Again some quick background information. A transistor is a basic component of electronic technology today. It is used to form digital logic circuits, which can be as small as on/off switches to incredibly complex central processors for computers. Below is an circuit schematic image of a transistor. It is a circuit component that all electrical and computer engineers are familiar with.



The problem that is facing Moore's Law is a physical problem. Since transistors were first created, there has been a race to make them smaller and smaller in order to fit more of them onto smaller and smaller integrated circuits. The shrinking of transistors is what powers Moore's Law. More transistors on an integrated circuit to increase performance and efficiency. Recently it has come all the way to transistors being made so small that they have pathways that are nothing more than organized structures of atoms. Most recently, researchers at the University of New South Wales have created a transistor that is a single phosphorus atom on a silicon lattice. As one may imagine, this could very well be the end of Moore's Law because at this point it is (as far as we can imagine currently) impossible to make a transistor any smaller than a single atom! If Moore's Law becomes a thing of the past, it will leave the electronics industry with no standard guiding them towards the progress that they "should" be making on an regular basis. Below is an image of the single atom transistor.


The impact of this could be very apparent in society. If Moore's Law is no longer true, there could be a great slowing down in the progress of technology. It would mostly effect the development of computer processors, but one must remember that nearly every electronic device they use has at least one processor in it. Consumers and the Developers in electronics alike would "hit a wall" with the advance of computer technology, as each big leap in technology could end up taking much more time than it has in the past.

On the other side, the potential phasing out of Moore's Law does serve as kind of challenge to many technology companies. They have lived by Moore's Law for their entire existence, and they will fight for its continued prevalence. Intel, AMD, NVIDIA, Qualcomm, and Texas Instruments are just some of the companies that produce integrated circuits with transistors. At those companies many of the best and brightest engineering minds in the world are employed to work for the advancement of computer technology. It is impossible to really know what kind of breakthroughs could be brewing at any one of those companies. The evidence does seems stacked against Moore's Law, but many electrical and computer engineers will not easily accept its end. I am no industry expert or engineer of cutting edge transistor based technology, but I know that it's often the times when progress seems most difficult that the biggest advances occur.

Sources: Bloomberg & Engadget

Until next time,

-Ian "E Money" Wichmann

Wednesday, February 22, 2012

Tablet Wars: Kindle Fire


As many people are very aware, ever since the original iPad came out on 2010 there has been an ongoing war in the technology world over one of it's newest and most exciting technologies. Tablet PCs are very popular today, and there is an extremely large number of different hardware choices available to a consumer. One of the most recent additions to the tablet PC market has been the Amazon Kindle Fire. It started to ship to customers in late November, and I would like to take a little time to give it a short review, and to quickly discuss how it stands in the tablet war.

HARDWARE

The Kindle Fire may be thought of by many as a simple e-reader, but you should be careful as the Kindle Fire does pack quite a punch. Nestled underneath its beautiful 1024x600 pixel 7” multi-touch Gorilla Glass capacitive touch screen is a 1 GHz dual core Texas Instruments OMAP processor. It has a PowerVR SGX540 under the hood as well, to power the Kindle's screen at 169 ppi (pixels per inch) with 16 million colors. The only lackluster hardware spec to be seen here is the Kindle's 512 MB of RAM, which will do just fine, but I would have liked to see 1 GB for that extra boost in smooth operating. For storage the Kindle sports 8 GB of internal storage, which is plenty of room to store apps, movies, music, and books on. The Kindle is 802.11 b/g/n Wifi enabled, so you can connect to the internet and download apps, check movies, or watch your favorite YouTube clips. It is all powered by a 4400 mAh battery, that can be used to do quite a bit of whatever it is you want to do. Then when your Kindle needs some juice, you can fill it back up on its all to standard Micro-USB 2.0 type B port. Music listeners will be pleased to hear that the Kindle does have a 3.5 mm stereo socket for your headphones, as well as two small speakers on the top of the device. After a good amount of testing on my own Kindle Fire, I have found the speakers to actually be quite satisfactory. Another con here is the lack of any cameras on the Kindle, which will limit your ability to do something like a Skype video chat on this tablet.

SOFTWARE

Similarly to many of today’s most popular Tablet PC's, the Kindle Fire runs off of a customized version of Android OS 2.3 also known as “Ice Cream Sandwich”, as all of you Android enthusiasts out there know all too well. This version of the Android OS is the latest one released by Google, that has still yet to make it to all of Google’s own supported Android phones. The Amazon created customization works smoothly, and is well organized. Using the Kindle Fire is straightforward and understandable. A big benefit of being based on the Android platform is that the Kindle can take full advantage of the Amazon Appstore, and download any apps that are offered there. The Kindle also has a special cloud-accelerated broswer, called Amazon Silk. The Kindle Fire comes with several applications like and Email client, a document reader, and many other things like access to the whole Amazon video store that all users can use to purchase and stream things like TV shows or movies.



COMPARISONS

The Kindle Fire as a brand new device in the tablet market, will obviously be constantly compared to other tablets. The biggest comparison to make is between the Kindle fire and the iPad 2. The Apple iPad 2 is one of the cornerstones of the current tablet market, coming in as the most popular and well known tablet there is. Both tablets have their own operating systems, web browsers, and app stores. As far as hardware goes, both tablets are running on a similar amount of processor power with dual core 1 GHz mobile processors. The biggest hardware differences to see are that the iPad 2 has a camera as well as possible support for not only Wi-Fi but also 3G GSM and CDMA wireless and even Bluetooth. There are a lot more options for buying an iPad 2 than there are for a Kindle Fire, but even the lowest price iPad two costs more than double the Kindle Fire at $500. The two devices deliver very different experiences, and whether of not you enjoy either experience will really be up to you. Some people will enjoy the Apple iPad 2 more than the Kindle Fire, and some will enjoy the Kindle Fire more. The only point I can really emphasize is that the Kindle Fire has such a low price, it really makes up for any losses in functionality there is from the iPad 2. In the end its all up to you though!



MY VERDICT

The Kindle Fire is a new, and very competitive entry in the tablet PC market. Priced at a mere $200 USD, it is almost a steal compared to many of its competitors. The Kindle Fire has many impressive hardware features, while it does leave a few things to be desired. The customized Android OS is done very well, and works almost flawlessly. Overall this is a really great tablet for anyone looking for a sold device that they can use for all of their simple needs. This e-reader/tablet combo is a very solid product, and holds some serious weight in the tablet war.

Resources: Amazon & Mac Observer

Until next time,

Ian “E Money” Wichmann

My Major in Computer Engineering

I am a Junior in NDSU's Computer Engineering program. Computer Engineering (CE) is very closely related to, and often times confused with Electrical Engineering (EE), but there are differences in the two majors. Where EE focuses on things such as high power application and control systems, CE focuses on things like computer organization, computer architecture, microchip/digital design, and the concepts of what makes an operating system. In general CE's are the engineers who deal with things most directly related to computers, where EE's spread out into a more general field.

CE positions though still have a large variety of different focuses in companies around the world. You could be a Software Engineer, who works on projects in conjunction with other engineers and writes the low level code that makes a microprocessor in a larger system work properly. Or you could be an Embedded Systems Engineer, who designs electronic circuits and also writes code to make them work. Another example would be a position as a Digital Designer who does work with Very Large Scale Integration (VLSI) systems, working towards creating a new generation of processor for Intel or a new Digital Signal Processor for a company like Texas Instruments. It is a great understatement to say that the field of Computer Engineering is broad, but it is true that it is a much more compact field than Electrical Engineering. That is one of the things I really like about my major of Computer Engineering.

Computer Engineers can often be found on the cutting edge of computing technology. Like I mentioned above, an engineer working at Intel is constantly racing to produce the next line of faster, more efficient, and smarter CPUs that will be fabricated to become the brains of millions of computers around the world. Similarly there are Computer Engineers who work at companies like AMD or NVIDIA who work on computer graphics processors that power small laptops screens to high end enthusiast level graphics cards. There are Computer Engineers that work for a sorts of companies that fulfill all sorts of tasks that many people do not even know exist. For example, as agricultural equipment becomes more and more high-tech there has been a major increase in the need for companies like John Deere to hire CE's to do the low level coding needed to run all of the new electronics that are included in their products. CPU's, GPU's, GPS implementation, to Operating System Design are just some of the fields of interest in Computer Engineering.

As the world becomes a more technologically focused and dependent place, there is a huge need for Computer Engineers to design computing technology for today and for tomorrow. CE's work with all sorts of other engineers in their cause of making the world a better place. It is a general concept that most engineers share, that their goal is to make the world better in every way they can. Even if not directly, almost all engineering work is towards this goal. Computer Engineers fulfill a very specific part of this goal, and it is a part that I find to be extremely interesting.
Until next time,

Ian “E Money” Wichmann