<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="http://www.saigonist.com/taxonomy/term/6/all" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Tech</title>
    <link>http://www.saigonist.com/taxonomy/term/6/all</link>
    <description></description>
    <language>en</language>
          <item>
    <title>FOSSASIA: Free software and why you should care</title>
    <link>http://www.saigonist.com/tech/fossasia-free-software-and-why-you-should-care</link>
    <description>&lt;p&gt;&lt;a href=&quot;#fossasia&quot;&gt;What is FOSSASIA?&lt;/a&gt; | &lt;a href=&quot;#noaf&quot;&gt;Nerds of a feather flock together&lt;/a&gt; | &lt;a href=&quot;#where&quot;&gt;Where is FOSS found?&lt;/a&gt; | &lt;a href=&quot;#why&quot;&gt;Why you should go to FOSSASIA&lt;/a&gt; | &lt;a href=&quot;#freesoftware&quot;&gt;Why you should care about Free Software&lt;/a&gt; | &lt;a href=&quot;#southeastasia&quot;&gt;Why open source matters to Southeast Asia&lt;/a&gt; | &lt;a href=&quot;#morethansoftware&quot;&gt;Open Source is more than just software. Open Source Everything!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&#039;ve been doing a lot of traveling for nerdy reasons lately. A month ago it was BarCamp Yangon. This past weekend it was FOSSASIA in Phnom Penh, Cambodia. I&#039;ll get back to writing about living in Vietnam soon, since I&#039;ll be traveling around the country.&lt;/p&gt;
&lt;p&gt;&lt;strong id=&quot;fossasia&quot;&gt;What is FOSSASIA?&lt;/strong&gt;&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/fossasia-free-software-and-why-you-should-care#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/cambodia">cambodia</category>
 <category domain="http://www.saigonist.com/category/tags/open-source">open source</category>
 <category domain="http://www.saigonist.com/category/tags/phnom-penh">phnom penh</category>
 <category domain="http://www.saigonist.com/category/tags/software">software</category>
 <pubDate>Tue, 04 Mar 2014 09:53:36 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">5869 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>BarCamp Yangon</title>
    <link>http://www.saigonist.com/tech/barcamp-yangon</link>
    <description>&lt;p&gt;Skip to:&lt;br /&gt;
&lt;a href=&quot;#session&quot;&gt;Sessions&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;#android&quot;&gt;Android vs iOS&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;#bitcoin&quot;&gt;Bitcoin &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;#beercamp&quot;&gt;Beercamp&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;#summary&quot;&gt;Summary&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Size matters. Size doesn&#039;t matter.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span float=&quot;left&quot;&gt;Yangon, Myanmar holds the largest BarCamp in the world. Or so they say, but who&#039;s counting? I can confirm that it&#039;s a two day affair, like BarCamp Phnom Penh (where a few of my compatriots were from) and of similar size to Cambodia&#039;s main and largest BarCamp. Even our homely one-day BarCamp Saigon is roughly the same in crowd size according to my eyeball count. The number of sessions, at around 160 over two days, is also about the same per day as are the popularity and attendance in the classrooms in which they are held. There were even many sparsely attended talks (such as my own!) But size isn&#039;t everything.&lt;/span&gt;&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/barcamp-yangon#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/android">android</category>
 <category domain="http://www.saigonist.com/category/tags/barcamp">barcamp</category>
 <category domain="http://www.saigonist.com/category/tags/bitcoin">bitcoin</category>
 <category domain="http://www.saigonist.com/category/tags/myanmar">myanmar</category>
 <category domain="http://www.saigonist.com/category/tags/yangon">yangon</category>
 <pubDate>Wed, 26 Feb 2014 05:12:22 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">5693 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>My Vietnam Startup Report</title>
    <link>http://www.saigonist.com/vietnam/my-vietnam-startup-report</link>
    <description>&lt;p&gt;Last Wednesday night, @Bowei Gai of the World Startup Report made his stop on his year-long globetrotting tour to the center of the Vietnamese startup scene at Saigon Hub in Ho Chi Minh City. He gave a talk that had been honed over many months and included lots of interesting bits from startup scenes around the world, from the amazing size (trillions!) of Chinese e-commerce companies, to the equally impressive adoption of mobile payment in Sub-Saharan African countries (30%!). Later, in private, we heard of the incredible arrogance of French startup people and corruption around the world. But we were also humbled by the recent multiple-hundreds of million dollar exits of Nepalese technology companies. And perhaps secretly identified with the conditions of economic crisis under which Argentinean entrepreneurs had to run their businesses - 20+% annual inflation driving up business costs, a local currency constantly losing value leading locals to buy dollars when they could... &lt;/p&gt;
