Kiedy skonczymy studia i przejdziemy do kolejnego etapu w naszym zyciu, latwo wpasc w pulapke i przestac sie rozwijac. Praca moze szybko stac sie monotonna rutyna, pozbawiona wiekszych wyzwan. Kolejne dni moga stawac sie do siebie coraz bardziej podobne. Dazenie do wygodnego, malo wymagajacego zycia, stabilizacji, moze okazac sie pulapka, z ktorej nielatwo sie uwolnic.

Za wygode latwego zycia, ‚na domyslnych ustawieniach’, placimy cene, z ktorej czesto nie zdajemy sobie sprawy. Mamy wrazenie, ze czas mija blyskawicznie, zdecydowanie szybciej niz bysmy sobie tego zyczyli. Jednoczesnie w chwilach retrospekcji, ciezko przypomniec nam sobie wiele z minionych dni i tygodni. Wiekszosc naszego czasu uplywa na podobnych zajeciach, wiec mozg nawet nie stara sie zarejestrowac na dluzej tego, co dzieje sie wokol nas.

Istnieja sposoby na walke z tym stanem, wyjscie z marazmu i rozpoczecie bardziej ekscytujacego zycia. Jednym z nich jest pomysl „30-sto dniowych prob”. Wybieramy jedna sfere zycia, ktora chcielibysmy rozwinac. Decydujemy sie na jedna zmiane, ktora chcemy wprowadzic do naszego postepowania. A nastepnie wprowadzamy ja w zycie i kontynuujemy dzien po dniu, starajac sie wytworzyc nowy nawyk.

Polecam obejrzec ponizszy TED Talk, w celu uzyskania bardziej szczegolowych informacji:

Matt Cutts: Try something new for 30 days

Nie ma watpliwosci, ze pomysl jest godny uwagi. Nie ulega watpliwosci, ze wprowadzenie w zycie „30-sto dniowych prob” szybko spowoduje pozytywne zmiany. Ale polepszenie sie subiektywnej jakosci zycia nie bedzie jedynym rezultatem. W procesie neurogenezy powstana nowe polaczenia nerwowe. Mozg po prostu doskonale zapamietuje, kiedy robimy zupelnie nowe rzeczy.

O idei 30-sto dniowych prob slyszalem wczesniej niejednokrotnie. Jednak nigdy nie wprowadzilem jej w zycie. Dopiero dzisiaj rano zastanowilem sie nad przyczyna tego stanu rzeczy. Z jednej strony doskonale zdaje sobie sprawe z korzysci tego rozwiazania. A z drugiej – nie podjalem w zwiazku z tym zadnej akcji. Jednym z powodow jest oczywiscie zwykle lenistwo. Ale to nie jedyna przyczyna.

Zrozumialem, ze dla mnie, horyzont czasowy jednego miesiaca jest po prostu zbyt dlugi. Podjecie sie postanowienia, ktorego mialbym trzymac sie przez kolejne 30 dni, jest dla mnie wyzwaniem. Jest to na tyle znaczacy okres czasu, ze ciezko byloby mi nawet wybrac sfere zycia, nad ktora chcialbym przez caly ten okres pracowac.

Ale idee zawsze mozna zmieniac, dostosowywac do naszych potrzeb. Dlaczego zatem nie zmienic pomyslu 30-sto dniowych prob na proby zaledwie 7-dmio dniowe? Tydzien czasu, to wystarczajaco dlugo, zeby podjac sie nowej czynnosci i byc w stanie osiagnac ciekawe rezultaty. A jednoczesnie nie jest to okres na tyle dlugi, zeby stanowil wyzwanie. To tylko 7 dni, przez ktore zobowiazujemy sie do wykonania jakiejs czynnosci.

Efekty? Wszystko zalezy od ‚implementacji’. Od tego, w jaki sposob (i czy w ogole) pomysl zostanie wdrozony. Ale jest duza szansa na bardzo pozytywne rezultaty. Podejmoawnie w sposob sekwencyjny 7-dmio dniowych prob bedzie mialo tak na prawde efekt podobny do prob 30-sto dniowych. Ilosc wlozonej pracy bedzie dokladnie taka sama. Zmieni sie jedynie sposob postrzegania. Ograniczenie dlugosci trwania proby do 7-dmiu dni, powoduje ze przestaje byc ona duzym wyzwaniem.

