<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13140861</id><updated>2024-11-15T15:45:19.546-08:00</updated><category term="Drupal"/><category term="FaceBook"/><category term="google"/><category term="OLPC"/><category term="API"/><category term="drupal heretic"/><category term="PHP"/><category term="one laptop per child"/><category term="Amazon"/><category term="Microsoft"/><category term="Adsense"/><category term="Internet"/><category term="Negroponte"/><category term="Page rank"/><category term="Twitter"/><category term="XML"/><category term="job trends"/><category term="server load"/><category term="web design"/><category term="Adwords"/><category term="Affiliate Revenue"/><category term="FedEx"/><category term="Flickr"/><category term="GMail"/><category term="JQuery"/><category term="Livejournal"/><category term="MySQL"/><category term="Open Source"/><category term="PLR"/><category term="SEO"/><category term="Shopping.com"/><category term="XO laptop"/><category term="Yahoo"/><category term="affiliate"/><category term="content"/><category term="fraud"/><category term="modules"/><category term="scams"/><category term="spiders"/><category term="traffic"/><category term="turnkey website"/><category term="westcan"/><category term="wordpress"/><category term="&quot;small town news&quot;"/><category term="&quot;technical expert&quot;"/><category term="2007"/><category term="404s"/><category term="43 Things"/><category term="AddToAny"/><category term="Apache"/><category term="Bestsellers"/><category term="Brother4070CDW"/><category term="CBC"/><category term="CI"/><category term="CMS"/><category term="CSS"/><category term="CVS"/><category term="Canada"/><category term="Chrome"/><category term="Comcast"/><category term="Comes v Microsoft"/><category term="Commission Junction"/><category term="Communication Initiative"/><category term="Cooking"/><category term="Digg."/><category term="Dotster"/><category term="Drupal Song"/><category term="Dubya"/><category term="Enquisite"/><category term="Facebook Lonarq Phishing"/><category term="Falkvinge"/><category term="Firefox"/><category term="Gary Pinson"/><category term="Georg W. Bush"/><category term="George W. Bush"/><category term="Google Revolution"/><category term="Groupon"/><category term="HTML parsing"/><category term="History"/><category term="Hosting"/><category term="Iowa"/><category term="J2"/><category term="Laser printer"/><category term="Linux"/><category term="Mod X"/><category term="MongoDB"/><category term="MySpace"/><category term="NY Times"/><category term="P2P"/><category term="PHP Conference"/><category term="Pirate Party"/><category term="Portland Grid Project"/><category term="Pressflow"/><category term="Property Past"/><category term="RSS"/><category term="Recipes"/><category term="SRED"/><category term="Salmon"/><category term="ShoppingAds.com"/><category term="Star Trek"/><category term="Vancouver"/><category term="Victoria"/><category term="Victoria Grid Project"/><category term="Web 2.0"/><category term="Web Services"/><category term="Websites"/><category term="Wikia"/><category term="XSLT"/><category term="Yahoo Shopping"/><category term="Zynga"/><category term="ads"/><category term="advertising"/><category term="aggregator"/><category term="application development"/><category term="award winners"/><category term="bad design"/><category term="bad techies"/><category term="big brother"/><category term="blogger"/><category term="blogspot"/><category term="brownouts"/><category term="business"/><category term="cambrian house"/><category term="change management"/><category term="chinglish"/><category term="clickers"/><category term="clipart"/><category term="comments"/><category term="consulting"/><category term="cpc"/><category term="dating"/><category term="despotism"/><category term="dns"/><category term="domain for sale"/><category term="domains"/><category term="drop shipping"/><category term="drupalcon"/><category term="eFax"/><category term="ebook"/><category term="egg timer"/><category term="elance"/><category term="employment"/><category term="entrepeneur"/><category term="failures"/><category term="fixes"/><category term="forms"/><category term="get rich"/><category term="getafreelancer"/><category term="griefers"/><category term="harvard"/><category term="help wanted"/><category term="iPad"/><category term="ip addresses"/><category term="lame"/><category term="legacy"/><category term="link dump"/><category term="login"/><category term="make money at home"/><category term="marketing"/><category term="mashup"/><category term="mashups"/><category term="module development"/><category term="money"/><category term="nag timer"/><category term="neocon"/><category term="neozombies.com"/><category term="net neutrality."/><category term="network solutions"/><category term="odesk"/><category term="offshoring"/><category term="poverty"/><category term="prediction markets"/><category term="printer"/><category term="privacy"/><category term="productivity"/><category term="programming"/><category term="project management"/><category term="projects"/><category term="pwned"/><category term="security"/><category term="server rooms"/><category term="silentbanker"/><category term="some experience required"/><category term="spring ahead"/><category term="tax credits"/><category term="taxonomy"/><category term="thesaurus"/><category term="time change"/><category term="tools"/><category term="trolls"/><category term="upgrades"/><category term="web design subscription"/><category term="workflow"/><category term="youtube"/><title type='text'>Technically...</title><subtitle type='html'>As I come across knowledge, I will leave it here for others to use. I&#39;m big on WordPress, APIs and business growth.&#xa;&lt;a href=&quot;http://twitter.com/#!/dewolfe001&quot;&gt;Join me on Twitter&lt;/a&gt; or &lt;a href=&quot;https://web321.co/&quot;&gt;Victoria Web Design&lt;/a&gt; site.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>222</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13140861.post-5923580689014352441</id><published>2024-03-20T12:50:00.000-07:00</published><updated>2024-03-20T12:50:25.787-07:00</updated><title type='text'>Spring 2024 Link Drop</title><content type='html'>&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyUsQ6v1q34jLvqupf6EsFMxTi9I3jyEDBNpQeLjxsgNoN7wTSKt24MkpRXHdRspULob8JsbHAnJiAr-cw-kFM0SFtMt0Xw3SErzRRSngRLhb0V7XC_FCMKl2NWf8TYZHipsNz0vQQJ0oEFa99_AozSv0THwg1wN1IcGUpApMEInLKqBkWnqK/s1828/Screenshot%202024-03-11%20at%2013-03-17%20Welcome%20To%20Ready%204%20-%20Ready%204...%20Anything%20-.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;848&quot; data-original-width=&quot;1828&quot; height=&quot;148&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyUsQ6v1q34jLvqupf6EsFMxTi9I3jyEDBNpQeLjxsgNoN7wTSKt24MkpRXHdRspULob8JsbHAnJiAr-cw-kFM0SFtMt0Xw3SErzRRSngRLhb0V7XC_FCMKl2NWf8TYZHipsNz0vQQJ0oEFa99_AozSv0THwg1wN1IcGUpApMEInLKqBkWnqK/s320/Screenshot%202024-03-11%20at%2013-03-17%20Welcome%20To%20Ready%204%20-%20Ready%204...%20Anything%20-.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://www.websitedesignvictoria.online/&quot;&gt;&amp;nbsp;A rundown of Victoria Web Designers&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.webdesignvictoria.co/&quot;&gt;&amp;nbsp;A similar list of Web Designers in Victoria&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href=&quot;https://ready4.ca/&quot;&gt;Need some affordable Web Design done?&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;How about &lt;a href=&quot;https://web123support.com/&quot;&gt;managing your website for $123/mo.&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;&amp;nbsp;Do you need your WordPress site managed with a &lt;a href=&quot;https://web321support.com/&quot;&gt;maintenance plan for the low cost of $321/mo&lt;/a&gt;.?&amp;nbsp; &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/5923580689014352441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/5923580689014352441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/5923580689014352441'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/5923580689014352441'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2024/03/spring-2024-link-drop.html' title='Spring 2024 Link Drop'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyUsQ6v1q34jLvqupf6EsFMxTi9I3jyEDBNpQeLjxsgNoN7wTSKt24MkpRXHdRspULob8JsbHAnJiAr-cw-kFM0SFtMt0Xw3SErzRRSngRLhb0V7XC_FCMKl2NWf8TYZHipsNz0vQQJ0oEFa99_AozSv0THwg1wN1IcGUpApMEInLKqBkWnqK/s72-c/Screenshot%202024-03-11%20at%2013-03-17%20Welcome%20To%20Ready%204%20-%20Ready%204...%20Anything%20-.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-6817533367397550428</id><published>2023-07-28T10:53:00.005-07:00</published><updated>2023-11-03T16:14:14.231-07:00</updated><title type='text'>July 2023 - We are in the future, now!</title><content type='html'>&lt;p&gt;&amp;nbsp;Have you checked out this page of helpful links?&lt;a href=&quot;https://sites.google.com/site/dewolfe001/home&quot;&gt; Click here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The newest AI news: &lt;a href=&quot;https://www.futuretools.io/newly-added&quot;&gt;Future Tools&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Web321&#39;s AI statement: &lt;a href=&quot;https://web321.co/ai/&quot;&gt;Click here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/6817533367397550428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/6817533367397550428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6817533367397550428'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6817533367397550428'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2023/07/july-2023-we-are-in-future-now.html' title='July 2023 - We are in the future, now!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-6882038014548704733</id><published>2022-11-19T15:53:00.006-08:00</published><updated>2023-10-11T17:57:24.969-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Victoria"/><category scheme="http://www.blogger.com/atom/ns#" term="web design"/><title type='text'>My November 2022 Link Dump</title><content type='html'>&lt;p&gt;Here are some new releases and works I have done in the last month or two:&lt;/p&gt;&lt;p&gt;

&lt;a href=&quot;https://counsellorwebdesign.ca/&quot;&gt;Therapist Web Design&lt;/a&gt; - We have plan in place for counsellors, therapists and psychologists to get a winning web design.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://hospitalitywebdesign.ca/&quot;&gt;Hospitality Web Design&lt;/a&gt; - Tourist attractions need something special.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://web321.co/our-services/website-maintenance/&quot; title=&quot;Website Support&quot;&gt;WordPress Support&lt;/a&gt; - Keeping WordPress websites in good working order.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://kylix.ca/&quot;&gt;Kylix Photography&lt;/a&gt; - We show off the works of a talented Vancouver photographer.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://pearllearning.com/&quot;&gt;Pearl Learning&lt;/a&gt; - Advanced learning and college prep.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://thefuselight.com/&quot; title=&quot;Whiteboard explainer videos&quot;&gt;Fuselight Creative overhaul and conversion to Divi&lt;/a&gt; - Whiteboard explainer videos.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;//webdesignvictoriabc.solutions&quot; title=&quot;Web Design Victoria BC&quot;&gt;Web Design Victoria BC&lt;/a&gt; - WordPress web design experts for Victoria businesses.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;//webdesignserviceplans.solutions&quot; title=&quot;Web Design Service Plans&quot;&gt;Web Design Service Plans&lt;/a&gt; - Web Design maintenance plans.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;//webdesignvictoria.solutions&quot; title=&quot;Web Design Victoria&quot;&gt;The Victoria Web Design Experts&lt;/a&gt; - Web Design Solutions for Victoria BC&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://web321.co/regional-pages/victoria-web-design/&quot;&gt;Victoria BC Website Design&lt;/a&gt; - Web Design Experts in Victoria BC&lt;br /&gt;&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/6882038014548704733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/6882038014548704733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6882038014548704733'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6882038014548704733'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2022/11/my-november-2022-link-dump.html' title='My November 2022 Link Dump'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-1481676585345935551</id><published>2020-11-04T17:33:00.011-08:00</published><updated>2022-03-14T11:27:39.276-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Websites"/><title type='text'>What Have I Been Working On?</title><content type='html'>I have been busy:
&lt;p&gt;RV Rentals on Vancouver Island &lt;a href=&quot;https://tinyurl.com/RVRentalVI&quot; title=&quot;Go RV-ing with Pacific RV Ventures&quot;&gt;Pacific RV Ventures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have been some rank buildiner and SEO work for North Bay Limo. Sonoma County is a competitive market for a &lt;a href=&quot;https://northbaylimo.com/&quot;&gt;luxury fleet&lt;/a&gt; of limos, but we&#39;re trying to help. &lt;a href=&quot;https://bit.ly/2GDk62q&quot;&gt;Alternative Link&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We have been building up our new venture, Web321.co. We offer &lt;a href=&quot;https://web321.co/&quot;&gt;web design plans&lt;/a&gt; to give keep websites well managed and in good working order.&lt;/p&gt;

