Showing posts with label Tech. Show all posts
Showing posts with label Tech. Show all posts

Wednesday, June 3, 2009

.XXX domain for internet porn sites

I saw a group today trying to drum up support for a new Top Level Domain (TLD). For readers not familiar with this term a TLD is the top level grouping of a set of internet addresses. Some others are:
  • .COM - Generally thought as the default TLD this was intended for commercial purposes.
  • .NET - This generally includes domains whose function deals with communication, such as Internet Service Providers (ISP).
  • .ORG - These would be community addresses, such as charity organizations or not-for-profit efforts.
  • .EDU - These are educational addresses
  • .GOV - US Government sites.
There are TLDs for different countries, as well:
  • .UK - United Kingdom
  • .CA - Canadia (lol)
The Internet Corporation for Assigned Names and Numbers (ICANN) is the organization that keeps track of which TLDs exist and what their stated purpose is. They have been petitioned a few times to create a .XXX TLD, most recently the board discussed and rejected the request on 20 March, 2007. You can read their Meeting Notes to see the specific arguments affecting their decision.

Their reasons for rejecting the petition echo my own thoughts when I initially heard about this effort. Here are a few of my concerns

1) Who will be in charge of policing this policy?
- US vs International entities
It is easy for us to forget that the Internet is an international entity. No single government controls its functions, though many governments have laws regarding the manner in which its citizens are allowed to use Internet content. This means that while my kingdom of Topheria may consider the use of "coke" and "delicious" in the same sentence as grounds for public flogging, the United States has no such law. Who is to say that CokeLovers.com, which was created by somebody in Ukraine should or should not change their content because it offends me?

- Manpower to search the Internet for adult content.
The Internet is not a single entity. It is the sum of every individual that puts any content on any networked computer anywhere in the world. the Transmission Control Protocol / Inter networking Protocol (TCP/IP) was designed to allow an arbitrarily large number of computers to "talk to each other" and it is used by a plethora of computers now. My laptop, on which I test my web page code is just as much the Internet as Google's data center up the Colombia Gorge. Who is going to hire and support the army of billions it will take to inventory every piece of information on every computer that ever connects to any other computer via TCP/IP?

2) How will we define the types of content that belong in this TLD?
- Nudity?
Perhaps the most difficult part of this idea is determining what exactly is "Adult Content" (AKA Pornography). Is nudity pornography? How much exposure is required before somebody is considered nude? Some people believe it is indecent for a woman to show her ankles or even her face in public. Others believe it is perfectly acceptable to wear only a loin cloth. Who gets to decide for every web site in the world what percentage of visible skin is considered nude?

For argument's sake let's say that nudity means that the person in question is wearing absolutely no clothes at all. Many museums and art galleries must now move their internet content to this .XXX domain. Most of Michelangelo's most recognizable works include people wearing no clothing at all. It looks like the Vatican will have to move their Sistine Chapel site now.

- Audio / Text content?
Perhaps we are missing an important set of content here. Adult content can be transmitted with words and sound files, too. Should we consider anything that has anatomical references subject to this new TLD? What about educational content, such as medical in formation about Venerial Disease? What about clothing advertisements that cover those areas of the body? Does my wife need to now go to a .XXX domain in order to find out if the new bra she heard about has better support than the one she currently uses?

How about the unexpected side effects of global content? One word may be perfectly acceptable in one country but extremely vulgar in another. Perhaps the words sound identical but have completely different meanings in different languages. Perhaps a word was considered vulgar 100 years ago but is commonplace now or vice versa. Who will determine the context within which this content is categorized

- Is sexual content the defining criteria?
Often this type of discussion fixates on sexual content, making it synonymous with "Adult Content". If we are interested in filtering inappropriate connect from our children (or ourselves) then what about violence? What about content that promotes hatred and prejudice or illicit drug use? Aren't those just as offensive and damaging as sexual references?

- Degree of separation?
There are obviously extremes that are easily classified. Some Internet sites are clearly intended to deliver prurient content, while others are clearly intended to deliver completely benign content. with only two classifications available (.XXX or everything else), it's the area in between those extremes that become very difficult. We simply cannot meet the needs of the general population if our only options are black and white.

My solution
The left-brained part of me agrees It would be nice to have a simple way to categorize Internet content I consider offensive. I would love to filter it with a single button. I simply don't see this proposal as a comprehensive solution. The sites that would register themselves under the new TLD are already identifying themselves in such a way that existing products, such as Cyber Patrol or Net Nanny already filter them. why go through the expense and effort of re-inventing something that already works as well as the new one would?

The best way to protect our children, IMNSHO (In My Not So Humble Opinion), is to educate them. We cannot always shelter them from the existence of offensive or inappropriate material. This becomes painfully obvious by spending a few hours in public. I regularly experience R-rated life from the basketball court next to my daughter's soccer practices. Adult themes often play out in the mall. Should I lock my kids up in the house so they never have to experience such things?

No I should teach them proper boundaries, teach them how to appropriately react when confronted with people exceeding these boundaries, and practice the very same habits myself that I want my kids to learn. When they stumble onto a website, book, television show, or conversation that is offensive to their sensibilities they need the ability to close it, change it, leave. Simply sheltering them from the existence of such things will cause either curiosity or paralysis when they are inevitably confronted with it.

When they encounter predatory behavior in any of these topics (be it harassment, drug dealers, or whatever) they need the ability to protect themselves and report the behavior. Pretending such things don't exist will not stop predators from appearing. It simply adds to the tally of available victims.

This is how we protect our children. Teach them. We arm them with skills and knowledge. We show them by our own examples

Monday, March 16, 2009

My Mysql / PostgreSQL experience

GEEK CONTENT: High

A few months ago I discovered the Portland Postgres User Group (PDXPUG). This group isn't huge, but is a very active, extremely friendly and helpful group of database hackers and general technophiles. I can't even count the number of times I've tweeted a question about PostgreSQL and gotten a faster response than the IRS on Jimmy Hoffa's trail. If you are a twitter user, simply include the Hash Tag #PDXPUG and the Djinni appears with your answer.

Anyway enough of my plug of the group.

Last month it was my turn to present something to the user group. Not being as knowledgeable of database internals as Selena, nor as experienced hacking tools around PostgreSQL as Mark or Gabrielle I was a little intimidated. It turns out, though, that one of my work projects provided a great talking catalyst.

I am a programmer for NVIDIA. No, I am not one of the amazingly brilliant people that can actually visualize the circuitry inside a GPU. I am not even important enough to be in the know on all the best Top Secret Insider stuff, but I love working around smart people and playing with the toys they come up with.

I like to describe my position as the grease that helps important gears turn faster. Whatever software or analysis that one of the NVIDIA engineers needs that we can't buy a solution for off the shelf my team writes. This might be something to help managers plan their hiring practices or something to help lots of engineers share Gigabytes of test results. It might be something the automatically notifies people when one of our proprietary tools appears to be going awry. I enjoy it because every new project is fresh and challenging.

Recently I was given the task to optimize a database system that logs errors with any of our internal tools, including our large farm of servers. The data stored there helps find systematic problems (bad network nodes, slow disk drives, etc.) The database that stores this information runs MySQL and was written about the same time I started working at the company. It has an awful lot of data and when something goes wrong we need to get answers out of it quickly.

My first attempt at gathering some troubleshooting metrics took me four days. This was not an acceptable turn around, so I undertook a rather in depth effort to redesign the database to better meet the demands placed on it. What I initially imagined as a 4-6 week project turned into a five month saga. I learned an awful lot about the tools that use this and even more about MySQL's inner workings and pitfalls.

As I worked on this I keep a running log of design possibilities for porting this to PostgreSQL. It would be a lot of work, but between my IT contact's preference for PostgreSQL and the activity level of PDXPUG it might well pay off.

So when it came time for me to present something to the group I decided this project would provide good fodder. It went much better than I could have imagined. Not only were my challenges shared by others in the group but I got some really useful suggestions both in PostgreSQL and MySQL for working around them. I look forward to presenting a follow-up after I have been able to incorporate them and some of my other plans.

Here is a basic checklist of my current thought regarding the two database implementations based on my current work. I fully expect this list to change over the next few weeks as I do some more broad comparisons between these solutions:

MySQL
CON:
  • Centralized Lock table shared by all databases across the server instance. One misbehaving database can bring all databases on the server to a halt by filling the lock table.
  • Backups are less sophisticated (no incremental backups)
  • Permissions granularity on our version either requires super-user access (against IT policy) or prevents many necessary operations (such as trigger creation)
  • No Local User Groups in PDX
  • Requires deterministic defaults for database fields (no functions such as now()). This means all other defaults must be done with triggers.
  • Significant breaking changes between versions 5.0.x and 5.1.x. This makes IT really reluctant to upgrade, thus making all of the advantages of 5.1.x unavailable.
  • Lots of confusion about which is the "official" current version. Many conflicting development branches.

PRO:
  • Free*
  • Very responsive support from Sun if you pay for the enterprise package.
  • Documentation. the online documentation (with its accompanying comments) is very thorough. It includes a lot of sample code, as well. There are a lot of good books for configuring and maintaining MySQL servers. There are also some great bloggers out there
  • LAMP (Linux Apache MySQL PHP) has a huge following. PHP appears to be the heart and soul behind MySQL's popularity.

PostgreSQL
CON:
  • No single point of contact for Enterprise support. Many managers like knowing whose throat they can wring when something goes horribly wrong, so a lack thereof can make this solution a harder sell.
  • No Unsigned integers (though I hear this is soon to be).

PRO:
  • Free*
  • Documentation
  • Nearly any language can be used to implement stored functions / procedures. This means you can leverage Perl for string parsing, for example, which it does extremely more efficiently than databases.
  • PDXPUG is an excellent help resource
  • Very active development community. I first saw @MagnusHagander quote this from a Percona discussion:
MySQL has a community. PostgreSQL is a community.

Another interesting point that came up after my presentation was Oracle's announcement that it would purchase MySQL. Is this a Pro or a Con for MySQL? Time will tell.
The final result of my presentation can be seen here (warning lots of geek-oriented material inside):



