Category Archives: Computers and Internet

Looking for a new multi-url link combiner

Best url shortener to create short urlI have been using bit.ly for many years as a link shortener. Some links can become really long, and so a link shortener can make it shorter and easier to use, especially for web apps like Twitter.

The really cool thing about bit.ly, was the fact that one could combine several shortened links into a bundle, which then had its own short link.

One thing about bit.ly is that one could change the default short link it created for your long link to something more readable, e.g. http://bit.ly/Ad5sYtvE could be changed to http://bit.ly/MoonBlog (these links do not actually exist, and if they do, it is by accident).

So, I would take the bit.ly bundle link (which now pointed to several links that I added to the bundle), and shortened that to something useful like http://bit.ly/NCT_Intro, which is readable. However, bit.ly changed the way they do things, and did away with the bundle idea and converted all bundles to tags. Now, when you create a short link (url), you can tag it, and if you click on one of the tags, bit.ly would display all urls that are tagged by the selected tag.

There is one HUGE difference between the bundles and the tags. The bundles had a url that was publicly available and could be shared with others not on bit.ly. The tags CAN’T! To me, that is the biggest drawback to the way bit.ly changed the way they do things.

shortenSo, I have started looking for a new service that could accomplish this.

I came upon this web page with some alternatives. The writer suggests KrunchdHiperURL, and MultiURL. I tried each one of them, and I am not happy with any of them.

Krunchd doesn’t work at all. I created a shortened url, and clicked on the url. I could see the url being used in the url/link edit bar, but within a few short moments it took me to a company’s website without ever redirecting to the links I created. This is a HUGE FAIL! It then offers you the opportunity to edit the links that you added to the shortened link. You simply request to modify the url, and it sends you an email with a list of shortened urls that you have created, with an edit link for each of them. At least, that is what it is supposed to do. I received an email alright! BUT, with no links next to the the headers. It is supposed to have the “Title of Krunch:”, the “URL:,” and the “Edit URL:”. All these headers were empty. BIG FAIL! It gets a 0/10.

HiperURL can combine urls into a shorter url, but it has no option of creating a readable url. It gets a 5/10. The reason it only gets a 5 is that it doesn’t make use of the names of links and just displays the links.

Finally, MultiURL is not working either. After entering the links and sign up info, it displays the following:

Fatal error: Call to a member function num_rows() on a non-object in /home/multiurl/public_html/system/libraries/Session.php on line 209″

passfailThat is a HUGE FAIL! It gets a 0/10.

There is the Google shortener, but it cannot combine nor rename shortened links, so it only gets 3/10.

So, while bit.ly had it all, they would’ve been in the 8-10/10 range, it now gets a 5/10 simply because it still provides analytics. Without the analytics it would drop below 5/10.

If you know of any GOOD url shorteners and combiners, please let me know!

Advertisement

Microsoft Visual Studio C++11 conformance

So, there I was, using Microsoft Visual Studio 2012 Express (MSVS1012Ex). What I wanted to do was test the range-for-statement as provided by Stroustrup in his book The C++ Programming Language, 4th Edition, on page 45, which describes the C++11 standard. The code is as follows:

range-for-statement