Let’s do this!

Moja pierwsza tygodniowa proba jest zwiazana z blogowaniem. Oznacza to pisanie i publikowanie postow przez kolejne 7 dni. Prawde mowiac ostatnio nie mam na to czasu, ale to oznacza tylko to, ze musze znalzc (‚stworzyc’) ten czas.

Oczywiscie oznacza to rowniez degradacje jakosci publikowanych materialow. Pokazuje to rowniez przyklad niniejszej notki – nie ma w niej nawet polskich znakow, brakuje kilku iteracji korekty.

Ale chce trzymac sie programistycznej zasady ‚release often’. Przez ten tydzien, zalezy mi na tym, zeby posty wychodzily na czas, a nie na ich poprawnosci stylistycznej. Podstawowe informacje, ktore chcialem przekazac, juz tu sa. Sens wypowiedzi pozostaje zachowany. Jedynie warstwy stylistyczna i gramatyczna wymagaja poprawek.

Jesli skupie sie na redagowaniu notki, zajmie to po prostu zbyt wiele czasu. W tej chwili nie jest moim celem stworzenie postow idealnych. Wytwarzanie rzeczy dobrych, wymaga czasu. Ale nawet rzeczy przecietnej jakosci, czesto maja duza wartosc.

Zawsze moge przeredagowac ta notke w przyszlosci, jesli tylko uznam to za stosowne.

Chcialbym rowniez, zeby notki byly w jezyku angielskim, oraz tematycznie skypialy sie na programowaniu lub ewentualnie branzy IT. Jednak sa to jedynie dodatkowe zalozenia, a nie wymagania.

Zachecam do podjecia wlasnych „7 days trials”. 7 kolejnych dni znacznie latwiej przeznaczyc na rozwoj w wybranej sferze zycia, niz 30.

Reklamy

Installing AutoMapa on this device is a little bit tricky. It’s not enough to just run a graphical installer, it won’t set proper program paths in configuration files. So how to do that manually? How to make AutoMapa work on Mio Moov m410?

It’s not necessary to install custom navi panel (like VisualGPS). You can do that if you like, but there is another method, based on editing a few lines of text in configuration files. I’m going to focus on latter method in this post. Here’s what you got to do:

Step 1) Run AutoMapa installer normally, install the program on your device flash disk.

Step 2) Do not run patching utility to crack AutoMapa, pay for the license! It’s worth it.

Step 3) Configure proper paths in appstartupsec.ini

If you turn on your device after AutoMapa installation, it will run default MapaMap software. We have to explicitly tell the device where to find AutoMapa executable.

Open file Program Files/Navman/appstartupsec.ini from Mio flash disk (using any text editor, standard Windows Notepad will do). It should contain a few lines of text for Windows CE6 startup processes configuration:


AppStartupSec]
TurnOffConsole=TRUE

[Process1]
RelativePath=TRUE
ProcessFile=SmartST_CE.exe
DefaultCmdLine=
BootCmdLine=
StartOnBoot=1
MaxRestarts=3
TreatCloseAsError=TRUE
Major=TRUE
WindowName=SmartST_CE
MaxCloseMessages=10
KeysToForward=0x7A,0xC4
KeysToBoot=

[Process2]
RelativePath=FALSE
ProcessFile=Program Files\Screen Saver\VideoShow.exe
DefaultCmdLine=
BootCmdLine=
StartOnBoot=0
MaxRestarts=0
TreatCloseAsError=FALSE
Major=FALSE
WindowName=VideoShow
MaxCloseMessages=10
KeysToForward=0x7A,0xC4
KeysToBoot=

Now change the highlighted line:

ProcessFile=SmartST_CE.exe

to:

ProcesFile=<path to executable>

In my case it was:

ProcessFile=AutoMapa EU/AutoMapa EU.exe

but for you it might be different, depeneding on AutoMapa version and selected installation options.

If you want to use custom Navi panel (like VisualGPS, this line should contain your panel’s executable path instead).

Step 4) Configure PowerButton.exe

Great, now when you turn on the device, AutoMapa starts automatically. But when you turn off Mio Moov, you’ll find out that te ‚power’ button stopped working. How to fix that? By running custom process PowerButton.exe (in addition to navigation software). This little utility would handle system event for pushing the power button and and trigger Windows CE shutdown.

