Is the West Democratic?

The following is a reply to Don Power (@donpower on Twitter). Thanks, Don.

Marx said that religion is an opiate, but I think democracy itself becomes one when it fails to include a real alternative. The best illustration is the Obama revolution, complete with the retention of most of Bush’s policies.

Western democracy is no less dysfunctional than an economic market in which a few colluding companies offer no real alternatives. That’s something government ought to prevent as in no one’s interest but instead serves.

Meanwhile we should be ashamed to idly watch other nations fight and bleed for real change while we complacently swallow obvious lies, such as that our system is fair or that hard work allows us to prosper — in reality that is the path to literal and sheepish wage slavery.

People of the world have been stirred to action inspired by the Egyptian example. We need to promote this trend in our own behaviour. For a start, Canada’s government must repeal the outrageous financial barriers to political parties that form an anti-democratic barrier to independent candidates and grassroots political movements so that it can once again be possible for people and parties that aren’t well-funded or are new to enter and pursue different agenda than the oligopoly we now serve. And if need be, we should take to the streets to demand our right to participate as candidates in our democracy without enormous cash deposits.

Posted in Pontification | Tagged , | Leave a comment

Valentine’s Day Poem Especially for Tweeters

A stylized heart in red outline.

Here is a heart to create a false expectation that the poem will be conventionally romantic.

Roses are red,
Violets are blue,
Today’s not for tweeps,
It’s only for you.
Continue reading

Posted in Poetry, Social Media, Web, Writing | Tagged , , , | 1 Comment

Should Clients Pay for your Research & Development?

I was recently asked this question by a good friend and colleague, @HiredGuns.:

Should clients cover R&D costs to develop something new? Or should a firm discount exploratory work b/c future projects will be easier?

This question is deceptively simple on the service, but, as I found, difficult to answer succinctly in a tweet and difficult to answer in the hypothetical in any case. Continue reading

Posted in Business, Marketing, Web | Tagged | 4 Comments

Wireless Alphabet Soup – 802.11 A, B, G, N

I’m writing this quite quickly, so if it’s not clear or contains mistakes, please let me know. Your comments are always very welcome.

Overview

Wireless networks (“Wi-Fi”) operate using a set of standards named 802.11. These standards are suffixed by and better known by a letter: 802.11a, 802.11b, 802.11g, and 802.11n. The latest and fastest technology is 802.11n (or N), which offers huge speed and range boots over its predecessor, 802.11g (or G).

Wikipedia explains the basic comparison well:

802.11a: “…operates in the 5 GHz band with a maximum net data rate of 54 Mbit/s [6.75 MB/s], plus error correction code, which yields realistic net achievable throughput in the mid-20 Mbit/s [2.5 MB/s].

802.11b: “…has a maximum raw data rate of 11 Mbit/s [1.38 MB/s] […] 802.11b devices suffer interference from other products operating in the 2.4 GHz band. Devices operating in the 2.4 GHz range include: microwave ovens, Bluetooth devices, baby monitors and cordless telephones.

802.11g: “…works in the 2.4 GHz band (like 802.11b) […] It operates at a maximum physical layer bit rate of 54 Mbit/s [6.75 MB/s] exclusive of forward error correction codes, or about 22 Mbit/s [2.75 MB/s] average throughput.

802.11n: “…operates on both the 2.4GHz and the lesser used 5 GHz bands. […] Prior to the final ratification, enterprises were already migrating to 802.11n networks based on the Wi-Fi Alliance’s certification of products conforming to a 2007 draft of the 802.11n proposal.

Some important points not discussed above about 802.11n:

Frequency

Some N wireless access points (AP) operate only on 2.4 GHz, others force you to choose between 2.4 and 5 GHz, while the best operate on both band simultaneously.

The 5 GHz band is preferable because it’s relatively clear of interference. You can’t enjoy this benefit if you buy a 2.4 GHz-only N AP. You also can’t enjoy this benefit if you buy a selectable 2.4/5 GHz model but need to support G devices. In order for the G devices to connect, you will be forced to run the AP in 2.4 GHz mode.

If you face a lot of interference (perhaps you live in a condo or apartment) or need to mix G and N devices, your best bet is a dual-band AP that operates on both frequencies simultaneously. Also note that some N devices, such as the Apple iPhone 4, are 2.4 GHz devices that can’t connect on the 5 GHz band.

Throughput

The best consumer N APs I have seen offer a theoretical maximum of 300 Mbit/s (37.5 MB/s). Real world results might be around 100 Mbit/s (12.5 MB/s). You should keep in mind that even my upgrade Shaw Extreme Internet pretty much never exceeds 30 Mbit/s [3.75 MB/s] and only promises 15. A fast wireless network won’t make your internet connection any faster. The speed differences become apparent when you need to move data around between devices on the local wireless network (e.g. between your laptop and your desktop).

Draft-N Devices

If you look closely at the fine-print on wireless N AP boxes in your local retailer, you may notice some mention being “draft N“. This means they were released prior to N being finalized. My experience of the DLink DIR-655 draft N AP was that it lacked compatibility with the MacBook Pro and I had constant dropped connections and couldn’t get good performance. I had to replace this device (I chose the Linksys E3000 in part because it, like the MacBook, is based on a Broadcom’s N implementation).

Draft N devices should be software upgradeable to the full N spec, but since DLink hasn’t done this for the DIR-655, I wouldn’t count on it. You’re better off looking for a proper N implementation.

Buying a New AP

While N APs are quickly becoming the only option, you are still likely to be able to find some cheap Gs that retailers are looking to clear stock on. If you have only G devices, you should consider passing over that cheap AP in favour of an N. Why? Because odds are good that you’ll acquire an N device in the next year or two and want to enjoy the benefits of N: a faster local network, better range, and less interference on the 5 GHz frequencies. Don’t worry, though. If you own or choose a G AP, your N devices will fallback and use G instead. (It is possible to disable G on an N AP, but by default they operate in “mixed” mode and support multiple standards.)