&lt;p&gt;Bowei has been flying to a new country every few days to study a brand new local startup scene. Originally with the intention of writing up the local report as he was traveling, that was clearly impossible.  And so it&#039;ll be at least a few months before we see his Vietnam Startup Report. So let me share my own thoughts while they&#039;re still fresh.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/vietnam/my-vietnam-startup-report#comments</comments>
 <category domain="http://www.saigonist.com/category/type/vietnam">Vietnam</category>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/barcamp">barcamp</category>
 <category domain="http://www.saigonist.com/category/tags/coworking">coworking</category>
 <category domain="http://www.saigonist.com/category/tags/investing">investing</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Fri, 06 Sep 2013 08:43:49 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1562 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>On Vietnam banning chat apps</title>
    <link>http://www.saigonist.com/vietnam/vietnam-banning-chat-apps</link>
    <description>&lt;p&gt;Here are some random thoughts on the news of Vietnamese ISPs/ministries colluding to ban mobile chat apps like Line/KakaoTalk/Viber/Whatsapp. The story so far has been that Vietnam&#039;s mobile networks, losing more and more money from people using free chat apps instead of SMS (which senders pay a little money for in Vietnam) which is pure profit for them, would like to put a stop to this trend.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/vietnam/vietnam-banning-chat-apps#comments</comments>
 <category domain="http://www.saigonist.com/category/type/vietnam">Vietnam</category>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/censorship">censorship</category>
 <category domain="http://www.saigonist.com/category/tags/chat">chat</category>
 <category domain="http://www.saigonist.com/category/tags/mobile">mobile</category>
 <category domain="http://www.saigonist.com/category/tags/viber">viber</category>
 <pubDate>Wed, 28 Aug 2013 10:30:21 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1547 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Hacking Your First Hackathon</title>
    <link>http://www.saigonist.com/vietnam/hcmc/hacking-your-first-hackathon</link>
    <description>&lt;p&gt;Today I&#039;ll be speaking, mentoring, then judging at Keewi&#039;s Hack Day event. &lt;/p&gt;
&lt;p&gt;Over a decade ago I joined a group of &quot;hackers&quot; in developing an open source ultra-secure UNIX operating system called OpenBSD. As the most secure OS in the world, it was designed to keep out hackers, as in crackers, those seeking unauthorized access to computer systems. But we were also hackers, a type of &quot;artisanal&quot; programmer. OpenBSD hackers are spread across the world and they gather themselves together periodically into one place to be super productive on a common goal over the course of several days. OpenBSD invented the hackathon, even coining the word itself.&lt;/p&gt;
&lt;p&gt;I attended my first hackathon back when I was still in school, which I graduated from over 10 years ago. It was organized by our university&#039;s open source club, the only extracurricular activity I was involved in. We got permission to use one of the classrooms overnight and even got funding to buy a couple pizzas and pop. That was it. There were no corporate sponsors. There were no spectators watching us code except for our confused girlfriends. There were no headhunters or suits looking for geeks they could make use of. And there was no prize money because we were just there to see what hacks we could pull off in a night and then show each other.&lt;/p&gt;
&lt;p&gt;Nowadays, hackathons are more and more common and are seen by corporations as something they can take advantage of.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/vietnam/hcmc/hacking-your-first-hackathon#comments</comments>
 <category domain="http://www.saigonist.com/category/type/vietnam/hcmc">HCMC</category>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/hack-day">hack day</category>
 <category domain="http://www.saigonist.com/category/tags/hackathon">hackathon</category>
 <category domain="http://www.saigonist.com/category/tags/keewi">keewi</category>
 <category domain="http://www.saigonist.com/category/tags/openbsd">openbsd</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Sat, 08 Jun 2013 07:13:49 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1142 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Become a 10x Developer, Increase Your Salary by 10x</title>
    <link>http://www.saigonist.com/tech/become-10x-developer-increase-your-salary-10x</link>
    <description>&lt;p&gt;There is debate over the term 10x developer which is the idea that some developers are ten times as productive as other average programmers. This was popularized by some research which was subsequently refuted but the idea lives on. And if true, how can we all become &quot;10x developers&quot;? From the time I began taking programming classes in school, which is when I was first exposed to other people&#039;s programming abilities, I knew that skill level varied and varied greatly. In an arithmetics class, the best student might score 20 or 30 percent higher than the average. But there&#039;s no way to score 100 times the average as that level of ability isn&#039;t measured in class. But in a programming class, there will be a number of students who can&#039;t complete a working program in a given amount of time, and a student who is a slow coder but eventually gets something functioning is infinitely better than the student who doesn&#039;t. Those who can&#039;t typically don&#039;t go on to become career programmers, but they might need to pass the class for some IT-related business management degree and go on to become Excel wizards.&lt;/p&gt;
