Work in progress

Apple released beta5 of the iPhone SDK and quietly opened iPhone Developer registration to the public so that everyone can load their code onto their iPhones and give them a go. The updates SDK is winging it’s way to me at 1495K/sec right now which means I’ll be able to have a play with it … Continue reading “Work in progress”

Apple released beta5 of the iPhone SDK and quietly opened iPhone Developer registration to the public so that everyone can load their code onto their iPhones and give them a go. The updates SDK is winging it’s way to me at 1495K/sec right now which means I’ll be able to have a play with it at lunchtime when I’m away from the oppression at $BIG_COMPANY (where music players have now been banned because they’re ‘not professional’ – it’s fun working through a problem when there are people talking loudly in every direction – really aids the concentration.)

Anyway, the SDK release.

This is, to be honest, much sooner than I expected and I think there must be quite a few happy people around who are loading apps onto their phones and enjoying the novelty. I’ve been fighting for some time at lunch just to try Interface Builder but something has always come up for the last 7 days. It’s frustrating and when I mention the frustration, the helpful response is ‘Well, if it mattered to you, you’d find time.” Brilliant.

I don’t know what sample code will work on the iPhone with the latest beta and I don’t know whether or not it’s safe to load my iPhone with the beta firmware and still want to use it as a phone. And there’s no way to check because Apple still have an NDA on all discussion on the technical aspects of the SDK and firmware.

As this is very much still a learning experience for me, it’s slow and boring. I’ve kinda decided to strike out and work on something else in order to maybe build some momentum. I would like a cashflow-type application for the iPhone.

As you can see, it’s a work in progress.

Back to the drawing board

I’m finding Cocoa very hard. A few months ago, Aidan spent some time to coach me through the basics and while that went on I managed to get a lot of ‘relatively’ advanced things done. Going back to the code I wrote, even with the benefit of several weeks of writing out the examples in … Continue reading “Back to the drawing board”

I’m finding Cocoa very hard. A few months ago, Aidan spent some time to coach me through the basics and while that went on I managed to get a lot of ‘relatively’ advanced things done. Going back to the code I wrote, even with the benefit of several weeks of writing out the examples in the book I bought and I’m lost. So it’s very much back to the drawing board.

this highlights some things to me.

  1. Programming is hard. There’s no escaping it. It’s not something that everyone will pick up.
  2. Programming requires focus. You need to pay attention to it. Otherwise you won’t learn.
  3. Programming takes time. You’re not going to learn overnight. You need to look at it daily.

Cocoaing with the JesusPhone

My copy of “iPhone Open Application Development” arrived in my hands today after spending a couple of weeks in the Mac-Sys office. It’s a slim tome compared to the other Cocoa books I have but I understand where it fits in and it’s a nice little addition to the collection. Why is this book relevant … Continue reading “Cocoaing with the JesusPhone”

My copy of “iPhone Open Application Development” arrived in my hands today after spending a couple of weeks in the Mac-Sys office. It’s a slim tome compared to the other Cocoa books I have but I understand where it fits in and it’s a nice little addition to the collection.

Why is this book relevant when we have a proper (beta) SDK available from Apple’s Developer Site. Because, gentle reader, it looks at the system from a different angle and I think it will help me better understand how things fit together. It goes into a lot of detail in the construction of an application and the bits and pieces that are needed. This reinforces that there’s no ‘magic’ here. It’s a system with components.

I’ve only got a couple more chapters to go through in the Cocoa book I’m working on. Then I’ll attack the iPhone book as well as the BigNerdRanch Cocoa book.

Money for nothing and chicks for free

Daniel Jalkut, of Red Sweater software fame, writes about ‘free’ software: During the chat, the entire MacBreak Weekly crew discussed the danger to the music industry that comes from younger listeners having a built-in expectation that music should be free. This was in response to Leo Laporte claiming that Pukka, a del.icio.us client, should be … Continue reading “Money for nothing and chicks for free”

Daniel Jalkut, of Red Sweater software fame, writes about ‘free’ software:

During the chat, the entire MacBreak Weekly crew discussed the danger to the music industry that comes from younger listeners having a built-in expectation that music should be free.

This was in response to Leo Laporte claiming that Pukka, a del.icio.us client, should be free of charge. Software should be free of charge? I think that’s an unhealthy expectation fostered by poor communication and the hi-jacking of the word ‘free’ by the FLOSS movement.

I agree with Daniel and I’m willing to argue the point further.

Software developers are rock stars.

I’m not talking about the idea that in a software development team of 20 code-heads, there are going to be two rock star developers and everyone else there is for bug fixing, testing and coffee-fetching because I find that idea to be repugnant, elitist and indicative of a management infrastructure that needs to be dragged out into a forested area and buried alive.

Sure, not everyone has the same ability but it should be the duty of a manager to find the people who are motivated to become excellent and not just prop up those who already are.

The fact that someone can write code that can be read by a computer and then sold to thousands of other people is no different to my mind than a songwriter who records his song and then sells that to thousands. It seems bizarre with hindsight that a “Music Industry” style organisation did not spring from the early days of programming. Imagine a world where all software was delivered via four or five big labels (like, Microsoft, Google, Apple, Adobe…) and individual coders spent a lot of effort trying to build software that would get them noticed by one of the big labels so they could become software rock stars.

Oh, god, that’s already happened.

Radiohead’s In Rainbows got a lot of press because the album was provided as a download where fans could pay what they thought it was worth to them. According to Wikipedia, one third of downloaders paid nothing and yet the average price being paid was £4 (around $8) which means that a lot of people paid more than that. This ‘idea’ of theirs has existed in the software development world for years. Digital downloads for software are not a new phenomenon. And variable pricing is also not new.

Nine Inch Nails followed up with ‘Ghosts’ which came in a variety of versions ranging from ‘free’ to ‘Ultra-Deluxe Limited Edition’. The latter, priced at $300 and limited to 2500 copies, sold out within hours. They’re going further by releasing it under “a Creative Commons Attribution Non-Commercial Share Alike license” which does take it a step further.

Both of these music releases borrow heavily from the software industry’s shareware, donationware history.

I think it’s important to treat all software developers like rock stars. (This doesn’t mean feeding them sex, drugs and rock’n’roll until they burst!) I know software developers and musicians who have the talent and skill to write code but yet cannot think of what to write (the coder doesn’t know what app to write, the musician doesn’t know what song). A complementary relationship with someone who has ideas, passion, vision is exactly what’s needed and is commonly why musicians form bands. (Should software developers form bands?)

While listening to a podcast last night, the hosts were heard to comment “The term ‘starving artist’ didn’t come out of nowhere”. Treating software developers as ‘artists’ is important. No-one would expect an artist or sculptor to give away their work for free. Fewer still think that music should be free but there is a modern day implication that software should be free. In these days of digital printing, digital music and easy software duplication, I can understand why this content should be inexpensive (harking back to the 1000 fans post).

Apple recently offered software developers who wish to distribute their software for iPhone the following deal:

$99 for a certificate and 30% of all sales for placement in the App Store. Free apps are free.

It’s my opinion that musicians would give their left leg for a deal like that. Pay a $99 fee for set up of the store account and then Apple takes 30% of sales. The musician gets to keep 70% of the sale price as well as get placement on the iTunes store. And maybe that’s Apple’s intent. It’s well known that the record labels are balking at Apple’s dominance over music and are starting to offer DRM-free music to other vendors in an attempt to short-circuit Apple’s market. It would be stupid of Apple not to already have a plan in motion to circumvent that.

And why stop there. Does Apple have the potential to sell digital images for home printing? Compete with lulu.com for digital books?

The title of the post comes from the Dire Straits song “Money for Nothing”. In that track, the lead character is a blue-collar worker criticising what he sees in the Rock Star world. Earrings, makeup, oodles of money, groupies. The worker doesn’t appreciate the ‘difficulty’ of writing a song, lyrics, playing an instrument and getting noticed. Similarly, when I have shown my puny efforts of software development to non-technologists, they’ve been pretty dismissive. It’s hard for these people to appreciate that some things are hard. Likewise, it wasn’t until I started reading other people’s writing that I realised that writing in a creative and interesting way was, after a fashion, hard.

