<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Development on Squid's Blog</title><link>https://gigasquidsoftware.com/categories/development/</link><description>Recent content in Development on Squid's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 02 Nov 2013 14:51:00 +0000</lastBuildDate><atom:link href="https://gigasquidsoftware.com/categories/development/atom.xml" rel="self" type="application/rss+xml"/><item><title>Embrace and Reach</title><link>https://gigasquidsoftware.com/blog/2013/11/02/embrace-and-reach/</link><pubDate>Sat, 02 Nov 2013 14:51:00 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2013/11/02/embrace-and-reach/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="http://farm1.staticflickr.com/99/290760357_01392a3f51_n.jpg"&gt;&lt;/p&gt;
&lt;p&gt;One of the wonderful things about being a technologist today, is
to be part of an industry that is bubbling over with new and
exciting things. It can be exhilarating and overwhelming. How can we
try and do all these great new things? Of course, it is not
sensible to simply drop whatever you are using and continually chase
after the newest tech. Nor is steadfastly staying in one place and
refusing to accept that there is a better way of doing things. The
challenge is to absorb, identify, and synthesize both good of the
what we are currently doing and the new stuff too. We want to embrace and continue the good things that
are working for us and reach for the new technologies that will propel
us farther in the future.&lt;/p&gt;</description></item><item><title>Controlling Multiple Drones with Clojure and Goals and Beliefs</title><link>https://gigasquidsoftware.com/blog/2013/09/05/controlling-multiple-drones-with-clojure-and-goals-and-beliefs/</link><pubDate>Thu, 05 Sep 2013 15:35:00 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2013/09/05/controlling-multiple-drones-with-clojure-and-goals-and-beliefs/</guid><description>&lt;h2 id="how-to-control-multiple-drones-with-clojure"&gt;How to Control Multiple Drones with Clojure&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://github.com/gigasquid/clj-drone"&gt;clj-drone&lt;/a&gt; library now
has multi-drone support! You can now send multiple drones commands,
receive their navigation data, and even have them perform their
actions autonomously with goals and beliefs.&lt;/p&gt;
&lt;p&gt;It takes a bit of extra setup to control more than one drone. We need to assign them each an
ip and get them talking as an adhoc network.
&lt;a href="https://twitter.com/jimweirich"&gt;Jim Weirich&lt;/a&gt; creating a neat little
script to run on the drone to do just this. Here are the
instructions:&lt;/p&gt;</description></item><item><title>Babar - A Little Language with Speech Acts for Machines</title><link>https://gigasquidsoftware.com/blog/2013/06/04/babar-a-little-language-with-speech-acts-for-machines/</link><pubDate>Tue, 04 Jun 2013 18:57:52 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2013/06/04/babar-a-little-language-with-speech-acts-for-machines/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="http://farm8.staticflickr.com/7352/9925781735_77dfa3157b_o.jpg"&gt;&lt;/p&gt;
&lt;h2 id="preface-a-gentle-obsession"&gt;Preface: A Gentle Obsession&lt;/h2&gt;
&lt;p&gt;About a year ago, I picked up John McCarthy&amp;rsquo;s paper on &lt;a href="http://web.archive.org/web/20131014084908/http://www-formal.stanford.edu/jmc/elephant/elephant.html"&gt;Elephant 2000&lt;/a&gt;. I have to admit that I only understood about 10% of it. But I was so intrigued by the ideas that it sent me on a quest. I re-read it numerous times, slept with it under my pillow, and finally decided that I needed to read his other papers to get an insight into his thoughts. I began a considered effort with &lt;a href="http://gigasquidsoftware.com/blog/2012/09/18/7-john-mccarthy-papers-in-7-days-prologue/"&gt;Seven McCarthy Papers in Seven Weeks&lt;/a&gt;. It ended up taking about three months, rather than seven 7 weeks. Again I came back to Elephant 2000. I began to understand more as other ideas and concepts sunk in, like &lt;a href="http://web.archive.org/web/20131014084908/http://www-formal.stanford.edu/jmc/ascribing/ascribing.html"&gt;ascribing beliefs and goals to machines&lt;/a&gt;. But to really explore the ideas, I really wanted to try to implement parts of Elephant in my own programming language. The problem was, having no formal training in computer science, (my background is Physics), I had never created a programming language before. The stars aligned and I found the &lt;a href="https://github.com/Engelberg/instaparse"&gt;Instaparse&lt;/a&gt; Clojure library. The result is &lt;a href="https://github.com/gigasquid/babar"&gt;Babar&lt;/a&gt;, a language designed to explore communication with machines via &lt;a href="http://en.wikipedia.org/wiki/Speech_act"&gt;Speech Acts&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>7 John McCarthy Papers in 7 weeks – #1 How My Thermostat has Beliefs and Goals</title><link>https://gigasquidsoftware.com/blog/2012/09/20/7-john-mccarthy-papers-in-7-weeks-%231-how-my-thermostat-has-beliefs-and-goals/</link><pubDate>Thu, 20 Sep 2012 13:03:36 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2012/09/20/7-john-mccarthy-papers-in-7-weeks-%231-how-my-thermostat-has-beliefs-and-goals/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="http://farm1.staticflickr.com/199/447335691_8a933251ab_n.jpg"&gt;&lt;/p&gt;
&lt;h2 id="ascribing-mental-qualities-to-machines-or-how-my-thermostat-has-beliefs-and-goals"&gt;Ascribing Mental Qualities to Machines or How My Thermostat has Beliefs and Goals&lt;/h2&gt;
&lt;p&gt;After reading John McCarthy&amp;rsquo;s paper this week &lt;a href="http://web.archive.org/web/20131014084908/http://www-formal.stanford.edu/jmc/"&gt;Ascribing Mental Qualities to Machines&lt;/a&gt;, I can honestly say that it has changed the way I think about programs and most certainly thermostats. For you see, I realize now that my thermostat has beliefs and goals. No, it does not have beliefs about what the weather is going to be tomorrow, or when the next George R.R. Martin book is going to come out. But it does have beliefs. It has three of them to be exact:&lt;/p&gt;</description></item><item><title>7 John McCarthy Papers in 7 weeks - Prologue</title><link>https://gigasquidsoftware.com/blog/2012/09/19/7-john-mccarthy-papers-in-7-weeks-prologue/</link><pubDate>Wed, 19 Sep 2012 01:50:08 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2012/09/19/7-john-mccarthy-papers-in-7-weeks-prologue/</guid><description>&lt;p&gt;In the spirit of &lt;a href="http://pragprog.com/book/btlang/seven-languages-in-seven-weeks"&gt;Seven Languages in Seven Weeks&lt;/a&gt;, I have decided to embark on a quest. But instead of focusing on expanding my mindset with different programming languages, I am focusing on trying to get into the mindset of &lt;a href="http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)"&gt;John McCarthy&lt;/a&gt;, father of LISP and AI, by reading and thinking about seven of his &lt;a href="http://web.archive.org/web/20131014084908/http://www-formal.stanford.edu/jmc/"&gt;papers&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="why"&gt;Why?&lt;/h3&gt;
&lt;h4 id="get-out-of-your-box"&gt;Get out of your box&lt;/h4&gt;
&lt;p&gt;If you are comfortable, you are not challenging yourself to grow. You are doomed to stay in your same mindset and your little box and your world gets smaller. As an Object Oriented programmer, I was happy in my little box. Then one day, I discovered Clojure and Functional Programming and my world became bigger and richer because of it. I hope to glean a similar box expansion, by exploring the thoughts of McCarthy. Especially, since I have the nagging suspicion that we are somehow doing programming &lt;a href="http://www.catonmat.net/blog/wp-content/uploads/2008/12/john-mccarthy-programming-wrong.jpg"&gt;&amp;ldquo;completely wrong.&amp;rdquo;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Software Bathtub Curve</title><link>https://gigasquidsoftware.com/blog/2012/04/12/the-software-bathtub-curve/</link><pubDate>Thu, 12 Apr 2012 04:02:09 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2012/04/12/the-software-bathtub-curve/</guid><description>&lt;figure class="left"&gt;
&lt;img loading="lazy" src="http://farm4.staticflickr.com/3767/9925846584_3bf93b2cca.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;I have had my Dualit Toaster for close to 19 years now. It has never broken down. It has reliably toasted my bread every morning with the mere turn of a dial.&lt;/p&gt;
&lt;p&gt;I have had my dishwasher for 1 year and 2 weeks. It has all sorts of cool buttons and modes so that I can customize my wash cycles to suit my dishes and my mood. Precisely two weeks after the warranty expired, it began to blink randomly and stopped working. The control board had died. This was not an isolated incident. I have gone through many such failures with other appliances, my refrigerator, stove and washing machine.&lt;/p&gt;</description></item><item><title>Code Mash 2012: Bacon for the Brain</title><link>https://gigasquidsoftware.com/blog/2012/01/14/code-mash-2012-bacon-for-the-brain/</link><pubDate>Sat, 14 Jan 2012 21:10:14 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2012/01/14/code-mash-2012-bacon-for-the-brain/</guid><description>&lt;p&gt;I was delighted to see first hand, why 1200 &lt;a href="http://codemash.org/"&gt;CodeMash&lt;/a&gt; tickets sold out in 20 minutes. It was full of awesome. This was easily the biggest conference that I have ever attended. It was held in the luxurious and fun Kalahari conference center and ran as smooth as silk, expertly supported by a volunteer staff.&lt;/p&gt;
&lt;p&gt;One of the things that I really appreciated about the conference was the diversity of people from different technology backgrounds. There were many developers from .NET, Java, Ruby, and Python worlds all coming together to swap stories, share ideas and learn something new. It created an opportunity for everyone to get out of their box and their comfort zone. I was particularly impressed by one woman that I talked to, who came from the .NET world but had made a conscious decision to not attend any .NET talks at all.&lt;/p&gt;</description></item><item><title>On Men in Ballet and Women in Software Development</title><link>https://gigasquidsoftware.com/blog/2011/08/20/on-men-in-ballet-and-women-in-software-development/</link><pubDate>Sat, 20 Aug 2011 20:15:02 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2011/08/20/on-men-in-ballet-and-women-in-software-development/</guid><description>&lt;p&gt;Long ago,  I worked for a couple years as a professional ballet dancer with a small company. Reflecting on this, I have an interesting perspective of working in field were woman are the majority and also one where women are in the minority. I thought I would dedicate this post a few observations of similarities between men in ballet and women in software development.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Men in Ballet&lt;/strong&gt;
&lt;figure class="left"&gt;
&lt;img loading="lazy" src="http://farm4.staticflickr.com/3786/9925846994_2673f8183c_o.jpg"/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Have some lame people think ballet is just for girls and make assumptions about them based on cultural stereotypes&lt;/p&gt;</description></item><item><title>Project-Grep : Another Sharp Tool for your Emacs</title><link>https://gigasquidsoftware.com/blog/2011/08/13/project-grep-another-sharp-tool-for-your-emacs/</link><pubDate>Sat, 13 Aug 2011 18:31:20 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2011/08/13/project-grep-another-sharp-tool-for-your-emacs/</guid><description>&lt;p&gt;Since joining EdgeCase, I have shelved my heavy Intellij and Eclipse IDEs in favor of Emacs. Overall, I have enjoyed moving to the light-weight but powerful editor. There is one thing that I did miss from my IDEs – that was the ability to search projects for string occurrences and being able to click navigate to them through the editor. Fortunately, one of the strengths of Emacs is it&amp;rsquo;s infinite configurability and extensibility. Even more fortunate, one of the guys in our shared office, &lt;a href="http://twitter.com/#!/dougalcorn"&gt;Doug Alcorn&lt;/a&gt; of Gaslight Software, had already written just this feature for his Emacs. I installed it and was so pleased with it, that I thought I would share …&lt;/p&gt;</description></item><item><title>Super Easy Clojure Web Apps with Heroku Cedar</title><link>https://gigasquidsoftware.com/blog/2011/06/11/super-easy-clojure-web-apps-with-heroku-cedar/</link><pubDate>Sat, 11 Jun 2011 23:57:52 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2011/06/11/super-easy-clojure-web-apps-with-heroku-cedar/</guid><description>&lt;p&gt;Deploying Clojure apps with a single command to the cloud is now possible with Heroku Cedar and let me tell you, it is pure joy.&lt;/p&gt;
&lt;p&gt;I experimented with this the other day by creating a Compojure web application that compares the followers that two twitter users have in common.&lt;/p&gt;
&lt;p&gt;Here is the secret sauce you need to push your apps to Heroku:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;**Procfile: **
You need to create a file in the root of your directory that contains the way to start up your application:&lt;/p&gt;</description></item><item><title>Clojure Dictionary Challenge</title><link>https://gigasquidsoftware.com/blog/2010/10/12/clojure-dictionary-challenge/</link><pubDate>Tue, 12 Oct 2010 03:11:52 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/10/12/clojure-dictionary-challenge/</guid><description>&lt;p&gt;There was a question today on Twitter about how to go about finding the word with the most consecutive consonants in the dictionary file. Of course, being a typical developer, when presented with a problem – I am usually not satisfied until I find a solution. Since I am interested in learning Clojure, I thought I would try to solve this problem functionally.&lt;/p&gt;
&lt;p&gt;Armed with Stuart Halloway&amp;rsquo;s “Programming Clojure” and trusty Google by my side, I embarked on my first Clojure mission.&lt;/p&gt;</description></item><item><title>Agile Software Lessons from Ballet</title><link>https://gigasquidsoftware.com/blog/2010/09/13/agile-software-lessons-from-ballet/</link><pubDate>Mon, 13 Sep 2010 00:09:15 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/09/13/agile-software-lessons-from-ballet/</guid><description>&lt;p&gt;&lt;img alt="Swan Lake" loading="lazy" src="http://lh3.ggpht.com/_ebGqcJ7qdjk/SimNpSOosaI/AAAAAAAACcI/lr-4YdYyz3E/kirov-swan-lopatkina.jpg"&gt;
_Photo by Valentin Baranovsky - Uliana Lopatkina and Danila Korsuntsev. _&lt;/p&gt;
&lt;p&gt;Many moons ago, I spent a couple of years dancing with a ballet company. You wouldn&amp;rsquo;t think that much of that experience would transfer to development projects, but I give you an example in partnership, the can be applicable straight from the ballet world to the software world. The partnership in question is the one between the lead ballerina and the lead male dancer called a “pas de deux.” In many ballets, this dance involves the ballerina being a swan/princess and the male dancer being a prince/sorcerer. But in my example, it really doesn&amp;rsquo;t matter that much. The only important point is that they are the best dancers in the whole company.&lt;/p&gt;</description></item><item><title>The Smart Not-So-Smart Wave Function</title><link>https://gigasquidsoftware.com/blog/2010/08/18/the-smart-not-so-smart-wave-function/</link><pubDate>Wed, 18 Aug 2010 01:58:04 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/08/18/the-smart-not-so-smart-wave-function/</guid><description>&lt;p&gt;I am cruising along in my morning. I have a cup of tea in my hand and a good outlook on my tasks at hand. The code is flowing off of my fingertips. I am feeling pretty smart. Then the cloud moves in and the code darkens. I am at a roadblock. I try to google, I try debugging, I try calling in my fellow developers to see if they can see what the problem is&amp;hellip; no luck. I bang my head unproductively for another hour and then go home. A fresh start in the morning and a fresh cup of day move me in a new direction, somehow I stumble upon the answer and quite frankly, it was so simple I can&amp;rsquo;t believe I missed it. I feel not so smart. This is one of the many smart-not-so-smart waves that rule the life of a developer.&lt;/p&gt;</description></item><item><title>Open Source Wednesdays</title><link>https://gigasquidsoftware.com/blog/2010/07/30/open-source-wednesdays/</link><pubDate>Fri, 30 Jul 2010 02:54:33 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/07/30/open-source-wednesdays/</guid><description>&lt;p&gt;I have always wanted to contribute to Open Source. I have reaped the benefits of using Open Source packages throughout the years, I sincerely want to give back. What has been stopping me all this time? Lack of time is my main excuse. I have two small children and by the time I clean up from dinner and get them bathed and off to bed, there is little time left to code. I tend to use this excuse for lots of other tasks that I avoid around the house, like closet cleaning, reorganizing the garage, etc … But an excuse is exactly what it is.&lt;/p&gt;</description></item><item><title>No Fluff Just Stuff - Columbus 2010</title><link>https://gigasquidsoftware.com/blog/2010/07/01/no-fluff-just-stuff-columbus-2010/</link><pubDate>Thu, 01 Jul 2010 18:04:53 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/07/01/no-fluff-just-stuff-columbus-2010/</guid><description>&lt;p&gt;I attended my first NFJS conference last weekend up in Columbus. Overall, it was an excellent experience. The speakers were all first rate and I got a chance to hang out and meet some other like-minded people who are interested in giving up a weekend to learn new technologies and generally just geek-out.&lt;/p&gt;
&lt;p&gt;The main technologies that stood out to me are concurrency and semantic web. Concurrency and functional programming are becoming more and more important with the ability to scale out on the server, rather then scale up (horizontal vs vertical scaling). There is always some threshold to the amount of power that you can throw at one system. However, that limit disappears if you can spread the load out across many servers. Java runs into some real problems with threads and concurrency. For this reason, the functional languages like Scala, Erlang, and Clojure are really starting to shine. I was so impressed with Clojure, that I picked up a book for my “play around and take a look at” tech stack.&lt;/p&gt;</description></item><item><title>Not ready to throw the Object Model out with the Bath Water</title><link>https://gigasquidsoftware.com/blog/2010/06/27/not-ready-to-throw-the-object-model-out-with-the-bath-water/</link><pubDate>Sun, 27 Jun 2010 02:38:46 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/06/27/not-ready-to-throw-the-object-model-out-with-the-bath-water/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="http://farm4.staticflickr.com/3833/9925947563_50031edb46_o.jpg"&gt;&lt;/p&gt;
&lt;p&gt;I have been attending talks on functional programming languages at NFJS over the past couple of days. I have to admit it, I am really taken with the power of Scala and Clojure to tackle problems that Java cannot handle. I even purchased a Clojure book to add to my &amp;ldquo;languages to take a good hard look at&amp;rdquo; stack. I really believe that it is true that the functional languages have a lot to offer.&lt;/p&gt;</description></item><item><title>Customer Zone + Developer Zone = Most Excellent Zone</title><link>https://gigasquidsoftware.com/blog/2010/06/09/customer-zone--developer-zone-most-excellent-zone/</link><pubDate>Wed, 09 Jun 2010 17:08:52 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/06/09/customer-zone--developer-zone-most-excellent-zone/</guid><description>&lt;p&gt;I think most developers are familiar with getting in the “zone”. The place you get when you are totally in focus and in the flow of development. The code comes quickly, the ideas are together and everything just seems to work. It is the sweet spot of productivity. I have found the best way for me to get into the zone is to put on my headphones, arrange some uninterrupted time and just start going.&lt;/p&gt;</description></item><item><title>Feature vs Bug - Does it Matter?</title><link>https://gigasquidsoftware.com/blog/2010/05/27/feature-vs-bug-does-it-matter/</link><pubDate>Thu, 27 May 2010 02:09:14 +0000</pubDate><guid>https://gigasquidsoftware.com/blog/2010/05/27/feature-vs-bug-does-it-matter/</guid><description>&lt;p&gt;How many minutes and hours have been wasted trying to decide if a ticket is a feature or a bug?  Yes, I have been there, entering a new item ticket, the dropdown in the tracker glares at me.  Decide!  Is is a bug or a feature.  Some are clear-cut, of course.  The ever popular null-pointer on unvalidated input for example.  But others are not so clear.   What about the field that you thought was supposed to viewable employees in the supervisor&amp;rsquo;s location, but really ended up needing to be viewable to the employee&amp;rsquo;s in the supervisor&amp;rsquo;s location and the direct reports in another location?   The question then turns on whether or not this information was in the &amp;ldquo;spec&amp;rdquo; or whether the business user didn&amp;rsquo;t let the developer know about it.  Now the question has created an ugly situation of &amp;ldquo;blame&amp;rdquo;.  Whose fault is it?&lt;/p&gt;</description></item></channel></rss>