Author: admin

  • Fitness reloaded – somewhat

    Since my accident two years ago physical training has not really been one of my priorities. While I initially planned to catch up again at latest in autumn 2010 that didn’t quite work out. This may or may not have been influenced by my continued University studies but at least it’s a better excuse than plain laziness. There have been a few tries that year and 2011 again but in the end I didn’t manage to come up with a regular schedule for any activity.

    Nevertheless. A few weeks ago the announcement for the Business-Marathon was sent out in the company’s email. I was asked by some people of my team and without much consideration I’ve been in a group of 8 who were to run 5.25km each. The marathon was still many weeks ahead and so a training plan was set up for two 5km-distances each week. As it’s with every plan it also broke down (weather, work and other reasons) and in the end I had about five training rounds before the marathon took place.

    During these rounds I experienced a buildup of my endurance which I haven’t experienced this visibly ever before. The first time on the 5km I only ran for a few hundred meters before I had to slow down to walking for a break. And I had some serious muscle aces for the following two days. But already the on next run I could extend that distance quite a bit and had no muscle issues afterwards anymore. This tendency kept up all the time and during the marathon itself my first (of two) walking-breaks was at about 3.5km. It took me 36:10min for the 5.25km distance during the marathon btw, not a great time for a regular runner but a pretty good time for my 6th run ever I guess.

    In the end I’m pretty happy with the results. During the training rounds I shortly thought of a personal goal to finish one full round without having to take a walking-break but I skipped that when it became clear that I could not take more training-rounds.

    Currently I’m still in the mood to continue with this or a similar physical workout but what I need for that is really somebody else who joins me and leverages my motivation to the point where I actually get moving. I’m a group person and while it’s possible to motivate me to almost any activity with others involved it’s a rare occourence that you see me doing something on my own and alone…

    Seems that I have to find some folks who are willing to join me and prevent me from falling back into laziness mode again.

  • Last day of lectures

    It feels a bit odd. Knowing that I’m currently sitting in my last lecture. Really, the last hour of learning for my whole Masters degree. Whew.

    What’s left are of course some lecture exams as well as writing my thesis. And finally conclude it with the exam for the Masters degree.

    The dates for the Master thesis and exam are either in June (I doubt that I’ll manage that) or in September.

    What will I do in the future with my now gained free time….?

  • What an interesting week

    The past week has been a very interesting and productive one for me.

    In terms of education this week is the last week where I’ve been busy with a project assignment at the university where we had to check a webshop for security. To make it short, the webshops walls fell after roughly 2 hours of work. This was my first real attack on a webserver and I never expected it to be so easy. After this I’m more surprised not of the simplicity of the breakin but that real hacks on other webpages do not happen more often than it’s visible in the media. Since these two hours would not be worth a lot of project work we continued with our efforts and tried to find other holes in the server. The second hole took a bit more time and research but nevertheless it was worth much more doumentation. Some more attacks were also unsuccessful or not applicable because we had to target a virtual machine which was not completely reserved for us. Nevertheless, this project work was a very interesting one and we even had fun during the process.

    The second interesting topic is that this week I was finally successful in compiling my own working kernel from scratch for my LG Optimus 2x smartphone. In the end it boiled down to having the wrong compilation options for my environment which was resolved when I received some help from an experienced kernel modder in the forum. I also created a small guide on how to set up a compilation environment for compiling stock kernels for the LG2X. Maybe it can help others in also taking up some development on this phone. What I already recognized in the kernel is, that it is compiled with a lot of unneeded features and fully turned on debugging features. Nothing which is really needed in a production environment and therefore leaves quite some room for tuning.

    The last thing I’ve been busy with was the launch of the Raspberry Pi. This is a nice little computer on a PCB which provides HDMI output at an incredibly low price. This new device was so hyped and limited (only 10k pieces) that the webservers of both worldwide electronic component distributors went down within moments after the official announcement that they will be responsible for selling the thing. I also participated in this "DDoD" but was (as most others) unsuccessful in the morning. Later in the evening one of the shops was reachable again (more or less) and I could place a preorder. The other shop only allowed a "registration of interest". Just received a confirmation of this an hour ago 🙂 I hope that I don’t have to wait too long for this to be available for me. As if I had time to play with it…

    Ah yes, one more thing. I got promoted at work, finally. I hope it also materializes well on the paycheck and not only in officially increased responsibility.

  • Nothing to see here… Just a small Thank You

    In the past weeks I’ve become less and less active in the social networks I’m in. I’m not exactly sure why I’m currently leaning just to passive consumation of the information stream from those channels.

    Maybe there is just to much on my mind. Maybe it’s the other way around and I’m just trying to concentrate on some things while fighting procrastination with more our less success.

    What has become more clear to me is that if I have stuff to do, it’s much more probable to get done if I’m not alone but there is someone else around who also had work to do. One motivates the other. And while this approach is quite effective, at last for me, it is impossible that there is always someone available for providing mutual motivation when I need it until my studies are finished. So I still have to somehow manage to get my stuff done on my own.

    Nevertheless, I’d like to thank those people who spent many hours on the past few weekends togheter with me working on our stuff and helping me with getting my stuff forward. THANK YOU!

  • Happy New Year

    Oh wow, when did it turn 2012? Well, I hope you had a nice Christmas and a good ride into the new year.

    Last year hasn’t been very productive for this blog, no excuses. I won’t make any promises for the upcoming year but my current intention is to make more regular postings, probably some more technical ones. Nevertheless my priority #1 is to finish the university, #2 is my team at work. Since both of these are currently quite time-intense there isn’t much time left for other stuff. But that’ll have an end at some point and I hope it’ll be one of the better variants 🙂

  • Lesson #1 for mobile phone hackers

    I’ve been modifying my phones from the instant I had the possibility to run custom software on it. While it was still somehow limited with my Nokia E50 things became quite interesting when I got my HTC Magic. With Android the possibilities for optimization and modification which were possible grew enormously.

    Until yesterday I’ve been pretty lucky. All my modifications on my HTC Magic or recently on my LG Optimus Speed (P990, yes it’s back in the meanwhile and working as expected, yay!) never required me to roll back to a backup before my modifications (or were required because for convenience reasons). Well, until yesterday. I did some modifications on the filesystem and aparently in the process some system files were corrupted and not recoverable by e2fsck anymore. When I tried to recover the state before my modifications I was struck by lightning as I realized that I had forgotten to take a backup before. I remembered that I had to wait some time before the backup and I had already been in the correct menu where backups are performed. But out of some reason I didn’t do it anymore. Crap.

    Well, this little incidend required me to completely reset the device to factory state (by reverting filesystems, applying operating system updates manually, etc.) and reapply the last working backup I had at hand. Which was a week ago. Furthermore I lost all contents of the internal sd-card during the reverting process which I didn’t expect to happen. Meh…

    As I’ve been pretty consistent with performing backups before my experiments and modifications I’d like to rephrase the #1 rule for all hackers a bit:

    Rule #1: Don’t forget to perform and check your backup before applying any changes!

    Nevertheless, I’m taking this risk because as the modifications have proven to me with the E50 and the Magic that I can prolong the usual end of life (the point where they’re just too old or unusable because of apps) of my mobile phones for 1-2 years compared to the stock and unmodified versions. I wonder, how much life I can squeeze out of the LG dual core…

  • Diving deeper into Scrum

    In the last two weeks there have been some additional events concerning my current role as a ScrumMaster for a development team. Both events have been trainings which were targeted not only but also for ScrumMasters. The first training was an internal one which was intended for ScrumMasters and Performance Managers (an internal role which is comparable to a coach for employees). This one was just an afternoon and quite relaxed because the trainers partly internal employees and was concentrating more on the psychological side of coaching and mentoring activities.

    The second training was the more intensive one. It was lasting for three days and was performed by Boris Gloger who is THE professional Scrum trainer in Europe. He founded his consulting company bor!isgloger to spread Scrum and help organisations in implementing this methodology.

    Performing the training with Boris was a refreshing experience. In our company we are already working using Scrum for quite some years. But I always had the feeling that some things did not work very well and that a few problems we experienced were caused by inconsistencies in our implementation of Scrum. Yet I could not name or pinpoint the exact causes. In our training with Boris we gained a lot of new insight into "our" methodology and we realized at least some of the difficulties which we are dealing with on a daily basis. To be fair, I think none of our problems poses a serious threat for any of our running projects. Nevertheless they limit our efficiency and effectivity when dealing with our work and on some occasions we’re already hitting the borders of what we’re currently capable of.

    One of those problems affects me personally. A ScrumMaster should be a ScrumMaster for 100% of the time and within Scrum different roles should not be executed by a single person. Which is what I’m currently doing, I’m ScrumMaster and developer within my team. This makes it hard to stay objective on our work and also causes some more organizational problems.

    This does all but smoothen the dillema I’ve already mentioned last time. In the meantime I received additional compliments for my work as a ScrumMaster for the new team which tells me that I’m doing that job not that bad. But if I really would try to improve my performance as a ScrumMaster it would result in having to give up my software development activity completely and concentrate on the development, guidance and coaching of the team.

    Still no answer in sight for me….

  • One month in charge

    For one month now I’m in charge of a team as a ScrumMaster. To be fair, it’s not really a month because in the first week I’ve just been passively in the new team while we’ve been still working on our previous projects. My personal conclusion so far for the past 1 1/2 sprints? I think I’m doing a good job as a ScrumMaster. In the first retrospective which in fact was the first real retrospective for this team in a long time. The critic points could obviously be summarized to a lack of Scrum consequence in this team. At the beginning of "my" sprint I immediately began introducing a lot of the things I’ve been learning, experiencing and using in the last few years in fully integrated Scrum teams.

    I did leave out some (admittedly important) aspects at first intentionally because I think I should guide the team back to Scrum step-by-step avoiding a shocking big-bang approach for the team-members. So for example we skipped the estimation meeting because there were no defined userstories yet and we concentrated on the work which had to be done anyway. For the next sprint I already organized a correct estimation and planning. And I think my approach worked out quite well because in our last retrospective almost all of the previous critique points have been resolved. Even better most of them came back as positive responses.

    So, what’s coming up in the future? Well, the project will be finished in a few weeks. I still have a sort of special position because I’m no exclusive ScrumMaster but also actively developing on the project. Of course it’s not easy to keep the balance between ScrumMaster responsibilities and development tasks but for now it’s in a green state. I still don’t know in which direction I want to continue because I like doing active development but it’s also very interesting having Scrum responsibility for a team. I’m also participating in the offered ScrumMaster trainings (upcoming week there’ll be a ScrumMaster certification) and it’s fun and interesting but I still don’t know whats best for me and also my career development. From the feedback I got from my superiors I’m pretty sure they would appreciate it if I keep the ScrumMaster direction. Have to figure that one out, the sooner the better…

    On to the personal stuff. This week the 3rd of four semesters of my masters degree started. Some surprises already awaited us, for example some deadlines which were so far completely untold to us. But not a big problem so far. Nevertheless I have still to finish some courses from the last semester and these examinations are already quite near. Some of my former bachelor degree colleagues also started to study on a masters degree. Their and my study situation are a bit different and furthermore I’m a year ahead with the studies but currently we all have the same feeling that our bachelors degree was something special and it seems we’re all just comparing our current classes withAn the one from the bachelors degree. Currently the winner is clear (and for me the picture won’t change much anymore I guess) but things could still change for my former colleagues when they have had more time in their semesters. Well… good ol’ times… And one final thing, yesterday my old car which was still standing around and waiting for someone interested in buying it, found a buyer and was picked up yesterday. No more new memories with this old buddy anymore… farewell.

  • Changing gears

    It seems now that it’s time for me that I switch the sides a bit at work. Two to three weeks ago a certain project came up at work and the Scrum Master of my team made some stretches (thanks for this) to offer me the opportunity to work on this project as a Scrum Master of a new team.

    I thought a lot about this opportunity because altough at first this seems as a step up in the company my personal perception is not that clear. A Scrum Master at our company has a certain responsibility for the success of the project its team is working on. But on the other side (our internal setup of) the Scrum Master is not granted the necessary decision power to be able to support this responsibility in an effective way. This has been set up because the "upper levels" sensed a gap in the responsibility chain when something goes wrong. After the Product Owner there is the nebulous "Team" which is responsible for the success. Yet, if there is no success you can’t simply blame "the team". So our implementation of Scrum simply lifts the Scrum Master to a team leader role. This has been much-discussed but in the end that was the final decision and so far I think it works in most cases.

    Of course it’s not all black. There is the opportunity to guide a team, have some insight and influence in project and HR preparations, a better communication channel to the project managers and of course take the time to take care of all this stuff.

    A similar offering has been made to me already some years ago but rejected shortly afterwards again because of business reasons. I’ve been quite disappointed back then (and I’m still a bit because the argumentation was… well… creative) and for a short moment I thought of rejecting myself because of this. Of course I didn’t because this would signal a lack of interest which is absolutely not the case. I’m very interested in the opportunity of stepping a bit up from development and some temporarily supporting tasks for organizing stuff and work.

    So, today I received the message that starting tomorrow I’ll be the Scrum Master of a new team with a new project. The project is still in its preparation stages so I don’t know how much of it is already far enough to enter the reach of the team or ready to be worked on. I also don’t know exactly who will be on the team itself. Lots of open questions and things to discuss, decide and organize… I take the challenge!

    At least one thing is already for sure and out of the question: the final delivery date…

  • Saving an academic career or “How I secured data from a failed external HDD”

    Two weeks ago, a Friday afternoon, I received an emergency call from a friend. Her sister had stored all of her University work on an external harddrive. The rest of the story should be quite predictable from this moment on. Of course the data was stored nowhere else (this drive SHOULD have been only a backup drive but grew into the main working device) and suddenly one second to another the drive was not accessible anymore. Furthermore the drive emitted a clicking sound every few seconds. Several tries to get the drive running again failed so far. My friend already checked the most obvious causes like dirty contacts or loose connections and had no success so they gave me a call as they already apprehended a headcrash.

    When the drive arrived in my hands I had the following situation: an external, almost brand-new, flat-lying 1TB harddisk exposing USB and eSATA connectors. To lower the further damage during uptime a bit I immediately fixed it in a vertical position using a stand from another external disk I had lying around. In my imagination this should minimize the bouncing of particles some more (because some of them then collect on the lower side of the encasing) if the surface of the disks had indeed taken some damage and slow down the degradation to some degree. A very quick test from within Windows showed that the drive tried to register with the system but failed to do so. So no more tinkering here but quickly start up a Linux system for recovery.

    I started up SystemRescueCd which I had installed on an USB stick (using SARDU)for situations like those. Connecting the drive via eSATA failed because the drive didn’t show up in /dev/ so I had to fall back to the slower USB connection for all following steps. Connecting with USB took some time (about ~30-60s) until the device showed up in /dev but then it was relatively accessible. First thing I checked was the SMART info using

    smartctl -a /dev/sdd where it became pretty obvious that the drive is badly damaged. About 100 relocated sectors and a handful of pending relocations. Very strong signs for a headcrash indeed, so no time to waste and get as much data from the disk as possible.

    Trying to mount the disk failed so I could not just copy the files down but had to make a complete image at first to work with that later on without the failing drive. At this moment another problem struck as I had nothing around where I could store a 1TB image file. At maximum I could free up 600GiB on a Linux drive.

    I had to make another call to find out that there should be an NTFS filesystem on it with about 200GiB of data stored on it. The drive should be relatively new and there has been not a lot of activity beyond storing and some updating of the files. So I hoped for a lot of uninitialized areas which would be easily compressible. A quick check with

    hexedit /dev/sdd confirmed my speculation, there were large zeroed-out areas at the end of the disk. This confirmation took a while because I seemed to hit erronous areas already at the beginning of the disk where the tool stalled until the read-error timeout snapped it out.

    The Linux filesystem ext3 has support for sparse files which automatically compresses unused/zeroed areas of a file so I had the hope that the 1TB image-file would still fit on my 600GiB free space.

    A simple copy of /dev/sdd (with cp or dd) would fail because of the errors on the disk, luckily there are tools available which save the working areas and try to recover the failing areas. I chose ddrescue for this job because it has a buildin switch for creating sparse target images, which saved me from manually creating one. I somewhat sticked to the instructions from the Forensics wiki and made a first pass over the disk without retrying failing sectors to save as much of the intact data as possible.

    ddrescue -d -S -n /dev/sdd disk_sdd_sparse logfile

    This first run took quite some hours because transferring 1TB over USB at 30MB/sec (at best, almost zero when hitting defect sectors). Because of the logfile (the last parameter) I was able to interrupt the process overnight as I didn’t want to let it run unattended for too long. During the copy from time to time I checked the SMART infos in a second terminal which showed me that either the disk was dedgrading by the minute or the disk logic was just counting currently undetected errors. But the further the initial rescue was running, the larger were the intervals between the errors which raised my hopes. In the end the first run ended with the full 1TB image stored on my disk (which took only ~250GiB because of the Sparse option), having about 130MiB of errors scattered across ~1100 locations. Not that bad, but there was surely some more to gain, so on to the second run.

    In this second run I started ddrescue in a way where it looks closer to the erronous spots on the disk and tries to approximate to the exact location of the error within the whole error area to get out all bytes which are not really affected. These actions are called splitting and trimming of the defects.

    ddrescue -d -S /dev/sdd disk_sdd_sparse logfile

    This repair-run finished faster because it only checked the errors, nevertheless it still took some hours. It was quite successful as it lowered the number of error-locations to ~904 and the affected data area to 512kiB. Wow. I wonder if there’s more to squeeze out. Let’s retry the errors and automatically retry without retry-limit

    ddrescue -d -S --retrim --max-retries=-1 /dev/sdd disk_sdd_sparse logfile

    Again I let this run for some hours and when it seemed to only have minimal success anymore (about around the 5th automatic retry) it was down to 859 errors summing up to 490kiB of errors. So, finally the outcome of the rescue operation looked quite promising. Just for the curious ones, the smartctl statistics were far beyond good and evil with about 900 relocated sectors and 1300 pending. And big fat letters telling me "FAILING NOW"…

    The last step now was to mount the partition within the disk-image. I found out the offset for the partition mount by comparing the outputs of the following hexedits and finding the second one in the first one (luckily Linux could detect the partition itself).

    hexedit /dev/sdd hexedit /dev/sdd1

    If this weren’t possible I would have calculated the partition offset using one of the guides on the internet here (German) or here. After that I coult mount the partition using…

    mount disk_sdd_sparse /mnt/image -o ro,loop,offset=0x7e00

    … and began to copy the files out of the partition. There were some filename encoding issues and warnings during the copy which were finally resolved by mounting with a manually enforced charset.

    mount disk_sdd_sparse /mnt/image -o ro,loop,offset=0x7e00,iocharset=utf8

    Well, that’s the story of a saved academic career (at least a gigantic pile of work). I hope that my experiences maybe help someone other with rescuing data from a failing disk. Now I just have to decide what gift to take in exchange for this rescue operation… 😉