Download PowerButton.zip, unzip it, and place both PowerButton.exe and PowerButton.ini in any directory on the device (you can place them on root or anywhere you feel like).

Now we have the utility, but we still got to tell the system, that it needs to run it.

Open appstartupsec.ini once again and add following lines at the end of file:

[Process3]
RelativePath=FALSE
ProcessFile=Program Files/PowerButton.exe
DefaultCmdLine=
BootCmdLine=
StartOnBoot=1
MaxRestarts=0
TreatCloseAsError=FALSE
Major=FALSE
WindowName=VideoShow
MaxCloseMessages=10
KeysToForward=0x7A,0xC4
KeysToBoot=

Change the highlighted line:

ProcessFile=Program Files/PowerButton.exe

to correct path to your PowerButton files.

step 5) Drive safely!

That’s it! Everything should work now :)

Mio Moov M410 running AutoMapa

Każdy programista ma swoje preferencje, dotyczące używanych przez niego narzędzi i języków programowania. W pewnych technologiach pisze im szybko i wygodnie, innych raczej unikają. Jednym z popularnych języków, który nigdy nie zyskał mojej sympatii jest Java. Można się więc spodziewać, że nie będę zainteresowany spotkaniami, skupionego wokół niej community.

Dlatego mój entuzjastyczny stosunek do Confitury może nieco dziwić. Wystarczy jednak spojrzeć na rozbudowaną agendę konferencji, aby zarazić się pozytywnym nastawieniem. Tym bardziej, że uczestniczyć w tym wydarzeniu możemy całkiem za darmo.

Prelekcje od początku zapowiadały się naprawdę zachęcająco: różnorodność tematów spowodowała, że każdy mógł bez problemu znaleźć coś dla siebie. Aż cztery równoległe ścieżki wykładów (!) gwarantowały, że żaden z uczestników nie będzie się nudził nawet przez chwilę. W moim przypadku wystąpił problem nadmiaru ciekawych wykładów – zdarzały się sesje, podczas których miałem ochotę przebywać w dwóch salach jednocześnie.

Merytorycznie – było super. Konferencje Javowe w Polsce mają już chyba za sobą etap zachwalania samej technologii i zamiast tego skupiają się na różnorodnych tematach związanych z wytwarzaniem oprogramowania. Jakich konkretnie? Poruszono takie zagadnienia, jak na przykład: testy, continuous deployment, zarządzanie czasem i technikami pracy, rozmowy rekrutacyjne, wzorce projektowe, praca zdalna, SOA i inne. Sporo ciekawych, wartych wysłuchania prelekcji.

Jeśli o mnie chodzi – pomimo, że nie wiążę mojej przyszłości z Javą – z pewnością pojawię się również na przyszłorocznej edycji Confitury. Do zobaczenia! ;)


Dodatkowe materiały nt. konferencji:

Videorelacja (YT)

Relacje pozostałych uczestników

Confitura’12 – oficjalny portal


* – w oryginale cytat dotyczył powodów i metod wdrożenia w firmie „continuous deployment”

Today I’ve decided to upgrade my iPad from iOS 4.3.2 to iOS5. I Thought the process would be dead easy, but some complications occured. I connected the device, clicked the „Update” iTunes button, upgrade downloaded, iTunes performed iPad backup. And then iTunes presented an error message „The iPad could not be restored. This device isn’t eligible for the requested build.” That was confusing. And totally unexpected.

The iPad could not be restored

Quick google research revealed that quite a few people were struggling with the same issue. Most often it happened when they tried to update the jailbroken device. People had various suggestions, here’s what worked for me. But first, a little background.

Sometimes you may want to downgrade your device iOS version. You may want to do that if you’re into iOS software development or jailbreaking. Or simply you may find some of the new firmware version’s changes unacceptable (i.e. lack of multitasking gestures for iPad 1 in iOS5). After all it’s always good to have a choice.

To do that, you need a couple of things. One of those are your device SHSH blobs (digital signatures based on some device hardware keys and the firmware version). You need to preserve them before upgrading to newer iOS version (or jailbreaking the device). Without them it’s impossible to downgrade, Apple doesn’t allow to install firmware they haven’t sign (and they sign only newest iOS version, so if iOS5 is out, you cannot sign e.g. 4.3.2 firmware any more). More information on this topic can be found here: http://bit.ly/aNI5hA.

