<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Secret Weapons</title>
	<atom:link href="http://www.softwaresecretweapons.com/jspwiki/feed" rel="self" type="application/rss+xml" />
	<link>http://www.softwaresecretweapons.com/jspwiki</link>
	<description></description>
	<lastBuildDate>Sat, 03 Apr 2010 02:47:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>You in the punchlines of all famous Web 2.0 companies</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/you-in-the-punchlines-of-all-famous-web-2-0-companies</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/you-in-the-punchlines-of-all-famous-web-2-0-companies#comments</comments>
		<pubDate>Sat, 27 Mar 2010 04:02:40 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Fun & Life]]></category>
		<category><![CDATA[Great People]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/?p=182</guid>
		<description><![CDATA[Yes YOU are! Here are the punchlines of famous Web 2.0 companies. &#8220;You&#8221; is in almost everyone of them:


Social Networks:
Facebook: A social utility that connects you with people around you
MySpace: A place for friends


Entertainment:
YouTube: Broadcast Yourself
Weblo: Making earth virtually yours
Second Life: Your World. Your imagination.


Services:
Toronto.com: Be in the Know
Chickadvisor: Love it. Rate It. Share It.
Lavalife: [...]]]></description>
			<content:encoded><![CDATA[<p>Yes YOU are! Here are the punchlines of famous Web 2.0 companies. &#8220;You&#8221; is in almost everyone of them:</p>
<p />
<p />
<p><b>Social Networks:</b></p>
<p>Facebook: A social utility that connects you with people around you</p>
<p>MySpace: A place for friends</p>
<p />
<p />
<p><b>Entertainment:</b></p>
<p>YouTube: Broadcast Yourself</p>
<p>Weblo: Making earth virtually yours</p>
<p>Second Life: Your World. Your imagination.</p>
<p />
<p />
<p><b>Services:</b></p>
<p>Toronto.com: Be in the Know</p>
<p>Chickadvisor: Love it. Rate It. Share It.</p>
<p>Lavalife: Where singles click.</p>
<p />
<p />
<p><b>Games:</b></p>
<p>Zylom: Have fun</p>
<p>Shockwave: Where you’re free to play</p>
<p>WorldWinner: Its only a game. Until you play it.</p>
<p />
<p />
<p><b>Shopping:</b></p>
<p>Shopzilla.com: Discovery made simple</p>
<p>Edeals.com: Changing the way you shop online</p>
<p />
<p />
<p><b>Loyalty:</b></p>
<p>MyPoints.com: Rewarding smart shoppers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/you-in-the-punchlines-of-all-famous-web-2-0-companies/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Splunk</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/splunk</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/splunk#comments</comments>
		<pubDate>Fri, 19 Mar 2010 18:39:52 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Smoke & Mirrors]]></category>
		<category><![CDATA[LANG:C++]]></category>
		<category><![CDATA[LANG:Python]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/?p=330</guid>
		<description><![CDATA[<b>Splunk</b> indexes data from any application, server or network device. It crawls logs, metrics, and other data from applications, servers and network devices and indexes it in a searchable repository from which it can generate graphs, reports and alerts. You can search and analyze billions of events across your software applications and IT infrastructure from one location in real time. It is easy to to troubleshoot your software application problems, crushes or investigate security incidents in minutes. You can monitor your live applications, set notifications and alerts to avoid outages and avoid service degradation. There are two editions Splunk Free and Splunk Enterprise. Free edition is good for managing small to medium web site.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.softwaresecretweapons.com/jspwiki/attach/2010/03/splunk_dashboard_800.png"><img src="http://www.softwaresecretweapons.com/jspwiki/attach/2010/03/splunk_dashboard_800-300x168.png" alt="" title="Splunk" width="300" height="168" class="size-medium wp-image-332" border='none' align='right' style='padding: 8px;'/></a></p>
<p>
<a href='http://www.splunk.com/'><b>Splunk</b></a> indexes data from any application, server or network device. It crawls logs, metrics, and other data from applications, servers and network devices and indexes it in a searchable repository from which it can generate graphs, reports and alerts. You can search and analyze billions of events across your software applications and IT infrastructure from one location in real time. It is easy to to troubleshoot your software application problems, crushes or investigate security incidents in minutes. You can monitor your live applications, set notifications and alerts to avoid outages and avoid service degradation. There are two editions Splunk Free and Splunk Enterprise. Free edition is good for managing small to medium web site.
</p>
<p>
<b>Index Live Data.</b> The more data you index, the more you&#8217;ll unlock about your IT infrastructure. Splunk Universal Indexing connects with every data source, including logs, configurations, traps and alerts, change events, the output of diagnostic commands (virtual and non-virtual), data from APIs and message queues, even multi-line logs from custom applications. Splunk indexing works without the need for specific parsers or adapters to write, maintain or buy. Once indexed, the same set of IT data is made available for troubleshooting, security incident investigations, network monitoring, compliance reporting and other valuables uses.
</p>
<p>
<b>Search and Investigate.</b> Once indexed, you can search for any event in your IT data. Don&#8217;t know what you&#8217;re looking for? Just start typing and Splunk&#8217;s Search Assistant will offer typeahead suggestions based on what’s in your data. You’ll also see suggested searches based on your search history and contextual help so that you can leverage the full power of Splunk’s search language.
</p>
<p>
<b>Modules.</b>Every element you see on a page in Splunk Web is a module, from the search bar to the results. Modules can be customized in XML. Here is customization example for the switcher module (notice expression in red):</p>
<div class="code">
<pre>

&lt;module name="HiddenSearch" group="eps Indexed over time" autoRun="True"&gt;
  &lt;param name="search"&gt;
    <span style="color:red;">index=_internal source=*metrics.log Component=metrics group=per_sourcetype_thruput | timechart avg(eps) by series</span>
  &lt;/param&gt;
  &lt;param name="earliest"&gt;-1h&lt;/param&gt;
    &lt;module name="StaticContentSample"&gt;
      &lt;param name="text"&gt;On this one I've thrown in some static text to describe the elements.&lt;/param&gt;
    &lt;/module&gt;
    &lt;module name="HiddenChartFormatter"&gt;
      &lt;param name="chart"&gt;line&lt;/param&gt;
      &lt;param name="primaryAxisTitle.text"&gt;Sourcetype&lt;/param&gt;
      &lt;param name="secondaryAxisTitle.text"&gt;events per second&lt;/param&gt;
      &lt;param name="legend.placement"&gt;right&lt;/param&gt;
        &lt;module name="JobProgressIndicator"/&gt;
        &lt;module name="FlashChart"&gt;
          &lt;param name="width"&gt;100%&lt;/param&gt;
          &lt;param name="height"&gt;300px&lt;/param&gt;
        &lt;/module&gt;
     &lt;/module&gt;
&lt;/module&gt;
</pre>
</div>
<p>
<b>Interact with Search Results.</b> Splunk also lets you interact with your search results. Zoom in and out on a timeline of your results to quickly reveal trends, spikes and anomalies. Click to drill down into your results and eliminate noise to get to the needle in the haystack. Whether you&#8217;re troubleshooting a ticket or investigating a security alert, you&#8217;ll get to the answer in seconds or minutes rather than hours or days and avoid needing to escalate issues to other groups to view the data you need.
</p>
<p>
<b>Custom Dashboards and Views.</b> Create custom dashboards in minutes with Splunk’s Dashboard Editor and turn your IT data into powerful insight. Dashboards let you organize your information for the needs of different users &#8211; technical and non-technical. Integrate charts, search results and even data from external applications. Build entirely personalized dashboards for management, security analysts, auditors, developers and sysadmins.
</p>
<p>
<b>Add Knowledge.</b> Splunk automatically extracts knowledge from your IT data to help you harness that information. You can add knowledge about events, fields, transactions, patterns and statistics on-the-fly to further enrich IT data and make the system smarter for all users by identifying, naming and tagging fields and datapoints. You can even add information from external asset management databases, configuration management systems and user directories.
</p>
<p>
<b>Monitor and Alert.</b> Any search can be saved and scheduled for continual monitoring and can trigger alerts via email or RSS. You can even kick-off a script to take remedial actions, send an SNMP trap to your system management console or generate a ticket at a service desk. Alerts can be triggered based on a variety of threshold, trend-based conditions and even more complex searches.
</p>
<p>
<b>Report and Analyze.</b> Splunk’s Report Builder helps you easily build advanced graphs and charts, visualize important trends, see highs and lows, summarize top values and report on the frequency of conditions. You can create robust, information-rich reports from scratch without an advanced knowledge of search commands. You can also save reports, integrate them into dashboards and share them with management or other colleagues in secure, read-only formats such as PDF.
</p>
<p>
<b>Build and Deploy IT Apps.</b> Build, package and deploy your own Apps on top of Splunk. The Splunk App Framework enables Customers and Partners to create their own Apps. Deliver a user experience tailored to a specific use case or augment existing vendor technologies. Once built, apply role-based access controls and deploy Apps with a tailored installation experience.
</p>
<p>
<b>Manage Splunk.</b> The Splunk Manager web interface is designed for users and administrators. Users can manage their own objects &#8211; saved searches, reports, event types and dashboards. Administrators can manage the overall installation, system configuration and security access rights. Splunk Deployment Server lets you centrally manage distributed Splunk deployments, which may include multiple Splunk Search Heads, Indexers and Forwarders across machines, datacenters and geographies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/splunk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Fine Foods, Michelin Guide &amp; Entertainment Blog</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/my-fine-foods-michelin-guide-entertainment-blog</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/my-fine-foods-michelin-guide-entertainment-blog#comments</comments>
		<pubDate>Thu, 11 Feb 2010 07:54:28 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Fun & Life]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/?p=284</guid>
		<description><![CDATA[
I call Bay area my home now and I love it!
Not only there is absolutely no show here.
We also have many great restaurants.
Some are even worthy of the MICHELIN Guide!
My creed is a software engineering, not food critiques.
The reviews below are likely to be edgy, but they reflect my feelings.
Whether you like the food or [...]]]></description>
			<content:encoded><![CDATA[<p>
I call Bay area my home now and I love it!<br />
Not only there is absolutely no show here.<br />
We also have many great restaurants.<br />
Some are even worthy of the <a href='http://www.michelinguide.com/us/index.html'>MICHELIN Guide</a>!<br />
My creed is a <a href='/'>software engineering</a>, not food critiques.<br />
The reviews below are likely to be edgy, but they reflect my feelings.<br />
Whether you like the food or not the fact of visiting the place is enough fun in itself!<br />
Just like exotic travel, movies, theatre, opera and stand up comedy &#8211; great food<br />
equals great entertainment.
</p>
<h2><b>Gary Danko</b> &#8211; Michelin *, San Francisco, California</h2>
<p><img title='Glazed Oysters with Osetra Caviar at Gary Danko' src='/jspwiki/attach/2010/02/gdanko.jpg' style='float: right; padding: 12px; padding-right: 0px; padding-top: 0px; height: 200px;'></p>
<p>We have visited <a href='http://www.garydanko.com/'>Gary Danko</a> in January of 2009.<br />
It is flashy place and you should put on your favorite tuxedo and your wife should dust off<br />
her mink coat.<br />
We took 5 courses at $102, plus wine.<br />
While some call Gary Danko a classic California cuisine, I would call it classic French.<br />
Food and service were great.<br />
My favorite dish was Glazed Oysters with Osetra Caviar.<br />
We have reordered it twice.<br />
A lot of fun overall.</p>
<div style='clear: both;' />
<h2><b>The Ivy</b> &#8211; Beverly Hills, California</h2>
<p><img title='The Ivy Beverly Hills' src='/jspwiki/attach/2010/02/the-ivy.jpg' style='float: left; padding: 12px; padding-left: 0px; padding-top: 0px; height: 200px;'></p>
<p>We have visited <a href='http://www.theivyla.com/'>The Ivy</a> during one of our numerous LA trips in 2009.<br />
This is the place from the Get Shorty where the breakfast takes place.<br />
There were no celebs here, but you would feel in the air that everyone was checking everyone else out&#8230;<br />
You see people looking at you and thinking &#8220;Is this celebrity?&#8221;.<br />
Very weird feeling&#8230;<br />
Don&#8217;t worry about the food thought, you don&#8217;t come here for the food.
</p>
<div style='clear: both;' />
<h2><b>Redd</b> &#8211; Michelin *, Yountville, Napa Valley, California</h2>
<p><img title='Redd Yountville from Michelin Guide' src='/jspwiki/attach/2010/02/redd.jpg' style='float: right; padding: 12px; padding-right: 0px; padding-top: 0px; height: 200px;'></p>
<p>We have visited <a href='http://www.reddnapavalley.com/'>Redd</a> in January of 2010.<br />
The French Laundry was not open till end of January and we went here upon great recommendation from my old <a href='http://napaman.com/'>Toronto friends</a>.<br />
We took one of those &#8220;let chef put together a testing menu just for you from<br />
whatever left in the kitchen today&#8221;.<br />
And boy was it great! This was by far the best food I ever had.<br />
Every single dish on the menu was absolutely stunning.<br />
Every single thing!
</p>
<div style='clear: both;' />
<h2><b>Cyrus</b> &#8211; Michelin **, Sonoma County, California</h2>
<p><img title='Foie Gras at Cyrus from Michelin Guide' src='/jspwiki/attach/2010/02/cyrus.jpg' style='float: left; padding: 12px; padding-left: 0px; padding-top: 0px; height: 200px;'></p>
<p>We have visited <a href='http://www.cyrusrestaurant.com/'>Cyrus</a> in January 2010.<br />
It has low lights, private, intimate atmosphere and classic decor.<br />
Black and white truffles were an obsession here.<br />
About half of the plates were excellent.<br />
My favorite was <a href='http://en.wikipedia.org/wiki/Foie_gras'>foie gras</a>.<br />
It was simply incredible.</p>
<div style='clear: both;' />
<h2><b>Coi</b> &#8211; Michelin **, San Francisco, San Francisco</h2>
<p><img title='Coi Restaurant from Michelin Guide' src='/jspwiki/attach/2010/02/coirestaurant.jpg' style='float: right; padding: 12px; padding-right: 0px; padding-top: 0px; height: 200px;'></p>
<p>We have visited <a href='http://coirestaurant.com/'>Coi</a> in January of 2010.<br />
It is a packed tiny place with low ceilings and plain contemporary decor.<br />
The menu here is of <a href='http://en.wikipedia.org/wiki/Molecular_gastronomy'>Molecular gastronomy</a>, which may be a surprise to some.<br />
A lot of things you simply can&#8217;t recognize.<br />
This would have been fine if there was rich flavor to compensate.<br />
Overall, I was open to it, but not a single plate resonated with me.<br />
Some of my friends that came along shared the feelings, comparing Coi to some of the best Molecular gastronomy in Spain.</p>
<div style='clear: both;' />
<h2><b>The French Laundry</b> &#8211; Michelin ***, Yountville, Napa Valley, California</h2>
<p><a href='http://www.frenchlaundry.com/'>The French Laundry</a> is planned now for two years in a row&#8230;</p>
<h2><b>Spago</b> &#8211; Beverly Hills, California</h2>
<p><a href='http://www.wolfgangpuck.com/'>Spago LA</a> is planned for the next LA trip&#8230;</p>
<h2><b>El Bulli</b> &#8211; Michelin ***, The 5 Times Best Restaurant in the World), Catalonia, Spain</h2>
<p><a href='http://www.elbulli.com/'>El Bulli</a> is difficult to get in, but we will&#8230;</p>
<h2><b>Marinella&#8217;s</b> &#8211; Toronto, Canada</h2>
<p><img title="Marinella's Toronto" src='/jspwiki/attach/2010/02/marinella.jpg' style='float: right; padding: 12px; padding-right: 0px; padding-top: 0px; height: 200px;'></p>
<p>My most favorite restaurant in Toronto is <a href='http://www.marinellasrestaurant.com'>Marinella&#8217;s</a>. In 2004-2007 we would come here frequently on the lunch breaks and almost every Thursday on our night out. Owner would serve the table and always knew what we liked. My favorite&#8217;s are Seafood Linguine and Fettuccine di Mare. Best seafood pasta ever! This was at their original Adelaide location&#8230; Hopefully things are as peachy in the new location on College Street.
</p>
<div style='clear: both;' />
<h2><b>La Shish</b> &#8211; Dearborn, Michigan</h2>
<p><img title="La Shish Dearborn" src='/jspwiki/attach/2010/02/la_shish.jpg' style='float: left; padding: 12px; padding-left: 0px; padding-top: 0px; height: 200px;'></p>
<p>While spending my grad school years in Detroit, <a href='http://detroit.citysearch.com/review/5180525'>La Shish</a> was the best treat in town. There are several locations, but the original in Michigan Avenue was always the best. Fattoush salad and chicken shawarma with garlic sauce and rice were the favorite. Fattoush salad is always fresh so that the crisps are crunchy and not saggy. Best Lebanese cuisine ever two full orders at $21 back in 1997!</p>
<div style='clear: both;' />
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/my-fine-foods-michelin-guide-entertainment-blog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unlimited, Cool, Original and Short Domain Names</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/unlimited-cool-original-and-short-domain-names</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/unlimited-cool-original-and-short-domain-names#comments</comments>
		<pubDate>Sat, 30 Jan 2010 23:04:31 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Code Generation]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/unlimited-cool-original-and-short-domain-names</guid>
		<description><![CDATA[The Opportunity



I have many websites and keep building more. Finding cool domain names is constantly a challenge. All three- and four-letter and most meaningful five- and six-letter domain names are already taken. Where to find new names? Here you will learn some simple techniques for creating great domain names.
The Problem
When needed a new domain name, [...]]]></description>
			<content:encoded><![CDATA[<h2>The Opportunity</h2>
<div style='float: right; padding: 0px; padding-left: 12px;'>
<img width="200px" src='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/competition.jpg' alt='competition.jpg' />
</div>
<p>I have many websites and keep building more. Finding cool domain names is constantly a challenge. All three- and <a href='http://dyyo.com/analysis_remaining.php'>four</a>-letter and most meaningful five- and six-letter domain names are already taken. Where to find new names? Here you will learn some simple techniques for creating great domain names.</p>
<h2>The Problem</h2>
<p>When needed a new domain name, I would do it the old fashion way. We would sit down with my wife in front of the computer and would come up with the words and word variations. I would plug each name candidate into a domain name search tool to see if name is taken.</p>
<p>You can do it at almost all hosting companies before you open an account. My favorites today are <a href='http://www.blulehost.com'>BlueHost</a> and <a href='http://www.godaddy.com'>GoDaddy</a>. We used to use go to <a href='http://www.networksolutions.com'>Network Solutions</a>, but after learning about their crazy <a href='http://en.wikipedia.org/wiki/Network_Solutions'>reservation system</a> we stopped.</p>
<p>This manual domain registration approach is no longer effective. It takes too long and almost anything you come up with is already taken. We need a different way to come up with domain names and automate checking name availability.</p>
<h2>The Dictionary of Contemporary Slang</h2>
<p>We often used a Microsoft Word to quickly find the synonyms for words. Open Microsoft Word, type in a word of interest and press Shift-F7. A window comes up that shows the synonyms. This used to work well, but not anymore.</p>
<p>The domain names with the common words in the English vocabulary are already taken. But there are many more colorful words in the English language than what we use daily. Open up <a href='http://www.amazon.com/Dictionary-Contemporary-Slang-Tony-Thorne/dp/0679737065'>The Dictionary of Contemporary Slang</a> and browse it. Alongside all sort of obscenity and vulgar you find here, there are also many short, catchy and colorful words – many are very appropriate for the domain name.</p>
<h2>The Domain Name Generator</h2>
<p>Manually generating word candidates and checking the domain name availability one by one is a big waste of time. It is much more effective to use a domain name generator like <a href='http://www.makewords.com'>MakeWords</a>. It will quickly create numerous name variations and will bulk check domain name availability.</p>
<p><b>Step1</b>. Here is how I do it. Let’s say we are interested in a new domain name around the word “phone”. Got to MakeWord web site and select “Keyword Lists” tab. Type in the “phone” into the “keyword” field, select “Verbs: Research” in the “List” drop down, select “Show only available domains” checkbox and oppress “Search” button. </p>
<p align='center'>
<a href='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step1.png' title='MakeWords Search Form'><img border="0" width="700px" src='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step1.png' alt='MakeWords Search Form' /></a>
</p>
<p><b>Step 2.</b> Review definitions and synonyms. For the word “phone” we have the following: telephone, phones, telephones, cellular, wireless, telephony, telecoms, handset, telecom, cable. Very nice.</p>
<p align='center'>
<a href='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step2.png' title='MakeWords Search Synonyms'><img border="0" width="700px" src='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step2.png' alt='MakeWords Search Synonyms' /></a>
</p>
<p><b>Step 3.</b> Review the list of generated domain names. Notice that total of 34 variations were created and checked, but only 13 are currently available and shown. Notice that at least two candidates: PhoneConduct.com and PhoneExperiment.com are quite good.</p>
<p align='center'>
<a href='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step3.png' title='MakeWords Search Results'><img border="0" width="700px" src='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step3.png' alt='MakeWords Search Results' /></a>
</p>
<p><b>Step 4.</b> Continue to Extended Search, which allows you to combine many other standard nouns, verbs, adjectives, suffixes and affixes to your keyword.</p>
<p align='center'>
<a href='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step4.png' title='MakeWords Extended Search'><img border="0" width="700px" src='http://www.softwaresecretweapons.com/jspwiki/attach/2010/01/step4.png' alt='MakeWords Extended Search' /></a>
</p>
<p>MakeWords is good, but not the only one domain name generator out there. The Web Squeeze names <a href='http://www.thewebsqueeze.com/web-design-articles/top-5-domain-name-generator-websites.html'>five great sites</a> for domain name generation: BustAName.com, DomainExposer, dotomator.com, domain-generator.net and nameboy.com. Many sites for you to choose from, but the concept is the same. Enjoy!</p>
<h2>The Final Word</h2>
<p>Realize that anywhere there is a serious competition &#8211; the computers ought to be used for competitive advantage. It is not possible to compete effectively without a help from the machine. If you are about to enter the competitive environment make sure you have some <a href='/'>Software Secret Weapons</a> that play on your side and help you compete!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/unlimited-cool-original-and-short-domain-names/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Crossword Engine &#8211; Source Released LGPL</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/cword</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/cword#comments</comments>
		<pubDate>Wed, 30 Dec 2009 00:59:43 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Text Mining]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/cword</guid>
		<description><![CDATA[Giving It Away

Almost three years ago I developed JavaScript Crossword Engine.
After hundreds of requests from many of  the readers, I am finally releasing all of the source code to the community under LGPL.
The source code and a short tutorial can be found in oy-cword-1.0.zip.
Enjoy!










Anatomy of JavaScript Crossword

Download and open the ZIP file above.
Find the [...]]]></description>
			<content:encoded><![CDATA[<h2>Giving It Away</h2>
<p>
Almost three years ago I developed <a href='http://www.softwaresecretweapons.com/jspwiki/gangoffoursoftwaredesignpatternsjavascriptcrossword'>JavaScript Crossword Engine</a>.<br />
After hundreds of requests from many of  the readers, I am finally releasing all of the source code to the community under LGPL.<br />
The source code and a short tutorial can be found in <a href='/jspwiki/articles/cword/oy-cword-1.0.zip'>oy-cword-1.0.zip</a>.<br />
Enjoy!
</p>
<div align='center'>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="10814791">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"><br />
</form>
</div>
<p><!-- RSS_REMOVE --></p>
<h2>Anatomy of JavaScript Crossword</h2>
<p>
Download and open the ZIP file above.<br />
Find the file <code>puzzle-1.html</code> and open it up with the editor.<br />
You will now learn how to step-by-step create a puzzle just like this one here:
</p>
<p align='center'>
<a href="http://www.vokamis.com/products/cword/app/enterGame.php?ns=/a/a&#038;or=V&#038;h=128&#038;pub=2&#038;ex=http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=GangOfFourSoftwareDesignPatternsJavaScriptCrossword"><br />
<img border="0" src="http://www.softwaresecretweapons.com/jspwiki/attach?page=GangOfFourSoftwareDesignPatternsJavaScriptCrossword%2Flogo.jpg" style="background-color: #FFFFFF; border: 2px solid rgb(0, 128, 0); margin: 8px; margin-right: 8px; padding: 2px;"/><br />
</a>
</p>
<h2>Give Puzzle HTML Skeleton</h2>
<p>
First thing you will see is a block of HTML that defines the puzzle structural skeleton.<br />
The individual components have unique ids prefixed with &#8220;oyg&#8221;.<br />
You can change this HTML to move different components around.<br />
Make sure that you keep the element ids as they are, because these ids are used to inject and bind runtime objects of the crossword.<br />
The class names are prefixed with &#8220;oy&#8221;.<br />
You are free to change the class names as well to match your website look &#038; feel.</p>
<style>
pre.javascript .comment {
  color: #008000;
}</p>
<p>pre.javascript .string {
  color: #4040FF;
}</p>
<p>pre.javascript .keyword {
  color: #CC3333;
}</p>
<p>pre.javascript .preprocessor {
  color: #4040FF;
}
</style>
<div class='code'>
<pre class='javascript'>
&lt;!--
	here we have oygContext top DOM element to which the play area will be bound;
	the HTML template has more binding sites or various visual parts of the puzzle:
	oygHeader, oygHeaderMenu, oygState, oygPuzzle, oygPuzzleFooter, oygListH, oygListV, oygFooter;
	all element names for binding are prefixed with "oyg"
--&gt;
&lt;div id=<span class="string" >"oygContext"</span> align=<span class="string" >"center"</span> style=<span class="string" >"width:100%;"</span>&gt;
	&lt;table <span class="keyword" >class</span>=<span class="string" >"oyOuterFrame"</span> border=<span class="string" >"0"</span> cellpadding=<span class="string" >"0"</span> cellspacing=<span class="string" >"0"</span>&gt;
		&lt;tr&gt;&lt;td align=<span class="string" >"center"</span>&gt;
			&lt;table <span class="keyword" >class</span>=<span class="string" >"oyFrame"</span> border=<span class="string" >"0"</span> cellpadding=<span class="string" >"0"</span> cellspacing=<span class="string" >"0"</span>&gt;
				&lt;tr&gt;
				&lt;td colspan=<span class="string" >"5"</span>&gt;
				&lt;table <span class="keyword" >class</span>=<span class="string" >"oyFrame"</span> border=<span class="string" >"0"</span> cellpadding=<span class="string" >"0"</span>
					cellspacing=<span class="string" >"0"</span> width=<span class="string" >"100%"</span>&gt;
					&lt;tr <span class="keyword" >class</span>=<span class="string" >"oyHeader"</span>&gt;
						&lt;td <span class="keyword" >class</span>=<span class="string" >"oyHeader"</span>&gt;
							&lt;div id=<span class="string" >"oygHeader"</span>&gt;&lt;/div&gt;
						&lt;/td&gt;
						&lt;td align=<span class="string" >"right"</span>&gt;
							&lt;div id=<span class="string" >"oygHeaderMenu"</span>&gt;&lt;/div&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;
				&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr style=<span class="string" >"height: 4px;"</span>&gt;
					&lt;td colspan=<span class="string" >"5"</span>&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td rowspan=<span class="string" >"3"</span> <span class="keyword" >class</span>=<span class="string" >"oyPuzzleCell"</span> align=<span class="string" >"center"</span> valign=<span class="string" >"top"</span>&gt;
						&lt;div id=<span class="string" >"oygState"</span>&gt;&lt;/div&gt;
						&lt;div <span class="keyword" >class</span>=<span class="string" >"oyPuzzle"</span> id=<span class="string" >"oygPuzzle"</span>&gt;&lt;/div&gt;
						&lt;div <span class="keyword" >class</span>=<span class="string" >"oyPuzzleFooter"</span> id=<span class="string" >"oygPuzzleFooter"</span>&gt;&lt;/div&gt;
					&lt;/td&gt;
					&lt;td <span class="keyword" >class</span>=<span class="string" >"oyListCellDot"</span>&gt;.&lt;/td&gt;
					&lt;td <span class="keyword" >class</span>=<span class="string" >"oyListCell"</span> valign=<span class="string" >"top"</span> id=<span class="string" >"oygListH"</span>&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr style=<span class="string" >"height: 4px;"</span>&gt;
					&lt;td colspan=<span class="string" >"4"</span>&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td <span class="keyword" >class</span>=<span class="string" >"oyListCellDot"</span>&gt;.&lt;/td&gt;
					&lt;td <span class="keyword" >class</span>=<span class="string" >"oyListCell"</span> valign=<span class="string" >"top"</span> id=<span class="string" >"oygListV"</span>&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr style=<span class="string" >"height: 4px;"</span>&gt;
					&lt;td colspan=<span class="string" >"5"</span>&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td colspan=<span class="string" >"5"</span> <span class="keyword" >class</span>=<span class="string" >"oyFooter"</span>&gt;
						&lt;div id=<span class="string" >"oygFooter"</span>&gt;&lt;/div&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/td&gt;&lt;/tr&gt;
	&lt;/table&gt;
	&lt;div id=<span class="string" >"oygStatic"</span> align=<span class="string" >"center"</span> style=<span class="string" >"font-size: 10px; color: #4282B5; font-family: Arial;"</span>&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
</div>
<h2>Include JavaScript &#038; CSS files</h2>
<p>
Secondly, you need to include appropriate JavaScript and CSS files.<br />
You can merge all files into one to reduce loading time.<br />
Please make sure that the order in which individual files are merged is the same as shown below.<br />
You can also load these files in the HEAD section of HTML document.</p>
<div class='code'>
<pre class="javascript">
        &lt;!--
		here we include all oy-cword-1.0 CSS files; all our style class name are prefixed with "oy"
	--&gt;
	&lt;link rel=<span class="string" >"stylesheet"</span> href=<span class="string" >"./oy-cword-1.0/css/base.css"</span> type=<span class="string" >"text/css"</span>&gt;

	&lt;!--
		here we include all oy-cword-1.0 JavaScript files; order is important;
		all the files can be combined into one file to reduce number of separate requests
	--&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyPrologue.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyJsrAjax.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyClue.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyMenu.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyPuzzle.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyServer.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oySign.js"</span>&gt;&lt;/script&gt;
	&lt;script type=<span class="string" >"text/javascript"</span> src=<span class="string" >"./oy-cword-1.0/js/oyMisc.js"</span>&gt;&lt;/script&gt;	
</pre>
</div>
<h2>Configure the puzzle object</h2>
<p>
Next step is to configure the puzzle object.</p>
<div class='code'>
<pre class="javascript">
	&lt;script type=<span class="string" >"text/javascript"</span>&gt;&lt;!--

		<span class="comment" >// </span>
		<span class="comment" >//	here we include our own puzzle; it has to be fully prepared with
		//	all words properly arranged on the grid;</span>
		<span class="comment" >//	currently only one instance of the puzzle can be embedded
		//	into the page, we may fix this in the future</span>
		<span class="comment" >// </span>

		<span class="keyword" >var</span> oygCrosswordPuzzle = <span class="keyword" >new</span> oyCrosswordPuzzle (
		  <span class="string" >"5748185539682739085"</span>,
		  <span class="string" >"./oy-cword-1.0"</span>,
		  <span class="string" >"/a/a"</span>,
		  <span class="string" >"Gang Of Four &amp;#x28;GOF&amp;#x29; Software Design Patterns Crossword"</span>,
		  <span class="string" >"This crossword tests your knowledge of software design patterns."</span>,
		  [
			 <span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"This factory creates an instance of several families of classes"</span>, <span class="string" >
				"Abstract"</span>, <span class="string" >"26f265b96e01081a5ef26a432eda9cff"</span>, 1, 12, 6)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"Separates object construction from its representation"</span>, <span class="string" >
				"Builder"</span>, <span class="string" >"88a259cdfe3cb78a40ec120a63fac540"</span>, 0, 12, 7)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"This method creates an instance of several derived classes"</span>, <span class="string" >
				"Factory"</span>, <span class="string" >"c1fa41b9627f8ea09e5a2a6ee22d6bc5"</span>, 0, 9, 9)
			,<span class="keyword" >new</span> oyCrosswordClue(9, <span class="string" >
				"A fully initialized instance to be copied or cloned"</span>, <span class="string" >
				"Prototype"</span>, <span class="string" >"394941ddf24e90c70298d4c2750db4d9"</span>, 0, 9, 13)
			,<span class="keyword" >new</span> oyCrosswordClue(9, <span class="string" >
				"A class of which only a single instance can exist"</span>, <span class="string" >
				"Singleton"</span>, <span class="string" >"c31a3cbd6db754a0e4ac5fd8e6ec3e54"</span>, 1, 17, 2)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"Match interfaces of different classes"</span>, <span class="string" >
				"Adapter"</span>, <span class="string" >"76fb70e9d93dedce00308eeb0c304412"</span>, 1, 10, 7)
			,<span class="keyword" >new</span> oyCrosswordClue(6, <span class="string" >
				"Separates an object's interface from its implementation"</span>, <span class="string" >
				"Bridge"</span>, <span class="string" >"3a8203786f83c06011189ab882b1894c"</span>, 0, 13, 5)
			,<span class="keyword" >new</span> oyCrosswordClue(9, <span class="string" >
				"A tree structure of simple and composite objects"</span>, <span class="string" >
				"Composite"</span>, <span class="string" >"0de044b990184a9d27dddf0f5e6806af"</span>, 0, 11, 3)
			,<span class="keyword" >new</span> oyCrosswordClue(9, <span class="string" >
				"Add responsibilities to objects dynamically"</span>, <span class="string" >
				"Decorator"</span>, <span class="string" >"d51d27de85dae46db969b1012a317f12"</span>, 0, 1, 19)
			,<span class="keyword" >new</span> oyCrosswordClue(6, <span class="string" >
				"A single class that represents an entire subsystem"</span>, <span class="string" >
				"Facade"</span>, <span class="string" >"815dbf1b993d1c86356056c4ba416fb2"</span>, 1, 3, 0)
			,<span class="keyword" >new</span> oyCrosswordClue(9, <span class="string" >
				"A fine-grained instance used for efficient sharing"</span>, <span class="string" >
				"Flyweight"</span>, <span class="string" >"d87301a9c82ad02e5de19981236773d6"</span>, 0, 2, 11)
			,<span class="keyword" >new</span> oyCrosswordClue(5, <span class="string" >
				"An object representing another object"</span>, <span class="string" >
				"Proxy"</span>, <span class="string" >"a8b79bae14cff23069a1793ba55f2966"</span>, 1, 4, 7)
			,<span class="keyword" >new</span> oyCrosswordClue(14, <span class="string" >
				"A way of passing a request between a chain of objects - chain of __"</span>, <span class="string" >
				"Responsibility"</span>, <span class="string" >"d29967be8acd1416731808c024de639c"</span>, 1, 7, 4)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"Encapsulate a command request as an object"</span>, <span class="string" >
				"Command"</span>, <span class="string" >"f3a3c64bbcdc310786988833c04d1ba4"</span>, 1, 1, 0)
			,<span class="keyword" >new</span> oyCrosswordClue(11, <span class="string" >
				"A way to include language elements in a program"</span>, <span class="string" >
				"Interpreter"</span>, <span class="string" >"d078000250c55212b9584cc691119138"</span>, 0, 0, 5)
			,<span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"Sequentially access the elements of a collection"</span>, <span class="string" >
				"Iterator"</span>, <span class="string" >"1ea9447c03c6840641f5abd5f284c3c2"</span>, 0, 1, 8)
			,<span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"Defines simplified communication between classes"</span>, <span class="string" >
				"Mediator"</span>, <span class="string" >"90740e7f8d0d00a7f7e39ee8b40e85c1"</span>, 0, 2, 16)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"Capture and restore an object's internal state"</span>, <span class="string" >
				"Memento"</span>, <span class="string" >"97e8a2700b6a48922738058cd57cd0ab"</span>, 1, 17, 12)
			,<span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"A way of notifying change to a number of classes"</span>, <span class="string" >
				"Observer"</span>, <span class="string" >"582925e788eda44bdd66bb70b26b488d"</span>, 0, 11, 15)
			,<span class="keyword" >new</span> oyCrosswordClue(5, <span class="string" >
				"Alter an object's behavior when its state changes"</span>, <span class="string" >
				"State"</span>, <span class="string" >"2c7c2e5c518ad7e1469073f6d5aa992a"</span>, 1, 9, 1)
			,<span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"Encapsulates an algorithm inside a class"</span>, <span class="string" >
				"Strategy"</span>, <span class="string" >"30a9b3595abdedff29f2aa6a391b560e"</span>, 0, 9, 1)
			,<span class="keyword" >new</span> oyCrosswordClue(8, <span class="string" >
				"This method defers the exact steps of an algorithm to a subclass"</span>, <span class="string" >
				"Template"</span>, <span class="string" >"550857c3398f86050a550e250cf19b7e"</span>, 0, 11, 17)
			,<span class="keyword" >new</span> oyCrosswordClue(7, <span class="string" >
				"Defines a new operation to a class without change"</span>, <span class="string" >
				"Visitor"</span>, <span class="string" >"1e5fe27c47649dddeb7ed2b2d86bb583"</span>, 1, 5, 13)
		  ],
		  20,
		  20
		);

	--&gt;&lt;/script&gt;
