<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-4915699706175775865</atom:id><lastBuildDate>Mon, 01 Dec 2008 09:22:50 +0000</lastBuildDate><title>RoboSlug</title><description>Ruby, Robotics and Slugs</description><link>http://www.tiz.st/roboslug/</link><managingEditor>tiz@tiz.st (Andy Tyrrell)</managingEditor><generator>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-2254955273129866817</guid><pubDate>Wed, 06 Aug 2008 08:53:00 +0000</pubDate><atom:updated>2008-08-06T10:18:22.180+01:00</atom:updated><title>Don't forget this when installing MSDE 2000 if you need network connectivity</title><description>I've just come back from installing one of our systems at a customers office. I don't normally install these systems myself, normally their own IT stall do this. Nice to get out of the office though.&lt;br /&gt;&lt;br /&gt;I needed to install MSDE 2000, this should have been simple enough. All appeared to go well, MSDE installed, set up the new application  and installed the client locally on the machine to check functionality. All good so far. I then went to install the client on another machine and couldn't get it to connect to SQL server. I spent ages trying different connection strings and messing about with firewalls with no luck.&lt;br /&gt;&lt;br /&gt;Then I remembered..&lt;br /&gt;&lt;br /&gt;At some point Microsoft decided to disable network connections by default on MSDE installations, I'm sure they had their reasons. This can be overridden by specifying &lt;strong&gt;DISABLENETWORKPROTOCOLS=0&lt;/strong&gt; as one of the setup parameters. I'd totally forgotten about this, so I un-installed and reinstalled SQL Server and everything worked fine.</description><link>http://www.tiz.st/roboslug/2008/08/dont-forget-this-when-installing-msde.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-7614278603894844797</guid><pubDate>Wed, 06 Aug 2008 08:40:00 +0000</pubDate><atom:updated>2008-08-06T09:47:42.062+01:00</atom:updated><title>Rory dealing with corporate BS</title><description>Reading Rory's excellent &lt;a href="http://www.neopoleon.com/home/"&gt;blog&lt;/a&gt;. Rory finds that sitting at home being bored living on his savings isn't enough. He finds he needs to earn some serious money and starts doing the job hunting thing, but gets really annoyed at the BS corporates produce. The brilliantly titled post says it all.&lt;br /&gt;Go read &lt;a id="ctl00_ctl00_bcr_AggregateBlogPosts___Posts___Posts_ctl01_TitleLink" href="http://www.neopoleon.com/home/blogs/neo/archive/2008/08/04/31537.aspx"&gt;Are You Passionate About Utilizing Your Core Competencies To Effect Strategic Outcomes?&lt;/a&gt;</description><link>http://www.tiz.st/roboslug/2008/08/rory-dealing-with-corporate-bs.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-3127047295812419334</guid><pubDate>Wed, 09 Jul 2008 14:16:00 +0000</pubDate><atom:updated>2008-07-09T16:25:44.168+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>MVC</category><category domain='http://www.blogger.com/atom/ns#'>asp.net</category><title>ASP.NET MVC View Master Page Template bug</title><description>&lt;div&gt;This is just a minor annoyance, easily sorted. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;When you create an ASP.NET MVC View Master Page you probably go and change the content of the tag. This works when you first launch the website but as soon as you start to navigate around the title reverts to Untitled.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It appears to be an easy solution&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Look at the following MVC View Master page snippet of the header&lt;/div&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/uploaded_images/HeadSnippit1-765273.jpg" border="0" /&gt;Simply remove the runat="server" attribute from the tag and the problem goes away.&lt;/p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/uploaded_images/HeadSnippit2-700244.jpg" border="0" /&gt;I'm sure this bug will get sorted in an upcoming release.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;</description><link>http://www.tiz.st/roboslug/2008/07/aspnet-mvc-view-master-page-template.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-6464633241408374720</guid><pubDate>Fri, 14 Mar 2008 12:24:00 +0000</pubDate><atom:updated>2008-03-14T12:51:00.238Z</atom:updated><title>Restoring template settings after upgrading to ASP.NET Preview 2</title><description>I recently upgraded the systems I've been working on to use the ASP.NET &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MVC&lt;/span&gt; Preview 2 from the old December 2007 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CTP&lt;/span&gt; version. I followed the very thorough &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;explanation given here&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;a href="http://www.asp.net/downloads/3.5-extensions/readme/Preview2.aspx"&gt;http://www.asp.net/downloads/3.5-extensions/readme/Preview2.aspx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;Fortunatly it didn't take too long and I soon had my projects up and running again. All was good until I tried to actually work with one of the projects, all the MVC templates were missing when I tried to add something new. I don't pretend to understand the detail of this but I think Preview 2 works with a new project type and VS2008 looks for this project type when filtering the templates. The old Preview 1 MVC projects will have a different project type so the MVC templetes will not be shown.&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;My solution, I created a new empty MVC project and opened up it's project file in notepad and copied the following line.&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&amp;lt;ProjectTypeGuids&amp;gt;{603c0e0b-db56-11dc-be95-000d561079b0};{349c5851-65df-11da-9384-00065b846f21};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}&amp;lt;/ProjectTypeGuids&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;I then replaced the corresponding line in my old project file with the new line and all my templates returned.&lt;/span&gt;</description><link>http://www.tiz.st/roboslug/2008/03/restoring-template-settings-after.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-6635219344434997406</guid><pubDate>Wed, 27 Feb 2008 09:58:00 +0000</pubDate><atom:updated>2008-02-27T09:58:11.402Z</atom:updated><title>Rob Conery » Creating IN Queries With Linq To Sql</title><description>I like it when someone explains a concept in terms I can understand.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.wekeroad.com/2008/02/27/creating-in-queries-with-linq-to-sql/"&gt;Rob &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Conery&lt;/span&gt; » Creating IN Queries With &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Linq&lt;/span&gt; To &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Sql&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;LINQ &lt;/span&gt;can be very frustrating when you are used to writing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SQL&lt;/span&gt; directly. I get the idea that it's probably a good thing not to worry too much about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;generated&lt;/span&gt; and to think in terms of what you actually need to find from the database. Let &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;LINQ&lt;/span&gt; sort out the detail of the query, the developers have spent a lot of time &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;optimising&lt;/span&gt; their LINQ queries, maybe we should just trust them.</description><link>http://www.tiz.st/roboslug/2008/02/rob-conery-creating-in-queries-with.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-3284199371071040448</guid><pubDate>Wed, 06 Feb 2008 11:43:00 +0000</pubDate><atom:updated>2008-02-06T11:43:57.682Z</atom:updated><title>Left/Right Joins LINQ way too complicated in  VB9</title><description>I was recently trying to use LINQ to join two tables using a Left Join, nothing complicated, in fact here's the SQL I was trying to replicate&lt;br /&gt;&lt;br /&gt;select L.* from tbllocation L left join tblItem I on L.locationid = I.locationid where I.Locationid is null&lt;br /&gt;&lt;br /&gt;I couldn't figure out how to do this, turning to Google I found this article&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/vbteam/archive/2008/01/31/converting-sql-to-linq-part-8-left-right-outer-join-bill-horst.aspx"&gt;The Visual Basic Team : Converting SQL to LINQ, Part 8: Left/Right Outer Join (Bill Horst)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;which is part of this excellent series or articles&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/vbteam/archive/tags/Converting+SQL+to+LINQ/default.aspx"&gt;Converting SQL to LINQ&lt;/a&gt; by Bill Horst&lt;br /&gt;&lt;br /&gt;Bill states that "&lt;em&gt;VB9 doesn't yet have smooth support for Left or Right Joins" &lt;/em&gt;and comes up with a solution using the group join. In my opinion this is far too complicated to me to use reliably. I'm sure I'd get it eventually but for now I've reverted back to using a simple stored procedure to return the information I want.&lt;br /&gt;&lt;br /&gt;LINQ is good and I enjoy having my intellisensed database; sometimes however, LINQ can get in the way and I just need to get the job done.</description><link>http://www.tiz.st/roboslug/2008/02/leftright-joins-linq-way-too.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-2286278387354939382</guid><pubDate>Thu, 17 Jan 2008 11:39:00 +0000</pubDate><atom:updated>2008-01-17T12:39:36.132Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>VB.NET</category><category domain='http://www.blogger.com/atom/ns#'>LINQ</category><title>Returning Values from Stored Procedures using Linq</title><description>Linq is Microsofts new way of accessing databases, for the first time you can write database queries directly within your code instead of within a string.&lt;br /&gt;&lt;br /&gt;I use stored procedures a lot, in fact I rarely have even a select statement in my code. Other people far more qualified than me will give the pros and cons of this method. I used to use the Microsoft Enterprise Library and they had a very clean way of accessing the data&lt;br /&gt;&lt;br /&gt;For a single value returned from a stored procedure the code would go something like this&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Dim db as database = DatabaseFactory.CreateDatabase&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Dim RetVal as integer= CType(db.ExecuteScalar("sel_DoesUserNameAlreadyExist", UserName), Integer)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Easy, job done.&lt;br /&gt;&lt;br /&gt;I've been trying to do the same thing using Linq&lt;br /&gt;&lt;br /&gt;Here's the Stored Procedure, about as basic as can be&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Create Procedure sel_DoesUserNameAlreadyExist(@Username nvarchar(50))&lt;br /&gt;as&lt;br /&gt;select count(UserName) as CountOfUser from tblUser where UserName = @UserName&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;1st Job after you create the stored procedure is you drag and drop the stored procedure onto the DataClassDataContext. This very cleverly maps the StoredProcedure to Linq and sets up a&lt;br /&gt;class for the returned data&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;?xml:namespace prefix = functionattribute(name /&gt;&lt;functionattribute(name:="sct_user.sel_doesuseralreadyexist")&gt;_&lt;br /&gt;Public Function sel_DoesUserAlreadyExist(&lt;?xml:namespace prefix = parameter(name /&gt;&lt;parameter(name:="forename",&gt; ByVal forename As String, &lt;parameter(name:="surname",&gt;ByVal surname As String) As ISingleResult(Of sel_DoesUserAlreadyExistResult)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType MethodInfo.GetCurrentMethod,MethodInfo), forename, surname)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return CType(result.ReturnValue,ISingleResult(Of sel_DoesUserAlreadyExistResult))&lt;br /&gt;End Function&lt;/em&gt;&lt;/parameter(name:="surname",&gt;&lt;/parameter(name:="forename",&gt;&lt;/functionattribute(name:="sct_user.sel_doesuseralreadyexist")&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Here's the Class definition&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Partial Public Class sel_DoesUserNameAlreadyExistResult&lt;br /&gt;Private _CountOfUser As System.Nullable(Of Integer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Public Sub New()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyBase.New&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Sub&lt;br /&gt;&lt;/strong&gt;&lt;span style="color:#ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;column(storage:="_countofuser",&gt;&lt;strong&gt;_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Public Property CountOfUser() As System.Nullable(Of Integer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return Me._CountOfUser&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (Me._CountOfUser.Equals(value) = false) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Me._CountOfUser = value&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Property&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;End Class&lt;/strong&gt;&lt;/em&gt;&lt;/column(storage:="_countofuser",&gt;&lt;strong&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Note how the CountOfUser field has been mapped to the class&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;My Linq code is now&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Dim db As New My_DataClassDataContext&lt;/em&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;Dim RetVal as integer&lt;br /&gt;For Each row In db.sel_DoesUserNameAlreadyExist(UserName)&lt;/em&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RetVal = row.CountOfUser&lt;br /&gt;Next&lt;/em&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is the end result of my struggles, on the way I discovered a big gotcha&lt;br /&gt;&lt;br /&gt;Here's my original Stored Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Create Procedure sel_DoesUserNameAlreadyExist(@Username nvarchar(50))&lt;br /&gt;as&lt;br /&gt;select count(UserName) from tblUser where UserName = @UserName&lt;/em&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Note there is no alias on field &lt;strong&gt;&lt;em&gt;count(UserName)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;When this was mapped to Linq there is no sensible field name so it gets mapped to &lt;em&gt;Column1&lt;/em&gt; instead of &lt;em&gt;CountOfUser&lt;/em&gt;. This causes a problem when you try and run the stored procedure. The mapping fails, Column1 does not really exist and so the returned value does not get mapped, a row gets returned but Column1 has a value of Nothing.&lt;br /&gt;&lt;br /&gt;Workaround, always alias your calculated fields when using Stored Procedures.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;functionattribute(name:="sct_user.sel_doesuseralreadyexist")&gt;&lt;parameter(name:="forename",&gt;&lt;parameter(name:="surname",&gt;&lt;?xml:namespace prefix = column(storage /&gt;&lt;column(storage:="_countofuser",&gt;&lt;/column(storage:="_countofuser",&gt;&lt;/parameter(name:="surname",&gt;&lt;/parameter(name:="forename",&gt;&lt;/functionattribute(name:="sct_user.sel_doesuseralreadyexist")&gt;</description><link>http://www.tiz.st/roboslug/2008/01/returning-values-from-stored-procedures.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-2262731193238272831</guid><pubDate>Wed, 02 Jan 2008 13:03:00 +0000</pubDate><atom:updated>2008-01-02T13:48:48.334Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Firmware</category><category domain='http://www.blogger.com/atom/ns#'>NAS</category><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>nslu2</category><category domain='http://www.blogger.com/atom/ns#'>Media Server</category><title>NSLU2 as a media server</title><description>The &lt;a href="http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.uk%2FLinksys-NSLU2UK-Storage-Link-Drives%2Fdp%2FB0002ZDQLI%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1199281645%26sr%3D1-1&amp;tag=tizst-21&amp;linkCode=ur2&amp;camp=1634&amp;creative=6738"&gt;NSLU2&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=tizst-21&amp;amp;l=ur2&amp;amp;o=2" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; is a very usefull tool, out of the box it functions as a NAS (Networked Attached Storage) device, simply add a hard drive and connect it to your network. Much of it's popularity has come from the ease at which you can replace the devices firmware.&lt;br /&gt;&lt;br /&gt;Why would you want to replace the firmware? The standard firmware runs a version of Linux that is squeezed into the devices ROM. The new firmware allows Linux to be moved over to the harddrive, removing the size contraint. You can then install your own programs, attach new USB devices etc. The device still has limitations, limited processor speed and memory being the two main ones, although for those people who are not frightened of hardware mods and invalidating their warrenty you can overclock and add more memory.&lt;br /&gt;&lt;br /&gt;Several different firmwares have been developed, I would recommend dropping over to &lt;a href="http://www.nslu2-linux.org/"&gt;http://www.nslu2-linux.org/&lt;/a&gt;, for more information.&lt;br /&gt;&lt;br /&gt;I have two &lt;a href="http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.uk%2FLinksys-NSLU2UK-Storage-Link-Drives%2Fdp%2FB0002ZDQLI%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1199281645%26sr%3D1-1&amp;tag=tizst-21&amp;linkCode=ur2&amp;camp=1634&amp;creative=6738"&gt;NSLU2s&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=tizst-21&amp;amp;l=ur2&amp;amp;o=2" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;, one I'm using for experimentation, it's running Ruby at the moment. The other is used as a media server, I run a program called &lt;a href="http://www.twonkymedia.com/Products/TwonkyMedia/index.html"&gt;TwonkyMedia&lt;/a&gt; this is a media server and all my music is on it's attached hard drive. My XBOX 360 recognises it and TwonkyMedia will stream my tunes over the network. It also works with many other devices, I've had some success with &lt;a href="http://www.amazon.co.uk/gp/search?ie=UTF8&amp;keywords=mp101&amp;tag=tizst-21&amp;index=blended&amp;linkCode=ur2&amp;camp=1634&amp;creative=6738"&gt;Netgear's mp101&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=tizst-21&amp;amp;l=ur2&amp;amp;o=2" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; although I hear people have found the &lt;a href="http://www.amazon.co.uk/s/ref=sr_kk_2?ie=UTF8&amp;amp;search-alias=aps&amp;amp;field-keywords=soundbridge"&gt;Pinnacle Soundbridge&lt;/a&gt; more reliable. The main attraction for me is it's a lot cheaper to run as a server than a dedicated PC, I believe it only consumes about 10W.</description><link>http://www.tiz.st/roboslug/2008/01/nslu2-as-media-server.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-8898459686586729885</guid><pubDate>Tue, 13 Feb 2007 13:21:00 +0000</pubDate><atom:updated>2007-02-13T13:32:58.419Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ruby</category><title>Brighton Ruby Group</title><description>Tonight I'm off to the &lt;a href="http://brighton-ruby.org/"&gt;Brighton Ruby Group&lt;/a&gt;, it looks like they have a good &lt;a href="http://brighton-ruby.org/2007/1/28/february-meetup-details"&gt;session &lt;/a&gt;lined up.</description><link>http://www.tiz.st/roboslug/2007/02/brighton-ruby-group.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-6433820715926995605</guid><pubDate>Sat, 20 Jan 2007 23:38:00 +0000</pubDate><atom:updated>2007-01-21T00:24:17.620Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>robotics</category><category domain='http://www.blogger.com/atom/ns#'>nslu2</category><title>1st Mockup</title><description>I thought I'd try and see if the NSLu2 fits on my chassis.&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/images/mockup1.jpg" border="0" /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/images/mockup2.jpg" border="0" /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/images/mockup3.jpg" border="0" /&gt;&lt;a href="http://www.tiz.st/roboslug/images/mockup4.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.tiz.st/roboslug/images/mockup4.jpg" border="0" /&gt;&lt;/a&gt; Looks like it will fit. A couple of concerns at the moment is I need a way of mounting the NSLU2 that will allow me to remove it easily but still keep it in place during use. The USB key hangs over the side of the chassis, it looks a bit vunerable, I guess I could either get a smaller key or move it somewhere else.&lt;br /&gt;&lt;br /&gt;The weight needs to be over the ball caster else it tends to tip, I'm sure the positioning of the batteries can be used to balance the robot.&lt;br /&gt;&lt;br /&gt;The last photo shows a very rough mock up to try and establish the size of the circuit board. I've temporarily put 32mm spacers on the chassis and cut out some cardboard (courtesy of Mr Kipling, mmmm cake!!!). I've ended up with a 125mm disc with a 98mm x 30mm slot. One interesting thing I've noticed is the power socket on the NSLU2 is very close to the height of the board, I'm sure there's some mileage in mounting a power plug on the board. &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://www.tiz.st/roboslug/2007/01/1st-mockup.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-3470857287124310503</guid><pubDate>Fri, 19 Jan 2007 14:32:00 +0000</pubDate><atom:updated>2007-01-19T14:50:03.432Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ruby</category><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>nslu2</category><title>Ruby on Rails on a slug</title><description>I was intrigued to read what this guy had managed to do, running Ruby on Rails on the NSLU2.&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://danieldematteis.wordpress.com/2006/03/26/nslu2-on-rails/"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I believe he's got a ROR\Lighttpd\PostgreSQL\SQUID setup.&lt;br /&gt;&lt;br /&gt;A couple of things I noted, he ran up against performance issues, not surprising really with 32Mb memory and 266Mhz ARM processor (The standard NSLU2 is underclocked at 133Mhz, it's a simple mod to make it run at 266mHz involving doing something painful to one of the resistors!) Secondly he had trouble with RubyGems, I've had similar problems and I've yet to get to the bottom of it.&lt;br /&gt;&lt;br /&gt;Hopefully my NSLU2 will be able to cope with the tasks I've got in mind for it.</description><link>http://www.tiz.st/roboslug/2007/01/ruby-on-rails-on-slug.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-1463094999259633211</guid><pubDate>Thu, 18 Jan 2007 23:44:00 +0000</pubDate><atom:updated>2007-01-20T01:33:50.158Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ruby</category><title>Learning Ruby</title><description>Ruby is a brand new language for me, my background is Microsoft's .Net technologies so I need a good tutorial to get me started. The one I'm using is &lt;strong&gt;Learning Ruby with Satish Talim&lt;/strong&gt;, which can be found &lt;a href="http://rubylearning.com/"&gt;here&lt;/a&gt;. I think it's pretty good, I'm about two thirds through his tutorial and it seems a comprehensive introduction to the language.&lt;br /&gt;&lt;br /&gt;I've added this site to my links.</description><link>http://www.tiz.st/roboslug/2007/01/learning-ruby.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-1922838362000008288</guid><pubDate>Thu, 18 Jan 2007 23:23:00 +0000</pubDate><atom:updated>2007-01-18T23:43:28.777Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>robotics</category><title>The Chassis</title><description>I've decided on building a simple chassis based round the Pololu round robot chassis, it looks like an ideal base for low cost robot for development. I ordered the parts from &lt;a href="http://www.technobots.co.uk/"&gt;Technobots&lt;/a&gt;. The bits you need to get a basic chassis and motor are:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pololu round robot chassis, there's several colours to choose from&lt;/li&gt;&lt;li&gt;Tamiya 70097 Twin-Motor gearbox&lt;/li&gt;&lt;li&gt;Tamiya 70144 Ball caster&lt;/li&gt;&lt;li&gt;Tamiya 70101 truck tyre set&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://www.tiz.st/roboslug/images/chassis1.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand" alt="" src="http://www.tiz.st/roboslug/images/chassis1.jpg" border="0" /&gt;&lt;/a&gt; One thing worth pointing out is the Ball Caster kit contains two casters, you only need one and the tyre set has four tyres, you need two. So if you want to build more than one robot you could save a bit of money.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;All the parts come as self assembly kits, not too difficult to build, just take your time and follow the instructions. The gearbox can be assembled with several gear ratios, Pololu recommend you use configuration 'C', this is a low-speed gear ratio.&lt;/p&gt;&lt;p&gt;Once you've assembled everything, you can bolt it together. I think it's going to look pretty neat. &lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.tiz.st/roboslug/images/chassis2.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand" alt="" src="http://www.tiz.st/roboslug/images/chassis2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://www.tiz.st/roboslug/2007/01/chassis.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-1551443283996528711</guid><pubDate>Thu, 18 Jan 2007 11:20:00 +0000</pubDate><atom:updated>2007-01-18T11:24:53.525Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Electronics</category><category domain='http://www.blogger.com/atom/ns#'>Pic Microcontrollers</category><title>K8048 Pre assembled</title><description>If you don't fancy building the K8048 yourself and want to get a Pic programmer for a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;reasonable&lt;/span&gt; price &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1" onclick="BLOG_clickHandler(this)"&gt;Maplin&lt;/span&gt; sell a ready built version of the K8048 &lt;a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=48074&amp;&amp;amp;source=14&amp;amp;doy=search"&gt;here&lt;/a&gt;</description><link>http://www.tiz.st/roboslug/2007/01/k8048-pre-assembled.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-122142535079112422</guid><pubDate>Wed, 17 Jan 2007 23:57:00 +0000</pubDate><atom:updated>2007-01-18T00:30:10.992Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Electronics</category><category domain='http://www.blogger.com/atom/ns#'>Pic Microcontrollers</category><title>K8048 Pic Programmer</title><description>&lt;a href="http://www.tiz.st/roboslug/images/k8048_sm.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand" alt="" src="http://www.tiz.st/roboslug/images/k8048_sm.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I just built myself a PIC Programmer. It's the K8048 Pic programmer &amp; experimenting board by &lt;a href="http://www.vellemanusa.com/us/enu/product/view/?id=500373"&gt;Velleman&lt;/a&gt;, I brought it through &lt;a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=37192&amp;amp;doy=search"&gt;Maplin. &lt;/a&gt;The K8048 is a programmer with a basic experimentation board built in. There are for keys for inputs and six leds for outputs. One neat feature is an ICSP connector for programming embedded PICs. The kit comes in a plastic case with a high quality PCB, components, software and building instructions. It even comes with a PIC16F627 to get you started&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The kit itself took a couple of hours to build and another couple of hours to find out what I did wrong! To assemble you work through a list of components to solder onto the board, it even warns you when your working with a component that has a polarity such as electrolytics, diodes etc. All the resistors and diodes are on a tape and the theory goes in the right order for assembly. This didn't quite work out in practice, a couple or resistors were in the wrong order and one was missing. It was no big deal really it just meant you had to double check the value in your hand was what you thought it was.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Once I'd finished building it I was eager to try it out. You need to supply your own PSU and serial cable, so I routed round my box of bits and found what I needed. Connected it all up, installed the software and went to program my Pic with one of the demo programs. It failed, every time I tried to flash my Pic I kept getting the message &lt;strong&gt;&lt;em&gt;No Device ID Detected. &lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;After a couple of fruitless hours Googling I did what I should of done in the first place, checked the schematic. It turns out one of the transistors was a PNP, I thought they all were NPN and didn't bother to check the model numbers. Because of this I'd swapped a PNP for a NPN, duhhh! Once this was sorted all worked well and my K8048 LEDs are flashing in a purposeful manner . &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;</description><link>http://www.tiz.st/roboslug/2007/01/k8048-pic-programmer.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-7496079777249576273</guid><pubDate>Fri, 12 Jan 2007 15:00:00 +0000</pubDate><atom:updated>2007-01-12T15:08:12.616Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ruby</category><category domain='http://www.blogger.com/atom/ns#'>AI</category><category domain='http://www.blogger.com/atom/ns#'>Electronics</category><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>robotics</category><category domain='http://www.blogger.com/atom/ns#'>nslu2</category><category domain='http://www.blogger.com/atom/ns#'>Pic Microcontrollers</category><title>Topics of interest to this blog</title><description>I don't want this blog to be too general, so here's my list of things I'm going to write about.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ruby&lt;/li&gt;&lt;li&gt;Pic microcontrollers&lt;/li&gt;&lt;li&gt;Electronics (If its related to embedded control)&lt;/li&gt;&lt;li&gt;AI&lt;/li&gt;&lt;li&gt;Robotics&lt;/li&gt;&lt;li&gt;NSLU2 (aka The Slug)&lt;/li&gt;&lt;li&gt;Linux (If its related to the NSLU2)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think that's about it, perhaps they need to be my keywords.&lt;/p&gt;</description><link>http://www.tiz.st/roboslug/2007/01/topics-of-interest-to-this-blog.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-4915699706175775865.post-7803501100454726007</guid><pubDate>Fri, 12 Jan 2007 14:53:00 +0000</pubDate><atom:updated>2007-01-13T23:25:07.724Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ruby</category><category domain='http://www.blogger.com/atom/ns#'>AI</category><category domain='http://www.blogger.com/atom/ns#'>Electronics</category><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>robotics</category><category domain='http://www.blogger.com/atom/ns#'>nslu2</category><category domain='http://www.blogger.com/atom/ns#'>Pic Microcontrollers</category><title>What's going on here then?</title><description>&lt;p&gt;A couple of years ago I brought a NSLU2 (Aka The Slug), a small network attatched storage device that runs on Linux. This group &lt;a title="http://www.nslu2-linux.org/" href="http://www.nslu2-linux.org/"&gt;http://www.nslu2-linux.org/&lt;/a&gt; have done a lot of work hacking the system so you can use it for pretty much what you want. My original device is used as a music server, running TwonkyVision.&lt;br /&gt;&lt;br /&gt;Recently I brought another one and instead of running off a USB hard drive it runs off a 1GB usb key, really cool. I now have a little linux box that fits in the palm of my hand and could potentially be truly portable, just add a battery. It gets better, Ruby runs on it, in fact people have installed RoR on it, but that really did slow it down. Ruby however runs fine, I've installed it, written a few programs and it all seems to work just fine.&lt;br /&gt;&lt;br /&gt;What am I going to do with my RubySlug (See what I did there?)? Well I'd like to turn it into Ruby the RoboSlug!!! The kid in me thinks that Robots are really cool, and my past academic experience thinks that AI is pretty neat so I have a plan.&lt;br /&gt;&lt;br /&gt;Make a robot, with motors, sensors etc, use a PIC microcontroller to capture the information from the sensors and to drive the outputs (motors etc). I'm not going to let the PIC do any of the decision making, i'm going to do that with the Slug. The Slug will be fitted with a USB to Serial adapter which will be linked to my PIC board. Ruby will receive information on the state of the inputs via the serial port and send commands back to the PIC board to control the outputs. Initialy I'll use very traditionaly fixed rules for controlling the robot, but I'd like to eventually get the robot to adapt to its environment and make up it's own rules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure the project has any use other than personal interest. Although it will be interesting to see what actually happens to the code. It will be interesting to see if the computer generated code is very different from what I'd come up with if I was designing the code in a traditional manner.&lt;br /&gt;&lt;br /&gt;Well there's a lot of things to get together before I get to this point.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Learn Ruby &lt;/li&gt;&lt;li&gt;Learn how to program PICs, (It's a long time since I've programmed any microcontroller) &lt;/li&gt;&lt;li&gt;Design and build the hardware, (My electronics is equally rusty) &lt;/li&gt;&lt;li&gt;Get the Robot talking with the Slug &lt;/li&gt;&lt;li&gt;Get the Slug controlling the Robot &lt;/li&gt;&lt;li&gt;Investigate the current research on AI &lt;/li&gt;&lt;li&gt;Design and code a self modifying system &lt;/li&gt;&lt;li&gt;See what happens.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://www.tiz.st/roboslug/2007/01/whats-going-on-here-then.html</link><author>tiz@tiz.st (Andy Tyrrell)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item></channel></rss>