SteveOH

Tag: fix

Frequently Forgotten Fundamental Facts about Software Engineering

by Steve Hernandez on Dec.02, 2009, under Academic, Technology

SW Development

 

Robert L. Glass

 

This month’s column is simply a collection of what I consider to be facts—truths, if you will—about software engineering. I’m presenting this software engineering laundry list because far too many people who call themselves software engineers, or computer scientists, or programmers, or whatever nom du jour you prefer, either aren’t familiar with these facts or have forgotten them.

I don’t expect you to agree with all these facts; some of them might even upset you. Great! Then we can begin a dialog about which facts really are facts and which are merely figments of my vivid loyal opposition imagination! Enough preliminaries. Here are the most frequently forgotten fundamental facts about software engineering. Some are of vital importance—we forget them at considerable risk.

 

Complexity

C1. For every 10-percent increase in problem complexity, there is a 100-percent increase in the software solution�s complexity. That’s not a condition to try to change (even though reducing complexity is always desirable); that’s just the way it is. (For one explanation of why this is so, see RD2 in the section “Requirements and design.”)

 

People

P1. The most important factor in attacking complexity is not the tools and techniques that programmers use but rather the quality of the programmers themselves.

P2. Good programmers are up to 30 times better than mediocre programmers, according to “individual differences” research. Given that their pay is never commensurate, they are the biggest bargains in the software field.

 

Tools and techniques

T1. Most software tool and technique improvements account for about a 5- to 30-percent increase in productivity and quality. But at one time or another, most of these improvements have been claimed by someone to have “order of magnitude” (factor of 10) benefits. Hype is the plague on the house of software.

T2. Learning a new tool or technique actually lowers programmer productivity and product quality initially. You achieve the eventual benefit only after overcoming this learning curve.

T3. Therefore, adopting new tools and techniques is worthwhile, but only if you (a) realistically view their value and (b) use patience in measuring their benefits.

 

Quality

Q1. Quality is a collection of attributes. Various people define those attributes differently, but a commonly accepted collection is portability, reliability, efficiency, human engineering, testability, understandability, and modifiability.

Q2. Quality is not the same as satisfying users, meeting requirements, or meeting cost and schedule targets. However, all these things have an interesting relationship: User satisfaction = quality product + meets requirements + delivered when needed + appropriate cost.

Q3. Because quality is not simply reliability, it is about much more than software defects.

Q4. Trying to improve one quality attribute often degrades another. For example, attempts to improve efficiency often degrade modifiability.

 

Reliability

RE1. Error detection and removal accounts for roughly 40 percent of development costs. Thus it is the most important phase of the development life cycle.

RE2. There are certain kinds of software errors that most programmers make frequently. These include off-by-one indexing, definition or reference inconsistency, and omitting deep design details. That is why, for example, N-version programming, which attempts to create multiple diverse solutions through multiple programmers, can never completely achieve its promise.

RE3. Software that a typical programmer believes to be thoroughly tested has often had only about 55 to 60 percent of its logic paths executed. Automated support, such as coverage analyzers, can raise that to roughly 85 to 90 percent. Testing at the 100-percent level is nearly impossible.

RE4. Even if 100-percent test coverage (see RE3) were possible, that criteria would be insufficient for testing. Roughly 35 percent of software defects emerge from missing logic paths, and another 40 percent are from the execution of a unique combination of logic paths. They will not be caught by 100-percent coverage (100-percent coverage can, therefore, potentially detect only about 25 percent of the errors!).

RE5. There is no single best approach to software error removal. A combination of several approaches, such as inspections and several kinds of testing and fault tolerance, is necessary.

RE6. (corollary to RE5) Software will always contain residual defects, after even the most rigorous error removal. The goal is to minimize the number and especially the severity of those defects.

 

Efficiency

EF1. Efficiency is more often a matter of good design than of good coding. So, if a project requires efficiency, efficiency must be considered early in the life cycle.

EF2. High-order language (HOL) code, with appropriate compiler optimizations, can be made about 90 percent as efficient as the comparable assembler code. But that statement is highly task dependent; some tasks are much harder than others to code efficiently in HOL.

EF3. There are trade-offs between size and time optimization. Often, improving one degrades the other.

 

Maintenance

M1. Quality and maintenance have an interesting relationship (see Q3 and Q4).

M2. Maintenance typically consumes about 40 to 80 percent (60 percent average) of software costs. Therefore, it is probably the most important life cycle phase.

M3. Enhancement is responsible for roughly 60 percent of software maintenance costs. Error correction is roughly 17 percent. So, software maintenance is largely about adding new capability to old software, not about fixing it.

M4. The previous two facts constitute what you could call the “60/60″ rule of software.

M5. Most software development tasks and software maintenance tasks are the same—except for the additional maintenance task of “understanding the existing product.” This task is the dominant maintenance activity, consuming roughly 30 percent of maintenance time. So, you could claim that maintenance is more difficult than development.

 

Requirements and design

RD1. One of the two most common causes of runaway projects is unstable requirements. (For the other, see ES1.)

RD2. When a project moves from requirements to design, the solution process’s complexity causes an explosion of “derived requirements.” The list of requirements for the design phase is often 50 times longer than the list of original requirements.

RD3. This requirements explosion is partly why it is difficult to implement requirements traceability (tracing the original requirements through the artifacts of the succeeding lifecycle phases), even though everyone agrees this is desirable.

RD4. A software problem seldom has one best design solution. (Bill Curtis has said that in a room full of expert software designers, if any two agree, that’s a majority!) That’s why, for example, trying to provide reusable design solutions has so long resisted significant progress.

 

Reviews and inspections

RI1. Rigorous reviews commonly remove up to 90 percent of errors from a software product before the first test case is run. (Many research findings support this; of course, it’s extremely difficult to know when you’ve found 100 percent of a software product’s errors!)

RI2. Rigorous reviews are more effective, and more cost effective, than any other error-removal strategy, including testing. But they cannot and should not replace testing (see RE5).

RI3. Rigorous reviews are extremely challenging to do well, and most organizations do not do them, at least not for 100 percent of their software artifacts.

RI4. Post-delivery reviews are generally acknowledged to be important, both for determining customer satisfaction and for process improvement, but most organizations do not perform them. By the time such reviews should be held (three to 12 months after delivery), potential review participants have generally scattered to other projects.

 

Reuse

REU1. Reuse-in-the-small (libraries of subroutines) began nearly 50 years ago and is a well-solved problem.

REU2. Reuse-in-the-large (components) remains largely unsolved, even though everyone agrees it is important and desirable.

REU3. Disagreement exists about why reuse-in-the-large is unsolved, although most agree that it is a management, not technology, problem (will, not skill). (Others say that finding sufficiently common subproblems across programming tasks is difficult. This would make reuse-in-the-large a problem inherent in the nature of software and the problems it solves, and thus relatively unsolvable).

REU4. Reuse-in-the-large works best in families of related systems, and thus is domain dependent. This narrows its potential applicability.

REU5. Pattern reuse is one solution to the problems inherent in code reuse.

 

Estimation

ES1. One of the two most common causes of runaway projects is optimistic estimation. (For the other, see RD1.)

ES2. Most software estimates are performed at the beginning of the life cycle. This makes sense until we realize that this occurs before the requirements phase and thus before the problem is understood. Estimation therefore usually occurs at the wrong time.

ES3. Most software estimates are made, according to several researchers, by either upper management or marketing, not by the people who will build the software or by their managers. Therefore, the wrong people are doing estimation.

ES4. Software estimates are rarely adjusted as the project proceeds. So, those estimates done at the wrong time by the wrong people are usually not corrected.

ES5. Because estimates are so faulty, there is little reason to be concerned when software projects do not meet cost or schedule targets. But everyone is concerned anyway!

ES6. In one study of a project that failed to meet its estimates, the management saw the project as a failure, but the technical participants saw it as the most successful project they had ever worked on! This illustrates the disconnect regarding the role of estimation, and project success, between management and technologists. Given the previous facts, that is hardly surprising.

ES7. Pressure to achieve estimation targets is common and tends to cause programmers to skip good software process. This constitutes an absurd result done for an absurd reason.

 

Research

RES1. Many software researchers advocate rather than investigate. As a result, (a) some advocated concepts are worth less than their advocates believe and (b) there is a shortage of evaluative research to help determine the actual value of new tools and techniques.

There, that’s my two cents’ worth of software engineering fundamental facts. What are yours? I expect, if we can get a dialog going here, that there are a lot of similar facts that I have forgotten—or am not aware of. I’m especially eager to hear what additional facts you can contribute.

And, of course, I realize that some will disagree (perhaps even violently!) with some of the facts I’ve presented. I want to hear about that as well.

Robert L. Glass is the editor of Elsevier’s Journal of Systems and Software and the publisher and editor of The Software Practitioner newsletter. Contact him at rglass@indiana (dot) education; he’d be pleased to hear from you.

Reprinted from IEEE Software, vol. 18, no. 3, 2001, pp. 112, 110–111.

1 Comment :, , , , , , , , , , , , , , , , more...

Ubuntu Mail Server – PostFix, DoveCot, RoundCube Authentication Error

by Steve Hernandez on May.11, 2009, under Technology

I’ve been dealing with this error for the past 2 weeks, trying to authenticate to my IMAP Mail Server (dovecot) over SSL (SASL). I continuously received errors for IMAP authentication. AtMailOpen did not work (and I cannot get it to authenticate correctly). So I tried RoundCube, which looks like a good mesh of functionality and aesthetics.

RoundCube installed great – easy and straight forward. Here is the error I received:

IMAP Error: Authentication for steveoh@thelambdas.com failed (LOGIN): “a001 NO Authentication failed.”

Warning: Cannot modify header information – headers already sent in /var/www/webmail/program/include/rcmail.php on line 951

There is very little to no solutions out there.  So I had to play with the configuration file and each argument, one by one (file: main.inc.php in the config directory).

Leave the username_domain field blank.  My server, apparently, doesn’t require the full email address, only the user name, for authentication.

From:
$rcmail_config['username_domain'] = ‘example.com’;

To:
$rcmail_config['username_domain'] = ”;

This solved the problem, and I’m able to log in using ONLY the user name (ie. username, not username@example.com).

Good luck.

1 Comment :, , , , , , , , more...

How to Fix Windows Server 2008 Boot Loader

by Steve Hernandez on Mar.29, 2009, under Technology

If the boot loader to your Windows Server 2008 machine gets corrupted or deleted for whatever reason, it really is a painstaking process to get it fixed.  The boot loader to my machine got deleted somehow while I was resizing partitions.  After scouring the web, I could not find anything on rebuilding the boot loader for Windows Server 2008.  All I could find were instructions to restore a Windows Vista boot loader, but luckily, the process for Server 2008 is similar.

If you are getting a “bootmgr is missing” error upon startup or something similar, repairing the boot loader will probably fix the problem.

Due to the lack of recovery tools on the Server 2008 installation CD, the boot loader must be rebuilt manually.

For this guide, I’m going to assume your installation has a drive letter of C:.

Insert the Server 2008 installation CD into your DVD-ROM.  Restart your computer and boot from the CD.

Choose to repair your computer, then open the command prompt.

At the command prompt, use the following commands:

c:
cd boot
bootsect /nt60 c: /force /mbr
bootrec /rebuildbcd

After using the “bootrec /rebuldbcd” command, you will be prompted to accept a Windows installation.  Accept the installation, then wait for the process to finish.  Once it’s done, reboot your comptuer and you should have a boot loader ready to go.

Leave a Comment :, , , , , , , , , more...

ASP.NET ServerVariable Collection

by Steve Hernandez on Jan.21, 2009, under Technology

Syntax

Request.ServerVariables (server_variable)
Parameter Description
server_variable Required. The name of the server variable to retrieve

Server Variables