&lt;p&gt;But among profressional programmers what is a good standard deviation in productivity levels?&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/become-10x-developer-increase-your-salary-10x#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/10x">10x</category>
 <category domain="http://www.saigonist.com/category/tags/code">code</category>
 <category domain="http://www.saigonist.com/category/tags/developer">developer</category>
 <category domain="http://www.saigonist.com/category/tags/programmer">programmer</category>
 <pubDate>Sat, 08 Jun 2013 07:12:53 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1141 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Entrepreneurs everywhere: Surveying the startup scene in Vietnam </title>
    <link>http://www.saigonist.com/vietnam/entrepreneurs-everywhere-surveying-startup-scene-vietnam</link>
    <description>&lt;p&gt;[Are you an investor interested in investing in Vietnam, especially in startups? This blog post comes from conversations with visiting investors from other countries and answering a lot of questions they had in common.]&lt;/p&gt;
&lt;p&gt;For years, tech startups in Vietnam operated in a sort of vacuum, with no local ecosystem to help them. &lt;/p&gt;
&lt;p&gt;Of course, this didn&#039;t stop them. Maybe there were even benefits with less scene distractions. &lt;/p&gt;
&lt;p&gt;Now there is something we can call a scene, like a subculture of startup. There are wannabe entrepreneurs (wantrepreneurs), kids who dream of startups or want to experience working for one. There are serial events (Startup Weekend Ho Chi Minh City, the Start Me Up series, even Barcamp Saigon which I&#039;m most personally attached to) as well as larger traditional conferences with international involvement. There are hackathons. There are training programs. There are incubators. There are angels and venture capitalists, although so few that finding appropriate investment among them is challenging for many reasons. There are online forums (in Vietnamese) and there is now coverage of the country in the three largest regional tech news journals out of Singapore (e27, SGE, TechInAsia) as well as local PR mouthpiece Action.vn. &lt;/p&gt;
&lt;p&gt;And there are even some startups within Vietnam&#039;s startup scene! &lt;/p&gt;
&lt;p&gt;(Though there is confusion about what is or isn&#039;t a startup) &lt;/p&gt;
&lt;h2&gt;What kind of startups you&#039;ll find in Vietnam&lt;/h2&gt;
</description>
     <comments>http://www.saigonist.com/vietnam/entrepreneurs-everywhere-surveying-startup-scene-vietnam#comments</comments>
 <category domain="http://www.saigonist.com/category/type/vietnam">Vietnam</category>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/bootstrap">bootstrap</category>
 <category domain="http://www.saigonist.com/category/tags/entrepreneurship">entrepreneurship</category>
 <category domain="http://www.saigonist.com/category/tags/hackathon">hackathon</category>
 <category domain="http://www.saigonist.com/category/tags/silicon-valley">silicon valley</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Fri, 12 Apr 2013 05:03:10 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1017 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Definition of Startup: What isn&#039;t a startup? </title>
    <link>http://www.saigonist.com/tech/definition-startup-what-isnt-startup</link>
    <description>&lt;p&gt;What is a startup? &lt;/p&gt;
&lt;p&gt;We&#039;re in the middle of a tech boom and it&#039;s become fashionable to either work for a startup or to be a startup. But what is a startup? How do you know that company offering you a job in exchange for a few years of your life is really what they say they are? How should you compare the hobby or side project you&#039;re working on with a &quot;startup&quot;? How is a startup different from a business? What kind of company would attract venture capital and what kind might get other kinds of funding, but not from VCs?&lt;/p&gt;
&lt;p&gt;First of all, there&#039;s more than one definition of &quot;startup&quot;. Paul Graham defines startup as &quot;a company designed to grow fast&quot;. That definition says three things: a startup is a company, a startup has a plan, and a startup is about growth.&lt;/p&gt;
&lt;p&gt;My definition has more words: &quot;A high risk venture to flesh out and scale up an as yet unproven business model with an aim to reach a massive known market or an unknown or unknowable market.&quot;&lt;/p&gt;
&lt;h2&gt;Definition&lt;/h2&gt;
&lt;p&gt;A high risk [startups, unlike hobbies, are necessarily risky - nothing ventured, nothing gained]&lt;/p&gt;
&lt;p&gt;... venture [usually a business, but this could apply to a team&#039;s activities within a larger organization - uncertainty is implied]&lt;/p&gt;
&lt;p&gt;... to flesh out [as in an unproven business model, many blanks must be filled in by the entrepreneurs as a result of experimenting, trial and error, course correction]&lt;/p&gt;
&lt;p&gt;... and scale up [scale is really key - without scale, you&#039;re just a local mom&amp;amp;pop, or all the hope and risk-taking investment dumped into you has no potential to garner large returns - more on scale below]&lt;/p&gt;
&lt;p&gt;... an as yet unproven business model [a startup&#039;s business model doesn&#039;t yet exist as a known successful and proven model from the start, and when that model does become proven and successful then it&#039;s no longer a startup]&lt;/p&gt;
&lt;p&gt;... with an aim [without or before an explicit and conscious effort to market and sell a product or service then it&#039;s just a research project]&lt;/p&gt;
&lt;p&gt;... to reach a massive known market [this is where scale is required, where the risk has the potential to result in sufficient reward]&lt;/p&gt;
&lt;p&gt;... or an unknown or unknowable market [early in the discovery stages, an entrepreneur may have a hunch that they&#039;re developing a product with a large potential market, but not feel out the depths of the market until later]&lt;/p&gt;
&lt;p&gt;Google, Apple Computers, Intel, Ford Motor Company, Instagram, YouTube... in hindsight, these were once all startups. They all faced huge risks but eventually found themselves delivering products to massive markets and also successfully scaled up to serve those markets. And at the time, it wasn&#039;t clear at all how those business models would succeed or whether they would at all.&lt;/p&gt;
&lt;h2&gt;What isn&#039;t a startup?&lt;/h2&gt;
&lt;p&gt;But what about a research project at a certain university being taken on by a certain Larry Page? Surely, this research had the potential to become a massively-valued company used by much of the Earth&#039;s population. Was it a startup? Obviously not (not at that point in time, which brings up the thornier issue of at which exact point to call the genesis of conception of a startup). While the kernel of the idea was on a clear path to scaling the entire web, what was the risk? Whose lives would be affected if Larry had failed in his research? The time investment was no different from any other student.&lt;/p&gt;
&lt;p&gt;What about the neighborhood sandwich (banh mi) cart? It&#039;s a risky business and who wouldn&#039;t like to sell increasingly more sandwiches month by month? The difference is that there are many sandwich carts everywhere trying numerous variations of the business model. But that business model is well understood. You could take your growing sandwich business to the bank and get a loan after quantifying a few common metrics of your particular variant. The banker would have absolutely no expectation of getting 1000% interest on their loan. Conversely, while not being a sure thing, the risk is more than manageable by competent parties. You&#039;re very likely to not lose lots of money, and you&#039;re extremely unlikely to huge amounts of money. [Franchise restaurants are more scalable. But they also fall within the bounds of relatively well-known rather than innovative business models.]&lt;/p&gt;
&lt;p&gt;So what if you&#039;re bringing a new service to the market? You plan to offer a widget-configuring service around town, because widgets are the hot new thing right now. You see growth potential there. Except that you have no way to scale this business to other cities which are outside your driving range and all you&#039;re really doing is trading your time for money. When you&#039;re not working, you&#039;re not earning. And outside of cloning yourself you have no way to multiply 100-fold what you&#039;re doing. &lt;/p&gt;
&lt;p&gt;What about a blog, like the blog you&#039;re reading now? Could you be reading a startup right now? No.&lt;/p&gt;
&lt;p&gt;Hobbies are not startups. Hobbies can turn into anything but there&#039;s no intention of a hobby itself being a startup venture, otherwise you treat it as such and not a hobby. A hobby is never seen as a risk. Time spent on a hobby is the reward itself. With a normal business, you expect to get back what you put in plus some. With a startup, you hope to get back much more. With a hobby, you&#039;re not putting anything in and you expect to get just as much out.&lt;/p&gt;
&lt;p&gt;Working at a startup will be exciting. It will necessarily move fast, and if you&#039;re doing anything financially promising at all, there will be the pressure from the threat of competition. You&#039;ll see lots of mistakes being made. It will be different. Traditional roles will be upturned as CEOs become janitors and developers do customer service. But it will be a chance for those young idealists to get their fingers in a number of fields they would have otherwise had to wait decades for. And best of all, you have the potential of becoming a billionaire. And that&#039;s what sets a startup apart from business as usual.&lt;/p&gt;
&lt;p&gt;I have had some personal experience with startups.&lt;/p&gt;
&lt;p&gt;Also, read about startups in Vietnam.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/definition-startup-what-isnt-startup#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/entrepreneurship">entrepreneurship</category>
 <category domain="http://www.saigonist.com/category/tags/silicon-valley">silicon valley</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Fri, 05 Apr 2013 03:45:55 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1015 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>My Startup Experiences</title>
    <link>http://www.saigonist.com/tech/my-startup-experiences</link>
    <description>&lt;p&gt;I&#039;ve been involved in start ups for over a decade now. During that time I&#039;ve worked for companies in varying stage of development. Not all of them were startups. But how can you tell if it is or not?&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/my-startup-experiences#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/entrepreneurship">entrepreneurship</category>
 <category domain="http://www.saigonist.com/category/tags/silicon-valley">silicon valley</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Fri, 05 Apr 2013 03:34:36 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">1014 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Start your startup in Kansas City, or Vietnam</title>
    <link>http://www.saigonist.com/vietnam/hcmc/start-your-startup-kansas-city-or-vietnam</link>
    <description>&lt;p&gt;Boulder&#039;s big VC investor dude Brad Feld has a house in Kansas City now. He doesn&#039;t live there, even for just part of the year, but he owns it. He&#039;s letting YOU live there. For free. FREE!!!  But should you live in Kansas City (a mid-sized town in the American southwest midwestern state of Missouri) to bootstrap your startup? If the rent is free?&lt;/p&gt;
&lt;p&gt;Awhile back I talked about bootstrapping your startup in Ho Chi Minh City on the cheap. And what&#039;s better than cheap besides free?&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/vietnam/hcmc/start-your-startup-kansas-city-or-vietnam#comments</comments>
 <category domain="http://www.saigonist.com/category/type/vietnam/hcmc">HCMC</category>
 <category domain="http://www.saigonist.com/category/type/tech">Tech</category>
 <category domain="http://www.saigonist.com/category/tags/bootstrap">bootstrap</category>
 <category domain="http://www.saigonist.com/category/tags/entrepreneur">entrepreneur</category>
 <category domain="http://www.saigonist.com/category/tags/fiberhood">fiberhood</category>
 <category domain="http://www.saigonist.com/category/tags/google">google</category>
 <category domain="http://www.saigonist.com/category/tags/kansas-city">kansas city</category>
 <category domain="http://www.saigonist.com/category/tags/startup">startup</category>
 <pubDate>Fri, 15 Feb 2013 06:02:38 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">992 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Drupal 6 Related Content</title>
    <link>http://www.saigonist.com/tech/drupal/drupal-6-related-content</link>
    <description>&lt;p&gt;Similar Entries 2 (6.2) - http://drupal.org/project/similar - doesn&#039;t work. But version 1 works like a charm. Version 2 spits up an error on array_filter. Looking at the code, my guess is it&#039;s related to some new Views plugin code in version 2.&lt;/p&gt;
&lt;p&gt;Related Block - http://drupal.org/project/related_block - would have been cool too. It&#039;s much like Similar Entries. Unfortunately, the search algorithm is way too narrow. At first, I couldn&#039;t tell if the module was even working. Then by weening the search terms down to 1 (which means it figures out a single relevant term and then searches for only that) I saw some results, but not on many nodes still.&lt;/p&gt;
&lt;p&gt;Relevant Content - http://drupal.org/project/relevant_content - is nice in theory. Currently, it&#039;s broken. It&#039;s in the middle of a rewrite, but it&#039;s looking more and more unlikely that it will ever get rewritten.&lt;/p&gt;
&lt;p&gt;Related links - http://drupal.org/project/relatedlinks - is not what it seems. It just finds any referenced links in the content and groups them together. Nothing external.&lt;/p&gt;
&lt;p&gt;Other modules are term (taxonomy) based. But ideally, you don&#039;t need to specify all the relevant terms, and you don&#039;t need to explicitly say that two terms are related. There should be a more intelligent way.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/drupal/drupal-6-related-content#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech/drupal">Drupal</category>
 <category domain="http://www.saigonist.com/category/tags/block">block</category>
 <category domain="http://www.saigonist.com/category/tags/drupal6">drupal6</category>
 <category domain="http://www.saigonist.com/category/tags/module">module</category>
 <category domain="http://www.saigonist.com/category/tags/search">search</category>
 <category domain="http://www.saigonist.com/category/tags/taxonomy">taxonomy</category>
 <pubDate>Thu, 24 Jan 2013 16:09:31 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">971 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Drupal vs Node.js or Drupal + Node.js</title>
    <link>http://www.saigonist.com/tech/drupal/drupal-vs-nodejs-or-drupal-nodejs</link>
    <description>&lt;p&gt;What do Drupal and Node.js have in common? Besides the word &quot;node&quot; not much. They are both ways to do web development. Drupal is for building websites centered around managing, creating, and viewing mixed types of content. Node.js is optimized for near real-time updates in browsers connected for long periods of time to a website. &lt;/p&gt;
&lt;p&gt;Drupal is software that runs PHP on top of a web server. It can run on Apache or nginx or other web servers. But it needs a web server to handle listening on a TCP connection and communicating with connected clients (browsers). Node.js, on the other hand, doesn&#039;t need an underlying web server because you can easily write a fast, basic web server using Node. Drupal is limited by the speed of PHP and the (most likely MySQL) database that is returning hundreds of queries per page load, and then limited further by the speed at which the web server can serve the data Drupal returns. Node.js can serve a page as quickly as it takes to run any JavaScript function. &lt;/p&gt;
&lt;p&gt;Node.js is therefore much lower level than Drupal. Node.js can be the basis for writing scalable, responsive, real-time, single-page web apps. But it won&#039;t help you rapidly build any features used on the website. It won&#039;t serve as very expressive or patterned scaffolding for any advanced site structure, or help manage more (Drupal) nodes than you can count on your hands. Node doesn&#039;t have the breadth of third party web features that makes modern websites social, play nicely with thousands of APIs, or conduct e-commerce. Node.js isn&#039;t a web framework, nor a CMS. It&#039;s something very different. &lt;/p&gt;
&lt;p&gt;Node.js is a framework for programming network servers. Node.js is also the only remaining mainstream way to run server-side JavaScript (others exist but never gained any following, perhaps because without V8 they were too slow or the idea was too ahead of its time). That may not be reason enough for most people to switch to Node, but for some people who perhaps want to share client-side and server-side code or really like JavaScript (because, well, PHP sucks!) then you might still want to use Node even without using it for its networking/events libraries. Those coming from a Python or Ruby on Rails background will see some similar ideas related to event-driven programming.&lt;/p&gt;
&lt;h2&gt;Why would you want to integrate some Node.js into your Drupal site? Here are some possible use cases&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: View realtime stats about your site, maybe from hits to your web server&#039;s access log. Think Google Analytics realtime view. The benefits increase the more people you have concurrently viewing the dashboard, and multiply when you allow changes to the dashboard that need to propagate out to all viewers with the dashboard open.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chat&lt;/strong&gt;: This is the most common example for Node.js. Chat servers need to support many open connections from different users and then update a lot of them when a message is received from one client. And these updates should happen quickly. Some chat protocols even show what the other person is typing as they&#039;re typing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multiplayer games&lt;/strong&gt;: Think MMORPG. Games that are played on a server need to be as realtime as possible otherwise you get problems where different players see different versions of the game world. The server needs to be able to serve many simultaneous connections without taking up ever more server resources, CPU or RAM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Group buying platforms&lt;/strong&gt; where buyers need to be updated when the number of other buyers goes up. This also applies when resources are limited and shoppers need to know when inventory or availability decreases.&lt;/p&gt;
&lt;p&gt;Why do those kinds of projects make sense with Node? They all benefit from high performance despite massive concurrency, realtime or really fast feedback, and the paradigm of event-driven programming on the backend with JavaScript just like in the browser. At least partly it has to do with Websocket in HTML5. Before Websocket, we had to use the hack-ish Comet or long-polling with ajax, but Websocket is the solution that was expressly designed for bidirectional network connections between browser and server. Of course it also has to do with the speed of the V8 JavaScript engine.&lt;/p&gt;
&lt;p&gt;So how might we integrate our Node project into our Drupal site? Fortunately there&#039;s a module for that: https://drupal.org/project/nodejs&lt;/p&gt;
&lt;p&gt;The module uses an independently installed Node.js server that you configure the module to use. Then you have some secret keys set up for the Node server and Drupal to securely communicate with each other. The module comes with some sub-modules with Node servers that can do things like Node-based notifications to Drupal sites and the browsers connected to them. Whatever message you want to broadcast to browsers can be done this way and the browsers can receive them instantly. This could be an actual text message or prices or scores to be updated or whatever data you might want to change in an existing session. And of course the Node server can listen for updates sent from browsers.&lt;/p&gt;
&lt;p&gt;In conclusion, Node.js and Drupal are both web technologies with extremely different use cases but which can also work together for both content-ful and massively interactive websites/web apps. Drupal alone has no chance of doing realtime. By itself, Node.js for a blog or ecommerce site would be like programming games in assembly.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/drupal/drupal-vs-nodejs-or-drupal-nodejs#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech/drupal">Drupal</category>
 <category domain="http://www.saigonist.com/category/tags/javascript">javascript</category>
 <category domain="http://www.saigonist.com/category/tags/nodejs">node.js</category>
 <category domain="http://www.saigonist.com/category/tags/realtime">realtime</category>
 <pubDate>Tue, 25 Dec 2012 09:01:22 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">587 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Backbone.js and Underscore.js JavaScript Frameworks in Drupal 8 Core</title>
    <link>http://www.saigonist.com/tech/drupal/backbonejs-and-underscorejs-javascript-frameworks-drupal-8-core</link>
    <description>&lt;h2&gt;JavaScript as a serious programming language?&lt;/h2&gt;
&lt;p&gt;Unbeknownst to many folks, even those developing websites, JavaScript libraries are hot right now. One reason is that they&#039;re being used on both the frontend (browser) as well as the server via Node.js. And so Drupal 8 includes two new JavaScript libraries, beyond the mainstay of jQuery, which are popular because they rewrite how we use JavaScript, much like Drupal changes how we develop PHP software. They are the Backbone.js and Underscore.js JavaScript frameworks. Since they&#039;re in core, Drupal itself can use them in its own JavaScript code. However, as far as I can tell nothing in core, besides Backbone, is using Underscore yet.&lt;/p&gt;
&lt;p&gt;Backbone.js (http://backbonejs.org/) gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.&lt;/p&gt;
&lt;p&gt;The cool thing about Backbone is it splits the abstract representation from DOM events and HTML rendering in your JavaScript code. This is especially applicable to web apps which constantly get new data via AJAX from a REST server and then update the browser in-page rather than reloading a new URL and rendering the page&#039;s html on the server - for example via Drupal and it&#039;s normal theme/template system. &lt;/p&gt;
&lt;p&gt;If you think of modern web applications like GMail or Trello (which is built on Backbone) they work mostly by not reloading the page but rather with each click of the mouse pulling in data from the server then rendering it somehow in the current page. Backbone is how Rdio, Hulu, and Pitchfork play music and videos continuously across &quot;page loads&quot;. This can also be happening in the background independent of user activity to update content or display status messages or maybe show new email.&lt;/p&gt;
&lt;h2&gt;AJAX vs AHAH&lt;/h2&gt;
&lt;p&gt;In Drupal, you&#039;ll see a lot of references to AHAH. AHAH is basically AJAX except that it&#039;s honest about the X, which in AJAX stands for XML, but in Drupal using AHAH it&#039;s actual HTML which can be inserted into a page. Or it could be JavaScriptON that&#039;s parsed and, using some custom JavaScript logic, turned into HTML by manipulating the DOM. &lt;/p&gt;
&lt;p&gt;Without something like Backbone, this is how AJAXy applications are written in Drupal. We add in #ahah hooks that form elements and their widgets can use (when JavaScript is available.) But the login on the frontend is completely custom and usually is jQuery $.ajax callbacks that use jQuery selectors to find and replace DOM elements manually.&lt;/p&gt;
&lt;p&gt;Backbone.js gives us a framework to represent things we want to update on the frontend in a structured way, with clear separation between the model and rendering. The model language directly maps to the MVC of Ruby on Rails. Then by updating the model, which is all the logic we really want, the visual representation is updated for us. Backbone can call Underscore templates, Mustache.js, or directly insert into the DOM server-side rendered (the old way we just mentioned) HTML.&lt;/p&gt;
&lt;p&gt;So now our AHAH callbacks can return JSON that&#039;s pure data, and allow Backbone to handle rendering the HTML.&lt;/p&gt;
&lt;h2&gt;So what about Underscore.js?&lt;/h2&gt;
&lt;p&gt;Backbone itself depends on Underscore, but Underscore by itself is also useful. For example, see how Conway&#039;s Game of Life can be implemented in JavaScript without if-statements or loops (for, for-in, while) by using Underscore.js and by programming in a more functional style, with functionality similar to Ruby or Python. jQuery, long since included in Drupal core, also offers some functions like $.map or $.each but Underscore is much more complete. Underscore is a JavaScript utility library, not for writing any specific kinds of apps but for making all of your JavaScript code potentially cleaner, simpler, shorter.&lt;/p&gt;
&lt;p&gt;Some _ functions:&lt;br /&gt;
_.each&lt;br /&gt;
map&lt;br /&gt;
reduce&lt;br /&gt;
find&lt;br /&gt;
filter&lt;br /&gt;
every&lt;br /&gt;
pluck&lt;/p&gt;
&lt;p&gt;Underscore also has some array and object helper functions, deep === comparison (isEqual), etc. See it all at http://documentcloud.github.com/underscore/&lt;/p&gt;
&lt;p&gt;You can play around with Underscore.js right now by writing up some code at http://jsfiddle.net/&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/drupal/backbonejs-and-underscorejs-javascript-frameworks-drupal-8-core#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech/drupal">Drupal</category>
 <category domain="http://www.saigonist.com/category/tags/backbonejs">backbone.js</category>
 <category domain="http://www.saigonist.com/category/tags/drupal8">drupal8</category>
 <category domain="http://www.saigonist.com/category/tags/javascript">javascript</category>
 <category domain="http://www.saigonist.com/category/tags/underscorejs">underscore.js</category>
 <pubDate>Thu, 20 Dec 2012 10:22:44 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">584 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Views in Drupal 8 Core</title>
    <link>http://www.saigonist.com/tech/drupal/views-drupal-8-core</link>
    <description>&lt;p&gt;With Views now in Drupal core as of D8 the two most common basic contrib modules from previous versions of Drupal, CCK and Views, are now both part of core.&lt;/p&gt;
&lt;p&gt;CCK, now called Entities, from one perspective is what allows us to create arbitrary database tables through a web interface where we can hold arbitrary data yet work with it through a common interface, and use Drupal goodies like widgets, theming, content creation forms and pages, etc. on them. Views is the complement to this way of creating custom content. Views in core means we can now retrieve or query that arbitrary, custom content in arbitrary and custom ways.&lt;/p&gt;
&lt;p&gt;Views is basically a web UI for an SQL query builder. The fields are the SELECTed database columns and the filters are your WHERE clause. &lt;/p&gt;
&lt;p&gt;This isn&#039;t just a feature for non-technical dudes and non-developers. Just because you can write SQL queries doesn&#039;t mean you should write all of them. Views gives you an interface into various Drupal core and contributed modules and the content they manage, if those modules integrate with Views via hooks. Entities (or CCK) can create a mess of database tables. Sometimes these tables will change structure from under your feet due to some changes via the admin interface. You might not know until your code is broken. But using Views, the query will always be up to date.&lt;/p&gt;
&lt;p&gt;Now that Views is in core, other parts of core could possibly depend on and build on Views, just like many other parts of Drupal core use concepts that came from Entities (CCK). So Drupal core can do a lot more out of the box. And contributed modules can be written to depend on only Entity and Views, which are part of core, and so these new modules won&#039;t have any other 3rd party dependencies. That&#039;s a win for module developers.&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/drupal/views-drupal-8-core#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech/drupal">Drupal</category>
 <category domain="http://www.saigonist.com/category/tags/drupal8">drupal8</category>
 <category domain="http://www.saigonist.com/category/tags/views">views</category>
 <pubDate>Mon, 17 Dec 2012 04:30:57 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">582 at http://www.saigonist.com</guid>
  </item>
  <item>
    <title>Fatal error: Call to undefined function: block_list()</title>
    <link>http://www.saigonist.com/tech/drupal/fatal-error-call-undefined-function-blocklist</link>
    <description>&lt;p&gt;On a Drupal 6 site where I had copied over a database to be used with a freshly checked out tree, I suddenly got this fatal error which stopped any page from loading:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;Fatal error&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; Call to &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;undefined&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; block_list&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;in&lt;/span&gt; ...&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;theme.&lt;span style=&quot;color: #660066;&quot;&gt;inc&lt;/span&gt; on line &lt;span style=&quot;color: #CC0000;&quot;&gt;935&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I&#039;m not sure how it happens. And even after it happens, it&#039;s not always immediately a problem. It can be a problem that manifests itself when migrating or copying a database from one site to another. And for some reason, the exact same database worked on another site.&lt;/p&gt;
&lt;p&gt;In my case, the problem was the filenames for some core modules and themes and you can see if that&#039;s your problem by running this query:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;SELECT count&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; FROM system WHERE filename LIKE &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;%modules/modules%&#039;&lt;/span&gt; OR filename LIKE &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;%themes/themes%&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;If that returns anything (like a filename like &#039;modules/modules/block/block.module&#039;) then you have a problem which you can fix by running:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;UPDATE system SET filename &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; replace&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;themes/themes&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;themes&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
UPDATE system SET filename &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; replace&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;modules/modules&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;modules&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
</description>
     <comments>http://www.saigonist.com/tech/drupal/fatal-error-call-undefined-function-blocklist#comments</comments>
 <category domain="http://www.saigonist.com/category/type/tech/drupal">Drupal</category>
 <category domain="http://www.saigonist.com/category/tags/drupal6">drupal6</category>
 <pubDate>Mon, 17 Dec 2012 04:28:19 +0000</pubDate>
 <dc:creator>tomo</dc:creator>
 <guid isPermaLink="false">581 at http://www.saigonist.com</guid>
  </item>
  </channel>
</rss>