I’ll leave you with this User-Friendly strip from 1999.

A light went on somewhere…

After each section of the name, there is a colon, which is actually considered part of the name itself and then a parameter. The type of the parameter is given in parentheses, followed by the parameter name. After reading this short section, seriously I felt a light switch on in my brain. I’ve seriously started … Continue reading “A light went on somewhere…”

After each section of the name, there is a colon, which is actually considered part of the name itself and then a parameter. The type of the parameter is given in parentheses, followed by the parameter name.

After reading this short section, seriously I felt a light switch on in my brain.

I’ve seriously started reading about programming on the Mac and like in previous centuries I’ve had issues with trying to jump in and do things because I don’t know head from tail.

It’s like being instructed how to extract DNA
from a tissue sample by being told:
“Here’s a tissue sample, extract the DNA”

My experience with writing code started in about 1982 when I got a Sinclair ZX Spectrum for Christmas. I didn’t know anyone else with a computer and struggled along with Sinclair BASIC in isolation for about a year until I decided (at the tender age of 11 or so) that computers were crap and it would be a few years until they got “good”. (Even then I was prescient). The Spectrums had issues with dust or heat or something and the recommendation we got from Sinclair was to blow a hairdryer on ‘cool’ in the port at the back to prevent the . It didn’t help that half of the sample code examples were printed incorrectly (in manuals and magazines) and I had insufficient understanding of what was going on to even guess what might be wrong with the code I’d painstakingly typed in (and with no persistent storage, turning off the machine meant starting again). It brought many tears to my eyes at the time and even playing The Hobbit ‘adventure’ game didn’t help because I’d not read the book and had no idea what to do when I met the trolls other than get eaten. I let computers pass me by for a few years, dallying only with playing a few head-to-head games of Falcon at a friends house (two friends, one had an Amiga, the other an Atari ST and using a cable you could hook them up for dogfights). I knew then that multiplayer games were a hundred times more fun than playing solo and a million times better than being constantly eaten by trolls. But there wasn’t a medium for ‘playing’ over at the time and I was soon working towards my A-levels planning for a career in Biology and, for the most part, forgetting all about computers.

Back when CD-ROM was an acronym used
with “inverted commas” when speaking.

Mac Plus SE from the Psychology Department. We would sit up playing with stuff like fonts, games and clip-art until dawn broke, fueled by coffee and we’d grab a couple of hours sleep before I had to go to grueling 9 am – 5 pm lectures and lab practicals. Throughout university I had no exposure to Windows – just UNIX and Macintosh. And I didn’t think for a second about writing any code to take better advantage of them. I was more interested in talking using a computer, even just sending text between machines.

After graduation, the market for genetic engineers was pretty poor and though I had a placement guaranteed in the City Hospital labs (I’m not just a pretty face), I gave it up for a lesser job which paid better and would give me time to go back to college to study something about computers.

What the hell is this crap?


At the University of Ulster, we were introduced to Modula-2 and, to be honest, I foundered. I couldn’t see anything exciting about it and we were interacting with it using Windows, which interfaced with the VAX using some sort of terminal application. I am not kidding that when presented with Windows and VAX/VMS after coming from UNIX and Macintosh, I was less than enthralled. I did my best with Modula-2 and even stayed up all night one evening i the labs trying to get the main assignment to compile. I’d have gone mad if the guy next to me hadn’t left a copy of Lemmings running. I passed that course but I hated it. And because I didn’t seem to be a star in Modula-2, I didn’t get onto the C-course in the second semester and instead had to learn all about COBOL. Needless to say, code didn’t seem very attractive. Mainly because I was apparently shit at it.

Code is sexy. So are boobs