</pre>
</div>
<p>Configuring puzzle involves creating instances of oyCrosswordPuzzle and oyCrosswordClue JavaScript objects.<br />
Let&#8217;s see what parameters are required for each.</p>
<div class='code'>
<pre class="javascript">

<span class="keyword" >function</span> oyCrosswordPuzzle(
	guid,	<span class="comment" >// universal identifier for this puzzle
		// in your system, i.e. "12345"</span>
	home,	<span class="comment" >// relative location of js libraries and image files
		// relative to the main HTML file where puzzle is embedded,
		// i.e. "./oy-cword-1.0"</span>
	ns,	<span class="comment" >// think of it as of your own 'cookie'; you set it and it
		// is carried all the way to the server when the move is submitted, i.e. "67890"</span>
	title,	<span class="comment" >// title of the puzzle, i.e. "World's Best Puzzle"</span>
	desc,	<span class="comment" >// description of the puzzle, i.e. "This is for all puzzle lover's out there..."</span>
	clues,	<span class="comment" >// array of oyCrosswordClue objects for this puzzle</span>
	w,	<span class="comment" >// play area width in cells, i.e. "20"</span>
	h	<span class="comment" >// play area height in cells, i.e. "20"</span>
){...}

<span class="keyword" >function</span> oyCrosswordClue(
	len,		<span class="comment" >// length of the word in symnbols, i.e. for the word
			// "Abstract" this will be 8</span>
	clue,		<span class="comment" >// the text of the word clue given to the user, i.e.
			// for the word "Abstract" this will be "This factory
			// creates an instance of several families of classes"</span>
	answer,		<span class="comment" >// thw word itself, i.e. "Abstract"; maybe be ommited,
			// thus disabling the reveal function</span>
	sign,		<span class="comment" >// MD5 signature of the word itself with puzzle uid,
			// i.e. for the word "Abstract" and uid "5748185539682739085"
			// this will be "26f265b96e01081a5ef26a432eda9cff"</span>
	dir,		<span class="comment" >// word direction; 0 for horizontal and 1 for vertical</span>
	xpos,		<span class="comment" >// zero-based coordinate of the word on X axis, zero on the left,
			// i.e. for the word "Abstract" this will be 12</span>
	ypos		<span class="comment" >// zero-based coordinate of the word on Y axis, zero at the top,
			// i.e. for the word "Abstract" this will be 6</span>
){...}
</pre>
</div>
<div class='code'>
</div>
</p>
<h2>Configure the Crossword Player Behavior</h2>
<p>
Now it&#8217;s time to customize the crossword player behavior.<br />
We can specify publisher information and control whether or not server hassupport for tracking actions and maintaining scores.<br />
Many more things can be customized, but you have to look at the source code.
</p>
<div class='code'>
<pre class="javascript">
&lt;script type=<span class="string" >"text/javascript"</span>&gt;&lt;!--

	<span class="comment" >//</span>
	<span class="comment" >// here we configure puzzle options, callbacks and publisher information</span>
	<span class="comment" >// </span>

	<span class="comment" >// publisher information</span>
	oygCrosswordPuzzle.publisherName = <span class="string" >"by Pavel Simakov"</span>;
	oygCrosswordPuzzle.publisherURL = <span class="string" >"http://www.softwaresecretweapons.com"</span>;

	<span class="comment" >// game exit URL</span>
	oygCrosswordPuzzle.leaveGameURL = <span class="string" >"http://www.cnn.com"</span>;  

	<span class="comment" >// this is how to turn off server support; score submission and action tracking will be disabled</span>
	oygCrosswordPuzzle.canTalkToServer = <span class="keyword" >false</span>;