On line 16, MSVS1012Ex throws an error, “error C2059: syntax error : ‘{‘”. It does not know how to handle an inline instantiation of a list within the range-for-statement, even though it claims to have included it in its C++11 Enhancements. It included the normal handling of range-for-statements as shown from line 8-13.

So, I decided to download Microsoft Visual Studio Express 2013 RC (MSVS2013ExRC) to test the above, and I am happy to say that MSVS2013ExRC can handle lines 16-19 in the code above.

C

The C++ Programming Language, 4th Edition

4thCppYesterday, I bought myself the ePub eBook of the 4th edition of Bjarne Stroustrup’s The C++ Programming Language. For those who do not know, Bjarne is the originator, the one who gave birth to the C++ programming language ±30 years ago. The 4th edition of the book covers the newest standard of the language, commonly referred to as C++11.

For the past three years I’ve been programming in C#, and so I decided to pick up C++ again (I programmed in it from 1994-2010; 16 years). From the time that I started with C++ back in 1994, a lot has changed in the language, hence, the need to get the new edition of the book with all the changes related to C++11.

I originally had the third edition of the book, which was published way back in 1997. For some reason, I cannot find that edition in my study anywhere. The third edition of Stroustrup’s book eventually also became the foundation of the original C++ standard in 1998 and became known as C++98.

Bjarne StroustrupAnyway, I am really happy to have the new edition, since there have been many new and useful updates to C++11. Bjarne writes concerning the new C++11 language features,

“The result has been a language with greatly improved abstraction mechanisms. The range of abstractions that C++ can express elegantly, flexibly, and at zero costs compared to hand-crafted specialized code has greatly increased. When we say “abstraction” people often just think “classes” or “objects.” C++11 goes far beyond that: The range of user-defined types that can be cleanly and safely expressed has grown with the addition of features such as initializer-lists, uniform initialization, template aliases, rvalue references, defaulted and deleted functions, and variadic templates. Their implementation eased with features, such as auto, inherited constructors, and decltype. These enhancements are sufficient to make C++11 feel like a new language.

For a list of accepted language features, see the feature list.”

He further writes concerning the new C++11 libraries,

“I would have liked to see more standard libraries. However, note that the standard library definition is already about 70% of the normative text of the standard (and that doesn’t count the C standard library, which is included by reference). Even though some of us would have liked to see many more standard libraries, nobody could claim that the Library working group has been lazy. It is also worth noting that the C++98 libraries have been significantly improved through the use of new language features, such as initializer-lists, rvalue references, variadic templates, noexcept, and constexpr. The C++11 standard library is easier to use and provides better performance that the C++98 one.

For a list of accepted libraries, see the library component list.”

So, I have read the first 36 pages and still need to cover 1332 pages.

Here are a couple of C/C++ funnies:

auto accident;
register voters;
static electricity;
struct by_lightning;
void *where_prohibited;
char broiled;
short circuit;
short changed;
long johns;
long dong_silver;
unsigned long letter;
double entendre;
double trouble;
union organizer;
union jack;
float valve;
short pants;
union station;
void check;
unsigned check;
union onion; more at GNU.org

Here is a fun piece of code to ponder (What is the answer here?):

int a = 5;
int b = a++ + ++a;

And, lastly, something that many new programmers struggle with,

“To understand recursion, you must first understand recursion.” (See the
cplusplus forum)

pointers

Google Chrome, Google Instant and Google thinking for us

Over the years I have migrated from one internet browser to the next. From the old Internet Explorer, to Netscape, to Opera, to Firefox and finally to Google Chrome. I have had problems with all of them. There is just no such thing as the perfect browser. (Oh, yeah! I also dabbled with Flock!).

Well, one thing that has been irritating me with Google Chrome (and I see that many Chrome users have had this problem), is that when you are logged into your Google account, and do Google searches, Instant predictions are always on and only 10 results are given per page, even when Instant predictions have been set to off and Results per page is set to 100. (See pic below)

googlesearchsettings

Of course, Google has decided that they know best for Google Chrome users logged into their Google accounts. Of course, to by-pass this lousy scenario, you have to log-out of your Google account and then do your searches to get 100 “Results per page” and have Instant predictions stop intruding!

The good news is that there is a better solution.

What you need to do is create your own custom search engine in Chrome, even though it will still be Google that is used for the searches. So, once you have entered your search, you will see the Google Search Settings button, usually at the top right of your search screen.

googlesearchsettingsbutton

Once you are in to the Google Search Settings screen, make sure you have set “Google Instant predictions” to “Never show Instant results” (that is my preference) and set “Results per page” to 100. Save your results.

Next, click on the Google Chrome settings button, and select the “Options” menu item from the dropdown menu.

googlechromesettings

Your Google Chrome should now have chrome://settings/browser in the URL address bar and the page you are facing should be the “Basics” page. Click on the “Manage search engines…” button to start creating a custom search engine. At this point Chrome should have chrome://settings/searchEngines in the URL address bar and the “Search Engines” page will be viewable.  Go to the bottom until you see the following:

addnewsearchengine

This is where you will add your custom search engine.

In the first text box, type “Google (No Instant)” but do not include the quotation marks. In the second text box type “google.com” and in the third type “http://www.google.com/search?complete=0&q=%s” and press “Enter.” Now, simply look for the custom search engine you added (“Google (No Instant)”), hover your mouse cursor over it until the “Make default” button appears, and then click the “Make default” button to make “Google (No Instant”)” your default search engine. You should see the following in your list of search engines.

googlenoinstantdefault

Problem solved and no more “Instant predictions” and you can see 100 search results, and not that paltry 10.

I hope this solves your Google Chrome search headaches.

I just wish that companies like Google, Facebook, and others will let their users decide what the default settings for those products should be. Give us the options, and let us decide.

Bank card fraud emptied my account

credit-cardsA couple of years ago a friend of mine experienced the horrendous feeling of his credit card being maxed out by card fraudsters. Today it was my turn to experience something similar. I receive an SMS when money comes in or goes out of my cheque account (and credit card account). I just arrived home when I received an SMS that says the following: (I am withholding the amount)

FNB 🙂 Rxxxx.xx reserved for purchase @ Multichoice Africa from cheq a/c..008386 using card..4255. 11Jul 16:19

The card in question is my cheque card connected to my cheque account. And, they emptied my account and pushed it into the red! The odd thing about this is that I have never, EVER, used this card online to purchase anything at ALL! I have only EVER used this card to purchase things in-store. Where these fraudsters found my card number, I do not know.

Further, I never go to my bank account online via emails, and I do not need to make use of my card number to do so! I used to be a software developer on anti-virus software and also on data security software. I know the risks, and I know what to look for.

Also, this “purchase” was done at Multichoice Africa, which is the DSTV African division, outside of South Africa. That means, it was probably some Nigerian that got gold of my card number and paid for his DSTV account online. The question is, how did these criminals get hold of my card number?

Did they hack into FNB to get to my card number, and how many card numbers did they steal? It is close to impossible to hack into banks these days, so the follow-up question is, Did they have help on the inside?

I had to cancel the card, and now I sit with no card, to an account with no money! Oh, the irony!

Companies taking risk with their own systems

computersystemOne would think that large companies with lots of money and lots of people and lots of systems would actually do something to mitigate the risk factors related to those critical company systems so absolutely necessary to run their businesses. But, don’t be fooled!

The fact is, there are companies out there that are creating risk for themselves! In a day and age when there are so many tech savvy people around, one could be excused for thinking that almost everyone knows of backing up systems, and probably more important than backing up, documenting systems!

You are probably thinking now that I have gone nuts! Documenting systems? You couldn’t imagine how important it is to have proper documentation for the systems that the company relies upon. Let me paint you a real life scenario about an international company with their own risk factors. This is a real life scenario, so I’ll change the name of the company to protect the guilty culprits! Let’s call this company, ACME Supplies Company.

acmelogoACME has a very small electronics and software development department, and this department consists of two software developers and one electronics developer. ACME is an international company, and these three guys basically have to develop and maintain hardware and software for three large divisions within ACME. So, what is the problem? Did I say that the two software developers are brand new at ACME? Both were employed at the same time.

Well, about six months ago the two previous software developers decided to resign and move elsewhere. It always makes one wonder when the two main players in a team jump ship at the same time! These two guys were in charge of developing software for these three divisions within ACME. This entailed the design and coding of the client UIs of three different software applications, with services running on a central server, all connected to several databases, some with many tables and hundreds of thousands of rows of data each! These systems keep track of all the company resources and assets via GPS and other means. That means, they’re crucial. Great!

The problem with ACME is that when the first two developers left, they left absolutely no documentation as to the design of any of these systems. I hope you can start seeing the risk now! There are no requirements specifications, no design specifications, no database design specifications, not even a diagram of sorts. That means, when the inevitable computer crash eventually comes, this company will sit with a big problem. What happens if the backups are no good? Is there anybody that would be able to piece this whole thing together, to make it work properly again?

Before the two new guys could bring anything meaningful to the table, they would have to wade through thousands of lines of code to familiarize themselves with these systems, since there just is no documentation! This could take months!

However, if ACME had done the development life cycle properly, from conception through implementation, maintenance would have been easy. No matter who you are, even if you are a software developing genius, it is still much easier and quicker to read human language than a programming language. Therefore, if these new programmers were given properly written requirements and design specifications, they would have been up and running with the maintenance of those critical systems within a very short period of time, compared to having to go through thousands of lines of code!

I remember back in the last millennium, joined a company that developed military systems. When I arrived there the first day, I was given a pile of documentation with everything about the systems I was going to work on, properly documented. Within only a few weeks, I became an active contributing member of the team, because I was able to pick up the background of the proposed system, the requirements and design. I also knew where I fit in, and what part I had to play.

In the end, companies put themselves at risk by not following tried and tested policies from the beginning. Sure, you may get short-term benefits for your company by skipping those pesky “unnecessary” steps and go straight to implementation, but in the long run, those short-term benefits will inevitably come back to haunt you! Shortcuts bring immediate gratification, but immediate gratification never lasts long, because as quickly as the gratification comes, it also dissipates. Therefore, companies should look at long-term benefits when thinking of creating systems for themselves, and not just on the quick fix.

computer-backup

Phishers, go to h3l1

Spammers, scammers, phishers and the like, GO jump in the lake! Every now and again we get emails from people claiming to be officials of the company you presume they represent. Like today! I received this email from these morons that truly think that there are people stupid enough to provide their private info for these idiots to use. These bird brains claimed to be from GMail, and the message is as follows:

“We are shutting down some accounts due to congestion in our database system and your account was chosen to be deleted. If you are still interested in using our email service please click reply and fill in the space below for verification purpose:”

Here is the screen capture of it:

phishers

Please, even if your own bank seems to ask you to click on a link or want you to send them your login info, don’t be a dunce and actually do it! These freakazoids are evil and they will make use of your info for their own evil purposes.

And, when you receive an email from some nice sounding Christian person that needs to bring millions of $$ into your country, but they just need some money to make it happen, and could you please send them an amount of money to do it, even if they promise you $1,000,000… DON’T DO IT!

When you see emails like the one above, simply press DELETE!

Firefox 4 beta 1 still needs lots of work

I have been testing Firefox 4 beta 1 on Mac. While Firefox in general is a very good browser, this beta is in no way good enough to go into the next phase. I have  always been an Opera user, since IE simply seemed like such a stilted browser, and in the early years of Firefox, the quickest browser was Opera. However, a while ago I moved over to Firefox for basically 3 reasons: 1. Its speed improved dramatically, 2. the add-ons available for Firefox is simply astounding, and 3. Opera just didn’t work with all the websites I visit.

Unfortunately I haven’t been testing Firefox 40b1 on Windows to add any input there.

Problems I have encountered

40b1 on Mac crashes at request, and it never falters in its ability to crash. I simply have lost count of the amount of crash reports I have sent to Firefox through its crash manager and 40b1’s Feedback button.

Here are a few problems that I have encountered with Firefox 4 beta 1, and how I fixed them:

  1. Firefox crashed everytime I quit and presented me with its crash reporter. No exceptions!
  2. Everytime I wanted to save an image to my hard drive it didn’t even open a save file dialog box. It simply went away, and I ended up staring into the crash manager!
  3. I was unable to disable old incompatible add-ons by using the add-on manager. Everytime I selected an add-on to disable and then clicked the “Restart now” button… refer to point 1.
  4. When I started Firefox in safe mode in order to disable add-ons (by setting the checkbox “Disable all add-ons”), everything returned enabled after the restart!
  5. I eventually had to start Firefox in safe mode with the check box for “Reset all user preferences to Firefox defaults” set. To disable my 20 add-ons that are incompatible with 40b1, I had to disable each one individually, restart Firefox in safe mode, and then disable the next one, and so on! Finally, having all these add-ons disabled individually, it now seems that points 1-3 are solved.

Irritation with Firefix!

A big irritation I have in general with Firefox, is that almost every time a new version of it comes out, some of my add-ons suddenly have to be disabled. I don’t understand the reason for that! When that happens you have to first do an add-on update to see if there are new versions of the add-on. Why can’t Firefox not be backward compatible with add-ons? There must be reasons for that, but in my opinion it is not a user-friendly design decision.

Anyway, that is how far I am with testing Firefox 4 beta 1.

If you have tested Firefox 40b1, what have your experiences been like?

Facebook has a weird security certificate

I make use of Twitterfeed to send status updates from my blogs to Twitter and Facebook. In order to send these updates from Twitterfeed (TF), TF must be authenticated to send information to Twitter and Facebook. I went through the process of doing the authentication with Twitter, but when I did the same with Facebook, I received the following warning:

This Connection is Untrusted

You have asked Firefox to connect securely to http://www.facebook.com, but we can’t confirm that your connection is secure.

Normally, when you try to connect securely, sites will present trusted identification to prove that you are going to the right place. However, this site’s identity can’t be verified.

What Should I Do?

If you usually connect to this site without problems, this error could mean that someone is trying to impersonate the site, and you shouldn’t continue.

Technical Details

http://www.facebook.com uses an invalid security certificate.

The certificate is only valid for the following names:
  a248.e.akamai.net , *.akamaihd.net 

(Error code: ssl_error_bad_cert_domain)

I Understand the Risks

If you understand what’s going on, you can tell Firefox to start trusting this site’s identification. Even if you trust the site, this error could mean that someone is tampering with your connection.

Don’t add an exception unless you know there’s a good reason why this site doesn’t use trusted identification.

I am not the only one who has encountered this odd security certificate. The WebTips Facebook page also had a remark on it. The question is, of course, why does Facebook have such a weirdly named certificate? Can this be trusted?

%d bloggers like this: