Michal Čihař - Blog Archives for English

Gammu+ mistakes

Marcin, you want to know some problems I see in Gammu+. Okay, I finally found some time to look at it:

  1. There is no design document, where can developer find how the code is organised and what is supposed to be API.
  2. There is no definition of external API. Everything is mixed together in simmilar way as in Gammu.
  3. I don't see reasong for passing pointers (and especially double pointers (eg. DebugInfo) instead of C++ references.
  4. Why not using widestring constants instead of converting all using some function?
  5. Why there are reimplemented lists in backup? All those GSM_Backup_*Entry IMHO can be replaced by list<GSM_*Entry>.
  6. There is too much malloc used (you should need it very rarely in C++).
  7. Too much reimplementation of standard C library (eg. wcscasecmp vs. UnicodeCaseCmp).

Okay, I'm tired of reading that code. There is no documentation, the code follows no design, etc. I know Gammu code, so I can a bit understand Gammu+ code, but I expected some more open project, with at least some documentation. If you want to attract developers, you need to document your code.

Gammu+ looks to me like rewrite of C code into C++ while fixing some of design flaws of the old one, but introducing new ones. I know that nobody is perfect, but when starting new project, you should have spent some time on designing it's internals, writing them down and maybe receive some comments from others.

I know nobody is perfect, I also made several projects with wrong design before (well, Wammu is one of the examples).

PS: I don't say that Gammu+ has no future. I only say that it is ulikely to attract more developers as lacks documentation in same way Gammu does. I tried to introduce some documentation it Gammu, but I alone can not document new code…

Sony-Ericsson support in Gammu

After playing with it a bit I found out: current Gammu support for this phone is not working at all. After some looking at sources I decided to do implementation same way as in Alcatel - overlay driver which will use AT functions if they can be used. If you're interested in testing, my code will grow in my arch repository (more information on http://cihar.com/gammu), I'm going to submit it to upstream once there will be completed some set of functionality.

First user experiences with K750i

I use this phone almost 1 day, so it is now time to write down firste experiences.

  • I have Vodafone customisation, seeing their logo everywhere is not something I like.
  • MP3 player and radio integrated in phone is great idea - you can listen to music and you don't miss any phone call or message as with regullar MP3 player.
  • Camera is not perfect, but 2MPix is enough for making random photos with good light conditions.
  • It is great that it has USB storage.
  • I didn't find way to communicate with phone over IrDA except file transfer.
  • Why the hell I could not upload whole calendar from my old Alcatel 535? It says something about low memory, but there is enough free space.
  • I miss distinguishing from payed content and regullar phone menus. When do I enter Vodafone Live!? When do I download game data?

But generally it works much better than old phone, I only need to get used to some different functions.

New phone has arrived

Today evening I picked up my new phone on post office and as soon as I arrived home, I started to play with it. And well result for Gammu is poor, there is too much to implement. For now I only added identification, but I will work more on it.

Transfer of contacts was done by gammu --backup data.vcs on old phone and then tranfering to new phone using plain IrDA - ircp data.vcs. This is far from being perfect - I lost most of text in extended entries, half of names is also lost and I expect something might be missing. But I have at least something till I will write full support in Gammu :-).

Gammu talk online

I had talk about Gammu and Wammu this weekend on LinuxAlt. Video should be online on conference website after some time, but my presentation and text is available right now. You can find it in new section talks. I will have to solve navigation later :-).

Version control wrapper wanted

I'm using more and more version control systems and I'm more and more often mistaken which commands to use in which project. At work we still have CVS, for kernel it is git (or cogito), for phpMyAdmin we switched to subversion, for my old projects it is bazaar and for new projects I use bazaar-ng.

And not, my brain can not switch context fast enought to remember that in this repository I need svn up and in another one cg-update.

I doubt that I'm only one with such problem and hopefully somebody already wrote some meta version control interface, which would correctly detect which beast is current directory using, and invoke appripriate command for wanted action. However Googling didn't find anything like that, but hopefully I'm only using bad query. Anybody has seen such tool?

Happy release day!

We have two releases today - one fixes security bug in stable branch ( and one to fix several bugs (2.9.1-rc2). Final 2.9.1 should follow soon if no major problem appears.

I also added MAINT_2_9_1 branch to snapshots and demo server, feel free to use them.

Package uploads

New month has come and thus there is new upstream release of stardict-english-czech package. While preparing upload for my sponsor, I decided to go also through rest of my packages. Wammu is for quite long waiting for my sponsor, so I pinged him. nanoblogger has some open bugs, so I fixed them and sent package to sponsor. And last but not least I sent ping to debian-mentors about sponsoring sonata, which is really cool application and I'd love to see it in next Debian release. However this target seems to be quite far away as nobody was attracted by it up to now.