<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Divan Visagie</title>
    <link>https://divanv.com</link>
    <description>Divan's personal blog</description>
    <item>
      <title>Server-Side Tool Gating</title>
      <link>https://divanv.com/post/server-side-tool-gating/</link>
      <description><![CDATA[MCP servers are powerful tools but they have no power over how the model decides to use them. They register their tools, describe them in a schema, and then sit there while the model guesses which ones to use. Every toolwhether relevant or not, gets loaded into the prompt, burning tokens and increasing the chance the model picks incorrectly. If the user asks &quot;what does my project note about feeding rats to pythons say?&quot; and you have 6 tools registered, the model sees project_archive , notes_write , notes_edit alongside the droids that we are actually lookning for. Those are noise, more noise than those people on LinkedIn with cyberpunk stylised AI generated profile pictures. At 30 or more... <a href="https://divanv.com/post/server-side-tool-gating/">Read more</a>]]></description>
      <pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/server-side-tool-gating/</guid>
    </item>
    <item>
      <title>Code is Not Programming</title>
      <link>https://divanv.com/post/code-is-not-programming/</link>
      <description><![CDATA[Programming is older than code, but we keep talking as if they are the same thing. That confusion is now making itself apparrent with the discrourse around &quot;AI&quot; in software for both the zealots and the nay sayers. Whether you like it or not, LLMs are writing more code every day, while some are claiming that this is the end of software engineers, others are... <a href="https://divanv.com/post/code-is-not-programming/">Read more</a>]]></description>
      <pubDate>Tue, 3 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/code-is-not-programming/</guid>
    </item>
    <item>
      <title>Building personal software is now Practical</title>
      <link>https://divanv.com/post/age-of-personal-software/</link>
      <description><![CDATA[For a long time, there has been a gap between &quot;I have a problem&quot; and &quot;I can justify building software for this&quot;. If the problem was too niche, the answer was usually to live with a bloated professional tool, pay a subscription for features you barely use, or keep doing the task manually. Closing that gap is, I think, the biggest impact agentic coding will have on software. AI-assisted development doesn't remove the need for engineering judgement or product taste, but it does... <a href="https://divanv.com/post/age-of-personal-software/">Read more</a>]]></description>
      <pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/age-of-personal-software/</guid>
    </item>
    <item>
      <title>Hi, I&apos;m Claude...</title>
      <link>https://divanv.com/post/traveling-santa/</link>
      <description><![CDATA[Divan is letting me write on his blog. In fact, he's letting me write everything today, you see... Functional Software Stockholm AB posted a Christmas coding puzzle, and there's a claim floating around that LLMs like me produce messy, unreadable code. Divan... <a href="https://divanv.com/post/traveling-santa/">Read more</a>]]></description>
      <pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/traveling-santa/</guid>
    </item>
    <item>
      <title>De-logging</title>
      <link>https://divanv.com/post/delogging/</link>
      <description><![CDATA[It's a common trope in web development to say, &quot;I just use console.log,&quot; especially for those who started development outside the domain of paid-for IDEs. Some people will tell you that you should be using a debugger all the time. It's a simple tool that you can attach to a process and pause mid-execution to see what's happening inside. And yes, it is a powerful tool—when it works... There is, however, an argument against using a debugger, particularly in the context of live issues that are difficult to replicate in a local environment. This is often the case in desktop and game programming, but it also rings true in... <a href="https://divanv.com/post/delogging/">Read more</a>]]></description>
      <pubDate>Fri, 21 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/delogging/</guid>
    </item>
    <item>
      <title>Structured intelligence</title>
      <link>https://divanv.com/post/structured-intelligence/</link>
      <description><![CDATA[In the time when I was toying with sentiment analysis in 2017, I came to a conclusion about AI driven systems as they applied to me as a Software Engineer who isn't a data scientist and doesn't run their own machine learning clusters: I am not the person who is going to train or run the greatest model, when that model comes, it will be too expensive to run locally, and will probably require special hardware. Who I am is the person who is going to use the model, probably consume it as a library, and I am going to use it to solve a problem. My job will not be to train the model but to integrate it into systems in a useful way. Now, in 2023, OpenAI has delivered exactly that. The worlds best language model, with an API that counts tokens and charges you based on usage. For my home... <a href="https://divanv.com/post/structured-intelligence/">Read more</a>]]></description>
      <pubDate>Fri, 26 May 2023 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/structured-intelligence/</guid>
    </item>
    <item>
      <title>Adding OpenAPI to an Express app</title>
      <link>https://divanv.com/post/express-openapi/</link>
      <description><![CDATA[While there are many options for using Swagger/OpenAPI with express some of them require that you use an entire framework, while others like to enforce strange structures that quite frankly feel like they interfere with your independant descisions way too much. In this tutorial I will cover what I think is... <a href="https://divanv.com/post/express-openapi/">Read more</a>]]></description>
      <pubDate>Sun, 27 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/express-openapi/</guid>
    </item>
    <item>
      <title>Service Registry Pattern</title>
      <link>https://divanv.com/post/service-registry/</link>
      <description><![CDATA[Microservice architectures are popular these days, but while they provide certain benefits they also introduce new problems. One of these problems is that even if you have only a few services, connecting to them via IP address can quickly become painstaking. Lets take the following... <a href="https://divanv.com/post/service-registry/">Read more</a>]]></description>
      <pubDate>Sun, 28 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/service-registry/</guid>
    </item>
    <item>
      <title>Documenting RESTful APIs</title>
      <link>https://divanv.com/post/open-api/</link>
      <description><![CDATA[Let's say we are tasked with creating a RESTful API that will return a user object based on the user Id, e.g. http://myApi/user/123 will return the user with the ID 123. This endpoint is to be consumed by other developers in our company as part of a micro-services architecture. We cannot simply leave this endpoint undocumented, since this would... <a href="https://divanv.com/post/open-api/">Read more</a>]]></description>
      <pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/open-api/</guid>
    </item>
    <item>
      <title>Docker</title>
      <link>https://divanv.com/post/docker/</link>
      <description><![CDATA[There are two types of people, those who think Docker is an absolute game changer when it comes to web application development, and those who don't know what Docker is. If you belong to the latter group, my goal here is to make you part of the former. Most modern web applications who's scope extends beyond &quot;Hello World&quot; will at some point encounter a situation where they will interact with another application over a network connection, be that a database, logging system or... <a href="https://divanv.com/post/docker/">Read more</a>]]></description>
      <pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/docker/</guid>
    </item>
    <item>
      <title>Distributed Request Tracing</title>
      <link>https://divanv.com/post/distributed-tracing/</link>
      <description><![CDATA[When working with traditional monolithic applications, you can very quickly become used to a certain style of debugging when something has gone wrong. Logs can reveal quite a lot on their own and the logs for each request may even have a unique identifier so that you can track down what went wrong with a particular request. If that fails, assuming you can replicate your issues on your developer environment, you can simply attach a debugger and watch for when the flow breaks. Microservices on the other hand make the problem of debugging much more complicated. When a single request from a user passes through mutliple applications, tracking... <a href="https://divanv.com/post/distributed-tracing/">Read more</a>]]></description>
      <pubDate>Sat, 18 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/distributed-tracing/</guid>
    </item>
    <item>
      <title>Gettings started with Feature Flags and Progressive Delivery</title>
      <link>https://divanv.com/post/feature-flags/</link>
      <description><![CDATA[In it's simplest form. A feature flag is an if statement. Lets take the example of an endpoint that returns the string &quot;Hello World&quot; when the user browses to /greeting : Now lets suppose that we deploy this useful functionality to production, but after a few weeks, we get the idea that maybe we want to change... <a href="https://divanv.com/post/feature-flags/">Read more</a>]]></description>
      <pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/feature-flags/</guid>
    </item>
    <item>
      <title>Moving from Medium</title>
      <link>https://divanv.com/post/moving-from-medium/</link>
      <description><![CDATA[Update: While this site is still clearly no longer medium based, I have moved on from Hugo and have instead gone for my own implementation of a Markdown -&gt; HTML converter For a few years now my blog has primarily been on the Medium platform, and for good reason. The platform provided a clean interface with a nice easy to use editor and supports cool things like notes, highlights and allowing editors to give their two cents on an unpublished article. The main draw however... <a href="https://divanv.com/post/moving-from-medium/">Read more</a>]]></description>
      <pubDate>Mon, 3 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/moving-from-medium/</guid>
    </item>
    <item>
      <title>A single binary SPA using Go</title>
      <link>https://divanv.com/post/single-binary-spa-go/</link>
      <description><![CDATA[I think one of the most elegant things that Go does is output a single portable binary. So when building a full web application, it would be nice to keep the output just as simple. Luckily, I wasn’t alone in this thought, and a neat... <a href="https://divanv.com/post/single-binary-spa-go/">Read more</a>]]></description>
      <pubDate>Sun, 24 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/single-binary-spa-go/</guid>
    </item>
    <item>
      <title>Node.js with TypeScript</title>
      <link>https://divanv.com/post/nodejs-with-typescript/</link>
      <description><![CDATA[The idea with this article is to simply provide a quick tutorial on how to set up a simple Node.js project with nodemon for development reloading and of course unit tests. This means I have gone for a minimalist approach and tried to keep everything as generic as possible by not doing things like sticking to my preference of Yarn or adding unnecessary dependencies. Let’s start off the same way we start any... <a href="https://divanv.com/post/nodejs-with-typescript/">Read more</a>]]></description>
      <pubDate>Wed, 2 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/nodejs-with-typescript/</guid>
    </item>
    <item>
      <title>Swarm testing with Locust.io for the first time</title>
      <link>https://divanv.com/post/swarm-testing-with-locust/</link>
      <description><![CDATA[When you build services for the web you want to make sure they don’t fall over completely when too many users hit your system all at one time. What you want, is to be able to simulate that load spike before it happens in production. I have used artillery.io in the past to get this done, and there are many other services that will test basic load, but I wanted to find a go-to tool that I... <a href="https://divanv.com/post/swarm-testing-with-locust/">Read more</a>]]></description>
      <pubDate>Mon, 1 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/swarm-testing-with-locust/</guid>
    </item>
    <item>
      <title>Building and distributing a cross platform desktop UI in Scala</title>
      <link>https://divanv.com/post/building-desktop-application-scala/</link>
      <description><![CDATA[Some time ago I wrote about my experience writing a small Desktop UI in Go using libui. I ended off by saying that I would attempt something in Kotlin next, this project did start in Kotlin, however I switched to Scala after a short time for a reason based solely on personal preference(Kotlin is a better Java but a worse Scala in my opinion). But enough of that, here is what happened when I finally settled on a tech. For those interested, the project was another small one to solve a simple problem I have, I like to play guitar in Standard C tuning, and I have a Floyd Rose bridge so I don’t really want to re-tune the guitar every time I... <a href="https://divanv.com/post/building-desktop-application-scala/">Read more</a>]]></description>
      <pubDate>Sun, 23 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/building-desktop-application-scala/</guid>
    </item>
    <item>
      <title>Building a sentiment aware Polymer input control</title>
      <link>https://divanv.com/post/polymer-sentiment-aware/</link>
      <description><![CDATA[If you scroll through your Twitter feed sometimes you may see a lot of negativity or tweets that make you ask yourself “Did this person read this before they posted?”. This made me think of the times I might have done this, and whether or not I would have posted so many negative tweets if I knew that most of them had a negative sentiment. This of course brought to mind... <a href="https://divanv.com/post/polymer-sentiment-aware/">Read more</a>]]></description>
      <pubDate>Sun, 1 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/polymer-sentiment-aware/</guid>
    </item>
    <item>
      <title>Building a Desktop UI in Go</title>
      <link>https://divanv.com/post/building-a-desktop-ui-in-go/</link>
      <description><![CDATA[I started my career as a Software Developer building iOS apps. I had a passion for crafting user interfaces that had been realized in college when I leaned heavily towards the menu building portion of a 2D game I was writing at the time. As time moved on I found myself doing more and more web UI’s , which makes sense, that is the way things are heading, especially in the enterprise. After some tinkering with Go however I was eager to give desktop development another shot, since it’s really easy to get things up and running in the language. Browsing through... <a href="https://divanv.com/post/building-a-desktop-ui-in-go/">Read more</a>]]></description>
      <pubDate>Thu, 21 Sep 2017 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/building-a-desktop-ui-in-go/</guid>
    </item>
    <item>
      <title>Making better technology decisions</title>
      <link>https://divanv.com/post/better-tech-decisions/</link>
      <description><![CDATA[Don’t reinvent the wheel! Build on the shoulders of giants! These terms have been irreversibly planted into our heads, and for good reason, but in an industry that is continually producing new options and opinions , it can be difficult to decide who’s shoulders to stand on. It’s not just tools and frameworks either. There are many processes, philosophies and the definitions of “Good code”;... <a href="https://divanv.com/post/better-tech-decisions/">Read more</a>]]></description>
      <pubDate>Thu, 15 Jun 2017 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/better-tech-decisions/</guid>
    </item>
    <item>
      <title>Sbt heiroglyphs and multi-projects explained</title>
      <link>https://divanv.com/post/sbt/</link>
      <description><![CDATA[When you get started with Scala one of the first things you are going to come across is sbt, Scala’s very own build tool. When I started using Scala, I just generated projects via Activator and ran the basic test and run commands in sbt. When things get serious though, you need to add some libraries. So you open up the build.sbt file and are greeted with things that look like madness: the := , += and %% . You think to yourself &quot;I just started this thing and now I’m doing category theory!&quot;. Don’t worry, this is not category theory, that only comes in later when you... <a href="https://divanv.com/post/sbt/">Read more</a>]]></description>
      <pubDate>Fri, 24 Jun 2016 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/sbt/</guid>
    </item>
    <item>
      <title>A Software Developer&apos;s Experience Building a Robot</title>
      <link>https://divanv.com/post/robot-building-part-1/</link>
      <description><![CDATA[This will be part one in a series where I (a software developer) share my experiences in an attempt to build a fully wireless robot. The purpose of this is to hopefully help other developers who might be interested in the subject learn from my mistakes, or for engineers to have a good laugh. Before actually buying any hardware I decided on a... <a href="https://divanv.com/post/robot-building-part-1/">Read more</a>]]></description>
      <pubDate>Sun, 25 Aug 2013 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/robot-building-part-1/</guid>
    </item>
    <item>
      <title>Running Node.js Alongside IIS on Windows</title>
      <link>https://divanv.com/post/nodejs-alongside-iis/</link>
      <description><![CDATA[So you want to run a node server as a production server on windows, but IIS is running on the machine and taking up port 80. You have probably heard of IISNode, and while it seems to work well, I was not happy with the idea of having to use XML to configure it and not being able to have any flexibility over which ports I use. My solution was to set up IIS as a reverse proxy to a node process. This way... <a href="https://divanv.com/post/nodejs-alongside-iis/">Read more</a>]]></description>
      <pubDate>Fri, 15 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/nodejs-alongside-iis/</guid>
    </item>
    <item>
      <title>Running Node.js Alongside Apache</title>
      <link>https://divanv.com/post/nodejs-alongside-apache/</link>
      <description><![CDATA[Running node alongside Apache takes little effort, all it requires is a reverse proxy, which is way less of an effort to set up in Apache than it is in IIS and a way to run your node process as a service. To set up a reverse proxy in apache simply add the code in the following gist to... <a href="https://divanv.com/post/nodejs-alongside-apache/">Read more</a>]]></description>
      <pubDate>Sun, 10 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/nodejs-alongside-apache/</guid>
    </item>
    <item>
      <title>Controlling an LED on an Arduino over HTTP</title>
      <link>https://divanv.com/post/arduino-led-http/</link>
      <description><![CDATA[Wire an LED to pin 13 on the Arduino and plug the Arduino into your development machine. Then follow the instructions on the johnny-five readme to get your Arduino ready for communication. Create a folder for your project and create... <a href="https://divanv.com/post/arduino-led-http/">Read more</a>]]></description>
      <pubDate>Tue, 5 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/arduino-led-http/</guid>
    </item>
    <item>
      <title>Node.js Web Sockets and iOS</title>
      <link>https://divanv.com/post/node-websockets-ios/</link>
      <description><![CDATA[This tutorial will be broken up into 3 sections. You can choose to do either 2 or 3 for the client or both if you desire , I have chosen to break it... <a href="https://divanv.com/post/node-websockets-ios/">Read more</a>]]></description>
      <pubDate>Sun, 2 Dec 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/node-websockets-ios/</guid>
    </item>
    <item>
      <title>Searching through a UITableView</title>
      <link>https://divanv.com/post/searching-uitableview/</link>
      <description><![CDATA[This tutorial assumes you already know whats going on when it comes to creating a project and populating a UITableViewController's table with some data. A lot of the time you can end up with a very long list of items in a UITableView and you really need a search bar to filter what you want.... <a href="https://divanv.com/post/searching-uitableview/">Read more</a>]]></description>
      <pubDate>Fri, 2 Nov 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/searching-uitableview/</guid>
    </item>
    <item>
      <title>Using UIRefreshControl</title>
      <link>https://divanv.com/post/using-uirefreshcontrol/</link>
      <description><![CDATA[Prerequisites: You should be able to create a project and set up a UITableViewController and table view in the storyboard. Description: Lets start by setting up a new project with a UITableViewController I wont bother populating it as this isn't required to get the UIRefreshControl working.Basically all we have to do after setting up the table is to create a UIRefreshControl ,set it up and customise if you wish ,give it a target method with which to handle the refreshing and then add the refreshControl to self. The most logical place for this of corse being in the viewDidLoad. Code: The result : It really is that simple,... <a href="https://divanv.com/post/using-uirefreshcontrol/">Read more</a>]]></description>
      <pubDate>Fri, 2 Nov 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/using-uirefreshcontrol/</guid>
    </item>
    <item>
      <title>Device detection in iOS</title>
      <link>https://divanv.com/post/device-detection-in-ios/</link>
      <description><![CDATA[This is just a quick tip on how to determine what device the user is running, this can be useful if you are writing an app for both iPhone and iPad and want to implement a feature in one device but not the other: Code snippet: Another thing we can check for is the version of iOS the user is running... <a href="https://divanv.com/post/device-detection-in-ios/">Read more</a>]]></description>
      <pubDate>Fri, 28 Sep 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/device-detection-in-ios/</guid>
    </item>
    <item>
      <title>Hidden menu Part 2: Following the finger</title>
      <link>https://divanv.com/post/hidden-menu-part-2/</link>
      <description><![CDATA[In Part 1 of Creating a hidden menu in iOS I showed how to add gestures to handle the hide/reveal functionality. The swipe gesture is a great and gives a good impression , but it can be better. It is much nicer to have the effect that the *content *View is following the users finger , and that is exactly what we are going to do here. Lets start with the project form the previous tutorial , if you dont have it , you can pick it up here . First we start by commenting out/removing the GestureRecognizer code in the viewDidLoad , we need to get rid of it because the touch events could conflict with them. Now lets jump to the touch events ,this requires no additional setup,all we have to do is implement the delegate methods. The first one we will handle is *touchesBegan *.... <a href="https://divanv.com/post/hidden-menu-part-2/">Read more</a>]]></description>
      <pubDate>Mon, 24 Sep 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/hidden-menu-part-2/</guid>
    </item>
    <item>
      <title>Creating a hidden menu in iOS</title>
      <link>https://divanv.com/post/creating-a-hidden-menu-in-ios/</link>
      <description><![CDATA[In this tutorial we will create an iPhone app with a hidden menu system using animations and gestures.We start off by creating a new single view project. I have just recently upgraded to Xcode 4.5 and so I have the option to develop for iOS6 and the iphone 5 so the screenshots will be a little taller than normal. I named my project HiddenMenu. Our menu will be based on a table view so drag one of those on to the view on the storyboard. We also want something to cover our menu with and display content so we also drag out a standard UIView to sit next to it. While working with these views I keep them next to each other and only cover the menu at runtime. We will be working with the default ViewController so the next step after dragging these items onto the view is to link them up as outlets: Don't forget to set the ViewController as the delegate and data source for the tableView , we do this by ctrl+dragging to the ViewController icon and selecting both delegate and dataSource. ViewController icon We also need to modify the code of ViewController.h to look like the following: Back to the storyboard , lets add a cell to the menuTable(style:subtitle) and give it the Reuse Identifier &quot;MenuCell&quot; Finally , we add a navigation bar and a button to the &quot; content &quot; UIView. Link the navigation bar as an outlet and its button as the action *showMenuDown. *This should be the last time we need to deal with the views so... <a href="https://divanv.com/post/creating-a-hidden-menu-in-ios/">Read more</a>]]></description>
      <pubDate>Mon, 24 Sep 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/creating-a-hidden-menu-in-ios/</guid>
    </item>
    <item>
      <title>How to create a custom look for your UITableView</title>
      <link>https://divanv.com/post/custom-uitableview-look/</link>
      <description><![CDATA[What really sets some iOS apps apart from the rest are the way they look , generally , a good look gives the impression that the app was well designed an should therefore work well. This isn't necessarily true but sometimes impression outweighs fact,especially from the point of view of the user. In this tutorial I will demonstrate how to customise the generally boring look of the UITableViewController and try spice things up a little. I will be utilising images from http://subtlepatterns.com/ ,which is a great site to get hold of , well ,subtle patterns Exclusive paper Retina Wood I went for Retina Wood as a background and exclusive paper for the cells for this tutorial. Ok , lets start by creating a new iPhone app ,then delete the current View from the storyboard and replace it with a Table View Controller Don't forget to set this new ViewController as the initial view controller: If you were to run the app at this stage you would get a boring bunch of lines across your screen,that isn't going to do for testing so lets set up some sample data to display. Create a new UITableViewController class, im naming mine CustomTableViewController: Then set the custom class of the Table View Controller in the storyboard to the class we just created. Just for the sake of this tutorial , I will make this table static and set the header and contents in the storyboard Heres what it looked like after I added some sample data,nice and boring: Time to spice things up , lets add our resource textures before we get started , right click in the project navigator and add the image files, remember to check the copy checkbox. finally we can get down and code something , go to* CustomTableViewController.m*. The first bit of customisation can be done in the viewDidLoad where we create a view with the wood pattern as a background and then set that view as the background of the table. If you were to run the app at this point you would get the wooden background for everything, This doesn't look great at all. So I will make the... <a href="https://divanv.com/post/custom-uitableview-look/">Read more</a>]]></description>
      <pubDate>Mon, 10 Sep 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/custom-uitableview-look/</guid>
    </item>
    <item>
      <title>Connecting to a php service from iOS</title>
      <link>https://divanv.com/post/connecting-to-php-from-ios/</link>
      <description><![CDATA[Deprecated Time has moved on , IOS has moved forward to the point where this is no longer a supported way of doing things Connecting to a web service is a requirement for many iOS applications , especially in the enterprise. In this tutorial , I will be covering how to connect to a web service that returns and handles JSON formatted data. I prefer JSON as it is easier to convert to objects native to the relative language both server and client side. NOTE: For the Objective-C portion of this tutorial , I will be using a(very tiny) Library of my own creation called * JSONDictionaryExtensions* for converting JSON data to and from an NSDictionary , you can get hold of it here . PHP Here I have created a simple php script that will provide the necessary services to test the tutorial application. I will not go over this code in detail here because I assume that anyone reading this will ether not care about what it does because all they are trying to do is learn how to connect to a service,or already able to understand it ,in which case the comments should suffice. All that you need to know here is that the tasks the service performs are selected by the value of the 'METHOD' http header fields . So all you have to do is copy and save it as * [what ever you want].php *in your web server. Now browse to it to make sure its working alright, I placed mine in my sites directory so my path and the path I will be referring to for the service is: * http://localhost/~divanvisagie/SimpleService/index.php * You should get the following output as a result: {&quot;error&quot;:&quot;The Service you asked for was not recognized&quot;} Don't worry about the error,thats just because we havent sent the service any headers to tell it what to do. Objective-C For the sake... <a href="https://divanv.com/post/connecting-to-php-from-ios/">Read more</a>]]></description>
      <pubDate>Sun, 26 Aug 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/connecting-to-php-from-ios/</guid>
    </item>
    <item>
      <title>Optimise your Xcode productivity with shortcuts</title>
      <link>https://divanv.com/post/xcode-shortcuts/</link>
      <description><![CDATA[Xcode uses about as much screen real estate as Queen Elizabeth II and one of it's largest elements is the toolbar. This is fine on a large screen ,but if you are working on a laptop,then this is probably space you would rather use for other things. Spaaaaaaaaaaaaaaaace The solution , learn the shortcuts and get rid of it. I found that the list of reasons to have it present is very short compared to the amount of space it occupies: Originally posted... <a href="https://divanv.com/post/xcode-shortcuts/">Read more</a>]]></description>
      <pubDate>Sun, 19 Aug 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/xcode-shortcuts/</guid>
    </item>
    <item>
      <title>Some useful libraries for iOS development</title>
      <link>https://divanv.com/post/ios-libraries/</link>
      <description><![CDATA[One of the great things about developing for iOS in Objective-C is the amount of freely available MIT licensed libraries out there .While some just make your life easier so that you don't have to re-invent the wheel,others like FMDB are almost essential to certain functionality.Here is a list of some libraries I just cant live without. FMDB One of the major issues I stumbled over when working with sqlite in iOS was that the database connection seemed to keep breaking,causing tons of unneeded frustration. I then learned of the Flying Meat Database wrapper (I know, coolest name ever) which fixed this problem and now I will never create a database based app without it. Pull to Refresh Pulling down on a UITableView to refresh is a nice touch ,but its also something you don't want to spend too much time on. This library makes it simple for you , all you have to do is make your tableViewController a sub-class of PullRefreshTableViewController.h and then implement the -(void)refresh method. Put all your refresh code in that method and end it off with [self stopLoading]; Simple! NSData+base64 For those who need to convert their NSData ,such as images to a base 64 string for use with web services,this is pretty much the alternative to writing it yourself. This guy writes a ton more libraries that I just haven't looked at, though the GPL licenses for the ones that I did look at deterred me from looking at the rest (if you use a GPL library ,your software must be licensed under GPL as well). XMLReader This library is absolutely awesome if you are connecting to a SOAP based web service, no need to parse XML, just send the string through this baby and out pops an NSArray/NSDictionary structure that is way easier to work with in Objective-C. There are tons more libraries hanging around the internet, so stay sharp,you never know when you may come across a gem. Originally posted... <a href="https://divanv.com/post/ios-libraries/">Read more</a>]]></description>
      <pubDate>Sun, 19 Aug 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/ios-libraries/</guid>
    </item>
    <item>
      <title>Creating a custom UIPickerView</title>
      <link>https://divanv.com/post/custom-uipickerview/</link>
      <description><![CDATA[In this tutorial I will create a simple iPhone app to demonstrate how one would create a UIPickerView with custom contents. I started by creating a single view iPhone app (If you are not familiar with this I suggest you read this ). Note: I always use Automatic... <a href="https://divanv.com/post/custom-uipickerview/">Read more</a>]]></description>
      <pubDate>Mon, 6 Aug 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/custom-uipickerview/</guid>
    </item>
    <item>
      <title>Universal gravitation in C++</title>
      <link>https://divanv.com/post/universal-gravitation-cpp/</link>
      <description><![CDATA[With all the cool science thats been going around I decided that it would be fun to take some of the things I remember from High School physics and turn it into code. I decided to write a class that calculates the force between two objects using Universal Gravitation : $$F = G... <a href="https://divanv.com/post/universal-gravitation-cpp/">Read more</a>]]></description>
      <pubDate>Sun, 15 Jul 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/universal-gravitation-cpp/</guid>
    </item>
    <item>
      <title>Beginning iOS development</title>
      <link>https://divanv.com/post/beginning-ios-development/</link>
      <description><![CDATA[When developing in iOS you need to know one very important thing; where to start.There are many secrets to Here I will be trying my very hardest to give you that information by listing things you need to know and great places to find the information you might need. I will start by listing a few rules of iOS development Originally posted... <a href="https://divanv.com/post/beginning-ios-development/">Read more</a>]]></description>
      <pubDate>Thu, 12 Jul 2012 00:00:00 +0000</pubDate>
      <guid>https://divanv.com/post/beginning-ios-development/</guid>
    </item>
  </channel>
</rss>