Variable Description
ALL_HTTP Returns all HTTP headers sent by the client. Always prefixed with HTTP_ and capitalized
ALL_RAW Returns all headers in raw form
APPL_MD_PATH Returns the meta base path for the application for the ISAPI DLL
APPL_PHYSICAL_PATH Returns the physical path corresponding to the meta base path
AUTH_PASSWORD Returns the value entered in the client’s authentication dialog
AUTH_TYPE The authentication method that the server uses to validate users
AUTH_USER Returns the raw authenticated user name
CERT_COOKIE Returns the unique ID for client certificate as a string
CERT_FLAGS bit0 is set to 1 if the client certificate is present and bit1 is set to 1 if the cCertification authority of the client certificate is not valid
CERT_ISSUER Returns the issuer field of the client certificate
CERT_KEYSIZE Returns the number of bits in Secure Sockets Layer connection key size
CERT_SECRETKEYSIZE Returns the number of bits in server certificate private key
CERT_SERIALNUMBER Returns the serial number field of the client certificate
CERT_SERVER_ISSUER Returns the issuer field of the server certificate
CERT_SERVER_SUBJECT Returns the subject field of the server certificate
CERT_SUBJECT Returns the subject field of the client certificate
CONTENT_LENGTH Returns the length of the content as sent by the client
CONTENT_TYPE Returns the data type of the content
GATEWAY_INTERFACE Returns the revision of the CGI specification used by the server
HTTP_<HeaderName> Returns the value stored in the header HeaderName
HTTP_ACCEPT Returns the value of the Accept header
HTTP_ACCEPT_LANGUAGE Returns a string describing the language to use for displaying content
HTTP_COOKIE Returns the cookie string included with the request
HTTP_REFERER Returns a string containing the URL of the page that referred the request to the current page using an <a> tag. If the page is redirected, HTTP_REFERER is empty
HTTP_USER_AGENT Returns a string describing the browser that sent the request
HTTPS Returns ON if the request came in through secure channel or OFF if the request came in through a non-secure channel
HTTPS_KEYSIZE Returns the number of bits in Secure Sockets Layer connection key size
HTTPS_SECRETKEYSIZE Returns the number of bits in server certificate private key
HTTPS_SERVER_ISSUER Returns the issuer field of the server certificate
HTTPS_SERVER_SUBJECT Returns the subject field of the server certificate
INSTANCE_ID The ID for the IIS instance in text format
INSTANCE_META_PATH The meta base path for the instance of IIS that responds to the request
LOCAL_ADDR Returns the server address on which the request came in
LOGON_USER Returns the Windows account that the user is logged into
PATH_INFO Returns extra path information as given by the client
PATH_TRANSLATED A translated version of PATH_INFO that takes the path and performs any necessary virtual-to-physical mapping
QUERY_STRING Returns the query information stored in the string following the question mark (?) in the HTTP request
REMOTE_ADDR Returns the IP address of the remote host making the request
REMOTE_HOST Returns the name of the host making the request
REMOTE_USER Returns an unmapped user-name string sent in by the user
REQUEST_METHOD Returns the method used to make the request
SCRIPT_NAME Returns a virtual path to the script being executed
SERVER_NAME Returns the server’s host name, DNS alias, or IP address as it would appear in self-referencing URLs
SERVER_PORT Returns the port number to which the request was sent
SERVER_PORT_SECURE Returns a string that contains 0 or 1. If the request is being handled on the secure port, it will be 1. Otherwise, it will be 0
SERVER_PROTOCOL Returns the name and revision of the request information protocol
SERVER_SOFTWARE Returns the name and version of the server software that answers the request and runs the gateway
URL Returns the base portion of the URL
Leave a Comment :, , , , , , more...

Stuck Pixels / Dead Pixels / Screen Burn-in FiX

by Steve Hernandez on Jan.08, 2009, under Technology

I came across this interesting application that fixes the above, unless there’s a substantial hardware issue.

If you have any of the above, give it a try.

jScreenFix

Leave a Comment : more...

Squeeze Your Gigabit NIC for Top Performance

by Steve Hernandez on Nov.25, 2008, under Technology

October 24, 2007
By Charlie Schluting

Many new workstations and servers are coming with integrated gigabit (define) network cards, but quite a few people soon discover that they can’t transfer data much faster than they did with 100 Mb/s network cards. Multiple factors can affect your ability to transfer at higher speeds, and most of them revolve around operating system settings. In this article we will discuss the necessary steps to make your new gigabit-enabled server obtain close to gigabit speeds in Linux, FreeBSD, and Windows.

Hardware considerations
First and foremost we must realize that there are hardware limitations to consider. Just because someone throws a gigabit network card in a server doesn’t mean the hardware can keep up.

For attaining maximum throughput, the most important options involve TCP window sizes.

Network cards are normally connected to the PCI (define) bus via a free PCI slot. In older workstation and non server-class motherboards the PCI slots are normally 32 bit, 33MHz. This means they can transfer at speeds of 133MB/s. Since the bus is shared between many parts of the computer, it’s realistically limited to around 80MB/s in the best case.

Gigabit network cards provide speeds of 1000Mb/s, or 125MB/s. If the PCI bus is only capable of 80MB/s this is a major limiting factor for gigabit network cards. The math works out to 640Mb/s, which is really quite a bit faster than most gigabit network card installations, but remember this is probably the best-case scenario.

If there are other hungry data-loving PCI cards in the server, you’ll likely see much less throughput. The only solution for overcoming this bottleneck is to purchase a motherboard with a 66MHz PCI slot, which can do 266MB/s. Also, the new 64 bit PCI slots are capable of 532MB/s on a 66MHz bus. These are beginning to come standard on all server-class motherboards.