It did help cement my interest in networked environments and through a series of trials and tribulations I managed to wangle myself onto another course (AVTIT), which allowed me to piss about with ethernet and TCP/IP. This actual ‘practical’ knowledge of TCP/IP served me well, as did my Mac background, in getting me a placement with Nortel which really served as my introduction to I.T. as a career. My job was mostly looking after the Mac people there so I devoured a copy of the Mac Bible and learned quickly (and eventually didn’t need to call my girlfriend as often to Mac advice). From there I went on to just networking as a career and to be honest have not looked back. I did have to touch C code once while there – and that was because we used an in-house ‘clocking’ system called flexi which had been hardcoded with s 250 person limit. As NITEC grew, we hit 250 and the system fell over. Changing the limit to 499 worked but required me trawling through the code, figuring out what needed changed and then getting a student to help me compile it and get it running. I developed a little crush on her it has to be said (well, she was smart, good-looking and had a great rack…)

Liars, thieves and businessmen


After that it was more networking work, then headhunted to run the technical side of Macinni by their Commercial Director (Gerry) and when that failed due to horrendous mismanagement of the sales/retail side. A startup losing half a million pounds in six months is something unheard of these days – but what can I say – Caveat Emptor. It was a humbling experience being made redundant by a couple of crooks but I came out of the experience with some new friends, my savings and a lot of righteous anger about how a Apple Authorised Service Provider should be run. And decided to do it myself, pulling in every favour I could ever have made and dragging the technical guys from Macinni with me (I kinda figured the Admin and Sales guys could fend for themselves). We applied to Apple and it took a long phone call to the UK MD to get them to give us a chance as an AASP considering the disaster that was Macinni.

I will learn to code.
If it kills me


This year Mac-Sys is five years old (it seems like ten) and it has had ups and downs to be honest. People come and people go. And I still can’t write more than a few lines of code because, frankly, it was never the day job. I’m trying to change that and maybe at the same start to bring some value other than my boyish good looks (which have long faded) and charm (which I never had). Writing Cocoa code is hard but realistically no harder than PHP or any other code I’ve touched and not been able to get the hang of.

To this end I’ve started working though a book of code which is getting me started. Philip and Aidan have pledged some time to help me through some examples and I’m trying to get some guys in $BIG_COMPANY who are interested in Mac/iPhone development to come out at lunchtime to NISP and talk Cocoa for a bit. We also mooted the idea of reviving Cocoaheads but I’m not sure how this would pan out considering I’m out in the evenings a lot as it is (with gaming once a week and OpenCoffee and NiMUG once a month. Add in Cocoaheads….)

I’ll keep y’all informed.

XCode is hurting my patience

So how am I meant to deal with the light blue blobs. I can’t ‘edit’ that text in any sensible fashion when what I really want to do is remove the space just after the * character. I end up just typing the whole thing which removes the point of autocomplete. Related posts: iPad All … Continue reading “XCode is hurting my patience”

So how am I meant to deal with the light blue blobs. I can’t ‘edit’ that text in any sensible fashion when what I really want to do is remove the space just after the * character. I end up just typing the whole thing which removes the point of autocomplete.

Ugly application != Ugly Code

ObjectMentor takes on the idea that Business Software is Messy and Ugly The developers responded to my message with enthusiasm. They want to do a good job (of course!) They just didn’t know they were authorized to do good work. They thought they had to make messes. But I told them that the only way … Continue reading “Ugly application != Ugly Code”

ObjectMentor takes on the idea that Business Software is Messy and Ugly

The developers responded to my message with enthusiasm. They want to do a good job (of course!) They just didn’t know they were authorized to do good work. They thought they had to make messes. But I told them that the only way to get things done quickly, and keep getting things done quickly, is to create the cleanest code they can, to work as well as possible, and keep the quality very high. I told them that quick-and-dirty is an oxymoron. Dirty always means slow.

I agree totally.

But this assumes a perfect world. Where you have time and money to get in a consultant to synchronise the code-quality of a dozen engineers of differing backgrounds and experience (and dare I say it, bad habits). Uncle Bob of ObjectMentor is also talking about the code. Code can be clean, well commented and refactored but it still might make business software an ugly mess because the issues I see with business software a different.

It’s not that the code is bad.

It’s that it was built by engineers for engineers. Or that it assumes too much knowledge of the business in order to operate. Or that they didn’t bother with UI testing because they had a release date to beat. The excuses are may but none of them point a finger at the code itself and say “Ewwwwwww”

This echoes how I feel about programming

It’s a bit rude so if you’re easily shocked, go here instead. Related posts: iPhone. 4. Computer Programming for Everybody Can you feel it? I’m so full of interesting information, I feel like the latest edition of something or other.

It’s a bit rude so if you’re easily shocked, go here instead.

Small steps…

[[NSFileManager defaultManager] createDirectoryAtPath:_attachmentStorageDirectory withIntermediateDirectories:YES attributes:nil error:nil]; NSLog(@”Directory created!”); Anyone who knows me, knows I’m not a programmer. I speak Hello World in about 8 languages. Not very impressive. I’ve been able to hack a little php and javascript in the past and played with perl and Java for nothing useful. I did fix a couple … Continue reading “Small steps…”

[[NSFileManager defaultManager] createDirectoryAtPath:_attachmentStorageDirectory withIntermediateDirectories:YES attributes:nil error:nil];
NSLog(@"Directory created!");

Anyone who knows me, knows I’m not a programmer. I speak Hello World in about 8 languages. Not very impressive. I’ve been able to hack a little php and javascript in the past and played with perl and Java for nothing useful. I did fix a couple of C programs back in the day so, like music, I’m able to read it but not really write or play.

The code block above represents my first real line of production code and though it’s fair to say that my hand was guided at every step, I do see it as a way forward.

I’ve never really needed to be a coder which is apparently one of the main reasons I can’t code. It’s never been instrumental to my daily bread and so it wasn’t a skill I retained despite learning Modula 2, C, Java, Javascript, Perl…etc. The only “code” skill I developed in any meaningful way was shell scripting which was used infrequently enough to require relearning when I needed to modify my own code.

My background was in Networks and there’s little programming needed in desktop support and network support. My own shell scripts were developed to enhance my burgeoning laziness (it is my contention that the best IT person is a conscientiously lazy IT person – someone who will work a 36 hour shift in order to put something in place that will shave 5 minutes off his daily routine.) I was happy to script snmp commands so I didn’t have to type them in, I’d just cron them. I was happier still to script AV definition file distribution so I didn’t need to visit every desktop and laptop with a floppy disk.

But there’s a change afoot and I want to get more into the code. It’s not something I really relish because after being known for years as the local Mac Daddy I find myself now a complete noob and no-one likes to feel stupid. But it’s something I want to do and, to be honest, feel compelled by myself to manage.

Learning Objective-C with Cocoa is daunting, not only because the syntax is odd (though really I have little to compare it with) but because the libraries are so comprehensive. As I’m also trying to get to grips with Object Oriented Programming, I have a double-whammy of confusion.

iPhone SDK.

This morning the subject in the Infurious chat swayed to the iPhone and the new possibilities with the SDK being available in February. The SDK will enable applications to be written for both iPhone and iPod touch. This has different implications for applications wanting to take advantage of the New World Order. Thinking of applications … Continue reading “iPhone SDK.”

This morning the subject in the Infurious chat swayed to the iPhone and the new possibilities with the SDK being available in February.

The SDK will enable applications to be written for both iPhone and iPod touch. This has different implications for applications wanting to take advantage of the New World Order.

Thinking of applications which are useful in terms of:

  • Closeness
    • The “computer” will be with the individual 24×7.
    • It will wake them in the morning and lull them to sleep at night
    • they will carry it in their pocket. everywhere.
    • they will have access to it in their car
    • they will be able to hear it everywhere, wired or wireless
    • storage is limited but still large
  • Information input/output
    • Normal screen or widescreen
    • multitouch pinch, tap
    • inertial sensors, light sensors
    • GPS-type coordinates from cell towers
    • Contextual data from WiFi points
    • Make use of PUSH as well as pull
    • It has a microphone and speakers!
    • and a screen
    • and it vibrates…