*Free is a relative term. My first car was a 1974 Ford Pinto station wagon. My step-dad gave it to me when I turned 16. At the time it had no compression in one cylinder and partial in another. I spent the greater part of a summer rebuilding that engine under the careful guidance of my boss at the gas station where I worked. Was the car free? Yes. Was it without cost? No. It cost me a lot of hours, bloody knuckles, and money for tooling and parts. It would have cost a heck of a lot more had I not had a generous boss who let me use his tools, draw on his expertise, and commandeer an empty bay when he could afford it.

Monday, October 13, 2008

Never get involved in a land war in Asia...

From The Princess Bride:
Ha ha! You fool! You fell victim to one of the classic blunders! The most famous is never get involved in a land war in Asia, but only slightly less well-known is this: never go in against a Sicilian when death is on the line!

I propose that the next classic blunder is the holy war called Language Standardization. I am on a committee at work to evaluate programming languages, Libraries, and Development platforms to determine which get the official stamp of approval for our team to use. I agree there is great merit in having a limited number of software tools to support. The alternative is a morass of unmaintainable widgets written with whatever utility or language struck the individual's fancy at the time. The ensuing spaghetti code becomes what is often referred to as "Write only" code because it is impossible to figure out how it works by reading it.

That said the effort of creating said standard is a philosophical landmine that rivals The Crusades in its fanatical implications. Just try getting a Ruby programmer in the same room as a C# programmer and you will see the fireworks start flying. Nothing is sacred in these battles as Cross-platform compatibility, centralized support, flexibility or efficiency of expression, or even the personal quirks of the original designers are bandied about as evidence of our chosen tool's superiority. Nowhere can a team of intelligent, experienced engineers descend into kindergarten bickering so fast as when their pet language is on the chopping block.

I must admit a certain morbid fascination with the whole process. I have always been a bit of a generalist in regards to IT and Software Engineering, so I have no especial attachment to any particular option. I like the ease with which Visual Studio allows C# and Windows development to happen. I like the ease with which my Perl, Python, or Java code runs on Windows, Linux, or Mac. I curse Microsoft and Postgres equally depending on which asinine implementation I must work with at the moment.

Unfortunately this means I don't have a lot of in depth information to add to the discussion. I think it uniquely places me in a position to fairly weigh the arguments of my colleagues as they present the best about their personal bias.

What will we decide?

I don't know, but I plan to enjoy the debate much more than anything the presidential candidates or WWF can come up with.

Sunday, October 12, 2008

Why I like Fry's

Fry's Electronics is mostly a West USA phenomenon, though apparently they have a few stores in Illinois, Indiana, and Georgia. It is often referred to as Disneyland for geeks. They carry everything you could want for your computer, rows upon rows of other electronics and appliances, games, movies...

Fry's has been criticized from time to time for their mediocre customer service, highly targeted advertising (including suing people that post pictures of their newspaper ads online), and convoluted rebate processes. They were extremely late entering the game with the Frys Online website, having to buy the domain name once they finally decided to create a page. Considering their target market that last is probably a near-deal-breaking point. A significant portion of Fry's inventory appears to be returned or refurbished items (I have contributed to those returns probably 1/3 of the time I purchased from Fry's).

I must say that for most of my computer component purchases I will research using Pricewatch and often buy from a local group, such as ENU.

Why, then do I love Fry's so much, then?

1) Eye candy!

I love browsing the aisles and seeing what new toys are available. I should clarify that "toy" in my vocabulary might just as easily include a Surround Sound speaker set, Big screen TV or Wi-Fi sensing keychain as it would a new Wii game or Radio-controlled helicopter. Fry's has no end of product displays to start any geek salivating.

In addition to the products, there are always the themes in certain stores. Our Portland store is pretty boring, but I love hitting one of the themed stores when I travel to California.



Whether it be the Mayan temple in San Jose.







The Alice in Wonderland themed one in Woodland Hills




The Alien Invasion themed one in Burbank









Or the City of Industry store










Each offers a fun distraction while you peruse the latest gadgets.

2) Special Deals

Every so often Fry's has unbeatable deals. My favorite is the paper special they do every couple months. 1 ream for $.99. When this is on I give each kid a dollar and hit a different cashier. This is a trick I remember my mother doing with us on Safeway deals growing up.

3) Free "rental" program

My friend Jon mentioned this one to me and I thought it was a stroke of genius. Not sure whether you are ready to buy that new widget? Is your thingamajig being repaired? Try Fry's free rental program. Since Fry's has so many returns their return policy is wonderfully simple. Return it within the given time for any reason and you get a full refund. As long as you take care of the item and keep all the packing material, manuals, and pieces this offers a great way to try before you buy. Thank you, Jon, for the inspiration!

So no I don't buy all my stuff from there and no I don't always trust their pricing, but I still love trips to Fry's whenever I am in the neighborhood. My car regularly experiences a mysterious pull to the right as we near the Wilsonville offramp. If you have a Fry's nearby, especially a themed one, I strongly recommend a trip. If not, I'll take you to mine the next time you are in town.