Posted in Networking, Wireless Networking | Tagged , , , | Leave a comment

Internet Pornography and Censorship

The topic of internet censorship simply never goes away. The internet is a clearinghouse for every sort of thought and every kind of content; from classical works of art to child porn, from the earnest offerings of amateur auteurs to racist rants. It’s the ultimate test of our convictions about free speech: how far will we go to defend the right of our fellow netizens to express and enjoy things we find reprehensible? Continue reading

Posted in Issues, Web | Tagged , , , | Leave a comment

The Legacy of Google Wave

Google Wave

Google Wave logo via Wikipedia

If you’re like most people, you have no idea what Google Wave was. Wave was an amazing collaboration tool, but it languished and ultimately failed because it lacked commitment from Google. Google saw Wave as an interesting experiment that could ultimately improve other products, but not as something that it should promoted as a legitimate tool. Continue reading

Posted in Marketing, User Experience, Web | Tagged , | Leave a comment

Server & Client

Key Points

In conversation with a friend of mine, I realized that he lacked a firm grasp of the client/server relationship between web browsers, also known as “user agents,” and web servers. The following has been written for him, but I decided to post it here because I believe it may be of interest to others. Continue reading

Posted in Programming, Web | Tagged , , , , | Leave a comment

Why You Should Use Reset Stylesheets

Key Points

HTML document graphic

Image via Wikipedia

Web designers are constantly faced with the struggle of balancing clients who want pixel-perfect cross-browser compatibility and don’t understand the limitations of the technology and their own desire to produce standards-compliant sites that ease their frustrations, lower their workload, and are a source of pride. Continue reading

Posted in Design, Web | Tagged , , | Leave a comment

Javascript Scope Gotcha

I just learned something very surprising about scope in Javascript from John Resig. Take a look at this very simple example:

Scope of Object Properties


var aObj, bObj;
var val = 'c';

function a() {
this.val = 'a';
}
a();

function b() {
this.val = 'b';
}
b();

bObj = new b();
aObj = new a();

console.log(aObj.val, bObj.val, val);

What output would you expect to find in the Javascript console? I thought I’d see a b c. Not so. The output is actually a b b. The implication of this is that properties defined within the context of functions (which are objects in Javascript) are actually placed in the global scope at the time the functions are called as well as locally in each function.

The danger in this behaviour is that an unaware programmer could rely on the global variable val defined at the beginning of the script without realizing that it has ultimately been hidden by b.val. This could lead to some serious head-scratching since it isn’t at all the behaviour I would have assumed.

How can we avoid the problem? Try this:

Revised Code


var aObj, bObj;
var val = 'c';

function a() {
var val = 'a';
this.getVal = function() {
return val;
}
}
a();

function b() {
var val = 'b';
this.getVal = function() {
return val;
}
}
b();

bObj = new b();
aObj = new a();

console.log(aObj.getVal(), bObj.getVal(), val, aObj.val, bObj.val);

This revised code outputs a b c undefined undefined. For the uninitiated, the above code uses closures to create real local variables. Another fix would be to avoid name collisions on variables you intend to be local to the functions a() and b(), but this is an inferior approach since errors will easily be introduced whenever the code is revised.

For a straight-forward explanation of closures, please try javascriptkit.com’s explanation of them. If you have any questions, please feel free to leave them in the comments.

Posted in Programming, Web | Tagged , | Leave a comment

Welcome to Accretor’s Blog

Welcome, readers. I will be using this blog to share my knowledge of web site development, from introducing you to high-level programming concepts like object-oriented programming to specific tutorials in PHP, MySQL, Javascript, jQuery, HTML and CSS. Some posts will focus on marketing sites and improving their search engine rank (SEO). Other posts will help you find the latest and best of the web. Yet others will help you understand the threats that lurk in cyberspace.

Some of you may already be complaining that you’re not programmers and this can’t possibly be for you. Not so! I will present technical information in plain and easy-to-understand English. Some of the programming posts may assume a higher level of base knowledge of web technologies, but every single one of them is intended to provide something of value to both technical and non-technical readers.

Key Points:

Novice

  • Even the most technical articles are written with you in mind.
  • Learn about threats to your privacy or your sensitive information that you didn’t even know existed and how you can protect yourself.

Intermediate

  • Increase your understanding of what happens behind the scenes of each site you visit.
  • Arm yourself with the knowledge you need to more effectively evaluate and hire experts.
  • Learn how to get more traffic for your website by improving your search engine ranking and visitor loyalty.

Advanced

  • Discover new technologies and techniques that will take your work on the web to the next level.
  • Learn programming techniques that will make you a more effective coder.

The use of categories and tags will assist you in identifying the information most relevant to you and more likely to be useful to you at your current level of web knowledge. For example, I will assign each post a category to help you seek out the subject matter of interest to you and a tag for novice, intermediate, or advanced content to help you identify the concepts that are at your current confidence level. Furthermore, key points in each article will be highlight with points of interest clearly identified for users at different levels.

So you can simply avoid the programming stuff? Yes, but there’s one argument to consider before you do. If you’re here, you probably live to one degree or the other on the web. Whether you run your own business or are a private citizen in our great technocracy, understanding how the web is put together is going to enhance your use of it, make you safer, and help you make better decisions when ordering work from internet professionals.

Welcome. Please feel at home here. Comment, feedback, let me know what works for you and what doesn’t. I am not writing this for my benefit. I am writing it for yours, so help me in my goal of constant improvement. Thanks for reading.

Posted in Meta | Tagged | Leave a comment