--&gt;&lt;/script&gt;
</pre>
</div>
<h2>Configure the Server for Action Tracking and High Scores</h2>
<p>
There are couple of things you may want to on the server side: track actions and record scores.<br />
Look at the file <code>submitScore.php</code> and <code>trackaCtion.php</code> files in the /app directory of the ZIP file above.<br />
If
</p>
<h2>Here is a Crossword Player, Where is a Crossword Weaver?</h2>
<p>
Keep in mind that I only present here a Crossword player, not the Crossword weaver.<br />
You may need to use third party (likely commercial) Crossword weaver to create custom crosswords.<br />
I tried to develop a weaver, but it turned out to be very hard problem.<br />
Till date I did not have time to solve it myself, but there is someone who did.<br />
His name is Franz Korntner.
</p>
<p>
In 1996 Franz participated in <a href='http://potm.tripod.com/'>Programmer of the Month (POM)</a> competition.<br />
His crossword weaver <code>jigsaw</code> was a winner of the <a href='http://potm.tripod.com/CROZZLE/results.html'>Crozzle POTM</a> challenge.<br />
The c source code of Franz&#8217;s entry can be found in the file <a href='/jspwiki/articles/cword/jigsaw.c'>jigsaw.c</a>.<br />
You can compile it yourself quite easily on any Linux box like this:
</p>
<pre>$ gcc -o jigsaw.exe jigsaw.cc</pre>
</p>
<p>
The code works very well and is very tight and heavy on recursion.<br />
Given a list of words it will tightly pack them onto a crossword on the fixed size grid.<br />
I was able to understand most of it, but not quite enough for the rewrite.<br />
The problem is that we need to set the target grid size (10&#215;10) before we start layout.<br />
So if it turns out that the words can&#8217;t be layout out in the 10&#215;10 grid, program stops instead of automatically increasing the grid size.
</p>
<p>
Instead of trying to fix the c code, which is difficult, I used different approach.<br />
I simply compiled different versions of the program for the different hard-coded grid sizes.<br />
When trying to layout the crossword, we would try to layout in the smallest grid.<br />
If fails, we try larger grid and so on until success.<br />
Horrible solution, but it works&#8230;<br />
This is how I created the  original <a href='http://www.vokamis.com/products/cword/app/enterGame.php?ns=/a/a&#038;or=V&#038;h=128&#038;pub=2&#038;ex=http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=GangOfFourSoftwareDesignPatternsJavaScriptCrossword'>Gang Of Four Software Design Patterns Java Script Crossword</a>.
</p>
<p>Marc Kummel, another participant of POTM competition, has wrote his crossword weaver in BASIC. His program <a href='http://www.rain.org/~mkummel/stumpers/12may00a.html'>XWORD.BAS</a> took 6th place overall. I have a copy <a href='/jspwiki/articles/cword/xword.zip'>here</a>, and it runs on my Windows XP box just fine.</p>
<p>We start by scoring each word for how many letters it shares with other words in the list, and then we normalize the scores for the word length. The alignment starts with a high-scoring medium-length word, which we put near a corner, and then we build a linked list of crossed-words from that. If it&#8217;s the best so far, we remember it. Then we try another one, and so on. It doesn&#8217;t get any smarter as it works longer, but it randomly breaks its own rules now and then.</p>
<h2>Almost Ready Weaver</h2>
<p>
There is another great crossword weaver by <a href='http://www.startup-something.com/files/cross.html'>Michael Johnson</a>.<br />
It is written in JavaScript itself and runs surprisingly fast.<br />
See how it lays out Gang Of Four words <a href='/jspwiki/articles/cword/startup-something-cross.htm'>here</a>.<br />
Look at the source of the HTML document to see how it is done.
</p>
<p>
While it works great, there is an issue that this algorithm often leaves some words orphaned and not connected to the rest of the word structure.<br />
Refresh the page several times and it eventually finds a fully-connected layout.<br />
Let&#8217;s hope Michael finds fix for this problem soon so both the crossword weaver and the crossword player  are both open-sourced in JavaScript.
</p>
<h2>The Final Word</h2>
<p>
Hundreds of people sent their positive notes about my JavaScript Crossword Engine.<br />
Thank you!
</p>
<p>
It is a real pleasure to have customers that love your product!<br />
Trust me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/cword/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Windows 7 Software RAID: Disk, Partition and Volume Context Menus</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/windows-7-software-raid-disk-partition-and-volume-context-menus</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/windows-7-software-raid-disk-partition-and-volume-context-menus#comments</comments>
		<pubDate>Tue, 15 Dec 2009 06:36:27 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Smoke & Mirrors]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/windows-7-software-raid-disk-partition-and-volume-context-menus</guid>
		<description><![CDATA[The Problem

Windows 7 is out and it is great. It is much less annoying compared to Vista. It
also has some very attractive features to geeks like me.
I am completely sold on Windows 7 and moving over from tried and true Windows XP.


My favorite feature of Windows 7 so far is its software RAID.
It is available [...]]]></description>
			<content:encoded><![CDATA[<h2>The Problem</h2>
<p>
Windows 7 is out and it is great. It is much less annoying compared to Vista. It<br />
also has some very attractive features to geeks like me.<br />
I am completely sold on Windows 7 and moving over from tried and true Windows XP.
</p>
<p>
My favorite feature of Windows 7 so far is its software RAID.<br />
It is available in the Professional edition and above.<br />
Software RAID was available in the past versions, but in the Enterprise, not the Professional editions of Windows.
</p>
<p>
There are couple of usability issues around configuring software  RAID and dynamic disks<br />
on Windows 7.<br />
These caused me some pain and I want to share the solutions with you.
</p>
<h2>The Solution</h2>
<p>
In order to configure the software RAID on Windows 7, open the Windows Explorer, right mouse click on the My Computer<br />
and select Manage.<br />
When Computer Management console opens, navigate to the Disk Management.<br />
Now you should see all the physical disks available on your system, their partitions and logical drives.
</p>
<p>
Configuring RAID starts by creating the dynamic disks, adding volumes, adding mirrors and so on.<br />
The challenge is to find the right menus where these actions are available.
</p>
<h2>Windows 7 Disk Menu</h2>
<p>
If you right click on the Disk area (as shows in orange below) you will enter Disk Menu.<br />
Here you can find actions to create new spanned volume, stripped volume,<br />
mirrored volume. Here you can also convert physical disk to dynamic disk or GPT<br />
disk or to take disk offline.
</p>
<p align='center'>
<img border='0' src='http://www.softwaresecretweapons.com/jspwiki/attach/2009/12/disk-menu.gif' alt='Disk Menu - Windows 7 software RAID' width="80%" />
</p>
<h2>Windows 7 Partition Menu</h2>
<p>
If you right click to the left from the disk area on the partition area of the empty disk<br />
(as shows in orange below) you will enter Partition Menu.<br />
Here you can create different types of volumes spanning the entire partition or<br />
just a part of it. You can create new simple volume, spanned volume, stripped<br />
volume or mirrored volume. Note that there are no actions here to convert to<br />
dynamic  or to GPT disk. These are only available in the Disk Menu as<br />
described above.</p>
<p align='center'>
<img border='0' src='http://www.softwaresecretweapons.com/jspwiki/attach/2009/12/partition-menu.gif' alt='Partition Menu - Windows 7 software RAID' width="80%" />
</p>
<h2>Windows 7 Volume Menu</h2>
<p>
If you right click to the left from the disk area on the existing volume (as shows in orange<br />
below) you will enter Volume Menu.<br />
Here you manipulate the volume. You can extend volume, shrink volume, add<br />
mirror, change drive letter, format or delete volume.&nbsp;
</p>
<p align='center'>
<img border='0' src='http://www.softwaresecretweapons.com/jspwiki/attach/2009/12/volume-menu.gif' alt='Volume Menu - Windows 7 software RAID' width="80%" />
</p>
<h2>The Final Word</h2>
<p>
Now you aware of all the menus you need to know to configure Windows 7 software RAID.<br />
Hopefully, you will not be lost when reading Windows software RAID articles elsewhere.
</p>
<p>
Windows 7 software RAID available in the Professional edition is a major win for<br />
geeks like me.<br />
Originally I was planning to get one of those NAS devices that have hardware<br />
RAID and are attached to the LAN. But this was before I knew the software RAID.
</p>
<p>
When you use hardware RAID on NAS device or in the computer, you risk loosing<br />
data if NAS device or the hardware RAID card blows up. If replacement device of<br />
the same make and model is not available, you are like not being able to restore<br />
the RAID volumes.
</p>
<p>
With Windows 7 software RAID the story is different.<br />
If your box goes, you just get another box, install Windows 7 and pop&nbsp; in your disk into it.<br />
Should work just fine&#8230; Will report how it goes if I ever have to try it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/windows-7-software-raid-disk-partition-and-volume-context-menus/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tim O&#8217;Reilly at PayPal X conference</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/tim-o-reilly-at-paypal-x-conference</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/tim-o-reilly-at-paypal-x-conference#comments</comments>
		<pubDate>Sat, 07 Nov 2009 19:34:56 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/tim-o-reilly-at-paypal-x-conference</guid>
		<description><![CDATA[Tim O&#8217;Reilly gave a very good keynote on PayPal X Innovation conference, talking about Web Operating system.
He nicely called PayPal a first order data source. And as a key advice to PayPal Adaptive Payments team, he mentioned this very nice quote attributed to Josh Bloch: API design is like sex: make one mistake and support [...]]]></description>
			<content:encoded><![CDATA[<p>Tim O&#8217;Reilly gave a very good keynote on PayPal X Innovation conference, talking about Web Operating system.</p>
<p>He nicely called PayPal a first order data source. And as a key advice to PayPal Adaptive Payments team, he mentioned this very nice quote attributed to Josh Bloch: <b>API design is like sex: make one mistake and support it for the rest of your life.</b> Which is so true&#8230;</p>
<p>Google was mentioned a lot of times and in many contexts, especially around abundance of data on the web. Listening to Tim I discovered new aspect to Google strategy. Google seems to both encourages us to produce more data (by giving us tools like Google Maps, Picasa, GMail, &#8230;) and gives us tools to manage this data (Search, Translation, &#8230;). If there was an open market for data, I would call Google &#8220;a market maker&#8221;.</p>
<p>In this context it is clear why <a href='/jspwiki/google’s-quest-for-artificial-intelligence'>Google’s Quest for Artificial Intelligence</a> makes sense. They need new methods to extract, manage, process and correlate data. They also need new methods to input/output data from/into the real world and its players: humans.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/tim-o-reilly-at-paypal-x-conference/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter, LinkedIn to migrate to Scala&#8230; Should you?</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/twitter-linkedin-to-migrate-to-scala-should-you</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/twitter-linkedin-to-migrate-to-scala-should-you#comments</comments>
		<pubDate>Fri, 05 Jun 2009 22:07:48 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Lambda]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/twitter-linkedin-to-migrate-to-scala-should-you</guid>
		<description><![CDATA[

Just came back from the LinkedIn Tech Talk on Scala.
It is very cool for the LinkedIn to organize this type of event for a hundred people or so.
I hope they have this more often with both the interesting speakers and the cool topics.
The food was great as well&#8230;


The talk, or rather moderated question/answer panel, was [...]]]></description>
			<content:encoded><![CDATA[<p><img style='margin: 8px; padding: 8px;' align="right" width='300px' src='http://www.softwaresecretweapons.com/jspwiki/attach/2009/06/social_graph.png' alt='social_graph.png' /></p>
<p>
Just came back from the LinkedIn <a href='http://www.ustream.tv/recorded/1610777'>Tech Talk on Scala</a>.<br />
It is very cool for the <a  href='http://www.LinkedIn.com'>LinkedIn</a> to organize this type of event for a hundred people or so.<br />
I hope they have this more often with both the interesting speakers and the cool topics.<br />
The food was great as well&#8230;
</p>
<p>
The talk, or rather moderated question/answer panel, was about Scala.<br />
My <a href='http://www.softwaresecretweapons.com/jspwiki/want-your-own-domain-specific-languages-in-java-use-scala'>first experience with Scala</a> was about 18 month ago.<br />
At that time there was not a single book published.<br />
Today I felt that Scala is quite mature.<br />
There are several books out.<br />
Several large sites are trying to run on Scala with the positive gains in the levels of abstraction,  concurrency control and the positive operational experience.
</p>
<p>
It started with Martin Odersky, who gave a status report on Scala.<br />
He mentioned, on the developer productivity front, that people report 2:1 savings in the number of lines of code in Scala vs. Java.<br />
He further reaffirmed that the languages directly addressing the concurrent programming have to have large functional component to them, because it is easy to scale when you have a good grasp on immutable state and sideeffects.<br />
My personal favorites &#8211; the named and the default arguments are now in Scala 2.8.
</p>
<p>
Sounds like Scala is at use in Twitter, according to the second panelist and Twitter&#8217;s systems architect Nick Kallen.<br />
Nick tried not to disclose anything confidential about the algorithmic details.<br />
This made it difficult for me to really understand how they use Scala at Twitter except the general direction that they do use Scala to reimplement Twitter&#8217;s Social  Graph Services.<br />
When asked why Scala got chosen after all, he pragmatically mentioned that in addition to the language niceties, Scala actually runs of JVM, which has  superior runtime capabilities and management interfaces.<br />
Martin also mentioned that they did originally implemented Scala on top of Java because reimplementing enterprise strength garbage collection may be a much more serious undertaking, then writing a new language.<br />
There was a question why not use Haskell for the Twitter, but it was decisively put to rest by Nick.
</p>
<p>
The third panelist, David Pollak of <a href='http://liftweb.net/'>Lift</a>, was a nice addition to the mix.<br />
He did not seem like a purist or a language geek and maybe because of that :) he had the least talk time.<br />
He did mention one of the interactive game sites running on Scala/Lift and it sounded like the performance held up quite well.<br />
He kinda implied that if Twitter used  Lift it would not have any performance problems. Funny&#8230;
</p>
<p>
Having the moderator from LinkedIn, some of the angles the questions were phrased and the whole fact that LinkedIn organized the talk on Scala is interesting.<br />
Why would Twitter and LinkedIn, both having the large social graphs in the core of their systems, both choose to embrace Scala?<br />
Do they really believe that language like Scala brings sufficiently more scalable abstraction mechanism to improve social graph computations?
</p>
<p>
Don&#8217;t know&#8230;<br />
But don&#8217;t forget that Scala is not the only solution for large scale concurrency.<br />
I just attended a Hadoop talk on Java One&#8230;<br />
What if <a href='http://hadoop.apache.org/pig/'>Hadoop Pig</a> proves to be effective SQL-like language that automatically optimizes and runs on the Map/Reduce infrastructure?<br />
Would not this work as well?<br />
It might, unless the upper management is offended by the <b>Pig  Latin</b> technology and choose sexy name <b>Scala</b> for the aesthetic reasons.
</p>
<p>
What about you?<br />
What&#8217;s your take on Scala and systems vs. languages?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/twitter-linkedin-to-migrate-to-scala-should-you/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Funny Software Engineering Videos</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/funny-software-engineering-videos</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/funny-software-engineering-videos#comments</comments>
		<pubDate>Sun, 31 May 2009 20:11:06 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Great People]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/funny-software-engineering-videos</guid>
		<description><![CDATA[



















]]></description>
			<content:encoded><![CDATA[<div width='100%' align='center'>
<table border="0" border-collapse="collapse">
<tr>
<td>
<?php sswEmbedVideo('http://www.youtube-nocookie.com/v/l1wKO3rID9g'); ?>
</td>
<td>
<?php sswEmbedVideo('http://www.youtube-nocookie.com/v/pQHX-SjgQvQ'); ?>
</td>
</tr>
<tr>
<td><?php sswEmbedVideo('http://www.youtube-nocookie.com/v/1lqxORnQARw'); ?></td>
<td><?php sswEmbedVideo('http://www.youtube-nocookie.com/v/nqYqQUfPCp8'); ?></td>
</tr>
<tr>
<td><?php sswEmbedVideo('http://www.youtube-nocookie.com/v/L2zqTYgcpfg'); ?></td>
<td><?php sswEmbedVideo('http://www.youtube-nocookie.com/v/m_MaJDK3VNE'); ?></td>
</tr>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/funny-software-engineering-videos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven POM dependencies in GraphML</title>
		<link>http://www.softwaresecretweapons.com/jspwiki/maven-pom-dependencies-in-graphml</link>
		<comments>http://www.softwaresecretweapons.com/jspwiki/maven-pom-dependencies-in-graphml#comments</comments>
		<pubDate>Fri, 01 May 2009 05:51:55 +0000</pubDate>
		<dc:creator>Pavel Simakov</dc:creator>
				<category><![CDATA[Code Linguine]]></category>
		<category><![CDATA[Linguine Maps]]></category>
		<category><![CDATA[Meta-Modeling]]></category>
		<category><![CDATA[Text Mining]]></category>

		<guid isPermaLink="false">http://www.softwaresecretweapons.com/jspwiki/maven-pom-dependencies-in-graphml</guid>
		<description><![CDATA[The Problem

I have to investigate and get familiar with a large Java framework.
It consists of many different modules glued together with Maven.
The Maven POM files are everywhere and it is difficult to read them.
Are there any tools that can help me learn the content of this large Maven repository?


Yes! The Dependency Analyzer
is a great tool [...]]]></description>
			<content:encoded><![CDATA[<h2>The Problem</h2>
<p>
I have to investigate and get familiar with a large Java framework.<br />
It consists of many different modules glued together with <a href="http://maven.apache.org/">Maven</a>.<br />
The Maven POM files are everywhere and it is difficult to read them.<br />
Are there any tools that can help me learn the content of this large Maven repository?
</p>
<p>
Yes! The <a href="http://www.jfrog.org/sites/dep-analyzer/latest/">Dependency Analyzer</a><br />
is a great tool by Dror Bereznitsky just for this purpose.<br />
The tool walks the Maven dependencies for your project, pretty graphs come out at the other end.<br />
For example: here is the Apache Ant 1.7.1 POM dependency graph:
</p>
<p align="center"><a href="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/ant-171.png"><img width="600" src="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/ant-171.png" border="0"/></a></p>
<p>
What is missing is the ability to export the graph and I need the data exported for further analysis.<br />
In this post I will show you how to patch Dependency Analyzer to add GraphML export.
</p>
<h2>The Solution</h2>
<p>
The internal design of Dependency Analyzer 1.1-rc1 was very clean.<br />
The Dror Bereznitsky and a team did a great job of putting together a text book quality Swing application.
</p>
<p>
It was necessary to patch only two files: <b>org.jfrog.maven.viewer.common.jung.JungHelper</b> and <b>org.jfrog.maven.viewer.ui.command.SaveAsCommand</b>.<br />
I have added a new file format &#8220;graphml&quot; to the SaveAsCommand and hooked up the GraphML generation<br />
to the JungHelper.<br />
To see it working, open the desired POM file into the Dependency Analyzer.<br />
Go to File | Save As menu and choose a file name. Press Enter.<br />
Here is the <a href="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/ant-1.7.1.graphml">ant-1.7.1.graphml</a> produced.
</p>
<p>
The <a href="http://en.wikipedia.org/wiki/GraphML">GraphML</a> is very convenient format for exporting graphs.<br />
My favorite tool for viewing and laying out the graphs in GraphML is <a href="http://www.yworks.com/en/products_yed_about.html">yEd</a>.<br />
Simply open the ant-1.7.1.graphml file above using yEd.<br />
Go to Layout | Hierarchical | Classic and press Enter.<br />
Here is the layout:
</p>
<p align="center"><a href="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/yed-ant-171.png"><img width="800" src="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/yed-ant-171.png" border="0"/></a></p>
<h2>The Download</h2>
<p>
You can download the <a href="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/dependency-analyzer-1.1-rc1-src.zip">source</a> for the patch described above.<br />
I also have a new distribution of Dependency Analyzer with the above changes <a href="http://www.softwaresecretweapons.com/jspwiki/attach/2009/05/dependency-analyzer-1.1-rc1.zip">dependency-analyzer-1.1-rc1.zip</a>.
</p>
<h2>The Final Word</h2>
<p>
Maven kicks butt.<br />
Compared to Ant, it has much more metadata about the artifacts and their source, build, test and deploy<br />
dependencies.<br />
But dude&#8230; Do we really need 1,000,000 lines of code just to run Ant? Scarry&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwaresecretweapons.com/jspwiki/maven-pom-dependencies-in-graphml/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