tinyumbrella
Since I’m a software developer and also I find jailbreaking useful (I don’t encourage installing pirated software, but jailbreak actually makes some really cool stuff possible via custom Cydia packages) some time ago I wanted to store my device SHSHs for 4.3.2. I used sofware called „Tiny Umbrella” to do that. It certainly did the job, but it also caused some harm in the process. When you try to install earlier firmware version SHSH is not taken from one of the Apple servers, it’s pushed from your localhost instead (from TinyUmbrella’s integrated local TSS server) or from Cydia server. To achieve this, iTunes request to Apple servers are being redirected to localhost/Cydia. That makes perfect sense. The bad part is that TinyUmbrella doesn’t always (or ever) clean up after it’s job is done. So after you saved your SHSHs and tried to restore earlier firmware version, the clutter on your Mac remains untouched.

Imagine that you used TinyUmbrella and now want to update to the newest iOS version, which you have never installed before. What happens is… well – basically it doesn’t work at all. iTunes thinks it sends a sign request to Apple server, but in fact it sends it to localhost (your computer; or Cydia server). If TinyUmbrella’s TSS server is not running (default behavior), iTunes doesn’t get any response at all. So it thinks sth. is wrong with your device and presents the „device could not be restored” error.

Ok, but why does it happen?

Remember that you had to provide your admin credentials to make TinyUmbrella run? That’s because it needs to modify /etc/hosts file (to redirect iTunes requests). That’s where unhandled clutter remains. Let me show you how to fix it.

 
1. Run Terminal App

You can find it in Application -> Utilities.

Alternatively you can use Spotlight to find it. Press Cmd+Space and type „Terminal”. Click on the first result.

Spotlight-terminal

Terminal window pops out.

terminal

 
2. Change user to administrator

If your account has administrator privileges you can safely omit this step.

Type su admin_account_name where admin_account_name is Administrator login on your system. You will be asked to type administrator’s password.

admin-account-name

On my Mac user with administrator privileges is named tomekwyszomirski, so I typed „su tomekwyszomirski” and entered that user’s password:

su-tomekwyszomirski

Great! Now you are able to edit system files.

 
3. Type sudo nano /etc/hosts

Type sudo nano /etc/hosts

nano-hosts

You land in a console texteditor (nano) with hosts file opened.

etc-hosts

 
4. Find line with gs.apple.com not preceded by #

Move your cursor (using keyboard arrows) to beginning of the line which contains gs.apple.com but doesn’t start with hash #.

gs-apple-com

Insert hash # at the beginning of that line to comment it out.

gs-apple-com-hash

 
5. Save file and quit

Save file by pressing Ctrl+O (^+O in Mac notation). Nano asks to confirm filename, hit Enter.

nano-exit

Quit nano by pressing Ctrl+X (^+X). You can now close terminal window.

 
6. update your iOS device!

That’s it! You’re done! You can now proceed to iPhone/iPad firmware update using iTunes! It won’t fail now.

iPad iOS5

W chwili obecnej moja ścieżka kariery zawodowej (a także akademickiej) nie ma nic wspólnego z programowaniem gier. Od roku nie zajmowałem się również pracą nad amatorskimi projektami z dziedziny elektronicznej rozrywki. Przestałem również śledzić portal gamedev.pl oraz forum dyskusyjne, będące jego integralną częścią. Aby ponownie poczuć atmosferę towarzyszącą spotkaniom tego community, zdecydowałem się wziąć udział w VIII edycji Ogólnopolskiej Konferencji Inżynierii Gier Komputerowych, która miała miejsce w Siedlcach w dniach 26-28 marca.

W porównaniu z poprzednim rokiem, ilość prelekcji zmalała mniej-więcej dwukrotnie. Z tego powodu zarzucono znany z wcześniejszej edycji pomysł prowadzenia jednocześnie dwóch sesji wykładowych. W dodatku poziom części z przedstawionych prezentacji również nie był najwyższy – najczęściej brakowało informacji ściśle technicznych.

Pierwszego dnia mieliśmy okazję wysłuchać prelekcji na temat języka skryptowego lua. Następnie przedstawiciel Qubic Games przedstawił istotę inicjatywy independers, ułatwiającej młodym zespołom programistów proces developmentu oraz sprzedaży pierwszych komercyjnych produkcji. Prelegent zarysował również sytuację na rynku aplikacji mobilnych, a w przerwie gorąco zachęcał do zapoznania się z nowym iPadem :) Podobnie jak w zeszłym roku, wykład przedstawiciela The Farm 51 został odwołany.

Drugiego dnia konferencji Gynvael opowiadał na temat bezpieczeństwa oprogramowania. Na prostych przykładach pokazał nam, jakich konstrukcji językowych należy wystrzegać się podczas tworzenia gry, aby zmniejszyć jej podatność na ataki. Reg wraz z Dabem opowiadali na temat wad programowania obiektowego, optymalizacji kodu C++ oraz modnego ostatnio w społeczności twórców gier podejścia DOD. Udany był także wykład na temat możliwości wykorzystania systemów dialogowych w grach, poprowadzony przez jednego z przedstawicieli koła naukowego Polygon z PW. Za mniej interesujące uważam prezentacje na temat silnika Ogre 3D, porównania języka html 5 z możliwościami technologii Flash oraz prezentacja przedstawiciela Techlandu omawiająca techniki mapowania wypukłości. Zwieńczeniem drugiego dnia konferencji był tradycyjny konkurs wiedzy programistycznej, którego zwycięzcą został Xion.

Niestety w tym roku nie mogłem uczestniczyć w najważniejszym wydarzeniu trzeciego (ostatniego) dnia konferencji, jakim jest konkurs zespołowego programowania gier COMPO. W zeszłym roku była to dla mnie najciekawsza i najbardziej zapadająca w pamięć część IGK. Brzuch niemal rozbolał mnie ze śmiechu ;) Zważywszy na doborowe towarzystwo, przypuszczam że tym razem musiało być co najmniej równie zabawnie :)

Z ciekawostek warto wspomnieć, że jeden z zespołów (którego osią byli pracownicy warszawskiej Polidei) planował stworzenie produkcji na urządzenia działające pod kontrolą systemu Android. Zaskoczyła nas również zmiana dotycząca uczelni, która nas gościła. Akademia Podlaska obecnie nosi nazwę Uniwerstytetu Przyrodniczo-Humanistycznego. Dla czytelnika pozostawiam rozstrzygnięcie, czy kierunki studiów, takie jak na przykład informatyka należą do nauk przyrodniczych :)

Dzięki wszystkim za uczestnictwo i dobrą zabawę, fajnie było znów się z Wami spotkać! Do zobaczenia za rok!

Jakiś czas temu na forum amatorskich programistów gier (www.gamedev.pl) jeden z użytkowników „pochwalił się” utratą krytycznych danych – pracy dyplomowej, kolekcji zdjęć, itp. Osobiście znam osoby, które również miały tego typu przykre doświadczenia (na przykład z powodu nieuważnego czytania komunikatów podczas instalacji Linuxa). Sam dwukrotnie miałem problem z zarażeniem systemu przez wirusa – jedna z tych infekcji spowodowała utratę całego systemu.

Podobne sytuacje występują stosunkowo często, a jednak niedoświadczeni użytkownicy wciąż nie zdają sobie sprawy z zagrożenia. Nie wiedzą, jak ważne jest regularne wykonywanie kopii zapasowych kluczowych dokumentów.

W dalszej części tekstu wyjaśniam, jak osoba niekoniecznie obeznana z obsługą komputera, może w prosty i skuteczny sposób uchronić się przed utratą danych.

Dla tzw. power userów: przeczytajcie wpis na angielskiej wikipedii o Dropboxie oraz porównanie systemów automatycznego backupu plików

Pozostałych („normalnych” użytkowników) zapraszam do kontynuowania lektury. Za chwilę zaprezentuję przegląd alternatywnych, „złych” rozwiązań. Jeśli nie masz czasu, przejdź od razu do ostatniej sekcji, opisującej najlepsze podejście.

Moim zdaniem wykonywaniem kopii zapasowych powinien zajmować się system operacyjny. W dodatku powinien je przygotowywać w sposób możliwie zautomatyzowany i transparentny dla użytkownika. Niestety na dzień dzisiejszy jedynie użytkownicy Mac OS mogą cieszyć się taką funkcjonalnością wbudowaną w system (program Time Machine). Posiadacze komputerów PC muszą radzić sobie inaczej.

Read More