Assuming we’re using decent hardware that can keep up with the data rates necessary for gigabit, there is now another obstacle — the operating system. For testing, we used two identical servers: Intel Server motherboards, Pentium 4 3.0 GHz, 1GB RAM, integrated 10/100/1000 Intel network card. One was running Gentoo Linux with a 2.6 SMP (define) kernel, and the other is FreeBSD 5.3 with an SMP kernel to take advantage of the Pentium 4’s HyperThreading capabilities. We were lucky to have a gigabit capable switch, but the same results could be accomplished by connecting both servers directly to each other.

Software Considerations
For testing speeds between two servers, we don’t want to use FTP or anything that will fetch data from disk. Memory to memory transfers are a much better test, and many tools exist to do this. For our tests, we used [ttcp](http://www.pcausa.com/Utilities/pcattcp.htm).

The first test between these two servers was not pretty. The maximum rate was around 230 Mb/s: about two times as fast as a 100Mb/s network card. This was an improvement, but far from optimal. In actuality, most people will see even worse performance out of the box. However, with a few minor setting changes, we quickly realized major speed improvements — more than a threefold improvement over the initial test.

Many people recommend setting the MTU of your network interface larger. This basically means telling the network card to send a larger Ethernet frame. While this may be useful when connecting two hosts directly together, it becomes less useful when connecting through a switch that doesn’t support larger MTUs (define). At any rate, this isn’t necessary. 900Mb/s can be attained at the normal 1500 byte MTU setting.

For attaining maximum throughput, the most important options involve TCP window sizes. The TCP window controls the flow of data, and is negotiated during the start of a TCP connection. Using too small of a size will result in slowness, since TCP can only use the smaller of the two end system’s capabilities. It is quite a bit more complex than this, but here’s the information you really need to know:

Configuring Linux and FreeBSD
For both Linux and FreeBSD we’re using the sysctl utility. For all of the following options, entering the command ’sysctl variable=number’ should do the trick. To view the current settings use: ’sysctl <variable name>’

  • Maximum window size:
    • FreeBSD:
      kern.ipc.maxsockbuf=262144
    • Linux:
      net.core.wmem_max=8388608
  • Default window size:
    • FreeBSD, sending and receiving:
      net.inet.tcp.sendspace=65536
      net.inet.tcp.recvspace=65536
    • Linux, sending and receiving:
      net.core.wmem_default = 65536
      net.core.rmem_default = 65536
  • RFC 1323:
    This enables the useful window scaling options defined in rfc1323, which allows the windows to dynamically get larger than we specified above.

    • FreeBSD:
      net.inet.tcp.rfc1323=1
    • Linux:
      net.ipv4.tcp_window_scaling=1
  • Buffers:
    When sending large amounts of data, we can run the operating system out of buffers. This option should be enabled before attempting to use the above settings. To increase the amount of “mbufs” available:

    • FreeBSD:
      kern.ipc.nmbclusters=32768
    • Linux:
      net.ipv4.tcp_mem= 98304 131072 196608

These quick changes will skyrocket TCP performance. Afterwards we were able to run ttcp and attain around 895 Mb/s every time – quite an impressive data rate. There are other options available for adjusting the UDP datagram sizes as well, but we’re mainly focusing on TCP here.

Windows XP/2000 Server/Server 2003
The magical location for TCP settings in the registry editor is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

We need to add a registry DWORD named TcpWindowSize, and enter a sufficiently large size. 131400 (make sure you click on ‘decimal’) should be enough. Tcp1323Opts should be set to 3. This enables both rfc1323 scaling and timestamps.

And, similarly to Unix, we want to increase the TCP buffer sizes:

ForwardBufferMemory 80000
NumForwardPackets 60000

One last important note for Windows XP users: If you’ve installed Service Pack 2, then there is another likely culprit for poor network performance. Explained in [knowledge base article 842264(http://support.microsoft.com/?kbid=842264), Microsoft says that disabling Internet Connection Sharing after an SP2 install should fix performance issues.

The above tweaks should enable your sufficiently fast server to attain much faster data rates over TCP. If your specific application makes significant use of UDP, then it will be worth looking into similar options relating to UDP datagram sizes. Remember, we obtained close to 900Mb/s with a very fast Pentium 4 machine, server-class motherboard, and quality Intel network card. Results may vary wildly, but adjusting the above settings are a necessary step toward realizing your server’s capabilities.

Leave a Comment :, , , , , , , , , more...

Sandisk Sansa c250 2G Player Review and Sync

by Steve Hernandez on Nov.25, 2008, under Personal, Technology

I recently purchased this unit, refurbished, because it was on sale for $15 and I needed a player for the gym.  I received it yesterday evening and wanted to provide some feedback.

It’s kind of flimbsy and very light, it almost feels as if it’s hallow.  But, it has a small color screen and easy to understand controls, so I can’t really complain.  I do fear, however, that if I drop it, it will dissolve into the air.  It’s not necessarily a bad thing to be very light, but, it should be noted.

Things I don’t “really” like, but that aren’t a HUGE deal:

  • Proprietary usb connector – Instead of using USB Mini-A Type connection, they decided to use a port that took up the entire width of the unit (about an inch) to connect via USB.  Why?
  • Wasted Space – there’s a lot of space all around that could be utilized.  Either for the other controls or to space things out a little better.  This is my personal opinion, but I don’t “really” like the fact that the volume control is all the way at the top, while the play button is on the front, and then menu button all the way at the bottom right.
  • Built in Battery – This really annoys me.  Why would you do that?  Now, you MUST charge this thing at a computer, because 1) you need the special cable that only connects to USB Type A connections, and 2) there’s no other port to use to charge.  So you must charge this thing at home before leaving the house.  I wonder how long it lasts?
  • COULD NOT get it to sync as an MTP device – the device freezes (On both Vista and XP).  But I CAN get it to connect as a storage device (only on XP) where I can manually copy my songs over (which isn’t a problem for me) or manage it with WinAMP or something else.
    • Please note that to get it to connect, I enabled the HOLD (push it so it shows the orange) and held down the REWIND button, then CONNECTED the USB.  I had to do it in that order for it to work, no other worked for me.

Things I like:

  • Micro SD Slot – It’s expandable!  Yay!  This makes complete sense and is a great selling point: why not buy a device that you can upgrade as your music collection increases?!
  • LOUD – this little thing gets VERY LOUD!  A lot louder than my Creative Zen this is replacing.  Like, crazy loud.  I’m not sure I’ll ever use it louder than half way.
  • Equalizer – It has an equalizer that allows you to customize the sound (and has a custom setting for your personal preferences).
  •  Color Screen – it’s not high resolution or anything, but it’s nice to see things in color.  And the graphics aren’t half bad.
  • Music, Audio, Radio, Recordings – This unit really does it all in terms of functionality.  It definitly plays music well and recieves radio signals even inside of buildings.

I will use it for a week or two and report back.  As of right now, I give it a 7 due to the USB connection and the syncing issues (which are not unique to me).

Leave a Comment :, , , , , more...

It’s official (nearly): Iraq’s government wants America’s army out by the end of 2011

by Steve Hernandez on Nov.21, 2008, under Personal

Iraq boots out the Americans

Nov 20th 2008 | BAGHDAD
From The Economist print edition

WHEN General David Petraeus, now America’s most celebrated military commander, arrived in Iraq in 2003 at the head of an airborne division, he asked a journalist: “Tell me how this ends?” For years nobody had a good answer. But now, thanks to a military pact between America and Iraq, a conclusion is in sight: America’s war in Iraq will end in three years’ time, with American troops being shown the door and Iraqi politicians competing to claim credit for getting rid of the foreigners.

A “withdrawal agreement” approved by the Iraqi cabinet on November 16th requires American troops to pull out of Iraqi towns and cities by the end of June next year, and to leave Iraq altogether by December 31st 2011. Those deadlines, said Iraq’s prime minister, Nuri al-Maliki, in a televised address, would not be extended. The deal was not perfect, but marked “a solid start for Iraq to regain its full sovereignty in three years.”

There were no secret articles, he said, and there would be no permanent American bases. Iraq could not be used to attack others (ie, Syria or Iran). There would be, he promised, “no detainees any more, no detention centres any more, no searches or raids of buildings or houses, until there is an Iraqi judicial warrant and it is fully co-ordinated with the Iraqi government.”

This is a big moment for America and Iraq, yet the Iraqi government was more regretful than jubilant, calling the deal the best it could achieve after more than a year of negotiations. The Bush administration, now in its last weeks in power, made several concessions. It had long opposed any notion of a fixed timetable for withdrawal, saying any troop pull-out had to be based on security conditions on the ground. The White House said the new deadlines were “aspirational”, but the text leaves less wiggle-room; clauses allowing for a review of the deadline, and the possibility that some American troops would stay on to train and support Iraqi forces, have been deleted. Security has improved markedly. But the political context has also shifted against the Bush administration—and the Iraqis have got their timetable.

In America, Ike Skelton, chairman of the House armed services committee, a Democrat, said he was worried by provisions that could result in American troops facing prosecution in Iraqi courts. But the text suggests that this is a remote possibility. Iraq has legal jurisdiction over American troops only in cases of “major and intentional crimes”, and even then only when they are outside their bases and off-duty.

The agreement should make life easier for Barack Obama, although there is some dispute as to whether it will have to be ratified by the American Congress. The deal supports the president-elect’s principle of a firm timetable for leaving Iraq, but allows him to draw out the process beyond the 16-month withdrawal he promised in his campaign. Admiral Mike Mullen, chairman of the joint chiefs of staff, said America had so much equipment that it would take two or three years to withdraw completely—security conditions permitting.

The agreement was strongly endorsed by the Iraqi cabinet but its passage through the Iraqi parliament, which could vote on it as early as November 24th, is less assured. There were brawls among the lawmakers when it was discussed on November 19th.

In a country with a history of intense opposition to military pacts with an invading power, the deal could polarise opinion. Followers of Muqtada al-Sadr, the radical Shia cleric who heads a powerful (though now dormant) private army, oppose the treaty and demand an immediate withdrawal of foreign troops. Ayatollah Ali al-Sistani, Iraq’s most senior Shia cleric, says any agreement had to restore Iraqi sovereignty and win “national consensus”. But he did not oppose it, which supporters take as tacit assent.

Some Sunnis want the agreement to be put to a referendum. Another contentious issue is the status of some 17,000 (mostly Sunni) prisoners in American hands. The Iraqi government is due to take responsibility for them, but some Sunni leaders want them all released.

Iran is equivocal. The speaker of its parliament, Ali Larijani, said America was seeking to turn Iraq into a vassal. But the leader of Iran’s judiciary, Ayatollah Mahmud Hashemi Shahrudi, said the Iraqi government “has done very well”. Some interpret this as Iranian endorsement. But like so much else in Iran, it is hard to pick out a genuine signal from the political noise.

Leave a Comment :, , , , , more...

Fix Windows MBR using Ununtu

by Steve Hernandez on Sep.10, 2008, under Technology

So, I’ve been dieing to get an Ubuntu LiveUSB drive to work correctly.  I’ve been semi-successful.  It will work, but once you put it on another computer it gets flakey.

Anyway, I tried utilizing the standard Ubuntu installation from the CD, which allows you to simply install to a USB Flash drive.  Great.  I was doing this on a laptop with Windows XP already installed.  What the installer did, however, was overwrite the MBR of the Windows XP installation and installed GRUB (this is standard and OK).  However, this isn’t what I needed, because the system will not boot up if the USB drive is not connected – There’s no BOOT LOADER! ahh!

I tried using a Windows Installation Disk to fix it, however, I did not have drivers (or a floppy drive for that matter) for the SATA Hard Disk Drive (HDD) (BTW, what’s up with Windows STILL not fully supporting SATA out of the box for XP?!  Maybe it’s SP2’s fault, who knows).  So therefore, I could not use the typical fixmbr command from the Recovery Console.

To fix it I did the following.  I booted up using the Ubuntu installation on the USB drive.  Then I ran the following commands:

  1. sudo apt-get install lilo
  2. sudo fdisk -l
  3. Find the windows installation: mine was on /dev/sda
  4. sudo lilo -M /dev/sda
  5. sudo reboot 0

This will place a boot loader on the windows disk and allow it to boot, without a hitch.  No, the Windows bootloader is not installed, but it works, and you will not notice the difference.

I hope this helps.  Good luck.

Leave a Comment :, , , , , more...

uCertify Review – MCTS 70-536: VB.NET 2.0 Application Development Foundation

by Steve Hernandez on Jul.30, 2008, under Technology

I was contacted by a Public Relations individual from uCertify who requested me to review their product.  This was quite some time ago, and since I had never used their product before, decided to test their test preparation software out in addition to others.  This short review will not mention other applications, suites or books for the preparation for this exam, only the uCertify application.

The first thing you’ll notice when you download the program, is that they offer a few things.  First, there’s 100% money back guarantee that you’ll pass the test on the first try.  That’s enticing and speaks volumes on their product.  Unfortunately, the money back guarantee is on the ~$70 you spent on the program, and not the $150+ on the exam, but alas, something is better than nothing.  At the very least, you can use that money and try again on the exam (or buy a different prep book).

Second, they offer 2 flavors of their software: a full and free (demo) version.   The demo version has a few questions, enough to give you an idea of what’s going on, but not enough for you to do anything with (ie. pass the test, study from, etc).

Lastly, I like the fact that they give you directions on how to download and install the application.  That’s very thoughtful for users who may not be highly technical but want to be, and are therefore attempting to get certified in a particular technology (this is becoming more and more common, even though the certification is supposed to be taken after experience has been attained in the work place, to validate your skills).

So let’s run the application.

As a software developer myself, I have to say that I like the initial interface a lot.  Everything is very well place and easy to navigate.  The demo version only has a Diagnostic Test (15 questions), Create a Custom Test and Create a Fixed Time Test available to you in the main navigation section.  The “Enhance your understanding” section on the right hand side has all of the items available, which are basically extras to give you an ‘edge’.  It’s mostly general information, some tips, and other resources you can find on the internet.  You don’t need this section, but it’s nice to have everything in one place anyway.

uCertify has their advertisements all over the place “Buy the full version”, which makes me laugh.  That’s what they’re supposed to do, and they do a pretty good job in keeping it in your face as you go through the demo.

Diagnostic Test:

I ran it with 10 total questions, 10 minute duration and a passing score of 730.  I also selected the “Always show last answer option as ‘None of the above’” which I believe to be crucial in getting you to think critically.  Why?  Because everyone will default themselves to “the answer must not be here” if they can’t figure it out or come up with an answer based on incorrect assumptions.  Since it’s there all the time, and you won’t know when it’s a valid option, you’ll definitely think twice before choosing it.  In my courses, I always have this option available to students.

Well, the first thing I noticed while taking the Diagnostic Quiz is that my settings didn’t stick.  I noticed at the bottom that I was on question 10 of 15 (I said a max of 10) and that the “Always show ‘none of the above’” wasn’t being shown on all questions.  Maybe this is reduced functionality for the demo, but it would have been nice to see that stated.

I found the questions a bit vague.  They’re not meant to confuse you, but require a good understanding of the underlying topic for you to know what they’re referring to.  The application does assist you with some background information and explanation, but I don’t believe it to be enough for a full understanding of the topics, but again, they are quite helpful.

The results page is fairly straight forward.  A little hard to read, maybe alternating row colors would have been nicer on the eyes.  Anyway, it tells you what you did right and wrong.  Clicking on the question will take you to the page of that question, with the answer you gave and why you were right or wrong, along with those ‘Facts’ that help you solidify your understanding.

I really like the Readiness report, which gives you a summary on how you’ve done on all the exams (there are 5 practice tests, a final test, and a diagnostic test – 423 questions in total).  They also provide an adaptive test, but that functionality is not available, so I cannot comment on it.

All in all, I believe this to be a good product.  It’s obvious the uCertify is trying to get you to pass the test, as they provide you with several ways of doing so.  If I were going to use this product, I would read a book prior to build a decent foundation, and then polish my skills and knowledge off with this application and its exams.  If you did that, you would have taken 7 tests in the uCertify application, and an additional 1 or 2 in the Microsoft book, for a total of 8 or 9.  You would iterate through the content and examinations enough to know what you have to study and understand better, and know where your strengths are.

If you used the approach above, it would cost you about $100 (Microsoft Self-Paced Certification Books – really the only books available for MCTS-ASP.NET) and $60 for the uCertify application.  That’s $160 in prep (and maybe 1 – 3 months) and then the cost of the exam, which is about $200 or so (don’t quote me on that).  When you buy the Microsoft books, you get a voucher for a discount on the actual exam, so that helps. I believe it to be worth it.

The feedback from the exams is that you need to really memorize the book’s content and have lots of coding experience (more project experience than just slapping code together).  In that respect, an application such as this one will really help you with that, as they ask you real-world type questions.  The link below is to a site of a gentlemen who gives his experience from taking the exam: here

Rating of the Application:

Visual Appeal: 8
Question Difficulty: 8
Extra Content to Help (ie. Tips): 10
Number of Questions / Exams: 9
Reporting: 9
Exam Preparedness: 8.5
Overall: 8.75

I would say this system will help anyone pass the exam, as long as they have the knowledge.  I would / will use this system in the future.

Take a look for yourself: http://www.ucertify.com/exams/Microsoft/70-536-VB.html

You can receive a 10% discount on any certification course you wish to attend using the code STEVEH.  Thank you to Roger and uCertify for their generosity.

1 Comment :, , , , , , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...