&lt;p&gt;We support Mclaren Lighting in Victoria BC. They sell &lt;a href=&quot;https://mclarenlighting.com/&quot;&gt;lighting&lt;/a&gt; to Victoria homes and businesses. That&#39;s been going great!&lt;/p&gt;

&lt;p&gt;The one stop to discover new and cool websites: &lt;a href=&quot;https://best5.ca/&quot;&gt;Best 5&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/1481676585345935551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/1481676585345935551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/1481676585345935551'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/1481676585345935551'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2020/11/what-have-i-been-working-on.html' title='What Have I Been Working On?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-603495130133799190</id><published>2011-04-29T23:15:00.006-07:00</published><updated>2011-04-29T23:42:40.663-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business"/><category scheme="http://www.blogger.com/atom/ns#" term="web design"/><title type='text'>Weird Rules For Developers and Designers to Live By</title><content type='html'>Here are some of my odd rules for how to prevent angst in your web design business. Angst usually comes from billing and contract woes. There are the classic rules: work hard, design well, follow good practices, check out these sites, etc.. Those are all good practices. But here are some canaries in the coal mine of my experiences. Here are weird words about how I see the business of web design and the warning signs that appear by the side of the road.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;A Contract Is More Important Than Money&lt;/span&gt;&lt;br /&gt;An hour of work takes an hour for a surgeon, a ditch digger or a web designer. But some people have a weird dynamic with web designers-- treating them like something between a shaman and a vagrant-- not just a person with a technical command and creative spark. To normalize the situation draw up a contract for use. A contract is a nice piece of paper to have to spell out boundaries. It can be walked into a courtroom (see below). But more importantly, it’s a sniff test: if someone won’t sign a contract, then they don’t like playing by rules. Think about how a renegade will react when handed an invoice. Or if they pile work on you and spike the budget. If you can’t get them to sign a contract, you may find them unwilling to pay.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Never Do Business In An Apartment&lt;/span&gt;&lt;br /&gt;As a gun for hire, you have to work in different places, meet in a variety of places and meet at a variety of places. I have met at coffee shops, people’s homes, company offices, cabins in the woods and apartments. The location can be a giveaway to who you’re dealing with. Homes say two things: I’m trusted enough to have a home and/or I may have enough money to afford a home. Offices are fine-- it’s all business. Coffee shops say, “maybe I don’t have it all together, but at least I know that.” An apartment may say a few things: “I live month-to-month” or “I don’t make a lot of money”. It could be baseless, but ask: do want to work with someone who makes short term commitments and doesn’t have money to spare? If your clients are new to you, you have to go by some slim evidence that verges on clairvoyance. I&#39;ve found that deals done in apartments seem to always go south, eventually.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Don’t Walk Through The Valley of Death&lt;/span&gt;&lt;br /&gt;Any bad debt is theft by a deadbeat. If they didn’t want to pay, they could have opted to not have the work done. Despite having worked for a thief, you have to be pragmatic about the debt. If someone doesn’t want to pay, they may be able to weasel their way out of settling up and the time it could take to recover your money could be huge. What are you: a designer or a debt collector?&lt;br /&gt;There is the valley of death for financial commitments. When you do work, you need to either be able to walk away from the money if the bill becomes unrecoverable; or you need to be able to hand the bill to a lawyer for recovery. A lawyer recently told me that a demand letter and resulting correspondence would run in excess of $500. If I’m owed $400, there’s no point in siccing a lawyer on the guy. But, I can’t start missing $400 volleys of cash, either. So, the approach is to push bills out of that valley: too little to sue for; and too much to swallow. In my economy, those are bills from $200 to $1000. I can make up for $200 rogering but working harder. Likewise, I can pay for a small claims action on a $1000 debt. Those bills in between could really hurt a designer and you try to avoid them by either driving for a quick and inexpensive solution, or gunning for a larger volley of work.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Pass On The Savings And The Expenses&lt;/span&gt;&lt;br /&gt;When I started doing designs, I had to craft the site from scratch. Fourteen years later and the game has gotten much easier. A CMS used to be very hard to pull off on the cheap. Popular CMS products make it very easy to install a full interactive web site and do so easily. With Facebook, you can get a “Page” for free in little time. Want a discussion group: make one at Ning. The day and age of getting a bunch of students to throw a site together for $5000 are over.&lt;br /&gt;With Drupal, Wordpress, etc.. I can get to a “Hello World” of a web site in well under an hour. With templates and modules or plugins, a regular website can be turned out in 8 or 10 hours. The basic design should be charged fairly (eg. a low amount), then you can add on services that are harder to click and install: good copywriting; good graphic design; good navigation/architecture, custom coding; and good SEO.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Work On Your Own Million Dollar Idea For Free, Not Someone Else’s&lt;/span&gt;&lt;br /&gt;I get this every couple weeks: “I have great idea for a website-- if you design and program it, I’ll give you 50% of the business.” No money up front. Imagine asking a carpenter to build a house for free.&lt;br /&gt;This “It’s just a button” disease has evolved: recently, a designer was offered one of these projects but the designer had to give them the answer by the end of business if they were on board or not. So: you’re rushing me to take on unpaid work?&lt;br /&gt;Sometimes you will find a guy who comes to table with something valuable-- maybe they’re a marketing genius with a long track record of success. You have to assess if a partner is worth teaming with. A million dollar idea that isn’t made is worth $0. If you are bringing that site into reality, your partner has to bring $500,000 worth of value to his $1M idea or they aren’t worth your time.&lt;br /&gt;Here’s a little secret about most of the big websites out there: many of the big ones were built by techies on their own, then money people became attracted later. If a money guy is coming to you to build a site for no money up front that’s like putting the cart before the horse.&lt;br /&gt;If you’re a professional, you should always get paid. I usually counter the “we’ll split it” with “it won’t be expensive to design, so getting the money should be easy, then you can keep most of your million dollars”-- after all, who wouldn’t spend $10k to get a million if they had a sure bet? The truth is, they want you to lose $10k in your billings so that they can reap a half million It&#39;s not a good prospect for you.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/603495130133799190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/603495130133799190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/603495130133799190'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/603495130133799190'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2011/04/weird-rules-for-developers-and.html' title='Weird Rules For Developers and Designers to Live By'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-6685718439904478260</id><published>2011-03-21T22:39:00.003-07:00</published><updated>2020-09-01T23:31:18.330-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="consulting"/><category scheme="http://www.blogger.com/atom/ns#" term="web design subscription"/><title type='text'>42</title><content type='html'>I have been working in web development for about 14 years and change.  They say that the 24x7 nature of the Internet makes events on the  Internet run at three times speed. Quick math says that my 14 yrs mean  42 years of wear-and-tear.
The last eight years have been divided amongst three full-time employers  and a smattering of side gigs. The day jobs have swallowed up my  free-time. The Internet is a sickly baby worthy of kidnapping. It&#39;s  always in jeopardy or near jeopardy. The only way a website is safe from  hacking, heavy traffic, logic holes is when it&#39;s not visited. Weekdays go into the work at hand. Nights go into the emergencies; and so do the weekends. I have had people email me on Christmas Eve that they need their site looked at.
I know more about the web and my array of languages (PHP, HTML, MySQL, Ajax, JQuery, etc.) is formidable. I&#39;ve outlasted others in the field. My performance in the marathon may not be stellar, but I did all 26 miles.
I am heading back into the world of self-employed consulting. The IT and consulting landscape has changed from the 2003 era when I last had both feet in the self-employment domain, but I am cautiously optimistic. This time I had a new plan for how to pull it off. Stay tuned.

