Simple iPhone FPP 3D engine

This will definitely not be a competitor for commercial 3D engines like Unity, however I decided to code simple 3D raycasting engine just for fun. I don’t see sense making exact copy of desktop-class engine to such small device like iPhone, so it may be a nice starting point towards something interesting.

This proof of concept has been developed using Cocos2D engine, which is based on OpenGL and actually allows to display 3D content, but with some additional effort needed. I’ll try to cover it sometime soon.

iPhone raycasting engine

iPhone raycasting engine

Leave a comment

Configure Grails app to run on different port

The obvious, and most widely suggested method of changing default HTTP port that Grails app listens on, is to add command line switch:

tomek@jabuszko:~$ grails run-app -Dgrails.server.port.http=9900

Personally, I don’t like this. Command line became a bit lengthy. Creating extra run configuration in Eclipse. Not for lazy hacker like me. It’s much simpler to edit grails-app/conf/BuildConfig.groovy, add

grails.server.port.http = 9900

and voila!

Leave a comment

Very crash course on Mercurial

Even in small, homebrew projects driven by only one individual, version control system is very welcome. You have vide variety of options to choose from, but in my research i limited myself to ones I know, or at least heard good opinion.

Read More »

Leave a comment

Posługiwanie się iPhonem

Instrukcje obsługi czytać nie tylko należy, ale i warto. Wydrukowana drobnym maczkiem książeczka “Ważne informacje o produkcie”, przedstawia katalog czynności, które są zabronione:

“Nie należy rzucać, rozbierać, otwierać, zgniatać, zginać, deformować, nakłuwać, skrobać, wkładać do kuchenki mikrofalowej, palić, malować, wkładać ciał obcych do wnętrzna iPhone’a”

Sposób sformułowania sugeruje że katalog jest zamknięty, więc od mojej kreatywności zależy co mogę zrobić z telefonem. Nie jest zabronione ubieranie (ale rozbieranie już tak - lepiej się zastanowić), lizanie, ani wkładanie do kuchenki gazowej (ja mam elektryczną z termoobirgiem).

Apple służy również dobrą radą kierowcom samochodów: gdy w trasie zadzwoni Twój iPhone, “poinformuj osobę, z którą rozmawiasz, że prowadzisz”. Gdy już poinformujesz, możecie się zastanowić czy warto rozmawiać. Ale Apple ostrzega, że “prowadzenie w deszczu, deszczu ze śniegiem, przy oblodzeniu, we mgle i dużym ruchu może być niebezpieczne”. Gdy jednak koniecznie musisz pogadać, zalecana jest asertywność: “nie angażuj się w stresujące lub nerwowe rozmowy, które mogą odwracać uwagę”.

Z poważniejszych ciekawostek warto zwrócić uwagę, że we Francji i we Włoszech iPhone jest przeznaczony tylko do użytku wewnątrz pomieszczeń.

Również budząca emocje kwestia zmiany kolorów czujników wilgoci jest niejako wyjaśniona przez zakaz używania iPhone’a w deszczu, w pobliżu zbiorników wodnych ani w innych wilgotnych miejscach. A dopuszczalne temperatury pracy mieszczą się w zakresie 0-35 stopni, co zimą wymusza odpowiednio warstwowe ubieranie się: trzymając telefon w zewnętrznej kieszeni możemy narazić go na mróz, z kolei zbyt blisko ciała możemy osiągnąć temperaturę 37 stopni (zatem nie wolno chorować!), że nie wspomnę o nadmiernej wilgoci na skutek pocenia się (nie biegać na autobus, jechać następnym!).

Wszystko wskazuje na to, że życie z iPhonem może być uciążliwe, ale ostatecznie wyjdzie nam na zdrowie.

Leave a comment

Tinted navigation bar

During customization of our app’s user interface, sometimes you may want to change tint of the UINavigationBar. It is apparently possible by code. Just type the following in view controller that is first loaded into navigation stack:

self.navigationController.navigationBar.tintColor = [UIColor redColor];

And you’ll get nice bloody-red tint of navigation bar.

Tinted iPhone navigation bar

Tinted iPhone navigation bar

Leave a comment

SRTool 0.9.5


Update to SRTool has been just released. It is mainly a bigfix release:

  • Improved detection of AVI file framerate
  • Improved handling of incorrectly formatted subtitle files

So, go to SRTool page now!

1 Comment

SRTool update

SRTool - okno aplikacji

New version of SRTool - 0.9.3 - has arrived.

It is mostly bugfix release, but I also followed on some feedback from users: now you can drag and drop whole folders, not only files. In addition, you can drop files on application icon.

Go to SRTool page for details and download link.

1 Comment

Wolfenstein 3D on iPhone

Wolfenstein 3D ClassicMother of all FPS shooters, legendary Wolfenstein-3D has got a brand new incarnation. It is available on App Store, for mere five bucks. However, what’s interesting, one can spare $4.99 and build his own binary, thanks to available source code. In addition, John Carmack tells the story of porting - worth reading indeed.

It’s been over 16 years since publishing, but it still an interesting piece of code. In those days, developers needed to cope with hardware limits, processor speeds measured in megahertz and no fancy 3D acceleration. Not even linear access to frame buffer. Mobile programming resembles this good old days. Until we get new, much sophisticated, capable machines on our palms.


Leave a comment

Logitech harmony software shows black screen on OS X

Some users may encounter black screen when trying to run Logitech Harmony setup software on OS X. I was one too. After quick googling I found out that cause of problem is called Java. It appears that Harmony software doesn’t like 64-bit Java Virtual Machine too much.

There are two ways to work this around:

method one: quick and easy: open Java Preferences and drag 32-bit version of JVM to be first in order.

method two involves a little hacking: 

Open Console and type:

sudo mcedit /Applications/Logitech\ Harmony\ Remote\ Software.app/Contents/Info.plist
You will be asked for your password to authorize. Enter it.

Find the following piece of XML:

<key>JVMVersion</key>
<string>1.4+</string>

and in second row replace plus sign with asterisk: 

<string>1.4*</string>

This tells to system to run this application using newest 1.4 version of JVM available. As there is no 64-bit version of Java for Mac, we’ll be sure that Harmony will always run.

As you see, the hack is really simple and allows to leave 64-bit Java 6.0 as default.
5 Comments

Home, End i inni po “Windowsowemu”

Oczywiście można się przyzwyczaić do nieco innego rozumienia zastosowania klawiszy Home, End, Page Up i Page Down w OS X. Nawet jest to wykonalne, kiedy przyjdzie pracować na obu platformach, jak przykładowo mnie, gdzie w pracy są okna, a w domu jabłka - zauważyłem już, że gdy wyczuwam pod palcami klawiaturę applowską, czuję, że alt do polskich literek nie jest tuż obok spacji, tylko klawisz dalej.

Ostatecznie jednak wygoda górą, i postanowiłem przywrócić klawiszom o których wspomniałem na początku ich windziane funkcje. Te różnice mogłbyby służyć wywołaniu niezłego flejma na pl.comp.os.advocacy, ale odłóżmy ideologię na bok. Komputer w końcu jest osobisty, więc chcę by mi się wygodnie pracowało. Nie protestowałem przed nową polską klawiaturą programisty w Leopardzie, to może coś zrobić z Home i End?

Na ratunek jak zwykle przyszedł wujek Google. Świetny artykuł Llewa Masona opisuje możliwości modyfikacji systemowych skrótów klawiszowych. Zadanie jest wręcz trywialne, w moim przypadku wystarczy stworzyć taki oto pliczek:

/* ~/Library/KeyBindings/DefaultKeyBinding.dict */
{
"\UF729" = "moveToBeginningOfLine:";
"^\UF729" = "moveToBeginningOfDocument:";
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";
"^$\UF729" = "moveToBeginningOfDocumentAndModifySelection:";
"\UF72B" = "moveToEndOfLine:";
"^\UF72B" = "moveToEndOfDocument:";
"$\UF72B" = "moveToEndOfLineAndModifySelection:";
"~\UF72C" = "scrollPageUp:";
"~\UF72D" = "scrollPageDown:";
"\UF72C" = "pageUp:";
"\UF72D" = "pageDown:";
}

i zapisać go w swoim katalogu domowym pod nazwą Library/KeyBindings/DefaultKeyBinding.dict, następnie się wylogować i zalogować ponownie. Restart nie jest potrzebny. Voila! I od tej pory Home skacze na początek edytowanej linii, End… na koniec, a PageUp i PageDown przenoszą również kursor o stronę w dół. Stare zachowanie tych klawiszy (przewinięcie samego widoku strony) jest dostępne w połączeniu z altem.

 

Leave a comment