Recent Updates Page 2 RSS Hide threads | Keyboard Shortcuts

  • I’m on the Mac Developer Network! 

    Jonathan Dann 22:09 on April 22, 2008 Permalink | Reply

    I recently did a post on NSViewController with Cathy Shive, and I realised today that the post was link to on the MacDevNet (Thanks Scotty!). I’m actually feeling like a developer for once.

    Welcome all, nice to see you. Sit down, have a cup of coffee (espresso is served here), and I’ll write some more in a bit.

     
  • Using NSTreeController 

    Jonathan Dann 14:32 on April 6, 2008 Permalink | Reply

    A common UI concept in Mac development is that of the source list, which everybody knows from iTunes, iPhoto, etc. To do this, NSTreeController can come in particular handy, although it can come with a bit of a headache as the API is somewhat lacking and a proper model is essential to making this easy to use.  I’m going to go over the solution that’s worked for me.
    (More …)

     
    • Michael 23:08 on June 3, 2008 Permalink | Reply

      Hey Jonathan,

      great post, a quick question — in the XSControllers pattern you recently described with KATI, where do you put your NSTreeController? In the main nib file of the document window or in the sub-nib containing the actual controller client?

    • Jonathan Dann 23:31 on June 3, 2008 Permalink | Reply

      (sorry about the code formatting here, will change my style sheet sometime)

      That’s a good question actually, and is a little more involved than it sounds. I’ve changed it around quite a bit but have finally settled on a setup.

      I’ve put it in a nib of an NSOutlineView controller, the outlinve view is the left side of an NSSplitView and so it’s in the nib of the child controller of the root view controller in the tree. This makes it a couple of levels away from my model controller – my NSPersistentDocument. The problem then comes when I want to insert a node in my tree from code in the persistent document, which is often the case as its where I do the dealings with the model.

      To this end I’ve set the representedObject of all the view controllers to the NSPersistentDocument instance and then I can bind the tree controller to @”File’sOwner.representedObject.managedObjectContext”. To get at the tree controller from the document I’ve made a method which I added to XSWindowController:

      - (XSViewController *)controllerForNibName:(NSString *)name;
      {
      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nibName like %@",name];
      return [[[self flatViewControllers] filteredArrayUsingPredicate:predicate] objectAtIndex:0];
      }

      and this calls

      - (NSArray *)flatViewControllers;
      {
      NSMutableArray *flatViewControllers = [NSMutableArray array];
      for (XSViewController *viewController in self.viewControllers) { // flatten the view controllers into an array
      [flatViewControllers addObject:viewController];
      [flatViewControllers addObjectsFromArray:[viewController descendants]];
      }
      return [[flatViewControllers copy] autorelease];
      }

      which is just the same depth-search in the -patchResponderChain method, just factored out.

      So when I need the tree controller from the persistent document I can call

      - (XSWindowController *)mainWindowController;
      {
      return [[[self windowControllers] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"windowNibName LIKE %@",ESDocumentWindowNibName]] firstObject];
      }

      - (ESOutlineView *)projectContentView;
      {
      return [[[self mainWindowController] controllerForNibName:ESHorizontalSplitViewNibName] valueForKey:@"projectContentView"];
      }

      - (NSTreeController *)treeContentController;
      {
      return [[[self projectContentView] infoForBinding:@"content"] valueForKey:NSObservedObjectKey];
      }

      (I show them all as I’ve just copied and pasted from XCode you can obviously condense these methods, but I use them all separately, the projectContentView is the outline view bound to the tree controller and ESDocumentWindowNibName is just an NSString *).

      This works for me as I need to access the tree controller more often from the view controller (for outline view delegate methods) than in the persistent document. If I were to have it the other way round I’d programmatically create the NSTreeController in the persistent document and then bind to it (via representedObject) from the nib, but in the view controller I’d still need to get at is somehow.

      With this setup I can’t seem to decide on the best setup that requires the least convoluted access to the controller from either side (the document or the view controller). I did think recently of putting it back in the document and then creating an NSTreeController ivar in the view controller which I then bind to the tree controller, but its *very* convenient having it in the nib.

      I hope that I haven’t confused the matter! If you come up with a better encapsulated solution I’d like to hear it.

      Thanks for reading, glad the code’s useful.

    • Michael 18:56 on June 4, 2008 Permalink | Reply

      Thanks for the explanation – I was expecting something in the lines of that but hoped that maybe you’ve got some other smart solution ;)

      I just recently started to look seriously into bindings, but after fighting with this and similiar design problems I came to think that bindings are awesome & great… for doing simple things. I’d love to be proven wrong but right now it seems to me that when trying to solve complex problems with bindings you end up with architecture which (indeed) contains much less code but is actually much more complex and time-consuming to maintain and develop.

      That especially applies to using bindings with NS*Controller classes (as opposed to using simple bindings to custom controllers for field value/state tracking).

      Anyways, just an opinion.

    • Jonathan Dann 19:07 on June 4, 2008 Permalink | Reply

      You’re welcome, I’m still sticking with with bindings though. As my project has grown they’ve become more and more indispensable. There are some architectural considerations to overcome but the problems pale in comparison to doing it all with glue code.

      The only issue I have with the setup I’ve described it the drilling through relationships to get to the controller, but there are worse things.

    • Michael 19:15 on June 4, 2008 Permalink | Reply

      BTW, in the “drilling” solution you described, does it solve the problem of accessing the NSTreeController from another view? I mean, not the OutlineView, not the Document itself but some other sub-view which needs to also fetch data from the tree controller or access it’s selection?

      In particular, I mean a situation where you can use this (shared) NSTreeController from the Interface Builder.

    • Jonathan Dann 19:51 on June 4, 2008 Permalink | Reply

      Ah I see what you mean, in my setup all the view controllers have the same representedObject (the document) so they can get it that way, or they use controllerForNibName and get the view controller that owns the nib the tree controller is in, the tree controller is then hooked up to an IBOutlet.

      The outline view itself gets can get the tree controller too if it needs to like this:

      - (NSTreeController *)boundTreeController;
      {
      return [[[self outlineTableColumn] infoForBinding:@”value”] valueForKey:NSObservedObjectKey];
      }

      So in IB a view can use the keypath @”File’sOwner.representedObject.treeController” as long as the nib is owned by a view controller. If the view is in the windowController’s nib its just as easy @”File’sOwner.document.treeController”. An additional window (like an inspector) still references the same document. I haven’t had a problem with it yet.

    • Michael 21:15 on June 4, 2008 Permalink | Reply

      Hmm, could be I’m missing something very obvious but, how do you actually bind to that controller in the IB? I mean, yeah, you can get the controller using some kind of “File’sOwner” path but, from the pov of the IB, it doesn’t see it as a TreeController… does it?

      As far as I can see, you can use that keypath in a binding, but then you can’t select the “Controller Key” etc.

      BTW, coming back to your original article, one note – on the created NSTreeController in the IB you need to set the “Children” to @”children”, otherwise you’ll get “Cocoa Bindings: Cannot perform operation if childrenKeyPath is nil.” error.

    • Jonathan Dann 21:29 on June 4, 2008 Permalink | Reply

      Yeah sorry I forgot to put that in, also set the Leaf key path to @”isLeaf”. I’ll update the post.

      I see your problem, can you not append arrangedObjects to the keyPath? The controller key is just a convenient shortcut anyway.

    • Michael 21:52 on June 4, 2008 Permalink | Reply

      > I see your problem, can you not append arrangedObjects to the keyPath? The controller key is just a convenient shortcut anyway.

      Hmm… but if you use “File’sOwner.treeController.arrangedObjects” than you have no way of controlling what’s the object list and what’s the actual value. In other words, the real path is: “File’sOwner.treeController.arrangedObjects.nodeName” or rather: “”File’sOwner.treeController.arrangedObjects(each).nodeName”. But without the Controller Key you have no way of describing it – what’s the object list (array) and what’s the path to the individual object property to be used ie. in a given cell.

    • Jonathan Dann 21:57 on June 4, 2008 Permalink | Reply

      I’m afraid I’m not following, sorry. If you’re on leopard I can iChat screen share and we can try and sort it out, either that or you can email me your XCode project?

      If not then can you tell me what you’re trying to to and I might be able to help.

    • Jonathan Dann 00:20 on June 6, 2008 Permalink | Reply

      @”File’sOwner.treeController.arrangedObjects.nodeName” will return an NSArray of node names. The same happens when you have an NSArray and you call [myarray valueForKey:@"key"] the returned array contains the values for those keys.

    • Michael 18:50 on June 6, 2008 Permalink | Reply

      Ah, indeed, now everything makes sense. Thanks for your patience, that explains a lot.

    • Jonathan Dann 17:30 on June 7, 2008 Permalink | Reply

      Not at all, I wrote this to help people!

    • Jakob Dam Jensen 16:15 on July 5, 2008 Permalink | Reply

      Thank you so much for this Jonathan – I’ve been trying to get something to work for the last two days, and somehow it all makes sense to me now – thanks to you.

      Take care…

    • Ralph 19:35 on July 5, 2008 Permalink | Reply

      Hey Jonathan,

      do you have a sample Application which combines your ESNode and XSController?

    • Jonathan Dann 20:27 on July 5, 2008 Permalink | Reply

      @ Ralph,

      Sorry I’m afraid I don’t have anything prepared. The example app on katidev uses an NSOutlineView, so I’d just create an NSTreeController in that NIB and connect it up as I’ve described in this article.

      Jon

    • Jonathan Dann 20:28 on July 5, 2008 Permalink | Reply

      @Ralph

      Sorry I’m afraid I don’t have anything prepared. The example app on katidev uses an NSOutlineView, so I’d just create an NSTreeController in that NIB and connect it up as I’ve described in this article.

      Jon

    • Joseph Crawford 04:22 on January 20, 2009 Permalink | Reply

      This is a very good explanation and has surely helped me understand this a bit better.

      I am wondering if there is a benefit to using a tree controller rather than just handling the NSOutlineView groups/leafs using the objects.

      What does binding bring to the table that not using them doesn’t?

    • Jonathan Dann 19:11 on January 20, 2009 Permalink | Reply

      Hi Joseph,

      Glad it helped. As for the benefit, it’s mainly to help you ensure that changes to the model are automatically pushed to the tree controller without you having to intervene or tell the outline view to reload data, saving you the maintenance of the application logic in, what is likely, a fairly integral part of your app. Each time you add a node object to the managed object context (in the full-blown core data version I’ve also got on this blog) the tree controller will update its display.

      It doesn’t come without its caveats, which were the main reason for writing this post. When I wrote it there were no decent tutorials for the Leopard world that included the new NSTreeNode, which I saw as the saving grace of this whole setup.

      You save yourself writing the datasource methods, which is a both a blessing (not having to write them) and a curse (having to deal with the tree controller’s representation of things).

      So really my answer, is “not much, until I’d written all this” but it was a challenge to get it working. What’s probably more important are the extensions on NSTreeNode themselves, which allow to to properly navigate the content of the tree.

      Bindings with NSTreeController also allow you to remove a lot of other code, for example that which needs to know when the selected objects in the tree change. Without the tree controller you have to rely on notifications, which (in my experiments) are only sent for user-side updates. If you use bindings or simple KVO on the NSTreeController’s selectedIndexPath property then you save yourself some debugging hassle.

      Have you tried using table view’s with and without NSArrayController? You see the same reduction in code when you do adopt bindings in those cases, too/

      Sorry if this has been a bit waffling, I’m way too tired.

      Jon

    • Ernest 16:32 on February 19, 2009 Permalink | Reply

      Jonathan, thank you so much for this example. I have successfully implemented it into my project, but now I have a question for you. Maybe I am just not doing something right, but here it is: I added an Outline View to my window, which comes with the standard NSScrollView -> NSOutlineView -> NSTableColumn -> NSTextFieldCell. This works perfectly with my Tree Controller. However, when I change the NSTextFieldCell to use the check box cell (NSButtonCell) and run the application I get nothing but “Check” for my list? Am I missing something with the node in which I have to change to support NSButtonCell vs NSTextFieldCell?

    • Jonathan 09:39 on February 24, 2009 Permalink | Reply

      Hi Ernest,

      There could be an issue with incorrect bindings. What I did in my example was to bind the NSValueBinding (“Value” in IB) of the table column to the tree controller’s arrangedObjects.displayName keyPath. My first thought is that, as the NSValueBinding of the NSButtonCell refers to the on/off state of the button, the binding is turning them on if the bound string is not nil.

      Not sure how you would solve this one as there are two values you need to consider here, the value and the label. This should be possible with bindings, but I’d do a long search on the cocoa-dev mailing list from Apple, this kind of thing comes up regularly.

    • Elise van Looij 14:44 on March 14, 2009 Permalink | Reply

      Ernest, you need to set the Value Transformer (in IB under the Value property) on your NSButtonCell, NSNegateBoolean, if I’m not mistaken and if the value of the cell is an integer.

    • Matthias 13:22 on June 19, 2009 Permalink | Reply

      Jonathan, thanks for the article. In the groupDescendants method, shouldn’t this line:

      [groupsArray addObject:[node groupDescendants]];

      rather read:

      [groupsArray addObjectsFromArray:[node groupDescendants]];

      Thanks, M.

  • How to Install MCNP4C2 on Mac OS X 10.5.1 

    Jonathan Dann 15:01 on January 13, 2008 Permalink | Reply

    Well if you’ve already read my post on installing MCNP on OS 10.4.10 then you mostly know what to do when installing on Leopard! Its nearly identical but with Apple migrating the X11 system they use to the one from X.org the X-window library that MCNP looks for is now a different name so the install fails and tells you it can’t find X11.

    Some things are easier though, as X11 is installed by default you no longer have to install it from the Leopard DVD (unless you’ve selected not in install it in a custom installation of Leopard, in which case you probably know that you’ve done it).

    Well when you’re at the stage that you’ve run the ./install linux mcnp command and have set the system option to Linux then you have to change the X11 path to the defaults except for the library name. This is now libx11la.lib then the rest f the install will run smoothly.

    The new X11 in Leopard is buggy and the windows take an age to draw bit that’s going to be fixed soon. It all works fine its just the geometry plotting that is a bit slow, although this can be sped up if you switch to another app with a window that covers the X11 window during drawing (for example, iTunes), then switch back to find the window is completely drawn.

     
    • Sascha 02:53 on February 23, 2008 Permalink | Reply

      I just tested the installation of MCNP5 under 10.5.2.

      Gfortran has major problems with the mcnp5 code, the ABSOFT compiler needs a few adjustemens in the config file and the Intel Fortran Compiler (ifort) compiles the source but if i run the tests it exits with a segmentation fault. Problem seems to be, that the libraries are not correctly linked within the mcnp5 executable. I havent found a solution to this yet.
      Have you tried installing mcnp5 yet?

      Cheers,
      Sascha

    • Mat 14:28 on March 3, 2008 Permalink | Reply

      I also would like to know how to install MCNP5 under OS X because the manual is kinda messy…And I hate switching to windows constantly

      And do you perhaps know how to install SCALE4 under OS 10.5.2 ?

    • Jonathan Dann 23:11 on March 3, 2008 Permalink | Reply

      I’m afraid I have no idea what SCALE4 is! Can you enlighten me?

      As for the MCNP5 front, I got it today from the NEA so I’ll let you know when I’ve had a few mins to look through it. I have a feeling I’ll need a trial of either the Absoft Pro or Intel FORTRAN compiler, though.

  • How-to: Install MCNP4C2 on Mac OS X 10.4.10 (Intel) 

    Jonathan Dann 16:09 on October 8, 2007 Permalink | Reply

    MCNP (Monte Carlo N-Particle) is a transport code that is used throughout the physics community to model how particles interact as they travel through a system. The code is quite old, and therefore requires tweaking to get it running on newer systems like Mac OS X 10.4.10. There are programs and compilers it needs to use when installing that aren’t included in Mac OS X anymore due to their age, and a few that are on the Mac OS X CD that came with your computer, but aren’t installed by default. The first things we need are:

    A FORTRAN-77 compiler and a ‘C’ compiler of the same version.
    The ‘fsplit’ program.
    X11 installed.
    The XCode tools.
    (More …)

     
    • Jack 20:29 on October 15, 2007 Permalink | Reply

      Thanks for the post, I’ve been trying to install MCNP on my machine for a few months now with no luck. I have MCNP5/MCNPX, do you know if the installation procedure is the same?

      Thanks,
      Jack

    • Jonathan Dann 21:03 on October 15, 2007 Permalink | Reply

      Jack,

      Unfortunately not, I haven’t had the pleasure of using MCNP5 or X as my hospital doesn’t have the license for them. I think 5 is on order at the moment, but could take years! From what I’ve read you might need the Absoft or IBM FORTRAN compilers, and I think both have a free trial. The g77 (FORTRAN compiler) stuff I wrote about isn’t tested with MCNP5/X, and neither is MCNP4 tested on Mac OS X, nor is the g77 normally available for Intel Macs. Took me weeks to find out how!

      I think the new ones were built with the Mac in mind though and a quick Google search came up with

      http://www.nea.fr/abs/html/ccc-0730.html

      However, it doesn’t say if it was tested on Intel, but the use of the IBM FORTRAN 90 compiler suggests it was an older G4 or G5 (PowerPC) machine.

      Keep subscribed to the post, you never know when I’ll get MCNP5 from my hospital, I’ll post a comment if I get it working. And thanks for saying thanks!

    • Jonathan Dann 21:05 on October 15, 2007 Permalink | Reply

      Also, give it a try, the key is to use the same versions of g77 and gcc (which I did above) if you get any weird log errors after trying it with those two compilers, send me the log and I’ll have a look.

    • Tad 19:10 on October 23, 2007 Permalink | Reply

      Just wondering if there was any follow-up from Jack? I’ll be trying to install MCNP5/X on an Intel Mac shortly as well and wondering if he tried it with the compilers you mentioned… Thanks too for the article–very informative!

    • Jonathan Dann 19:47 on October 23, 2007 Permalink | Reply

      Hi Tad,

      No follow-up at the moment unfortunately! Would be worth checking back here every now and then. One day I’ll get the 5/X upgrade too.

      And you’re welcome for the tutorial :)

    • xiaoyu 20:19 on October 25, 2007 Permalink | Reply

      I don’t know what any of that was about! Yay!
      But I love you.

    • Jack 22:35 on November 1, 2007 Permalink | Reply

      Hi Jonathan,

      Thanks for the help. I’ve been pretty busy at work and haven’t had any time to try to set this up. I’m hoping to get a chance within the next few weeks. As soon as I try, I’ll let you know the results.

    • Jonathan Dann 15:25 on November 14, 2007 Permalink | Reply

      Just so everyone knows, I updated this with a little fix to the fist set of terminal commands. Was a stupid mistake, if you’ve had problems, try again. Gonna try with Leopard tonight!

    • Elton 00:51 on July 14, 2008 Permalink | Reply

      MCNP4C, ola alguem pode me ajudar instalar MCNP4C no windows

    • Phil 16:10 on September 9, 2008 Permalink | Reply

      Hey Jonathan,

      Thank you for what seems to be the only tutorial online on how to install this for the Mac! I have followed your directions and have hit a snag at the install stage and would appreciate your advice. I get the following error message shown below.

      Many thanks,

      Phil

      aluminium SU >chmod a+x ./install
      aluminium SU >./install linux mcnp

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % Time %
      % Run the SETUP program … (1-2 min.) %
      % %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      ./install: line 41: ./mcsetup: No such file or directory

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % %
      % SETUP ERROR OR USER ABORT. % Tue Sep 9 15:46:53 IST 2008
      % %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    • Jonathan Dann 11:31 on September 11, 2008 Permalink | Reply

      Hi Phil,

      Yeah I struggled to find a how-to for ages until I realized that I had to work it out myself. It a bugbear of mine that the opensource/scientific community often keep the entry level too high for end-users.

      As for the problems you’re having I’d love to help but my MacBook Pro died two days ago and I’d in for repair so I can’t look at the directory structure as the install is taking place.

      Your error (forgive me if you know this already) means that mcsetp is not located in the current working directory (signified by the ./). Now it’s been a while and I can’t be sure as I can’t work through the install again at the moment but the mcsetup file is copied to your hard disk when unzipping the MCNP distribution when you begin (the part with the gunzip command).

      From your output it seems that you’re current working directory is / rather than (for example) /Applications/mcnp/mcp4c2. But as the install has begun I’m guessing that I’m wrong in thinking this.

      So first check that the folder with install also contains mcsetup. If not, then I’d start again making sure that the unzip process works properly.

      Let me know if this helps.

    • Andrew Davis 12:34 on December 8, 2008 Permalink | Reply

      Phil

      The ./install compiles a fortran program to get things rolling, it looks like either your g77 doesnt exist or you need to edit the installer script. If you have gfortran installed rather than g77, then edit the ./install and replace g77 with gfortran.

      In fact thats true throughout Johnathan’s guide. If you do the above, the installer will start, and then fail. Edit the makemcnp script and replace g77 with gfortran, also remove the “./” from fsplit.

      Run makemcnp and then you’re done.

      Hope that helps

      Andrew

    • Hywel 17:13 on August 11, 2009 Permalink | Reply

      Thanks! That recipe worked a treat! I’m now happily watching ZX Spectrum graphics of reactors in X11 on my MacBook.

    • Joel Turner 15:59 on August 18, 2009 Permalink | Reply

      Hi, thanks very much for this guide. I do have one question – when running mcnp4c2 on my Macbook, the nps and ctme cards don’t appear to work, as in the code never terminates! I’ve tried it on a couple of macs with the same result. Was just wondering if you had any ideas??

      Cheers!

    • Jonathan Dann 16:05 on August 18, 2009 Permalink | Reply

      I’m afraid not, I used to have them working fine on my MacBook Pro. To be honest its a while since I’ve done MCNP. I seem to remember such a problem once, but I think my code was just wrong :S

      Sorry.

    • Joel Turner 17:11 on August 18, 2009 Permalink | Reply

      Just realised what the issue is. It seems to need a blank line after the NPS command on Mac to be recognised. Not sure if notebook adds this automatically on windows or what!

    • Jonathan Dann 17:40 on August 18, 2009 Permalink | Reply

      That rings a bell. You have to be very careful with line endings with 4C2. Smultron and TextMate can harmonise line endings for you.

  • How-to series 

    Jonathan Dann 14:44 on October 8, 2007 Permalink | Reply
    Tags: Computing, How-to, Mac

    The next few posts I think will be a little more obscure than the others.  As a scientist, I frequently have to work out how to install random science-y programs on my computer, and how to do the odd geeky thing.

     Occasionally I get asked how to do these things, and the things I need to do are frequently undocumented, or badly documented at best.  I hope someof you find these things useful.  If not, at least they’ll exist for when someone asks me how.

     
  • Potter Puppet Pals 

    Jonathan Dann 18:42 on September 3, 2007 Permalink | Reply

    Hi guys! I haven’t posted for a long time, been quite busy with being important.  I do however have to help in promoting this:   

     
  • Longest…Post…Ever! 

    Jonathan Dann 19:29 on June 27, 2007 Permalink | Reply

    For the few of you who read this regularly, I’m sorry I haven’t updated my blog for a while.  I’ve found some things I’d like to blog about, but have had both zero time and little internet access.

    Since May I’ve been swamped with working for my MSc exams, the closer they got the more stressed I became and couldn’t bring myself to be remotely creative!  They finished in early June, and went surprisingly well considering the sheer volume of information I had to remember.  I clearly recall getting to the final exam, sitting down, and being so tired that I had to force myself to begin answering questions.  Normally I feel the fear in exams and start writing immediately, but this was utter exhaustion.  I get the results sometime this week hopefully, but I’m not the sort that agonises over the wait.

    After the exams I went off to Paris for a couple of days to see my girlfriend, which was ace.  I actually managed to relax there.  Then came back and moved to Swansea to start working on my research project.  This was where more stress hit me.  If you ever need to get information from Swansea University, don’t count on it being true, or them helping you one bit.  As I’m a postgrad, I asked if they would give me accommodation for a couple of months whilst I settle in and find a place.  The response was, “Yeah, sure.  That’s no problem, we have spaces now.”  This was at at the start of the week before I moved, whilst I was in Paris.  It got to the end of the week, they’d had my application form, so I called them when I got back to England: they hadn’t sorted a room as there were no spaces, even though most of the students had moved out.  They were thoroughly unhelpful to me, leaving me up the creek without a paddle.

    I then went to stay with my best friend in Cardiff, hoping to find a place in Swansea over the weekend and move in.  Having no car, an knowing hat the transport system in Wales leaves much to be desired, this was going to me no mean feat.  Thankfully on the Sunday I found a place, although I wasn’t quite sure about the landlord, I was desperate.  So I moved in on the Monday after work, dragging my suitcase over the majority of Wales.

    The landlord turned out to be a dodgy piece of work (always trust your instincts!); wanting a huge cash deposit so he could fix the lock on the front door, which he hadn’t told me about.  So I moved out during the Tuesday when my boss gave me the time off, and moved into a B&B on the beachfront.  I recommend the Oyster Hotel if you’re ever in Swansea they have lovely ensuite rooms for £20-25 per night, great service and breakfast is included.

    I finally found a place on the Thursday, and then had to rent a car to go back home and pick up all my stuff, including my new MacBook Pro (hmm.. Apple’s built in spell-checker doesn’t recognise ‘MacBook’) that had arrived during the week, I’m typing on it now ;)   That cost enough, but it’s a good job I paid £30 extra for zero excess, else I would’ve had to pay £500 for the alloy wheel I scratched on a curb.  Should have taken a photo of it to post here, but just imagine a brand-new Corsa with a busted rim :)

    I think the internet will be connected in the house when I get back from work; if you’re reading this then it has been!  We’re having a 20mb line put in so I think video -chatting on Skype with my girlfriend will work fine, don’t you?

    The best part of all this was when the Hospital Accommodation office rang me during the week.  I don’t think I said why this all happened in the first place?  They said their staff housing was full.  I got a mid-week answer machine message, “When are you going to pick up your room keys?”.  Love the NHS, they had a room reserved for me for ages, but told me nothing about it.

    So what have I learnt from this?

    • Never trust Swansea University
    • Pack light when you have nowhere to live
    • If you landlord sounds a bit off, run
    • As long as you have your phone and you wallet you can cope with anything
    • Always pay extra when you hire a car
    • I want a Corsa, but would probably scratch the wheels when driving off the forecourt
    • I love my Mac

    Oh, and the research project is going really well.  Once I know what I’m doing I’ll put something up about it.

     
  • Norton Antivirus Crashes China 

    Jonathan Dann 14:38 on May 19, 2007 Permalink | Reply

    Most of you reading this may not believe me, but I thought I’d have to do some journalism and report something that’s been omitted from Western news sites.

    China Has Been Oddly Silent
    I was on the phone to my Chinese girlfriend yesterday (she lives with her mother in Paris), who told me that her father had called from Beijing to explain why her Mother’s computer in Paris had crashed. It turns out that an update to Norton Antivirus managed to wipe key system files from all Windows computers in Chinese! This has affected about 80% of the computers in China, and was only recoverable by those with a Windows install disk, which is not many due to the amount of computers bought with and OEM version of Windows.

    He father also said that the disaster had caused a wave of suicides amongst businessmen, reported all over the Chinese news agencies, presumably resulting from a loss of money in stocks.

    I still haven’t been able to find anything about this on Google, and her they can’t check the Chinese sites on her mother’s computer as they don’t have a Windows disk to reinstall the system, her own Windows computer cannot be used to type in Chinese.

     
    • xiaoyu 14:51 on May 19, 2007 Permalink | Reply

      Aaah! Hope I haven’t provided you with random false information. : (

    • Jonathan Dann 15:07 on May 19, 2007 Permalink | Reply

      Yeah I hope so too love! Just blame your Dad if it’s not true :)

  • Cornholio 

    Jonathan Dann 00:37 on April 25, 2007 Permalink | Reply

    I can hear him now:

    I am Cornholio!

    I found this on the interestingness page on Flickr, it seems that I’m not the only one who loves this shot. You can click the image to go to the original.

     
  • There’s a Wolverine in My Science 

    Jonathan Dann 16:39 on April 20, 2007 Permalink | Reply

    I’m going through all my notes at the moment, trying to learn for my Master’s Degree exams. I occasionally, or more frequently, or well…. I take breaks. In one of my many ventures into the land of the interweb, I found this. It’s an article from the Science Creative Quarterly, and it made me laugh out loud. Especially the section that descirbes an experiment, akin to Schrödinger’s cat, will result in a zombie wolverine.

    Read of the world if the climate in Ancient Greece were a sloght colder. I’m submitting my own writings to it too, I’ll let you know if I get published. Oh, and any insight into my Medical Physics exams would be most appreciated.

     
    • shadowartist 11:05 on April 21, 2007 Permalink | Reply

      Hi there, ‘fraid I can’t help you with medicial physics but just wanted to say thanks for your recent comments on my blog! I haven;t been on it much lately as I’ve been so busy but I guess at least I dont have exams to study for! I don’t envy you – Good luck with them!! Nika (my new name!)

    • Nika 16:11 on April 22, 2007 Permalink | Reply

      hey, I’ve just noticed you’ve linked to my blog! Thanks! Haven’t set up my blogroll yet, but will add you to it when I do! :)

c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel