I am currently porting some iOS games from Objective-C to Swift, which involves rewriting a lot of code. While doing this, I stumbled upon something interesting.
I am currently creating two new games for iOS. One is made in Swift and SpriteKit, while the other is made in Objective-C and UIKit.
UPDATE 2017-01-25: Since I wrote this post, much better alternatives are now available for Swift. My favorite is Dip. A second option is Swinject. I really like Dip, but you should check out both and see which suits you best.
Note: Crittercism has shut down. A great alternative to Crittercism, in 2017, is Fabric.
I use Parallels Desktop to run Windows from a dedicated partition on my Mac. It works great, but requires some setup.
Oh, my f*****g GOD, I was not prepared for this.
The creativity evangelist Denise Jacobs coaches people in the tech field through creativity. In her keynote, she talked about creativity, betterness and habits. She’s a pro-speaker, meaning that her presentation is more or less what you could expect from an “American motivational speaker”. Professional, but so streamlined. Interesting, but leaving you with a feeling of “what did she say…really?”.
This nice talk on mobile security by Siren Hofvander kicked off with some general good-to-knows, like how a cell phone is lost every 3 minutes. Adding this to the fact that 3 of 4 companies allow BYOD (Bring Your Own Device), a lot of sensitive information can get lost to the public, if you ignore to secure your information.
Before I start writing about how perfect this session was, first some background information.
I am very excited about the new Ubuntu Mobile platform, despite not being a Linux or Ubuntu guy.
My fourth session of the day was a case study from Sirius International, where my old colleague Jon Gyllenswärd and friend and Jimmy Nilsson from factor 10 talked about a two year long change process they managed together. The process involved a complete system redesign, moving to a business optimal code base, cross functional teams and, sometimes controversially, always choosing the simplest solution possible.
This session was interesting and required a lot of attention, which made it hard for me to sum it up properly. The abstract explains what the talk focused on:
In this session, Christian Horsdal talked about layers, carefully to distinguish between layers (logical) and tiers (physical).
In an iOS app of mine, that I made with friends, we had a situation where the app shut down after taking a couple of photos.
Unlike Apple’s outstanding OS X experience, Microsoft really have to step up the Windows user experience. If you are going to charge a lot of money for people to use your os and require them to activate their copy of Windows, you need to make this work. Not work good, just plain work.
When working with git, I have mainly used a single SSH key pair, which I use for e.g. GitHub.
If you want your apps to have an identity of their own, you should put some time into adjusting the default appearance, such as fonts and standard iconography.
I am using Google Maps in a couple of iOS apps that I have created. Or, at least I was before Apple threw out Google Maps and put in their own. So, now I guess I am using Apple Maps instead.
In a current project, we are auto-creating deploy packages of an ASP.NET MVC web site, using Team City. When we do, we need to perform web.config transformations so that a properly transformed configuration file ends up in the package.
I am working on an iOS app that is powered by an ASP.NET MVC 4 admin system that uses Entity Framework Code First with auto migrations RUNNING on App Harbor. The project also involves a web site for presentation and information.
I recently updated OS X Lion to OS X Mountain Lion on all my personal computers. The installation was smooth, but afterwards some things did not work as expected.
My third and final day at Øredev 2012 offered some really nice talks, as well as a really crappy one.
My second day at Øredev 2012 was amazing! When it was over, I had to sit down and take it all in. There were so many great talks, and I still had to skip many that I wanted to see.
Inspired by my trip to Oredev and all the great devices and presentation, I have finally installed Windows 8. I decided to upgrade my Windows 7 installation, and found the installation to be very quick and painless.
I am happy to once again attend Øredev in Malmö, Sweden. Thanks, Cloud Nine, for sending me here. Three days with great speakers and nice friends is just what is needed in the dark, Swedish November.
I have an app with a main menu, where users can swipe horizontally through a set of large icons that each take the user to a certain part of the app. When an icon is tapped, it bounces, plays a sound, then takes the user to that particular part of the app.
This post will show you how to localize your iOS apps, so they can be translated to several languages. The post will describe how to translate plain text and how to create localized versions of your storyboards.
Earlier this summer, the NDepend team released v4. I have been meaning to try it out for some time, but life (summer, sun, vacation…hey, we Swedes live in snow, cold and darkness for like 3/4 of the year) and some projects got in the way.
I am currently developing a location-based app for iPad and iPhone. This is how it looks:
I am building an app that uses ARC (Automatic Reference Counting), which means I from now on will not have to handle memory management as actively as I have done before. There are still things you have to consider when using ARC, but it makes memory management a lot easier and less tedious.
I am currently creating an iOS app that will share data using JSON. Working with JSON is trivial in iOS 5, since there is now a great, native JSON serializer and deserializer. It works well, but I find it tedious to write all the required code for creating and parsing JSON data over and over again.
I am currently building an iOS app that uses core data for data persistency. All works great, but as I started adding data and retrieved entities sorted by name, I noticed that the sorting did not work as I expected. The objects came out in a strange order:
The second and last day of DevSum featured some great sessions. Some were really challenging as well, especially for a parental leave douchebag like myself :)
Today was first day of DevSum 2012, in central Stockholm. This is a short sum-up of the first day.
As you probably have noticed, this is a code-oriented blog. Sicne I post a lot of code, I have been annoyed for a long time, that the code has been terribly formatted.
I am currently developing an iOS app that will make use of the device camera. It works really well, but since I am also running this app on the simulator, I want to be able to select pictures from the photo library as well.
I am currently working with a new version of a hobby console application project of mine. The app will execute certain actions depending on the input arguments.
When developing my NExtra library, I used to handle the release process manually. Since a release involves executing unit tests, bundling, zipping and uploading to GitHub, creating new git tags etc. the process was time consuming and error-prone.
This is the final part of my Øredev 2011 summary. It covers the last three talks that I attended and concludes my visit to Øredev.
This is the fifth part of my sum-up of Øredev 2011. These sum-ups waere supposed to be rather short, but have grown out of proportions. I will try to keep it down.
This is the fourth part of my Øredev 2011 summary. It has taken quite a long time to get this finished, so I will write a bit less about each session in this post and refer to external resources instead of spending lines on describing products and concepts.
I have been using NDepend to analyze the latest version of my NExtra library. The code is spotless (this is where you should detect the irony), but the analysis is highlighting some interesting design flaws that I should fix in the next version.
This is the third part of ny sum-up of Øredev 2011. I will label every talk with day:order to satisfy all structure freaks (myself included) that read this.
This is the second part of ny sum-up of Øredev 2011. I will label each talk with day:order to satisfy all structure freaks (myself included) that read this.
This is the first part of my Øredev 2011 summary. I will label each session with day:order to satisfy all structure freaks (myself included) that read this.
I could use some advice regarding a project I’m currently working on. It’s a web site where people can sign up and join various groups (did I hear a “Facebook is already doing that”?) and do stuff depending on what groups they belong to.
To grow as a developer, there is nothing as good as inviting others to criticize your potential flaws…that as well as reading a book every now and then.
I have previously written about how to automate and schedule NDepend for several .NET solutions at once. After getting into the habit of using it more regurarly, the power of CQL has grown on me.
In a project that I am currently working on, I use NDepend to continuously run a scheduled code analysis on a bunch of solutions that make up a large part of the software infrastructure of a major Swedish company.
I currently have several repositories at GitHub. For some of these repositories,
I have also created a
gh-pages branch with a public web site for each project.
When I recently decided to start re-creating a PHP project of mine from scratch,
I decided to replace
I am currently moving some projects from an old TeamCity 5.1.2 server to a brand new 6.5.1 server. Everything has been going great, until I tried moving a project that uses NServiceBus.
In ASP.NET MVC, Microsoft has done a nice job with creating various HTML helpers
that can be used in a form, e.g.
and many others.
When working with .NET, I sometimes find myself wanting to just clone a solution instead of setting everything up from scratch over and over again.
I have started to boot up Windows directly from my BootCamp partition on my iMac instead of running Windows under VMWare Fusion. This way, I do not have to share resources with the OS X partition, which is nice for gaming, programming etc.
Each time I open up my WPF projects in Visual Studio (2010) and open a XAML file, my computer switches from the nice semi-transparent theme to Windows 7 Basic.
Although I love OS X, I am still new to it and a Windows user at heart. As such, the unintuitive and “secret club”-like keyboard shortcuts are not one of my most favorite parts with it.
While developing a unit tested hobby project in .NET, everything has worked great until now. Suddenly, NUnit thinks that there is something wrong with an assembly:
A couple of days ago, I blogged about solving a frustrating problem that made my iMac dead slow. At the time of writing, I was not sure if I had actually solved the problem, but I can now say that I have.
I have been having big problems with my iMac 27″ (4GB RAM) that runs Windows 7 on a Boot Camp Partition (using VMWare Fusion). It is basically the same setup as I have on my MacBook Pro (which has 8GB RAM though), with the minor difference that the MBP is fast as lightning and the iMac is slow as HELL!
I am localizing a WPF application that consists of a main application project as well as several separate DLL projects that provides the application with general user controls, model classes etc.
It has taken some time, but I have finally started building an ASP.NET MVC3 site that will use the Facebook API to create and authorize users. It’s a really easy thing to accomplish, and I curse myself for not having a look at this earlier.
I have started using git with my private projects. It works really well, but I’m having problems with how it integrates with Visual Studio.
My personal WPF WTF list has grown steadily since I started to work with WPF. In my opinion, WPF is filled with bad naming conventions and inconsistencies.
After some discussions with my colleagues about my latest focus areas, I felt it could be nice to write a post about custom validation attributes in ASP.NET. It’s something I use to great extent.
In a WPF application that I am currently working with, I have to be able to hide the close button of a progress window. Instead of being closed by the user (like an alert window or a message box), this progress window should instead be closed by its owner window once its related operation has finished.
When working in a legacy code base of someone else’s making, imagine to refactor code that is mainly built up on structures like this:
I have a hobby project that works great on MAMP, but that doesn’t run so good on WampServer. It’s quite frustrating to have to test all new components in two PHP environments that should be more or less similar, so I decided to look into this.
I am currently working on a GPS-based web application, that lets a mobile device post its position to the app, which then replies with nearby items of interest.
In a hobby project of mine, I had a really handy UI plugin called FileUploadForm, that could upload any number of files with AJAX. All you needed to do was to add such a form to the page to have it handle the entire upload process automatically.
I love HTML5 and how easy things will become once it breaks through. However, it will take time for many browsers to support HTML5 and until they do, the code we write must be supported by older browsers as well.
This is not a development-related blog post, but well worth mentioning to all of you who have been experiencing playback problems when the Spotify app for iOS is sent to the background.
After my last blog post, where I wrote about adding the Spark template engine to an ASP.NET MVC 2 project, I decided to create a project template that uses Spark, instead of the default Web Forms view engine.
After much curiosity, with other stuff stealing my time, I finally got some time to look at the Spark View Engine. Since Razor will be shipped with ASP.NET MVC 3, I decided to give Spark a try before trying Razor.
We will probably use ImageGen in a project that I’m currently working on. People who have used it before really seem to like it, so I look forward to try it out.
I have spend some time experimenting with the new HTML 5
ViewState is ASP.NET’s way of simulating state in the otherwise state-less web
environment. It is a bag of bytes that is sent back and forth between the client
and server. It is then deserialized by the server, which can use it to restore a
previous state in its components.
About a year ago, I had problems when sending data to a PHP page, using AJAX. In
order to be able to unpack the data, I had to use
stripslashes, which does not
seem good. However, since it worked, I let it be without further considerations.
As some of my hobby projects are coming together, I have meant to move them from Google Code to GitHub for quite some time. Tonight, I decided to give it a try.
Yesterday, I got a demonstration of NuPack: a free, open source, developer-focused package manager for .NET. It looked awesome, so I visited the web site, downloaded NuPack and gave it a try. This is how you do it:
I love the jqGrid jQuery plugin. If you have not tried it yet, I really think you should.
After some time, I have finally got my thumb out and added an NDepend project to one of my hobby project solution, to get some analyzing done before releasing it.
Yesterday, I built a simple demo page where I demonstrate how easily you can get fonts.com Web Fonts to work.
The time has finally come to throw Arial and Verdana and a bunch of other crappy fonts into the trash bin (Helvetica can stay for a while), as Monotype, Linotype and ITC (and others) have teamed up and developed a really cool service.
I have been trying to find info on how to get the name of the current controller and action in ASP.NET MVC. Eventually, I found out how to:
Since I’m no real PHP developer (just pretending) I have only now started to use PHP 5.3.2, although it was released quite long ago. The reason to this is that I have just installed Aptana Studio 2, which comes with PHP 5.3.2, so I guess it’s time to learn it.
Today, my collegue Johan Driessen showed me a CSS fix for a problem that happens when a div container has nested, floating divs. This causes the div container to not resize according to the size of its nested elements, as such:
This post describes how to solve the problem that model validation will not work for ASP.NET MVC 2 (.NET 4.0), when testing a model that uses DataAnnotations and MetadataType to describe for its validation.
I am currently working with model validation in ASP.NET, using an Entity Framework 4
DataAnnotations and partial classes with
I have previously used both MooTools and jQuery as embedded toolkits in projects of mine. I have used MooTools a lot longer than jQuery, but as I have moved more and more towards jQuery, I now only use MooTools for its nice type capabilities.
I am currently implementing CSS file bundling in a way that uses a virtual path to a PHP file, as such:
I am currently working on a css bundler, where I have to be able to bundle files from many different folders.
I have a license for R# at work. It’s a really nice utility that helps me save a lot of time. Besides providing a lot of shortcuts and extensions to Visual Studio, it also integrates NUnit in a very convenient way.
I am currently playing around with developing an adventure board game in XNA, in which players can play various missions that take place on a tile-based board. I am a full-blown XNA newbie who takes this approach to learn the platform, but it is a lot of fun.
I am currently developing an adventure board game in XNA, where players can play missions that take place on a board that is made up of horizontal tiles. It is a lot like the amazing, old board game Hero Quest.
I have recently been playing around with the XNA framework to get a grasp at how to develop games for the XBOX 360. It is great fun, but quite different from the development I usually do. So far, I have a game engine foundation, which lets me create generate missions from image/text file tuples, where the image determines the mission’s board and the text file describes the mission, emenies, goals etc.
After a couple of evenings, my first (really simple) iPhone app is taking shape. However, since I am a .NET developer at heart, it is painfully clear how spoiled I have become by all amazing Visual Studio features.
I have now created my first iOS app UI. It’s a nice tab bar that toggles between four different views. This $$$ are not far away now.
I recently picked up my old, black beast from my basement, where it has lived in solitude since I bought my Wii. Since it is old and much has happened with the video game indistry since it came out, I don’t game on my XBOX anymore. I use it to play around with the XBOX MediaCenter software, instead. After upgrading XBMC to the latest version, a friend of mine told me about XOT-Uzg, which is a script that can be used to stream web TV.
I have some strange updates regarding the greeen/orange blinking MagSafe I wrote about yesterday, where the LED on the MagSafe toggles between green orange, even though my new battery is fully loaded.
In my last entry, I wrote about problems with my MacBook (strangely though, this computer is by far the best I’ve ever had…which says a LOT about PC:s :)
I have previously written about my numerous problems with my new, white MacBook, which I purchased in August 2007. For instance:
I have started looking at XNA, which I’ve been longing to do for quite some time now. My friend Jens came over to guide me some of the basics, and after a little configuration, we happily loaded random textures by pressing space.
I am using Doxygen to generate a web-based documentation from my well-documented NExtra project’s source code. Doxygen also supports extracting the documentation in various formats (HTML, LaTex, .man, XML etc.). I’ll go with HTML for now.
A habit I’ve grown into as someone who spends 80% of his time awake in front of a computer, is to prefer seeing all files in a folder when I use Explorer or Finder. However, Explorer or Finder have grown into an equal habit of not showing me all files in a folder. So, how to bend them to our will?
Edit August 28, 2010 SleepWatcher has been changed and differs compared to the information found in the link below. This approach does, however, still work, as does the modified script that I provide below.
When paginating collections in C#, I find the following extension methods useful:
I have been trying to use special characters (like « and ») in model errors that I add to the model state.
From time to time, I forget where the various classes are defined. So, here is a short tutorial to how you get JSON working in C#:
As I continue to work on the NerdDinner tutorial, I have discovered that some of my development patterns has to change. Surprise? One thing that has to change is how I write tests with NUnit, when testing my repositories.
I have finally got around to create my first web site with ASP.NET MVC 1.0. After looking through the nice started example, I noticed that .css files were manually included in the master page.
Sometimes, it may be handy to retrieve all classes that inherit a certain class. This is not hard, but perhaps a bit obscure:
NOTE: This post was written in 2009. Although the core logic has not changed since then, the implementation has. For the lastest implementation, check out my NExtra project on GitHub.
When developing .NET applications, XML comments is a good way of documenting the code (looking back in 2015, my advice would be to not state the obvious, though).
I have had a lot of problems with getting URL rewriting to work in Windows Vista, running IIS 7. Compared to IIS 6, virtual paths in IIS 7 will not allow extensions like .js, .css, which is really problematic if you are working on systems that use shared files in virtual paths.
I am currently having problems with using the Single MP3 Player with the jQuery Flash plugin. To see how the plugin works, check out this page.
I currently have problems with identifying the project root in a PHP project. The separate ways to do so are easy enough, but have problems combining them.
After a very interesting conference talk on Test Driven Development and Behavior Driven Development, I have finally started getting familiar with it, using NUnit to write unit tests while developing in .NET and C#.
I have had some serious problems with UTF8 and PHP’s built-in JSON functionality. After solving it, I realized that it was not even an UTF-8 issue, but a JSON one.
I have been trying out Twitter and Jaiku (a couple of years too late). Since the two services basically do the same thing, I have evaluated which service that is the best fit for my needs. Keeping both accounts would just be a hassle, since I would have to keep both feeds going.
In a project where I use the handy DataGridView control I, bind a data source to
a grid view, then listen for the
SelectionChanged event. When the event is fired,
I enable or disable other controls according to the data that is contained in the
grid. For instance, I disable a move down button if I have less than two items in
the list, or if the selected row is the last one.
After clean installing Windows Vista on my work computer, then installing Visual Studio 2005 and Visual Studio 2008, I suddenly faced problems with using dynamic ports when developing web applications in ASP.NET.
After upgrading to Windows Vista, I have had many problems to run Visual Studio 2008 and IIS 7 on it. For instance, IIS URL Rewriting does not work as it did earlier.
On my spare time, I develop a PHP web application on OS X and thus test my sites in Firefox, Safari and Opera on a daily basis. Every once in a while, however, I also verify that the code works in Internet Explorer.
A while ago, I was assigned to optimize a really slow web site. The problems were numerous, like loading all content of an expandable dashboard with tons of data at once, instead of when the user expanded each section.