PageRenderTime 71ms CodeModel.GetById 44ms RepoModel.GetById 0ms app.codeStats 0ms

/2013/02/random-name-generator/index.html

https://github.com/treyhunner/treyhunner.github.com
HTML | 330 lines | 204 code | 122 blank | 4 comment | 0 complexity | b75a692655c0e4496a9d1d2c53cb51e0 MD5 | raw file
  1. <!DOCTYPE html>
  2. <!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
  3. <!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
  4. <!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Random Name Generator in Python - Trey Hunner</title>
  8. <meta name="author" content="Trey Hunner">
  9. <meta name="description" content="I&rsquo;ve used multiple websites to generate random names for my test data when
  10. running manual or automated QA tests. Since discovering DuckDuckGo& &hellip;">
  11. <!-- http://t.co/dKP3o1e -->
  12. <meta name="HandheldFriendly" content="True">
  13. <meta name="MobileOptimized" content="320">
  14. <meta name="viewport" content="width=device-width, initial-scale=1">
  15. <link rel="canonical" href="http://treyhunner.com/2013/02/random-name-generator">
  16. <link href="/favicon.png" rel="icon">
  17. <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
  18. <link href="/atom.xml" rel="alternate" title="Trey Hunner" type="application/atom+xml">
  19. <script src="/javascripts/modernizr-2.0.js"></script>
  20. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  21. <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
  22. <script src="/javascripts/octopress.js" type="text/javascript"></script>
  23. <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
  24. <link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
  25. <link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
  26. <script type="text/javascript">
  27. var _gaq = _gaq || [];
  28. _gaq.push(['_setAccount', 'UA-26977066-1']);
  29. _gaq.push(['_trackPageview']);
  30. (function() {
  31. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  32. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  33. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  34. })();
  35. </script>
  36. </head>
  37. <body >
  38. <header role="banner"><hgroup>
  39. <h1><a href="/">Trey Hunner</a></h1>
  40. <h2>web development, programming, open source</h2>
  41. </hgroup>
  42. </header>
  43. <nav role="navigation"><ul class="subscription" data-subscription="rss">
  44. <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
  45. </ul>
  46. <form action="http://google.com/search" method="get">
  47. <fieldset role="search">
  48. <input type="hidden" name="q" value="site:treyhunner.com" />
  49. <input class="search" type="text" name="q" results="0" placeholder="Search"/>
  50. </fieldset>
  51. </form>
  52. <ul class="main-navigation">
  53. <li><a href="/">Blog</a></li>
  54. <li><a href="/blog/archives">Archives</a></li>
  55. <li><a href="/talks">Talks</a></li>
  56. <li><a href="/projects">Projects</a></li>
  57. <li><a href="/about">About</a></li>
  58. </ul>
  59. </nav>
  60. <div id="main">
  61. <div id="content">
  62. <div>
  63. <article class="hentry" role="article">
  64. <header>
  65. <h1 class="entry-title">Random Name Generator in Python</h1>
  66. <p class="meta">
  67. <time datetime="2013-02-17T00:00:00-08:00" pubdate data-updated="true"></time>
  68. | <a href="#disqus_thread"
  69. data-disqus-identifier="http://treyhunner.com">Comments</a>
  70. </p>
  71. </header>
  72. <div class="entry-content"><p>I&rsquo;ve used multiple websites to generate random names for my test data when
  73. running manual or automated QA tests.</p>
  74. <p>Since discovering DuckDuckGo&rsquo;s <a href="https://duckduckgo.com/?q=random+word">random word</a> generation, I&rsquo;ve
  75. <a href="https://duckduckhack.uservoice.com/forums/5168-ideas-for-duckduckgo-instant-answer-plugins/suggestions/2850418-random-name">hoped</a> that someone would make a DuckDuckGo plugin to generate
  76. random names also.</p>
  77. <p>I didn&rsquo;t want to write my own DuckDuckGo plugin yet so I made a Python-powered
  78. command line tool instead using <a href="https://www.census.gov/genealogy/www/data/1990surnames/index.html">1990 Census data</a>.</p>
  79. <p>The program is called <code>names</code> and can be found on <a href="https://github.com/treyhunner/names">Github</a> and <a href="http://pypi.python.org/pypi/names/0.1">PyPI</a>.</p>
  80. <h3>It&rsquo;s really simple</h3>
  81. <p>It&rsquo;s basically just one file currently that&rsquo;s <a href="https://github.com/treyhunner/names/blob/f99542dc21f48aa82da4406f8ce408e92639430d/names/__init__.py">about 40 lines long</a>.
  82. There is only one feature available from the command line currently: generate a
  83. single random full name. There&rsquo;s a few more features if importing as a Python
  84. package: generate random last name or generate random first name (with or
  85. without specifying gender), generate random full name (also without or without
  86. gender).</p>
  87. <p>The random name picker relies on the cumulative frequencies listed in the
  88. included Census data files. Here&rsquo;s the steps that are taken:
  89. 1. A random floating point number is chosen between 0.0 and 90.0
  90. 2. Name file lines are iterated through until a cumulative frequency is found
  91. that is less than the randomly generated number
  92. 3. The name on that line is chosen and returned (or printed out)</p>
  93. <h3>Examples</h3>
  94. <p>Here&rsquo;s how you use it from the command line:</p>
  95. <pre><code>$ names
  96. Kara Lopes
  97. </code></pre>
  98. <p>Here&rsquo;s how you use it as a Python package:</p>
  99. <pre><code>&gt;&gt;&gt; import names
  100. &gt;&gt;&gt; names.get_full_name()
  101. u'Patricia Halford'
  102. &gt;&gt;&gt; names.get_full_name(gender='male')
  103. u'Patrick Keating'
  104. &gt;&gt;&gt; names.get_first_name()
  105. 'Bernard'
  106. &gt;&gt;&gt; names.get_first_name(gender='female')
  107. 'Christina'
  108. &gt;&gt;&gt; names.get_last_name()
  109. 'Szczepanek'
  110. </code></pre>
  111. </div>
  112. <footer>
  113. <p class="meta">
  114. <span class="byline author vcard">Posted by <span class="fn">Trey Hunner</span></span>
  115. <time datetime="2013-02-17T00:00:00-08:00" pubdate data-updated="true"></time>
  116. </p>
  117. <div class="sharing">
  118. <a href="//twitter.com/share" class="twitter-share-button" data-url="http://treyhunner.com/2013/02/random-name-generator/" data-via="" data-counturl="http://treyhunner.com/2013/02/random-name-generator/" >Tweet</a>
  119. <div class="g-plusone" data-size="medium"></div>
  120. </div>
  121. <p class="meta">
  122. <a class="basic-alignment left" href="/2012/12/tmuxstart/" title="Previous Post: tmuxstart">&laquo; tmuxstart</a>
  123. <a class="basic-alignment right" href="/2013/03/pseudorandom.name/" title="Next Post: Random name generator website">Random name generator website &raquo;</a>
  124. </p>
  125. </footer>
  126. </article>
  127. </div>
  128. <aside class="sidebar">
  129. <section>
  130. <h1>Recent Posts</h1>
  131. <ul id="recent_posts">
  132. <li class="post">
  133. <a href="/2014/05/cli-for-finding-drm-free-audiobooks/">CLI for Finding DRM-free Audiobooks</a>
  134. </li>
  135. <li class="post">
  136. <a href="/2014/03/migrating-to-django-1-dot-7/">Supporting Both Django 1.7 and South</a>
  137. </li>
  138. <li class="post">
  139. <a href="/2013/11/tdd-with-django-workshop/">TDD With Django Tutorial</a>
  140. </li>
  141. <li class="post">
  142. <a href="/2013/10/visual-integration-tests-for-django/">Visual Integration Tests for Django</a>
  143. </li>
  144. </ul>
  145. </section>
  146. <section class="aboutme">
  147. <script src="//about.me/embed/treyhunner?image=0&amp;headline=0&amp;bio=0&amp;style=site"></script>
  148. </section>
  149. <section>
  150. <h1>GitHub Repos</h1>
  151. <ul id="gh_repos">
  152. <li class="loading">Status updating...</li>
  153. </ul>
  154. <a href="https://github.com/treyhunner">@treyhunner</a> on GitHub
  155. <script type="text/javascript">
  156. $(document).ready(function(){
  157. if (!window.jXHR){
  158. var jxhr = document.createElement('script');
  159. jxhr.type = 'text/javascript';
  160. jxhr.src = '/javascripts/libs/jXHR.js';
  161. var s = document.getElementsByTagName('script')[0];
  162. s.parentNode.insertBefore(jxhr, s);
  163. }
  164. github.showRepos({
  165. user: 'treyhunner',
  166. count: 4,
  167. skip_forks: false,
  168. target: '#gh_repos'
  169. });
  170. });
  171. </script>
  172. <script src="/javascripts/github.js" type="text/javascript"> </script>
  173. </section>
  174. </aside>
  175. </div>
  176. </div>
  177. <footer role="contentinfo"><p>
  178. Copyright &copy; 2014 - Trey Hunner -
  179. <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
  180. </p>
  181. </footer>
  182. <script type="text/javascript">
  183. var disqus_shortname = 'treyhunner';
  184. var disqus_script = 'count.js';
  185. (function () {
  186. var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
  187. dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
  188. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  189. }());
  190. </script>
  191. <script type="text/javascript">
  192. (function() {
  193. var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
  194. script.src = 'https://apis.google.com/js/plusone.js';
  195. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
  196. })();
  197. </script>
  198. <script type="text/javascript">
  199. (function(){
  200. var twitterWidgets = document.createElement('script');
  201. twitterWidgets.type = 'text/javascript';
  202. twitterWidgets.async = true;
  203. twitterWidgets.src = '//platform.twitter.com/widgets.js';
  204. document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
  205. })();
  206. </script>
  207. </body>
  208. </html>