&lt;h3&gt;Update&lt;/h3&gt;
Well: ten years later, I am still in Web Design. This year, we changed things up. We started &quot;Web321&quot; (&lt;a href=&quot;https://web321.co/&quot;&gt;https://web321.co/&lt;/a&gt;). What we&#39;re offering is a Web Design Subscription Plan:

A web design subscription is service wherein the entire process of presenting and drawing traffic to your brand online, including website design and maintenance, on-page search engine optimization, social media, online advertising and more.

“web design subscription” is interchange with “Managed Web Presence ” and “managed website.”
If you’ve decided your business needs to up its game online, you may wonder: how do I get started? Traditionally, there are a lot of steps involved in boosting your brand from lightweight to legend.

&lt;ul&gt;
  &lt;li&gt;First, you need a domain registrar to sell you a domain name.&lt;/li&gt;
  &lt;li&gt;Then you hire a hosting company to provide a home for your site.&lt;/li&gt;
  &lt;li&gt;Next, you need to find a web developer to create the site, a graphic designer to make it eye catching, and a writer to create compelling marketing copy.&lt;/li&gt;
  &lt;li&gt;To keep your site software up to date and safe from malware and exploits, you’ll need a website maintenance contract.&lt;/li&gt;
  &lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/6685718439904478260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/6685718439904478260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6685718439904478260'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6685718439904478260'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2011/03/42.html' title='42'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-202662310895814001</id><published>2011-01-28T07:31:00.009-08:00</published><updated>2011-10-26T20:25:26.890-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FaceBook"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Egyptians Are Trying To Tell Us Why Facebook Should Not Replace The Internet</title><content type='html'>&lt;span style=&quot;font-style: italic;&quot;&gt;If you could post from Egypt to Facebook today, maybe you&#39;d ask, &quot;When did the Internet break?&quot;&lt;/span&gt;&lt;br /&gt;The Internet rose up from DARPAnet to be a network of computers immune to widespread outage (eg. versus a nuclear attack from the Ruskies). It&#39;s made to use available pathways until finds it a route from A to B. When things are bad, you have a lot of hops between A and B to circumvent the damage-- to the point where your routing takes forever and maybe gives up. You can block access to specific servers, or increasingly larger blocks of addresses as to try to shut down the message. If an enemy is trying to block access to something that proliferates (like a blog post that gets shared around), it has to try to plug all of these holes to accomplish that. It&#39;s difficult. If pernicious enough, it&#39;s impossible. Or, least it used to be.&lt;br /&gt;The Internet has been about getting big while satisfying everyone. That&#39;s what the long tail about: getting your message to your peeps out there no matter who those peeps are. Along the way, spreading the message was made easier through Twitter and Facebook. Facebook, with 600 million-plus users is almost the Internet itself. People use it to communicate. They blog &quot;Notes&quot; through it. They send around messages. They post pics and videos. They share links. They build communities. All of the world of functionality-- that used to be picked up by a pluralistic bedlam of the World Wide Web-- it&#39;s all done by Facebook. You can log onto Facebook and just stay tuned into that one &quot;channel.&quot; For an Internet guy, the future seems bleak: Facebook has all the marbles.&lt;br /&gt;People tuned into food security warn about the use of mono-crops. A well cloned potato used throughout Europe led to the Great Potato Famine. Farmers will have to switch up to a different banana strain before the current strain fails altogether. Mono-crops make for a single point of failure. Diversity and pluralism of plants or farm animals is required or else one widespread weakness can be exploited and affect all of the organisms. Think of the goldmine that Facebook presents to hackers: they can get three times more data by raiding Facebook than they can by raiding the IRS database.&lt;br /&gt;Our world is increasingly reliant on the Internet. Anyone who tells you that the world is now networked-- like we&#39;ve only had wires since 1993-- is naive. Since the days of the telegraph, we&#39;ve been using a world wide network to carry out business and communication. Telephones, teletypes, fax machines, EDI, etc..-- they&#39;ve all been used to transmit critical data. The switch to the Internet is the difference: it allows for more dynamic connections and more data and it was more resistant to attack because it didn&#39;t hinge on your phone line. Theoretically, the nuke-proof Internet is a better transportation medium. Few countries would consider cutting their national phone lines. Because the Internet conduits business relevant in and around Egypt, Egypt cannot start switch off routers, ISPs and the big &quot;pipe&quot; that runs the Internet into the country. It would be suicide for the government; and a smothering of their business services. Thanks to Facebook and Twitter, they don&#39;t need to kill the Internet to cut people off from the Internet. Clip two sites and some of their satelites and you have it squashed.&lt;br /&gt;Twitter has it figured out. Their API is will used by HootSuite and a host of other services to both digest, store and post data to Twitter. They have it right. Facebook is a walled garden: data gets in, but it doesn&#39;t get out. People like that, but this clustering of services under the umbrella of relatively few sites has made for a dangerous situation. By the nature of the Internet,  shutting down access is like catching smoke. The Web will find a way. A post you put &quot;out there&quot; will be cached by other sites and users. Email will queue up and re-try. Your usenet post would have proliferated. Little of that happens with Facebook. Twenty years of good, durable technical practices have been undone by a bunch hoodied hipsters. &lt;a href=&quot;http://technicalmike.blogspot.com/2010/05/mongo-want-candy.html#acidvbase&quot;&gt;I heard an engineer for NowPublic chortle about users comments&lt;/a&gt; and he mocked people who complained that their comments didn&#39;t appear or were lost. The idea that data can be lost and that&#39;s okay is both essential to allow the Internet to grow and toxic to its growth-- like a politician who has to abandon his morals to win an election. It also means that material you put out there can either be stuck inside of a walled garden (Facebook) or inside of a site/system that lives with low-grade Alzheimer&#39;s (Twitter) and some favoritism (eg. Julian Assange and WikiLeaks trending gets squelched by unaccountable Twitter). By relying on Facebook and Twitter, users are putting their hopes in two sites. By blocking one site, you can shut down access between your people and six hundred million people, their data and coordination. The accretion of traffic to a handful of sites (this includes Google, eBay and the other popular sites) undoes the brilliance of what the Internet sought to achieve: a network resistant to attacks and robust vs. attempts to cut people off from each other. We&#39;ve given up durability to get convenience. I hope we &quot;Like&quot; it that way. 
&lt;a href=&quot;http://mike.dewolfe.bc.ca/node/3055&quot;&gt;More on the problem with Facebook and Twitter replacing your Internet&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/202662310895814001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/202662310895814001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/202662310895814001'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/202662310895814001'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2011/01/egyptians-are-trying-to-tell-us-why.html' title='Egyptians Are Trying To Tell Us Why Facebook Should Not Replace The Internet'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4694082469870389519</id><published>2011-01-24T19:46:00.005-08:00</published><updated>2011-01-24T20:08:15.918-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML parsing"/><title type='text'>Here&#39;s My Conundrum</title><content type='html'>I am trying to parse the content in this page, (&lt;a href=&quot;http://www.game-boyz.com/content/channels/16&quot;&gt;http://www.game-boyz.com/content/channels/16&lt;/a&gt;) to get the list elements and which list they appear in.&lt;br /&gt;The right sided lists are straight forward-- one link per list. It&#39;s kind of straight forward. The list on the left side is trickier.&lt;br /&gt;&lt;br /&gt;Because the links are buried inside of layers of DIV tags and styling, I can&#39;t see a way to compare the blocks beside each other and know if they are part of the same list and isolate each block of code relevant to one specific link. For the bonus round, these stylings may duck and weave-- if they change a little, I need to apply the same logic at the HTML to find out the relevance of the code and where it is in the document.&lt;br /&gt;I want to be able to fish out these elements and end up with an array of items in one list (one area). How can I know how many regions I have?&lt;br /&gt;Anyone have any bright ideas? What to show off your smarts? Want a contract to do this: set up the logic to read a page, find its lists, pull those out and isolate each item in a cell in an array specific to the whole a particular list?</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4694082469870389519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4694082469870389519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4694082469870389519'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4694082469870389519'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2011/01/heres-my-conundrum.html' title='Here&#39;s My Conundrum'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-8697836160807060926</id><published>2011-01-22T21:03:00.002-08:00</published><updated>2011-01-22T21:05:51.549-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="wordpress"/><title type='text'>Categories and Tags in Wordpress</title><content type='html'>In case you weren&#39;t in our WordCamp Victoria class today, here&#39;s a run through of our presentation:&lt;br /&gt;&lt;div class=&quot;prezi-player&quot;&gt;&lt;!-- .prezi-player { width: 550px; } .prezi-player-links { text-align: center; } --&gt;&lt;object id=&quot;prezi_pnycty36hfu5&quot; classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;550&quot; height=&quot;400&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;name&quot; value=&quot;prezi_pnycty36hfu5&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;prezi_id=pnycty36hfu5&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://prezi.com/bin/preziloader.swf&quot; /&gt;&lt;embed id=&quot;prezi_pnycty36hfu5&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;550&quot; height=&quot;400&quot; src=&quot;http://prezi.com/bin/preziloader.swf&quot; flashvars=&quot;prezi_id=pnycty36hfu5&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0&quot; bgcolor=&quot;#ffffff&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; name=&quot;prezi_pnycty36hfu5&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;prezi-player-links&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a title=&quot;Overview of categories and tags in WordPress; presentation for Wordcamp Victoria, January 22, 2011.&quot; href=&quot;http://prezi.com/pnycty36hfu5/categories-vs-tags-organization-smackdown/&quot;&gt;Categories vs. Tags: Organization Smackdown!&lt;/a&gt; on &lt;a href=&quot;http://prezi.com&quot;&gt;Prezi&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/8697836160807060926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/8697836160807060926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/8697836160807060926'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/8697836160807060926'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2011/01/categories-and-tags-in-wordpress.html' title='Categories and Tags in Wordpress'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4942667975282790996</id><published>2010-12-28T07:12:00.005-08:00</published><updated>2010-12-28T07:42:07.153-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="big brother"/><category scheme="http://www.blogger.com/atom/ns#" term="net neutrality."/><title type='text'>By 2015, The Free Internet Will Be Totally Gone</title><content type='html'>The &lt;a href=&quot;http://www.bbc.co.uk/news/technology-12046874&quot;&gt;BBC has a great piece&lt;/a&gt; about how the US is going to regulate the Internet into being a sanitized corporate tool. &lt;span&gt;Ten years ago, we didn&#39;t think porno-scanners and   surrendering nail clippers would be common place at airports. I think   in five years, we&#39;ll all be comfortable with a China-style Internet   experience.&lt;/span&gt;&lt;br /&gt;The speed differential that the US telecoms want is going to make two  road to information: the fast toll road that they sanction and the slow  road that we suffer under. Google spurred this change: their bandwidth  hungry services gave the telecomms the excuse to push for an  alternative. In the end, Google may benefit the most: they have long  been looking for a way to omit low quality data and low quality users  from their factoring. If a premium Internet comes, then those users come  pre-qualified as spenders. Google / AdWords loves the spenders. There  are cheap people who surf around on library connections and open wifi.  They don&#39;t click. There is this other category of users-- consumers--  who are willing to spend. When they hit the Burma-Shave highway of  Google Ads, they are more likely to click on the ads and drive revenue to Google. Google hates the non-clickers: they make up 99.9% of the people hitting a site. That said, Google has been an Internet success story even with a 99.9% failure rate. If they can suck through 1% of the traffic, it would be grand for them. They will complain and shakes their fists, but at the end of the day, Google is just as corporate and money hungry as Microsoft, Facebook or AT&amp;amp;T. As good libertarians, Google will push for net neutrality. But in fairness to their stockholders, they will go with the current and work to capitalize on what a non-anonymous Internet full of monitoring and quality consumers will do for them.&lt;br /&gt;When this tiered and monitored Internet comes into full swing, there will be a tidy corporate Internet with video and flashy lights  and seedy underbelly. The seedy underbelly has always been there, just  one link further than you usually may go. The spiffy Internet will have  virus checking and all manner of defenses; while the dark side of the  Internet will be full of pop-ups and malware. Good news for Norton and the paid version of AVG: all those malicious sites and viruses need a virus checker.&lt;br /&gt;When someone wants something banned, all they will soon need to do is get the attention of a handful or corporations and suddenly, the information will be as easily blotted as a Chinese democracy march. If you get Google, Facebook, Twitter, Amazon and Yahoo to block something, you will be hard pressed to see that information. Look at Wikileaks: Twitter prevented the topic from trending; Wikipedia removed links to Wikileaks data; and Time Magazine shelved Assange behind Zuckerberg&#39;s hoodie. This concentration of popularity combined with a new entitlement by the telecomms, means that the information you will be getting will be carefully monitored and controlled. If someone sics lawyers onto a string of websites, those take-down notices will banish the information from the Internet. It will be like Winston Smith upping the chocolate ration from 15 grams up to 10 grams.&lt;br /&gt;You can avoid the close scrutiny of the corporate commandeered Internet; and you can fish for the real data or previous incarnations.&lt;span&gt; There are technical ways to avoid most of&lt;span class=&quot;text_exposed_hide&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;text_exposed_show&quot;&gt;   this, but the rank-and-file Internet users will not be able to deploy   those, so most people will get a sanitized and heavily monitored   experience carried out as an advertising vehicle.&lt;br /&gt;With most net users   using Facebook, the honesty-through-anonymity of the Internet is   effectively gone. In lieu of a government run Big Brother who could be   influenced through democratic processes; we have Zuckerberg. There&#39;s one difference between Big Zuckerberg and Big Brother: Big Brother made you surrender your information against your will; on Facebook, you gleefully surrender, what you&#39;re doing, who you know and where you&#39;re doing it. All of that data and those social interactions are key for dialing in who you are and what it will take to make you spend. Orwell&#39;s Big Brother is a bad choice for an antagonist. His face looked over throngs of poor and oppressed people who spent weeks using the same razor. How can the Politburo ever get rich off of those dreary masses? You need a teeming and dynamic group of children who want new toys, new feelies to watch and a string of distractions. You want those children of all ages to be good little consumers. To do that, you both want to know what they Like and you want to get that information with the littlest effort possible-- it would be best if they just volunteered that information of their own accord. It would be best, if they checked in at regular intervals with a concise status update-- ideally one of a 140 characters or less.&lt;br /&gt;If I   valued my friends less than I hated Facebook, I would ditch Facebook in a   second. As it is, you will never see me write a FB &quot;note&quot; and I am   unlikely to look at them when written by others. Their role used to be   filled by blog posts and the real Internet.&lt;/span&gt;&lt;/span&gt; Well, the real Internet of today. As it is, this being written on one of Google&#39;s most popular products: Blogger. I could post this on one of my personal sites, but I opted not to do that. I like that Google manages the bandwidth costs and server issues. I don&#39;t get a snarky phone call at 5AM saying that my blog is down. Google makes it easy for me to write and publish content. You couldn&#39;t ask for more out of a Big Brother.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4942667975282790996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4942667975282790996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4942667975282790996'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4942667975282790996'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/12/by-2015-free-internet-will-be-totally.html' title='By 2015, The Free Internet Will Be Totally Gone'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4999701131903686172</id><published>2010-11-14T23:14:00.005-08:00</published><updated>2010-11-14T23:34:35.030-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="Commission Junction"/><category scheme="http://www.blogger.com/atom/ns#" term="Groupon"/><title type='text'>Get your Groupon</title><content type='html'>Do you want to make money from &lt;a href=&quot;http://groupon.com/&quot;&gt;Groupon&lt;/a&gt;? Here&#39;s how:&lt;br /&gt;Go to &lt;a href=&quot;http://www.cj.com/&quot;&gt;Commission Junction&lt;/a&gt; and apply to an account&lt;br /&gt;Go to Groupon, create an account and &lt;a href=&quot;http://www.groupon.com/pages/api&quot;&gt;get an API key&lt;/a&gt;.&lt;br /&gt;Use the code below (feel free to alter and expand-- consider it totally GPL) on your PHP driven site.&lt;br /&gt;&lt;br /&gt;&lt;iframe src=&quot;http://mike.dewolfe.bc.ca/files/groupon.php.txt&quot; height=&quot;1200&quot; width=&quot;600&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4999701131903686172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4999701131903686172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4999701131903686172'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4999701131903686172'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/11/get-your-groupon.html' title='Get your Groupon'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4486399478814799939</id><published>2010-07-02T22:46:00.004-07:00</published><updated>2010-07-03T00:04:39.620-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Affiliate Revenue"/><category scheme="http://www.blogger.com/atom/ns#" term="Amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><title type='text'>Amazon &quot;Buy Now&quot; Kludge For Drupal</title><content type='html'>I want to get people to go straight to the product. But, the inputter can be unwilling to search out the links neccessary to hook products on the website to products on Amazon. &lt;br /&gt;Using Drupal 6 and the &lt;a href=&quot;http://drupal.org/project/amazon&quot;&gt;Amazon API module&lt;/a&gt; along with the kludge below, you can search out products, limit them by the product type and then provide that link to your readers to generate affiliate revenue. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download and activate the module, the API and the Amazon Search part of this module&lt;/li&gt;&lt;li&gt;Get an affiliate id, if you don&#39;t yet have one.&lt;/li&gt;&lt;li&gt;Go to Amazon and get an API key and API secret key.&lt;/li&gt;&lt;li&gt;Plug those into the Amazon API&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In your themeing or a block, use the following PHP code. In this example, I&#39;ve been filtering the results for only video games. Likely, you want to filter for other types of results (DVDs, books, CDs, etc.). &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$keys = $node-&gt;title.&quot; &quot;.$node-&gt;keywordsearch;&lt;br /&gt;if ($amazon_cache = cache_get(&quot;amazon_search_&quot;.$keys)) {&lt;br /&gt; $products[0][&#39;link&#39;] = $amazon_cache-&gt;data;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt; $products = array();&lt;br /&gt; $items = amazon_search_simple_search($keys);&lt;br /&gt; foreach ($items as $item) {&lt;br /&gt;   if (check_plain($item[&#39;productgroup&#39;]) == &#39;Video Games&#39;) {&lt;br /&gt;    $products[] = array(&lt;br /&gt;   &#39;title&#39; =&gt; check_plain($item[&#39;title&#39;]),&lt;br /&gt;   &#39;link&#39; =&gt; check_url($item[&#39;detailpageurl&#39;]),&lt;br /&gt;   &#39;type&#39; =&gt; check_plain($item[&#39;productgroup&#39;]),&lt;br /&gt;   &#39;user&#39; =&gt; isset($item[&#39;participants&#39;]) ? implode(&#39;, &#39;, $item[&#39;participants&#39;]) : &#39;&#39;,&lt;br /&gt;   &#39;snippet&#39; =&gt; isset($item[&#39;editorialreviews&#39;]) ? check_markup($item[&#39;editorialreviews&#39;][0][&#39;content&#39;]) : &#39;&#39;,&lt;br /&gt;    );   &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; cache_set(&quot;amazon_search_&quot;.$keys, $products[0][&#39;link&#39;]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if ($products[0][&#39;link&#39;]) {&lt;br /&gt; print &quot;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;&quot;.l(&#39;Buy Now!&#39;, $products[0][&#39;link&#39;], array(&#39;absolute&#39; =&amp;gt; TRUE)).&quot;&amp;lt;/b&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4486399478814799939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4486399478814799939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4486399478814799939'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4486399478814799939'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/07/amazon-buy-now-kludge-for-drupal.html' title='Amazon &quot;Buy Now&quot; Kludge For Drupal'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4884372119400890505</id><published>2010-07-02T20:43:00.003-07:00</published><updated>2010-07-02T20:52:15.356-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AddToAny"/><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="drupal heretic"/><title type='text'>An AddToAny Kludge For Drupal</title><content type='html'>AddtoAny is a cool widget. For Drupal 6, there is the AddToAny project (&lt;a href=&quot;http://drupal.org/project/addtoany&quot;&gt;http://drupal.org/project/addtoany&lt;/a&gt;). It&#39;s good. It&#39;s really granular in its ability to control access and features. For me, though, the mambo of the Page Title, CCK and AddToAny gave my install indigestion. I knew that I wanted all nodes to show off the AddToAny widget, permissions didn&#39;t enter into, and I knew exactly where in the theming I wanted it to appear. So, rather than add one more module to the mix, instead I put the code directly into the theming for content-field. Bad form? Maybe, but that&#39;s what makes me a Drupal heretic.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$link_name = $node-&gt;title;&lt;br /&gt;$link_url = url(&#39;node/&#39; . $node-&gt;nid, array(&#39;absolute&#39; =&gt; 1));&lt;br /&gt;&lt;br /&gt;$addany = &#39;&amp;lt;!-- AddToAny BEGIN --&amp;gt;&amp;lt;a class=&quot;a2a_dd&quot; href=&quot;http://www.addtoany.com/share_save?&#39;;&lt;br /&gt;$addany .= &quot;linkurl=&quot;.urlencode($link_url);&lt;br /&gt;$addany .= &quot;&amp;amp;linkname=&quot;.urlencode($link_name);&lt;br /&gt;$addany .= &#39;&quot;&amp;gt;&amp;lt;img src=&quot;http://static.addtoany.com/buttons/share_save_171_16.png&quot; width=&quot;171&quot; height=&quot;16&quot; border=&quot;0&quot; alt=&quot;Share/Bookmark&quot; /&amp;gt;&amp;lt;/a&amp;gt;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;var a2a_config = a2a_config || {};&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;a2a_config.linkname = &quot;&#39;.$link_name.&#39;&quot;;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;a2a_config.linkurl = &quot;&#39;.$link_url.&#39;&quot;;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;a2a_config.onclick = 1;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;a2a_config.show_title = 1;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;a2a_config.num_services = 20;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;&amp;lt;/script&gt;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://static.addtoany.com/menu/page.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&#39;.&quot;\n&quot;;&lt;br /&gt;$addany .= &#39;&amp;lt;!-- AddToAny END --&amp;gt;&#39;;&lt;br /&gt;&lt;br /&gt;print $addany;&lt;br /&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4884372119400890505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4884372119400890505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4884372119400890505'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4884372119400890505'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/07/addtoany-kludge-for-drupal.html' title='An AddToAny Kludge For Drupal'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-3181833631843258472</id><published>2010-06-04T07:39:00.006-07:00</published><updated>2010-06-04T09:07:34.233-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="Page rank"/><category scheme="http://www.blogger.com/atom/ns#" term="traffic"/><title type='text'>Strategic Shifting and What I Learned from WalMart</title><content type='html'>I&#39;ve had a web page up in one form or another since late 1995. Back then, it ushered my return to tech by dipping my toe into web design and soon thereafter, web development (Perl, ASP, then I settled into lots of PHP).&lt;br /&gt;I&#39;m a dabbler-- I sculpt, I cook, I take photos, I have lots of opinions, I write and sometimes I like to be a jack-ass. My website had to reflect that. Even my &lt;a href=&quot;http://web.archive.org/web/19991008190307/http://www.islandnet.com/%7Edewolfe/mike/index.html&quot;&gt;early incarnations&lt;/a&gt; showed off this segmentation. It started to seemed to confusing to me and I thought it was confusing to my &quot;audience&quot; (all three readers must be very confused). So, I segmented stuff-- dieting got a blog; tech got a blog; movie reviews got a blog-- you can see where this is going. Then, no one would trip over my weight loss tips when looking for how I built my Borg masks. That&#39;s where things went: from a bazaar of dabblings to a set of little shops.&lt;br /&gt;As a kid, I loved the department stores like Woodwards. Get your macaroni salad, then walk to the other part of the store and buy camping gear or a suit or some Micronauts. Canadian retailers, like Eatons, shot themselves in the foot by taking product lines out of the mix. People liked these places for their shoes or shirts, but they were considered big specialty shops. WalMart arrived on the scene with almost everything you&#39;d need. Mega WalMarts, like the one due to open in Victoria in a few weeks, have &lt;b&gt;everything&lt;/b&gt; you need. Just walk in the door and you&#39;ll find what you need. This approach is devastating to the little shop mentality hence why WalMart is being blamed for killing the Main Streets across America. The most noteworthy thing: &lt;b&gt;it works&lt;/b&gt;.&lt;br /&gt;When I went into the little shop approach, my traffic started to drop. Where I used to make a happy pittance with AdSense, now I see a cheque less than once a year. It&#39;s almost laughably sad. While the WalMarts of the Internet have something for everyone under one domain, I have all of these fringe sites that are left on their own.&lt;br /&gt;The reason for this is simple: page rank. Page rank talks about your site and its traffic, thereby its relevance on the Internet. I (me, myself and I) generate so many web pages a day. They get so many hits. I think that is a small and predictable number of hits. Google doesn&#39;t purport to see the me behind the web pages, it just sees these separated sites. While &lt;b&gt;I&lt;/b&gt; am 500 hits a day, Google sees that 10 sites are getting 2-100 hits a day-- all of which is even more miserable than 500 hits/day. Why drive traffic to me? My sites appear to be bumpy cul-de-sacs given how little traffic they warrant. Google, traffic and page rank are parts of a vicious cycle. If you don&#39;t have traffic, Google does not bestow page ranks. If you don&#39;t have page rank, you don&#39;t get traffic. Google doesn&#39;t look at design or navigation. It looks at domains. The more I pile into &lt;a href=&quot;http://mike.dewolfe.bc.ca/&quot;&gt;http://mike.dewolfe.bc.ca/&lt;/a&gt;&lt;br /&gt;I have begun a process of steering my traffic to accrete on a short list of selected sites. My diet blog was about my fatness and my work to remedy it. So, there&#39;s no reason to have it split out and apart from my main site, &lt;a href=&quot;http://mike.dewolfe.bc.ca/health/dieting&quot;&gt;so I moved it in&lt;/a&gt;, while leaving the old blog to linger and wither as new content goes into my main site. The same is true with my Viridian blog. It&#39;s moving into my main site as well. I will look at my other ventures and work to roll stuff together and collect traffic and build page rank.&lt;br /&gt;&lt;br /&gt;What any of you converted from the Main Street concept to the WalMart concept? How did it all go?</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/3181833631843258472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/3181833631843258472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3181833631843258472'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3181833631843258472'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/06/strategic-shifting-and-what-i-learned.html' title='Strategic Shifting and What I Learned from WalMart'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-3350378413310766063</id><published>2010-05-28T20:30:00.003-07:00</published><updated>2023-10-03T13:44:02.945-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Canada"/><category scheme="http://www.blogger.com/atom/ns#" term="iPad"/><title type='text'>iCame iSaw iPad</title><content type='html'>&lt;p&gt;iPads appeared in Canada today. Last month, I was at Drupalcon in San Francisco and all the cool kids had iPads. They were enviable for more than the cool factor: they have VERY long battery lives (upwards of 10 hrs.). The display is crisp. Landscape or portrait is up to you depending on which way you hold it. With laptops, you have to be nomadic: travel and squat. With the iPad, you can cradle it like a steno pad. If they had a camera so that you could see where you were going, you could nestle the iPad between you and reality as you walked down the street.&lt;br /&gt;I was next door to a Future Shop today. I decided to pop in and see if any were being demonstrated. They had models ranging from the 16GB for $549 to the 64GB for close to $800. The basic model had solely wifi, the top end could run with 3G or wifi. The downside of the 3G option is that it needs to be coupled with a data plan from a cellphone company. Given that Canada&#39;s data plans are notoriously lousy, I think the upper end iPads are a gateway drug.&lt;br /&gt;I tried out a few sites. The iPad did very well with Youtube and Vimeo videos. Because of the Apple fear of the right-click, I couldn&#39;t find a way to right click those pages and see if they were running under HTML5 (I presume. Am I right?) or that there was a truce between Apple and Adobe.&lt;br /&gt;With such a rush on the iPads, Future Shop was out of stock on almost all of the units except for some of the high end ones. I have some ideas where you can get yours. Even though Amazon is keen to push their Kindles, they do have at least one &lt;a href=&quot;http://www.amazon.ca/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.ca%2Fgp%2Foffer-listing%2FB003LJVXFS%3Fie%3DUTF8%26ref_%3Dsr%5F1%5F1%5Folp%26s%3Dgateway%26qid%3D1275105885%26sr%3D8-1%26condition%3Dnew&amp;amp;tag=mikedewolwrit-20&amp;amp;linkCode=ur2&amp;amp;camp=15121&amp;amp;creative=390961&quot;&gt;Apple iPad&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;https://www.assoc-amazon.ca/e/ir?t=mikedewolwrit-20&amp;amp;l=ur2&amp;amp;o=15&quot; style=&quot;border: medium; margin: 0px;&quot; width=&quot;1&quot; /&gt; available. As soon as I find more ways to get your iPad despite the short supply, I will post that information here.&lt;/p&gt;&lt;p&gt;At least Victoria has a few places to &lt;a href=&quot;https://web321.co/blackapplecellular.com&quot;&gt;repair tablets and cellphones&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/3350378413310766063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/3350378413310766063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3350378413310766063'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3350378413310766063'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/05/icame-isaw-ipad.html' title='iCame iSaw iPad'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-8606342491086219908</id><published>2010-05-20T08:09:00.001-07:00</published><updated>2010-05-20T13:38:12.704-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Comcast"/><category scheme="http://www.blogger.com/atom/ns#" term="griefers"/><category scheme="http://www.blogger.com/atom/ns#" term="trolls"/><title type='text'>Troll Bane 2.0</title><content type='html'>Are you bothered by a chimp who&#39;s occupation is &quot;Destroying Blogs&quot;?  Here&#39;s some troll bane aka chimp bane. We may be up against the same griefer. Regardless, here&#39;s some ways you can address trolls who are provocative, but are solely abusive.&lt;br /&gt;&lt;br /&gt;Step 1: &lt;b&gt;Stop Using Blogger&lt;/b&gt; - It is feature poor. Do you like the irony of reading that at technicalmike.&lt;span style=&quot;font-weight: bold;&quot;&gt;blogspot.com&lt;/span&gt; ?&lt;br /&gt;Step 2: &lt;b&gt;Identify your threat.&lt;/b&gt; Get their IP address and tie it their location. This one was an employee at a company spilling bile across the web. When you go to their web address, &lt;a href=&quot;http://173-15-205-181-busname-richmond.hfc.comcastbusiness.net/&quot; target=&quot;_blank&quot;&gt;173-15-205-181-BusName-&lt;wbr&gt;Richmond.hfc.comcastbusiness.&lt;wbr&gt;net&lt;/a&gt;, you get a Sonicwall screen. Sonicwall is a fairly pricey anti-spam device. The people at this IP address either stole it or bought it for their business (I&#39;m going with Option B).&lt;br /&gt;&lt;br /&gt;When you get the GeoIP for this address, you get a business on or near, Westhover Rd., Spottswood Rd. Shirley Lane, or Berkley Lane all in Richmond Virginia.&lt;br /&gt;So: how many businesses are in this area? &lt;a href=&quot;http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=37.5409011841,+-77.4801025391&amp;amp;sll=38.039439,-78.484955&amp;amp;sspn=0.488876,1.234589&amp;amp;ie=UTF8&amp;amp;ll=37.541498,-77.477303&amp;amp;spn=0.00769,0.01929&amp;amp;t=h&amp;amp;z=16&amp;amp;layer=c&amp;amp;cbll=37.541582,-77.477263&amp;amp;panoid=JUhZkSj9kliugaHHbcY3yg&amp;amp;cbp=12,303.17,,0,5&quot; target=&quot;_blank&quot;&gt;http://maps.google.ca/maps?f=&lt;wbr&gt;q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=&lt;wbr&gt;37.5409011841,+-77.4801025391&amp;amp;&lt;wbr&gt;sll=38.039439,-78.484955&amp;amp;sspn=&lt;wbr&gt;0.488876,1.234589&amp;amp;ie=UTF8&amp;amp;ll=&lt;wbr&gt;37.541498,-77.477303&amp;amp;spn=0.&lt;wbr&gt;00769,0.01929&amp;amp;t=h&amp;amp;z=16&amp;amp;layer=&lt;wbr&gt;c&amp;amp;cbll=37.541582,-77.477263&amp;amp;&lt;wbr&gt;panoid=JUhZkSj9kliugaHHbcY3yg&amp;amp;&lt;wbr&gt;cbp=12,303.17,,0,5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;IP Address is 173.15.205.181&lt;br /&gt;Location : Richmond, VA United States&lt;br /&gt;Lat/Long : 37.5409011841, -77.4801025391&lt;br /&gt;Host Info: &lt;a href=&quot;http://173-15-205-181-busname-richmond.hfc.comcastbusiness.net/&quot; target=&quot;_blank&quot;&gt;173-15-205-181-BusName-&lt;wbr&gt;Richmond.hfc.comcastbusiness.&lt;wbr&gt;net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 3: &lt;b&gt;Complain&lt;/b&gt;&lt;br /&gt;Send something to complain to the police in the area (eg. &lt;a href=&quot;http://eservices.ci.richmond.va.us/applications/RichmondGovContactUs/ContactUs.aspx?ID=26&quot; target=&quot;_blank&quot;&gt;http://eservices.ci.richmond.&lt;wbr&gt;va.us/applications/&lt;wbr&gt;RichmondGovContactUs/&lt;wbr&gt;ContactUs.aspx?ID=26&lt;/a&gt; ).&lt;br /&gt;&lt;br /&gt;I put this phrase in:&lt;br /&gt;&quot;I do not know if there are statutes in the Richmond jurisdiction relevant to his online behavior. From what we can gather, this individual celebrates that they have been carrying on this practice for over a year &lt;a href=&quot;http://www.blogger.com/profile/05463578513662596035&quot; target=&quot;_blank&quot;&gt;http://www.blogger.com/&lt;wbr&gt;profile/05463578513662596035&lt;/a&gt;&quot;&lt;br /&gt;&lt;br /&gt;Then I lodged a complaint with Comcast, the ISP facilitating this communication.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Comcast numbers &lt;/span&gt;&lt;br /&gt;1-800-527-2222 (Pittsburgh-- the right locale to contact to lodge your complaint against an East Coast troll)&lt;br /&gt;or&lt;br /&gt;703-823-3000</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/8606342491086219908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/8606342491086219908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/8606342491086219908'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/8606342491086219908'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/05/troll-bane-20.html' title='Troll Bane 2.0'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-22457258538609338</id><published>2010-05-18T07:37:00.003-07:00</published><updated>2010-05-18T09:05:09.022-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="marketing"/><category scheme="http://www.blogger.com/atom/ns#" term="SEO"/><title type='text'>How the Orcs Learned to Trounce the Humans</title><content type='html'>I used to play alot of Space Marines-- the epic scale one where thumb-sized tanks would unleash fury vs. alien hordes. I learned then that you need to concentrate fire power. If you injure 50 infantry, you end up with 50 po&#39;ed soldiers who are limping but still capable of shooting back. If you use the wolf pack concept-- lots of concentrated fire power on a small number of targets you can nail the target.&lt;br /&gt;The same is true with marketing. I have alot of blogs and subject specialities: dieting, cooking (funny duet there), technical stuff, angry man rants, short cuts, property histories and on and on. Much of this stuff didn&#39;t fit together, so I split it out. The problem is that I was making a lot of wounded soldiers when I should have been wolfpacking down the traffic. My traffic and ad revenue used to be respectable-- much less than I wanted, but more than nothing. Nowadays, there&#39;s nothing happening: my traffic and revenue is flat.&lt;br /&gt;I divided content into specialty blogs: the &quot;Way Too Fat&quot; blog because I was, well, way too fat and working to remedy that. I did a Viridian blog because I&#39;m a Viridian. I had all of these specialty areas. None of them got traffic.&lt;br /&gt;I tried to reproduce content to see if that could spark traffic pooling. &lt;span style=&quot;font-weight: bold;&quot;&gt;Big Mistake&lt;/span&gt;. I knew it was a mistake, but I was emboldened by a thing at work, where we had pages of lists cut this way or that. Google was crawling these lists like you wouldn&#39;t believe and causing some big traffic climbing. Somehow I discovered velcro when I was researching for teflon.&lt;br /&gt;So, now, I am going to do a big about face. Until future notice, www.thosedewolfes.com is down for the count, pending a redesign. I torched it before it could any more damage.&lt;br /&gt;If something has a corporate leaning, it will eventually go into www.thosedewolfes.com. &quot;Corporate&quot; carries two meaning here. If it is for my company, &quot;Those DeWolfes&quot;, then the content will go there. If it is something regarding my wife and I (the collective entity that is at the core of Those DeWolfes), then it will go there too.&lt;br /&gt;If something is supposed to have a lot of contribution from others, then it will remain as its own animal. In one example, cooking, I&#39;m going to have it both ways: my site will feature cooking/recipes and it will contribute to a multi-user site, &lt;a href=&quot;http://www.clearyourplate.com/&quot;&gt;www.clearyourplate.com&lt;/a&gt;.&lt;br /&gt;So my commandments / decision tree for where something goes:&lt;br /&gt;- If it&#39;s timely: a blog&lt;br /&gt;- If it&#39;s mine and semi-timely: my personal site, &lt;a href=&quot;http://mike.dewolfe.bc.ca/&quot;&gt;mike.dewolfe.bc.ca&lt;/a&gt;.&lt;br /&gt;- If it&#39;s part of the business stuff: &lt;a href=&quot;http://www.thosedewolfes.com/&quot;&gt;www.thosedewolfes.com&lt;/a&gt;.&lt;br /&gt;- If it&#39;s collective, like &lt;a href=&quot;http://www.jumpingmoose.ca/&quot;&gt;Jumping Moose&lt;/a&gt;, &lt;a href=&quot;http://medianook.blogspot.com/&quot;&gt;MediaNook&lt;/a&gt; or Clear Your Plate, then it will stay as is.&lt;br /&gt;- If it needs coding (like some dynamic element), then it will not go on a blog.&lt;br /&gt;- If it&#39;s experimental and nifty, likely it will go onto &lt;a href=&quot;http://www.prefabsite.net/&quot;&gt;Prefab Site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The goal of this strategic shift: concentrate traffic under a few domains; make dynamic content possible where desireable; make fewer sites more popular (aka don&#39;t date 2 fives, go for 1 ten).&lt;br /&gt;&lt;br /&gt;Have you had a lot of blog and gone through the die off to aggregate traffic? Have you gone the other way with lots of feeder sites and success from each?</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/22457258538609338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/22457258538609338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/22457258538609338'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/22457258538609338'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/05/how-orcs-learned-to-trounce-humans.html' title='How the Orcs Learned to Trounce the Humans'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4194573512211477740</id><published>2010-05-17T07:09:00.008-07:00</published><updated>2011-01-28T08:00:42.473-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Mongo Want Candy!</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTKAmQMn3omjnXwnyXBKzIHhn0rVQc4tsWG4pWvPDOXdfqGo54BdKSt6NSF3Qm93ace7HFM4gjnRJtxh3jjDT1_SsOLLguLWNuuzBby3Jw1STg1W8xFNOal9h_OYnAkjQCtBSX/s1600/mongo.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 230px; height: 316px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTKAmQMn3omjnXwnyXBKzIHhn0rVQc4tsWG4pWvPDOXdfqGo54BdKSt6NSF3Qm93ace7HFM4gjnRJtxh3jjDT1_SsOLLguLWNuuzBby3Jw1STg1W8xFNOal9h_OYnAkjQCtBSX/s400/mongo.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5472286103167724098&quot; /&gt;&lt;/a&gt;I have been interested by the concept of NoSQL. Having lived and breathed relational databases for the last 12 years, an alternative could be welcome. Then Mongo rides into town.  The MongoDB is a relatively new database system from the NoSQL movement. The NoSQL concept reemerged after Eric Evans and Johan Oskarsson did work on Last.fm. They wanted to organize an event to discuss open source distributed databases.&lt;br /&gt;&lt;a name=&quot;acid&quot;&gt;&lt;/a&gt;&lt;a name=&quot;base&quot;&gt;&lt;/a&gt;&lt;br /&gt;NoSQL architectures provides weak consistency guarantees such as eventual consistency. That&#39;s the &quot;E&quot; in the &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=13140861#BASE&quot;&gt;BASE&lt;/a&gt; concept, as opposed to the &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=13140861#ACID&quot;&gt;ACID&lt;/a&gt; concept that seemed to be the way to go.&lt;br /&gt;NoSQL systems find it easier to deploy distributed architecture, with the data being held in a redundant manner on several servers. That allows the data services to be scaled up easily by adding more servers.&lt;br /&gt;&lt;br /&gt;Here&#39;s how I got Mongo to come to town:&lt;br /&gt;I went to the &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;Mongo site&lt;/a&gt;.&lt;br /&gt;I went to the &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Downloads&quot;&gt;repository and downloaded&lt;/a&gt; the MongoDB engine that I needed. The suggestion is that you put MongoDB into the root and make C:\data\db to hold the data. &lt;br /&gt;I&#39;m using XAMPP on my Windows machine. I got the PHP version, (5.28-- so, 5.2x what the flavour of Mongo I wanted). &lt;br /&gt;I got the drivers I needed from the &lt;a href=&quot;http://www.mongodb.org/display/DOCS/PHP+Language+Center&quot;&gt;PHP drivers&lt;/a&gt; page, choosing the 5.2x thread-safe driver. I downloaded it, installed it so that the appropriate dll would be in my php/ext directory. &lt;br /&gt;In Apache, I modified the php.ini. I added two lines: &lt;pre&gt;extension=php_mongo.dll&lt;br /&gt;extension=mongo&lt;/pre&gt; (both lines seem to be neccessary). &lt;br /&gt;I restarted Apache. &lt;br /&gt;&lt;b&gt;Most&lt;/b&gt; important: I started Mongo. It doesn&#39;t hang in the BG, or fire up in response to the driver calls. I had to go into the MongoDB/bin/ and execute mongo.exe to get it to be resident. &lt;br /&gt;Voila: I had Mongo available for tinkering. Next, I did lots of trolling through the slim documentation on &lt;a href=&quot;http://www.php5.org/ref.mongo.php&quot;&gt;Mongo Reference on PHP.net&lt;/a&gt;. Fairly quickly, I was able to store and find data. Some things (see below), eludded me.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Some of the upsides:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Schemaless. This is HUGE. When you hold two records side-by-side, one is an array with two cells, the other can be an object with 100 properties-- both in the same table. This doesn&#39;t make data management a cakewalk. If you put inconsistent data into a database, you have to find a way to fish it out later. Every so often, I&#39;ve been tasked with holding complex data in a database. MS Access has sub-tables and I groan in harmony with the creaks from their engine when a sub-table is deployed. &lt;/li&gt;&lt;li&gt;Fast. Benchmarks differ, but simply put: MongoDB is fast. I think it&#39;s easy to figure out why: most of the chaff from MySQL is not a factor in Mongo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Some of the downsides:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Baby&#39;s Got Back. My database has 40 records, none with more than 400 characters of information. The database&#39;s file size is 84MB. For less than 16,000 characters of data, that seems like a LOT of overhead. Were I able to find an ISP with small account sizes, it would be hard to get this much space for this little data. &lt;/li&gt;&lt;li&gt;Libraries in loose clay. I tried to make use of the PHP library of functions. The expanded functions were not recognized in PHP 5.28 even after adding the library and extension. &lt;/li&gt;&lt;li&gt;I was able to insert and find records. When I tried to use the $in function-- possible and functional for the MongoDB client (console side)-- it worked fine. When I tried the same from PHP, no dice. &lt;/li&gt;&lt;li&gt;Like is there no like? LIKE is a really sloppy call in MySQL. Every time I use it I wince a little (net effect: I wince a little alot). There is no apparent equivalent in MongoDB. &lt;font color=&quot;red&quot;&gt;Correction: There is a regular expression statement that&#39;s easy use &lt;pre&gt;db.customers.find( { name : /acme.*corp/i } );&lt;/pre&gt; It works well and it&#39;s very snappy. No longer do you need to figure out how to do LIKE statments as well as regular expressions. Now, the better question I need to figure out: how to make a phrase like the above work into a PHP statement.&lt;/font&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Some of the changes&lt;/span&gt; (I think neither good nor bad when you do the calculus):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No JOINS. MySQL performance falls apart when you do joins. Joins are the Achilles-heel of Drupal that relies on them so heavily. It&#39;s understandable why, given how much data has to be joined and compared. Yet DBAs the world over always atomized and isolate data, then combine the data for the end result. There are two ways to banish joins:&lt;br /&gt;a) use MongoDB that doesn&#39;t have the capactity to do joins.&lt;br /&gt;b) use MySQL and repeat data in different tables to commit to a practice of fewer joins. When you absolutely have to break this rule, you can do so at the cost of a performance hit.&lt;/li&gt;&lt;li&gt;No configs. I was intrigued by the concept after having wades through all of the tweaks you can visit upon MyISAM and InnoDB settings. I think MongoDB&#39;s &quot;no config tweaking&quot; will go by the wayside within a year, when somebody out there cranks the performance by messing with some environment variables, maybe even a variable outside of MongoDB itself (like putting the MongoDB on its own disk).&lt;/li&gt;&lt;li&gt;Easily create databases and tables (aka collections). This is one innovation that really balances out as a net zero. By calling a database or collection, you create it if it doesn&#39;t exist. That is so very easy. But, how many times do coders trip over typos? If you took out typos, you could remove maybe 20-40% of your debugging time. MongoDB doesn&#39;t bleat when you create a database or collection with the wrong name. Worse than that, it allocates megabytes of disk space. Your data could accidentally end up in a sink hole. With MySQL, the errors would bleat out and give you something to repair. This could mean that development may have choppy waters, but the application in production may have an easier go of it because of the MongoDB performance benefits.&lt;br /&gt;Here&#39;s what I think the recipe for disaster could be:&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Ingredients&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 coder who names a collection in a client side variable-- or makes it dynamic: available for the user input to generate.&lt;/li&gt;&lt;li&gt;1 hacker who finds this numpty practice&lt;/li&gt;&lt;li&gt;1,000,000 exploits done automatically.&lt;/li&gt;&lt;/ul&gt;Bake for a few short minutes when nobody is watching.&lt;br /&gt;Yields one web server out of disk space.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Questions:&lt;/span&gt;&lt;br /&gt;How do I do an $in in PHP ? The suggested attempt failed.&lt;br /&gt;Can I do a LIKE equivalent in MongoDB?&lt;br /&gt;Dreamhost says it hosts MongoDB. Are there any other places that allow MongoDBs?&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;a name=&quot;ACID&quot;&gt;&lt;/a&gt;ACID - Atomicity, Consistency, Isolation, Durability. A set of properties that guarantee database transactions are processed reliably. The concept of ACID is to evaluate databases and application architecture. In the context of databases, a single logical operation on the data is called a transaction. For example, a transfer of funds from one bank account to another, even though that might involve multiple changes (such as debiting one account and crediting another), is a single transaction. &lt;a href=&quot;#acid&quot;&gt;Back to top&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;ACID&quot;&gt;&lt;/a&gt;BASE - Basically Available, Soft state, Eventually consistent.&lt;br /&gt;BASE, as the acronym denotes, is opposed to ACID. ACID is pessimistic and forces consistency at the end of every operation. BASE is optimistic and accepts that the database consistency will be in flux. Easy to achieve with BASE, impossible to consider with ACID.&lt;br /&gt;BASE can accomplish availability despite partial failures, hence the &quot;Basically Available.&quot; Soft state means it&#39;s in flux and is non-deterministic. Eventually consistent means that if one data source doesn&#39;t report what you&#39;d expect, eventually the data would propagate and become consistent throughout the incarnations of data no matter where it&#39;s replicated. &lt;br /&gt;&lt;a href=&quot;#base&quot;&gt;Back to top&lt;/a&gt;&lt;br /&gt;&lt;a name=&quot;acidvbase&quot;&gt;&lt;/a&gt;&lt;br /&gt;ACID vs. BASE - I think that ACID may be impractical to guarantee. And, it may be unimportant at the end of the day. Following the Buddhist concept that &quot;all things are impermanent&quot;, you can have inconsistent data today because in 100 years, no one will care about the data; or it will all come out in the wash. &lt;br /&gt;I saw this one annoying talk on the topic. The speaker said, &quot;so your comment goes missing... [exasperated pause] Who cares? [room erupts in laughter and applause].&quot; He didn&#39;t care because the comments would appear eventually; or who cares: it was just one comment and could have been lost through network connectivity. I thought it was really amusing that the author of some of the most inane comments I have ever read would be ambivalent about comments. When you look at the river of news, you can miss something. If it&#39;s important, it will come around again. That arrogance towards data is at the core of BASE, like a technical concept founded on sloppiness. I would prefer to cherry-pick between ACID and BASE. ACID when you&#39;re handling real data (transactions, comments, content). BASE when you&#39;re dipping into the river (news reproductions, live video, etc.). &lt;a href=&quot;#base&quot;&gt;Back to top&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4194573512211477740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4194573512211477740' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4194573512211477740'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4194573512211477740'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/05/mongo-want-candy.html' title='Mongo Want Candy!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTKAmQMn3omjnXwnyXBKzIHhn0rVQc4tsWG4pWvPDOXdfqGo54BdKSt6NSF3Qm93ace7HFM4gjnRJtxh3jjDT1_SsOLLguLWNuuzBby3Jw1STg1W8xFNOal9h_OYnAkjQCtBSX/s72-c/mongo.jpg" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-7696415843309887321</id><published>2010-04-28T10:18:00.001-07:00</published><updated>2010-04-28T10:21:45.336-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comments"/><category scheme="http://www.blogger.com/atom/ns#" term="Salmon"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Salmon Link Dump</title><content type='html'>Notes and info on the Salmon Protocol to support commenting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.salmon-protocol.org/faq&quot;&gt;http://www.salmon-protocol.org/faq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/salmon-protocol/&quot;&gt;http://code.google.com/p/salmon-protocol/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://posterous.wiredvanity.com/salmon-googles-open-source-social-web-aggrega&quot;&gt;http://posterous.wiredvanity.com/salmon-googles-open-source-social-web-aggrega&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.louisgray.com/2009/10/proposed-salmon-protocol-aims-to-unify.html&quot;&gt;http://blog.louisgray.com/2009/10/proposed-salmon-protocol-aims-to-unify.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/activity-streams/browse_thread/thread/4a1e3767235c1d47?pli=1&quot;&gt;http://groups.google.com/group/activity-streams/browse_thread/thread/4a1e3767235c1d47?pli=1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/7696415843309887321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/7696415843309887321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/7696415843309887321'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/7696415843309887321'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/04/salmon-link-dump.html' title='Salmon Link Dump'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-5523083067781585372</id><published>2010-04-24T16:35:00.009-07:00</published><updated>2010-04-24T22:07:04.179-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="drupal heretic"/><category scheme="http://www.blogger.com/atom/ns#" term="drupalcon"/><title type='text'>Sitting In Drupalcon&#39;s Cheap Seats</title><content type='html'>&lt;style&gt;h3 { margin-bottom: 0px; }&lt;/style&gt;A colleague does a lot of Drupal module development. He&#39;s a cool and knowledgeable guy and in the Drupal Association. He spoke of the legend of the Drupalcon. In the last six years, Drupalcon attendance number have doubled with each session. What started with a bunch of coders in a pub basement has now grown to 3000+ people. Massive rooms capable of holding 800 people were too small to contain the crowds. Birds of a Feather-- ad hoc sessions of people who were like minded-- were packed with 30-60 people apiece. The scale of this event was massive. It speaks to the growth of the Drupal content management system.&lt;br /&gt;Has it grown to be too big?&lt;br /&gt;&lt;h3&gt;The State Of Drupal&lt;/h3&gt;&lt;a href=&quot;http://sf2010.drupal.org/conference/sessions/state-drupal&quot;&gt;According to Dries Buytaert&lt;/a&gt;, the originator of Drupal, Drupal powers 1% of the websites out there. Given the market fragmentation and how many people roll their own designs, having one CMS power 1% of them is massive.  That said, Wordpress is three times more popular than Drupal. They are different products: Wordpress is for blogging; Drupal is for anything.&lt;br /&gt;&lt;h3&gt;Weakness Is Not Strength&lt;/h3&gt;Drupal has some weaknesses. It&#39;s comparatively solid for security; it&#39;s good for internationalization but it&#39;s weak for scalability. There was a great &lt;a href=&quot;http://2bits.com/sites/2bits.com/files/drupal-single-server-2.8-million-page-views-a-day.pdf&quot;&gt;talk&lt;/a&gt;(&lt;a href=&quot;http://sf2010.drupal.org/conference/sessions/24-million-page-views-day-60-m-month-one-server&quot;&gt;2&lt;/a&gt;) from Khalid Baheyeldin about how to extend the CMS for a massive amount of processing. The basics: use fewer modules, build your server specific for Drupal and shun some crawlers. If I could do this at my day job, I&#39;d be able to take up golf and not spend day after day in terror as 158 modules pop like popcorn vs. 100,000 page views from Google each day. Many of the talks were about getting Drupal to behave better in a high traffic environment. I think that says it all: Drupal has performance problems otherwise you wouldn&#39;t be trying to fix it. You can win big from its flexibility, but that flexibility comes at a cost.&lt;br /&gt;I think some concepts need to considered:&lt;br /&gt;- One ideal module made to accomplish your site&#39;s work. Start with core and expand by almost nothing at all. Go back to coding and sink the time into the development work that happens with most sites.&lt;br /&gt;- Not everything needs a module. Google Analytics? Google Adsense? Google and other sites make their tools so portable that they are wholly driven by the client side. Why are there so many modules in Drupal that do what should happen at the bottom of your theme? I will populate a block with a Google AdSense block. Why do it some other way?&lt;br /&gt;- Hard wiring is not a sin (nor is hacking core, but I&#39;ll go to Drupal Hell if I suggest that). You get full reign of your themeing. Why would a fixture that is on every page in your theme go into something programmatically derived? On one site, I&#39;ve done, the blocks start AFTER a number of divs where the elements are hardwired into place. This cuts down on the amount of function calls and database work.&lt;br /&gt;- More code is not better. Drupal 7 is promised to come with more code. One Twitterer fired up Drupal 7 to see it face plant. Bug reports say that Drupal 7 busts a seam when it tries to do an update. None of this is surprising: Drupal 7 is still under development.&lt;br /&gt;- Put your busy-work into the client side as much as possible. Lean on Ajax, good design and smart usage of CSS. For example, Google will de-list you if you present Google friendly code that is different from what you produce for non-Google users. But you can present the same code to everyone and rely on the idea that, for now, Google will not be able to entirely parse the code in the same way a browser does-- then give those capable of using the code something better than those that cannot (dynamic loading, dynamically sourced forms, etc.).&lt;br /&gt;- Be agnostic. Drupal has some set aside directories (like modules, includes and themes). That leaves many options for sub directory names. You can install Wordpress inside of the sub-directory of a Drupal site. Don&#39;t be afraid to use multiple technologies. You wouldn&#39;t move your apartment using your Honda Civic, when the Dodge pick-up is available. Don&#39;t mistake that some applications can satisfy niche roles better than Drupal can.&lt;br /&gt;&lt;h3&gt;The Forest for the Trees Problem&lt;/h3&gt;I went to the PHP Conference in Vancouver in 2007; and the OpenWeb Conference in 2009. Their conference sizes were large but okay. I was able to network with a number of people and have some good conversations. Drupalcon&#39;s 3000 attendees meant that I met many people once and only once. There were so many Birds of a Feather sessions that I couldn&#39;t zero in a breadth of topics, but strafe what I could. The saving grace: many of the Drupalcon events are &lt;a href=&quot;http://www.archive.org/search.php?query=drupalcon%20AND%20mediatype%3Amovies&amp;amp;sort=-publicdate&quot;&gt;available online&lt;/a&gt;. I could have watched these from home. With the use of the &lt;a href=&quot;http://drupal.org/irc&quot;&gt;IRC channels&lt;/a&gt;, I could have communicated with the community. With this number of attendees, I needed some specialization. I sat with module contributors; librarians and entrepreneurs. I was hard pressed to find someone in my boat.&lt;br /&gt;There are many categories of people at Drupal:&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Industry&lt;/span&gt;: Public Sector, Private Sector, Start-ups and Hobbyists&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Specialty&lt;/span&gt;: Core coding, Coding, Module Development, Theming, Architecture, Entrepeneurialism.&lt;br /&gt;Ideally, Drupal needs to split along something like these 24 segments (I&#39;m not going to presume I have the recipe with these categories). I could get juxtaposition from a module developer bent on satisfying the needs of libraries; but I really needed to talk to someone who is getting a lot out of their install. If dating technology could have been applied to the attendee dynamic, then people could have met people who were one step up the skills ladder.&lt;br /&gt;I wish there were more days-- there were-- the unconference before; and the core developer summit afterwards, but they felt as though they were not open to everyone. Worse still: I had the option of training on the Sunday-- or the Unconference.&lt;br /&gt;I could have learned what I did via a tutorial tree-- here&#39;s what you know, there&#39;s what you don&#39;t-- so that you can spend the time of discoveries and skill building.&lt;br /&gt;&lt;h3&gt;Sharing The Piss But Not The Recipe&lt;/h3&gt;There was another more annoying occurrence at this conference. I went to a talk by people from Four Kitchens. In short, Four Kitchens ROCKS.  Their sites looks good. Their Pressflow distribution is a great way to ruggedize Drupal. When they offered a talk from taking a Photoshop mock-up and making it into a theme, I leapt at the chance to attend. They described what a Drupal theme was (thanks-- I spent 8 hrs. in a room on Sunday re-learning that). Then they opened up the floor to questions. They glossed over how to start with a PSD and end up with a Drupal theme. That was the whole point of the session. Lots of people are doing it-- I know they are. I&#39;ve cut up Fireworks designs. What I didn&#39;t know was how to take a Photoshop mock-up and convert it. I still don&#39;t know, but I know that Four Kitchens does it and they do it well.&lt;br /&gt;I cannot singly fault them. This is a big topic. I hit this problem multiple times. Hearing &quot;it&#39;s easy&quot; but getting no details is like those affiliate marketers who say &quot;I make $20,000 a week!&quot; but don&#39;t back it up with real details-- SHARE.&lt;br /&gt;I really wish the talks could be vetted before they are approved. I went through a number of sessions that were VERY basic, so much so that I didn&#39;t know how someone could run to a conference specialized for Drupal but not know some of these basics.&lt;br /&gt;The conference needed to be split into basic, intermediate and advanced and really stick to it.  &lt;a href=&quot;http://sf2010.drupal.org/conference/sessions/20-apis-every-drupal-developer-should-know&quot;&gt;20 APIs Every Drupal Developer Should Know&lt;/a&gt; is an example of a session that was ranked for &quot;Basic, Intermediate&quot;-- really it was &quot;Basic Developer&quot; (too low for me); and &quot;Intermediate Architect&quot; (&lt;a href=&quot;http://victorialocal.blogspot.com/2010/04/of-conferences.html&quot;&gt;about right for my wife&lt;/a&gt; who is a site admin, but she doesn&#39;t code though she should know what&#39;s out there). When it said &quot;Intermediate&quot; I thought it was in my league. When it said &quot;APIs&quot; I thought it was about APIs-- Daylife, Flickr, Google, etc.. No: it was about 20 types of Drupal modules. My bad.&lt;br /&gt;&lt;br /&gt;Were I to run Drupalcon, I would have done it differently:&lt;br /&gt;- Split the conference into lots of micro conferences. Hold them nearly in parallel with some shifting so that the entrepreneurs, coders and themers don&#39;t need need to jockey for the same rooms.&lt;br /&gt;- Hold training, but not at the conference. The problem there: some places run diploma-mill training that results in their students washing windows (really). Lullabot, Zivtech and Lynda are great and should be used more. What I would like: a question-answer of what there is to know vs. what you don&#39;t know. At my theming training I learned about (theme)_preprocess_(specialty). I wish I could have jumped to that then off to something else new. Group training sessions don&#39;t work like that.&lt;br /&gt;- Match people to spark conversations. Let people code themselves and look for people up and down the skills tree. There were 3000 people at Drupalcon. I liked speaking with everyone I spoke with; but I would have liked to speak with the 30 people who could fill in my blanks-- only I didn&#39;t know who they were.&lt;br /&gt;- Open the cookbooks. People should share their Drupal recipes as much as their bosses will allow. I was able to share my biography and session schedule, but I could not share how I built &lt;a href=&quot;http://www.propertypast.com&quot;&gt;propertypast.com&lt;/a&gt; or &lt;a href=&quot;http://www.thosedewolfes.com/&quot;&gt;thosedewolfes.com&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;The Good Stuff&lt;/h3&gt;Beyond learning and emersing myself in Drupal-land, I came up with some good ideas and a better understanding of Drupal. I also learned how much I have managed to wring out of Drupal and Apache. Others are pulling off the same result by lopping out 120 modules; or doing the same as what we&#39;re doing but with four servers and not one. I left one person speechless when I told them that the site had 36 themes. Yep: I know we have about 30 themes too many.&lt;br /&gt;I have an idea for a module-- well, a framework concept as well as a migration synchronization module.&lt;br /&gt;I have an idea for a site to support Drupal people. Ideally, it should go on Drupal.org. Realistically, I&#39;ll put it on prefabsite.net.&lt;br /&gt;I have an idea for a Photoshop plug-in. First, I have to become a Photoshop plug-in developer expert. It&#39;s like Colombus wanting corn: first he has to travel to the New World.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/5523083067781585372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/5523083067781585372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/5523083067781585372'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/5523083067781585372'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/04/sitting-in-drupalcons-cheap-seats.html' title='Sitting In Drupalcon&#39;s Cheap Seats'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-6391104742681811558</id><published>2010-04-19T14:49:00.016-07:00</published><updated>2010-04-20T19:28:43.397-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Pressflow"/><title type='text'>Fat Men and Luggage</title><content type='html'>I&#39;m really fat-- there&#39;s no way to sugar coat it (if you did, maybe you&#39;d expect me to eat it). I&#39;m at the SF Drupalcon, which means I am carting my digital essentials: a laptop, a power strip and a SLR digital camera, all wrapped in a bike bag and associated with some hard won swag (oh, hosting? tell me more! [reaches for t-shirt]...).&lt;br /&gt;As a fat man the last thing I need is luggage-- it is literally more to lug around. If anything, I need less-- like no laptop bag and some subspace generator that weighs me in at a feathery 160 lbs.-- so that I can move around best.&lt;br /&gt;I came to this epiphany today and then an hour later, Dries Buytaert gave his inspiring key note address. In looking ahead to Drupal 7, he said that it will have more code (read: poorer performance) but be more scalable. That&#39;s great... er, sort of. I remember Steve Ballmer talking about how his staff would boast about kloc-- 1000 line blocks of code. The more klocs you wrote, the better you were at programming. This is why Windows 3.1 went from humming a 486 with 64MB of RAM all the way to needing 1GB+ on a screaming machine to run Vista. More lines may be the only solution to some problems, but sometimes the bulk happens for its own sake.  &lt;br /&gt;If the code is too bulky it brings in too much overhead before you get to the real source of overhead: content and data relationships.&lt;br /&gt;Drupal needs to make a left turn in its bulking trend. &lt;a href=&quot;https://launchpad.net/drizzle&quot;&gt;Drizzle&lt;/a&gt; is an example of how to go. Drizzle is a fork of MySQL made to be more modular and strip out extraneous code. Most coders pride themselves on how much work they as reflected in their volume of code. Drizzle is priding themselves on how much code they have taken out. They have removed thousands of lines of code. There are data types that no one uses, so Drizzle doesn&#39;t have them. &lt;a href=&quot;http://fourkitchens.com/pressflow-makes-drupal-scale&quot;&gt;Pressflow&lt;/a&gt; is a distribution of Drupal 6 that gets rid of the fringe code that is meant to satisfy PHP4 pecadilloes. It has less code which makes it faster and more scalable.  It does backport advantages of Drupal 7 and share its own advantages into Drupal 7.&lt;br /&gt;How do you do complex stuff in a potentially free form way without requiring alot of code? That&#39;s the devil in the details. Some ideas:&lt;br /&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;Context&lt;/span&gt;: Factor in context to simplify the data set. I hit the url path functions and was amazed that it searched for all matches and never brought arg(0) into the mix as a way to pre-filter the results.&lt;br /&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;Make Your Function Respond Like a Good Witness&lt;/span&gt;: Have you watched those courtroom dramas where the witness volunteers information and suddenly gets implicated in a murder? Less is more. When you look at the node object in Drupal 5 and 6, it brings in the data in many ways repeated off of several trees. That&#39;s a lot of bulk to move around and traverse. If the output is just what you expect then you don&#39;t have excess to trim, ignore or suffer with. Functions needs to be able to give what is required and have some extensibility capacity.&lt;br /&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;Lean of the Language and the Environment&lt;/span&gt;: Waaay back in Drupal 4.7 we had a glitch in CCK. I leaned on a PHP function to mend the problem-- easy problem to solve with an easy and solid function. . Like a good Drupaller, I suggested the change as a patch. I was scolded by the maintainer that I should not use a PHP function to resolve this function. WTF? I can&#39;t use PHP in Drupal? I understand the logic and the strength of abstracting the mysql_fetch_row() but some functions do not need abtraction-- they work fine. In some cases, there is road that does not need to be re-paved. Adding more functions to repeat the work of what is natively available in PHP or MySQL bulks up the Drupal code and will impact performance. It will give the fat man too much luggage.&lt;br /&gt;Looking at Drupal 7&#39;s projected big red bar to indicate its code size, I am concerned how much luggage it going to get carried around in the next version.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/6391104742681811558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/6391104742681811558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6391104742681811558'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/6391104742681811558'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/04/fat-men-and-luggage.html' title='Fat Men and Luggage'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-3689273539778597629</id><published>2010-04-08T07:25:00.005-07:00</published><updated>2010-04-08T08:14:20.255-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="spiders"/><title type='text'>JQuery block loading</title><content type='html'>It&#39;s great to have lots of content. Sometimes you need even content from offsite. If you link to an offsite source that can drop your page rank, feeding page rank to the source (the &quot;Articlebase effect&quot; wherein a site full of mediocre articles gets all of the traffic).  You cannot serve two versions of your site (one for Google to gain favour; one for real people). Google will de-index your site in response.  Google is an 800-lb. gorilla: on site I work with, they are responsible for about 50% of the page views. The real users make up a small minority of the page views. You need to cushion your processing to accomodate this huge amount of non-human usage. If you could serve less content that could mean less database access-- less work to gather the page contents. But, you need to give users as much content as possible to hook them. You need to serve the same page to all. But, you can capitalize on the technical limitations of spiders. For a while (eg. ignore this article in you&#39;re reading it in the Spring of 2011), search engine spiders are not Javascript/JQuery sensitve.  So, you can deliver the same page to all, but use JQuery and Ajax loading to bring in supplemental content. If the content points to offsite links, it may send users away from your site, but it will not contribute to lowering your page rank.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;window.onload = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;$(&quot;#ajax_window&quot;).load(&quot;http://mike.dewolfe.bc.ca/cooking&quot;).fadeIn(&quot;slow&quot;).slideDown(&#39;slow&#39;)};&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;&amp;lt;div id=&quot;ajax_window&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above code is an example of what I may use on my &lt;a href=&quot;http://mike.dewolfe.bc.ca/&quot;&gt;mike.dewolfe.bc.ca&lt;/a&gt; site. It leans on the existance of JQuery. The page it calls load into the &quot;ajax_window&quot; DIV. I do have to call a local resource for the sake of simplicity because of XSS safeguards in my browser.  Rather than use &quot;document.ready()&quot; a classic way of gauging a page load, I use window.onload().  This is because I subscribe to the Steve Souder tips on &lt;a href=&quot;http://www.amazon.com/gp/product/0596529309?ie=UTF8&amp;amp;tag=mikedewolfe-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596529309&quot;&gt;High Performance Web Sites: Essential Knowledge for Front-End Engineers&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=mikedewolfe-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596529309&quot; alt=&quot;&quot; style=&quot;border: medium none  ! important; margin: 0px ! important;&quot; border=&quot;0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt; and put my script calls at the bottom of the page. The problem with that is that the JQuery library loads late on a page and the function calls in the page that reference it will choke and fail. window.onload() is a basic Javascript function, so it will always be recognized. When the page is loaded, the JQuery functions are present and window.onload() will allow those functions to be called.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/3689273539778597629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/3689273539778597629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3689273539778597629'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/3689273539778597629'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/04/jquery-block-loading.html' title='JQuery block loading'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-460419342134925904</id><published>2010-04-05T21:55:00.005-07:00</published><updated>2011-10-26T20:38:02.567-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="Property Past"/><category scheme="http://www.blogger.com/atom/ns#" term="taxonomy"/><title type='text'>What am I trying to do with Property Past</title><content type='html'>I had a tense dim-sum with my sister a few weeks ago. She announced that she was going to move because their house was infested with mold. How many grow-ops, crack shacks and murder houses are out there that get a lick of paint and then get put out on the market. Our own 97 year old house has been through so many renovations and expansions that I don&#39;t know what it began as (I think I&#39;m sleeping in the original kitchen). Properties have pasts. If they are not sterling, a realtor will not mention them. I used to live at 1170 Tattersall. On its bright side, it was built by the McGills of local McGill and Orme fame. It was a nice house. On its dark side, it was used by a local thief: he had so much booty stuffed into the basement suite, he could barely shut the door (this according to police).&lt;br /&gt;Enter &lt;a href=&quot;http://www.propertypast.com/&quot;&gt;www.propertypast.com&lt;/a&gt;. It&#39;s a site built with Drupal 6 and using the nice Color Paper theme (I like that theme). What I did that was a little different: I built it with four vocabularies (street numbers, streets, cities, regions). These vocabularies are what organize and describe the content. There are many Elm Streets, but only one Elm Street per city-- so the Elm Street gets recycled and addresses need three or four vocabularies of terms to make a match. I altered the node to show the vocabularies, control their output and append associated terms. For example, with this link (&lt;a href=&quot;http://propertypast.com/node/10&quot;&gt;http://propertypast.com/node/10&lt;/a&gt;), we have  &lt;a href=&quot;http://propertypast.com/taxonomy/term/35%2C33%2C22%2C7&quot;&gt;728&lt;/a&gt; &lt;a href=&quot;http://propertypast.com/taxonomy/term/33%2C22%2C7&quot;&gt;Pembroke&lt;/a&gt; &lt;a href=&quot;http://propertypast.com/taxonomy/term/22%2C7&quot;&gt;Victoria&lt;/a&gt;, &lt;a href=&quot;http://propertypast.com/taxonomy/term/7&quot;&gt;British Columbia  &lt;/a&gt;The 728 includes all of the terms. The Pembroke include Pembroke, Victoria and British Columbia. Victoria is Victoria and British Columbia. As you get out from the exact match, the links can take you to a broader match.&lt;br /&gt;&lt;br /&gt;The trick from here: getting the data. I would LOVE it if people would contribute the data. I would also like to find a way to mass import pre-existing data: MLS sale prices, BC Assessment prices, crime reports, etc.. That may be the Achilles Heel of this process. Here&#39;s my call to you: if you know of a home with a colorful past, add it here at &lt;a href=&quot;http://www.propertypast.com&quot;&gt;Property Past&lt;/a&gt;.
&lt;a href=&quot;http://www.thosedewolfes.com/projects/domains&quot;&gt;Perhaps I will list this on my growing list of web projects...&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/460419342134925904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/460419342134925904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/460419342134925904'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/460419342134925904'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/04/what-am-i-trying-to-do-with-property.html' title='What am I trying to do with Property Past'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-4606150159563984352</id><published>2010-03-30T22:58:00.004-07:00</published><updated>2010-03-30T23:46:00.193-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="drupal heretic"/><title type='text'>3347 Reasons For the Toba Catastrophe to Hit Drupal</title><content type='html'>I was recently tasked with getting the title and project links for all of the Drupal 6 modules. There appear to be something like 3347 Drupal 6 modules at Drupal.org. That seems like a lot.&lt;br /&gt;I know why this is: people have the freedom to create anything they want and post that to the Drupal repository of contributed modules. When two competing modules come into play, they are a little bit different so the features are similar, but not the same. What you get are either multiple flavours, one that may be to your liking-- or none that match and require you to make yet another version that fills your bill. The downside of multiple similar modules is that they each take support and care. More of them means that there are fewer developers to go around-- each module will have its own maintainer. If several developers could work on a module similar to what interested them, then there would be greater support: a more feature rich module, or one that&#39;s sturdier.&lt;br /&gt;80,000 years old, the &lt;a href=&quot;http://mikedewolfe.blogspot.com/2009/07/toba-catastrophe.html&quot;&gt;Toba&lt;/a&gt; eruption killed most of the humans on Earth. That left 80,000 odd people to spawn our species today. I think that there is something to be said for a constructive die-off of modules. We don&#39;t want to lose this diversity, but is there a way to control the explosion of functions?&lt;br /&gt;This could amount to a leaderboard approach of similar modules being weighed: which is viewed as more stable; or feature rich? Can one of them be deprecated if their intrinsic features were rolled into the victorious module?&lt;br /&gt;Is there a way to make more use of Drupal Groups? Can we get people to come up with a common way to describe module functionality, then voice an intention to do a module and look for like-minded developers to share the load?&lt;br /&gt;&lt;br /&gt;From a developer standpoint these 3347 modules pose a problem: why would I develop a module if there are several that could fit my needs? I have developed custom modules for my work, but none of them are fit for a general audience. When someone says, &quot;What have you done-- which modules have you developed?&quot; I don&#39;t see enough room to build a module-- there are dozens for every role I&#39;ve come up with.</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/4606150159563984352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/4606150159563984352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4606150159563984352'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/4606150159563984352'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/03/3347-reasons-for-toba-catastrophe-to.html' title='3347 Reasons For the Toba Catastrophe to Hit Drupal'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13140861.post-2122355594497491197</id><published>2010-03-03T08:32:00.000-08:00</published><updated>2010-03-03T12:34:25.156-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cooking"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Recipes"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><category scheme="http://www.blogger.com/atom/ns#" term="XSLT"/><title type='text'>Cooking with XSLT, XML, PHP and a dash of automation</title><content type='html'>Fun with :&lt;br /&gt;XSLT, 6000+ recipes in Recipe XML format, PHP and a page building script that I whipped up:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://clearyourplate.com/recipes/pager_1.php&quot;&gt;http://clearyourplate.com/recipes/pager_1.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;input id=&quot;gwProxy&quot; type=&quot;hidden&quot;&gt;&lt;!--Session data--&gt;&lt;input onclick=&quot;jsCall();&quot; id=&quot;jsProxy&quot; type=&quot;hidden&quot;&gt;&lt;div id=&quot;refHTML&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://technicalmike.blogspot.com/feeds/2122355594497491197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/13140861/2122355594497491197' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/2122355594497491197'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/13140861/posts/default/2122355594497491197'/><link rel='alternate' type='text/html' href='https://technicalmike.blogspot.com/2010/03/cooking-with-xslt-xml-php-and-dash-of.html' title='Cooking with XSLT, XML, PHP and a dash of automation'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>