Category: Personal
I'm going to re-prepare a true G/FBSD box
Finally, after quite a bit of time. What made me change my decision of using vmware-server? Well it's mainly a factor of time and an opportunity I've seen just today.
When I bought the new monitor, I bought one which had a dual input, to use the DVI with my GeForce card for a dual-monitor configuration. This has the side effect that the VGA analog input is not used... and I just never used that before, until now.
I connected the VGA input to the box I used to work with Gentoo/FreeBSD on, and now I just have to press the source button on the monitor to get its output, without need to detach and reattach the connections every time.
Now it's just matter of burning a new LiveCD and re-install Gentoo/FreeBSD on it, from scratch.
I'll do that tomorrow for sure, as I'm probably going to have not much time in the future, if I'm going to find a job that I won't do from home as I'm working right now. From one point of view that's going to take much of my time, but at least I'll be learning how to work as a helper sysadmin in a real environment :)
I'm trying to use all the time I have lately to fix the last issues with Gentoo/FreeBSD and with video and sound and so on. Today I fixed all the bugs for video I could think of. There are still a few that requires a long work, like xine-ui's freeze with horizontal scrollbars on 64-bit systems, but for that I really need more work.
I'll try to fix also a few sounds bugs tomorrow, but mostly there are bugs for jack and professional audio/music production software that I don't have an idea of at all.
Anyway, I hope to be able to help users this way, but I'm not sure how much I can do in these limited days :|
When I'd like to live somewhere else
No this time I'm not referring to the political scene in Italy, but to a practical problem.
I'll be working on a webapplication that has to be written in Ruby on Rails. I'm not exactly a Ruby expert but I know how to use it, I should be able to do what I'm asked to, so it's not a big deal, but as I'm not that used to complex webapplications, I was thinking of buying one of the books that are being written on the topic. I was mainly thinking of Rails Recipes, but as that's not yet printed, I was tempted by Agile Web Development with Rails, too. I'm not a person who likes to spend money for redundant stuff, but if there's something I like to buy is books, so I always thought that money spent on books is always money well spent.
I looked how much would they be, and it was a quite acceptable price, €33 for the PDF and the printed copy of Rails Recipes and €29 for Agile Web Development. Not a bad price after all. Unfortunately, the shipping price is really high: €21 for two books, two times the shipping for a single book. For sure, I don't have so much money to spend to buy both, and buying only one of them, with €10 of shipping is not something I much like.
I'll end up waiting for the two books to be available on Italy e-shops.
Sometimes, I'd like to live on the other side of Atlantic just to have decent shipping prices, sigh :(
Intrusive debugging
I was never a fan of "on the spot" debugging, I'm more an analyst when it comes to finding problems with the code, I put some printf() here and there, and I look how the code flows.
As my current job has to run on an embedded ARM system, I was interested in making sure the code was perfectly fine before going to try it on the actual board as it's not exactly performant, so I tried to make more use of gdb as debugger to ensure the reliability of my code.
Well it seems like mine was a big big error. I passed the night debugging my code, trying to find why I asks for some threads to be cancelled and they aren't, then today I tried running the code outside gdb, and it works just great.
I think I'll stay with less intrusive debugging for the rest of my life :)
CASE support in Free Software
So, also if I'm still feverish so on low profile on Gentoo, I got today some infos about a job that awaits me, that is going to be fine actually, as I really needed one right now :)
But if I can work on a single mental idea when I'm working on a relatively pointless project for myself, when I have to work for someone else I try to provide as much documentation of what I do and decide, for two main reasons: it's more professional and they can't tell me I never documented some design choice that they don't like :P
For this reason I always liked using UML when designing how stuff should work... the class diagram is useful when modelling data-centric stuff, the activity diagram is useful when modelling function-centric stuff. My current work is in the second category.
So an activity diagram is basically an old flow chart under steroids, no? It should be easy to draw one without even using specific UML tools, but I also think that CASE tools are created for a reason and should be used whenever possible, so that they can also be extended and completed... call me a visionary, I like to do the less work possible about what my job is, also if that ends up adding more work on something else.
So I excluded DIA, KChart and OpenOffice Draw for the diagram creation because they are not CASE tools properly told.. I decided to go with Umbrello, that should be a full-featured UML tool for KDE... Unfortunately, it's not that full featured it seems. The default 3.5.1 version has a big problem that made me unable to complete the diagram as I wanted: the "fork" widget wasn't allowing more than one outgoing association with an activity... wait but that's what forks are for, isn't it?
I found the problem in the source and I've fixed it right now, but it took me a while to understand the problem. Add to that the fact that Umbrello used to crash pretty often, and that its XMI files are incompatible with poseidonCE's ones (intersting tool, too bad it's closed source, proprietary, and not exactly cheap when you need to use it for work), and you know why I usually ended up working on my graphs with paper, pencil and a ruler...
Anyway, I'll see to hack at Umbrello a bit more now and tomorrow so maybe I can have it working for what I need and I can apply the fixes upstream.
When both health and workstation hate you...
Yeah okay, I took a couple of days off lately because I don't feel well, I must have caught a cold and my throat hurts quite a bit. I have a bit of fever too, and that's mostly why I preferred taking these days off (although my throat is pretty annoying, especially since I end up not talking for many hours, fever makes me sleepy and more error prone).
Today I ran a cvs update and updated world just because I wanted to make sure I wasn't stuck with an old vmware-server beta that was going to expire... it wasn't a good idea, I'm afraid. The update of glibc to 2.4 first broke DNS resolution, then ssh and dovecot started failing at authenticating myself, repeating that id 501 was not in /etc/passwd (it always was).
Also, KOffice 1.5_beta2 update wasn't so smooth, as I had to change the eclass to fix the change in upstream's URL scheme, sigh.
Also, from an entry of Bram Schoenmakers today on Planet KDE, I found that kde-misc/rsibreak was incorrectly marked stable on x86... sorry for anyone who thought that was intentional, now it's back again in ~x86.
Why I can't have a normal break, at least one time? :'(
When the CVS server^Wclient is annoying
Okay, so today I thought it was the case of trying libcdio from CVS in FreeBSD, it was a good call as I found that lots of stuff is actually broken because many type names were actually renamed and changed, and many drivers haven't been updated yet. So I fixed the issues and tried checking them in... and cvs stuck after committing.
I tried updating the source tree of the real machine... stuck when cleaning up.
I tried a fresh checkout, same.
Now I think the problem is with the CVS server at it's left waiting on a read from the socket that seems to be the one of the server, but that's just annoying.. I'll have to fix the problems tomorrow, while I wanted to finish this up tonight, sigh :(
Update: the problem was with the CVS _client_ not the _server_.. strange, Gentoo's CVS worked fine for me yesterday... Anyway, now I'll downgrade, be fine and happy :P FreeBSD's driver in libcdio is fixed again. Yuppie!
On a completely different note, I think I'm living my life too much as a geek, also if I'm trying to detach a while (ab)using RSIbreak.... and I end up, for that reason, to behave less like a normal human being in certain situations, paying attention, maybe too much attention, to corner cases and branching issues..... I see my life through a main() function ...
Oh and after this blog entry by Jordi Mallach on Planet GNOME, I've decided to give a try to media-fonts/dejavu (after bumping it in my overlay, tbh), and now I can finally read the IPA stuff in Wikipedia! :)
Also, I can finally read truedfx's name... I do really hope that DejaVu gains even more glyphs so that it can be used for more things. Right now the star used in -for example- R★o★c★k★s (the first Naruto's Anime opening title) it's still missing, but for example I seem to be able to read the strange titles on some Enya's songs (is it welsh? not sure actually).
Helping without coding...
I want to suggest reading last Philip Rodriguez's entry on his blog. It's an interesting insight of the common tasks that can be done without being developers.
I agree with him, and I actually already wrote an article about it, in Italian tho, so not for all the audiences... this is a bit more accessible ;)
Really, give a look to that.
unieject moving again
Okay, I originally moved unieject from local SVN to a BerliOs SVN; then I moved from BerliOs SVN to a bzr repo as I was trying to get away from BerliOs SVN after the passwords defaiance.
Well when BerliOs started mangling the downloads (thing that they luckily dropped now), I registered unieject at SourceForge so that I could put there my tarballs..
Now, SourceForge has an SVN hosting... so I simply backed off from bzr again, and I moved the SVN to SourceForge. Getting the dump out of berlios is simple, as I had only to use the last nightly tarball as I didn't committed anything there for a while; then I loaded the dump to the new importing facility and in the matter of half an hour it was imported... a bit hacking around and now the repository is set up with the changes from bzr imported again.
Now if someone wants help with unieject, translations or code, feel free to drop me a mail so that I can add you to the project :)
Another move to bazaar-ng
Okay, tonight with the help and hints of marienz, I did one more step toward bazaar-ng (bzr). As I found something I don't really like. If this is true, well, it might be quite a bit of a problem, so I don't really think of telling people who would help me to join berlios and use SVN at this point. With bzr the problem is way different.
So what's the deal? I moved unieject on a bzr repository, that can be found at http://dev.gentoo.org/~flameeyes/bzr/unieject . If somebody wants to help me out with code or with translation, feel free to branch that to me and send me an email with the URL you're going to use and what you'd like to work on exactly :)
Also, you might want to read how to set up CIA for bzr so that I can read on unieject's project feed your changes :)
Now I just hope to get someone working on it with me at least for the translations :P
Importance of warnings
I think I already talked about the importance of warnings while programming, if I didn't, I surely thought of doing so.
Today, I was reading michkap blog and I found this entry quite interesting (for the one who're wondering, yeah I don't feel strange reading MSDN blogs, and in particular michkap's is mostly focused on Unicode and i18n, topics that I'm quite interest about).
What he says there is true for every reality, not only closed-source proprietary software development; for Gentoo users, this should be simpler to see than for other distributions, as the programs are built in front of users' eyes, that can easily see the whole lot of warnings some packages outputs.
I try to make sure that my packages has no warnings as this usually means there are less chances that the software will break with newer versions of the compiler, I've also sent more than one time patches around just to fix warnings; I even committed to arts sources to fix some of them (and people who knows me are aware that I refrain also from touching arts's ebuild). Unfortunately there are some people who simply ignore warnings and don't even try to build their software with -Wextra -pedantic. Too bad :(
Oh for people wondering, there's an option in gcc to suppress warnings' generation, and it's -w. If you really don't care about warnings, you can try to put that in CFLAGS/CXXFLAGS; while I don't think it would change anything in build speed, it might make the output more pleasant to the eyes, especially joined with -s in MAKEOPTS; but of course this means that you have to remove both if you want to report a bug, as we usually need to see warnings and build output.
External HD cases...
It's been a while since my last blog entry as I'm trying to spend most of my time on trying to understand how the environment I have to work with is structured for the paid job I was given... actually I'm not understanding too much of it and I'm really tempted to reject the job: it's not PHP coding, it's a damn RAD environment that I don't really understand, proprietary, with sucky documentation and it does not respect what the commissioner said it should do. Add to that a particularly depressed personal life, and you have pictured my last days :P
I wish to thank all the ones who replied to my early post where I asked for a way to recover data out of an NTFS partition. Today my friend gave me the HD to try to restore the data and.. it wasn't NTFS, it was a FAT32 partition, but the disk was too corrupted to be able to take something out of it, every 4 bytes, 2 were NULL or 0xFFFF. gpart actually was useful, but while being keyworded amd64, 64-bit systems aren't supported (so I've marked it -amd64 now and opened a bug for it, I'm unable to solve the problem atm anyway).
The title of the entry refers to something I thought about while getting a DD image of the disk using the USB enclosure I bought last year. This enclosure, branded "Magnex", but referred to as ViPowER in lsusb, it's quite interesting: it's an IDE to USB 2.0 interface, and it has a rack support that's exactly the same I was using on my old Defiant box. That's why I bought that, as I used to have three different HDDs that I wanted to use with it. Unfortunately it never worked that right. It works fine when talking about transfers and it's actually quite reliable on reading and writing.... after turning it up; unfortunately after 20/30 minutes of activity, the HDD is spinning down and produces strange noises, whichever HD I put in it. I originally thought of a power problem, but the power supply comes out of the UPS, and the ac/dc converter seems to work fine (I've tested with a multimeter). I thought it might have been heat, but it's quite cool actually.
I'll be grateful to whoever has an idea of what the problem is :P
On another note, I wanted to try again to setup an IME on Linux, as I already have it on Mac OS X. Not like I actually know Japanese enough to use it well, but I'm always interested in learning it when I have time (that's why I started reading this site while I have nothing to do and I want to relax :P). Last time I tried, not only I wasn't able to actually make it work, but I was also losing us_intl support.. luckily new versions of scim supports the "dead keys" method too :)
I just needed to emerge skim, scim-anthy (found that suggested on some site, doesn't require a running daemon like canna, seems interesting :P), scim-qtimm (required to rebuild qt with immqt-bc) and setup the environment variables as told by pkg_postinst. Now I can actually write 炎の二目 ;)
Bit of inactivity
So, I'm taking a bit of inactivity time now. The reason is that I found a paid job that is going to take me lot of time.
I'll still be around for urgent things, but I'll be a bit less responsive in the mean time.
Actually, the inactivity started Saturday, but that day it was for a completely different reason (had to help a friend of mine with an HD problem, by the way if someone has ideas on how to try to recover data from an HD which partition table is completely messed up and cannot be attached to a Windows box (either as EIDE or as USB), please leave a comment... unfortunately the partition is NTFS so the quest is harder than what I coped with before.. recovering data out of a FAT partition is not that difficult).
Anyway, I'm going to have lunch and then continue setting up the environment for the job, wish me luck :P
A gift to who?
I've read an interesting post of Hubert Figuiere (note: SPAM protection doesn't allow me to point you to the right post, sorry :|) tonight in Planet GNOME, and I'd like to leave a couple of comments about that.
While I don't want to comment on Fluendo's release, that already got some legal debate coverage and RMS's attention while discussing GPLv3, I'd like to concentrate on what people don't actually see about it.
Actually, Figuiere got the right wording the first time: "Christmas Present to the Linux community", but then, he repeated it wrong: "a USD$50,000 gift to the open source community" it is not a gift to opensource community. It might be considered a gift to the Linux Community, not to the Linux Open Source Community, not to the Linux Free Software Community, it's Linux or Linux Proprietary Community, because at the end of the day, the MIT license under which the sources are released is yet another patent's trap; by all means that plugin is _proprietary_ software.
Actually, one should change that again, it's not yet a gift to the whole Linux Proprietary Community... it's a gift to the Linux Proprietary x86 and x86_64 Community. Linux is not limited to those architectures, but all the rest of architectures can't use it at all (building it from MIT sources? why should anybody? it can't be considered the same of the binary version, it won't have the same reasoning behind of the binary version, and while libmad might be flaky sometimes, it does exists since long time and it's GPL-2).
It can't be considered a generic gift to the Open Source Community because that plugin can run only on Linux, no *BSD at all.
And improving the MIT-licensed code will just make proprietary software better, not Free Software better at all... I think time can be better employed by using non-patent-covered formats and their support in _true_ Free Software.
Continuing the TagLib bindings and other
Okay so I'm continuing working on taglib's bindings for Ruby, using the C++ interface. My M4 file now is able to generate most of the structure code that I need by providing it the basic informations about the classes and the methods I want to bind. Unfortunately, this is not yet enough to get something working: I have yet to generate the constructors, that are the most important part of all of that, and I'm having trouble to assess if an alloc function is needed for the classes that cannot really be created by users, as they are only returned by TagLib itself.
I think I'll try to concentrate on having something that loads on Ruby soon, and then start having something that works later. Right now I have also put in place autotools' support so that it goes looking for Ruby and TagLib. The main problem is that to create a shared library I'm using libtool, and that don't allow me to call the library "rubytagpp.so", but wants to call it "librubytagpp.so". I have to find how to get around that.
Leaving for a while RubyTag++ alone, I've been pleasantly surprised by Google's decision to open Google Talk to the other Jabber servers. The first thing I've done after that was to move all my contacts from Talk to Jabber, so that I don't need an extra account to talk with some friends. I think this is really going to improve Jabber's appeal: while some of us has access to decent servers (like im.gentoo.org, thanks infra again ;)), jabber.org is somewhat unreliable and many other public jabber servers seems to have similar problems (I can name for example jabber.linux.it that was having more problems than working support), with Google Talk, part of the problem is solved, who can't find a decent Jabber server can use Google Talk and stick with that, others can still reach him :)
I really hope this is going to change the distribution of users in the IM services, especially I'd like to get rid of most of my ICQ contacts if they move somewhere else.
RubyTag++ - Status update
Okay, just a few things again on the Ruby bindings for Taglib's C++ interface. M4 is really helping out, it has a quite steep learning curve but when you know how to use it, it's really simple to let it write the code. Basically I just have to engineer the macros one time, and then I can reproduce it for the infinity.
I'm also trying to make it generic enough so that it can be easily used to write other kind of bindings.
What I have to do now is to allow defining classes inheriting from parent classes and then allow to reorder the classes in modules (miming the namespaces in TagLib). It's giving me headaches to think how to do that from outside, but the same happened for the rest before I got into it to start coding it out. The C++ code I've been able to generate right now does not yet compile, also because I'm missing the functions that "bridges" the TagLib's types with Ruby's internal representations.
The road I have to follow is still long, but considering I started yesterday night, I can say I'm happy with it.
TagLib Ruby bindings
As I said, there's currently no good TagLib bindings that I can use for the tagging program I'd like to write, as the only ones available (ruby-taglib and rtaglib) are using the (very limited) C interface.
So I've decided to start working on new ruby bindings using the C++ interface. The extension API of Ruby is not the worst I've seen: when I tried writing bindings for Python in my UO Server Emulator, I _really_ was being driven crazy.
What I'm still looking for is if there's a way to get something called when an instance has to be disposed by the garbage collector (so that I can delete it). For the rest, it's mainly requiring work on the code to compile, as that's what the bindings consist of: lots of functions that just calls the true function.
I think I can "simplify" the work by using some M4 magic (the idea came from ciaranm and his bragging around about the M4 macros he wrote to avoid rewriting the same thing over and over), but that surely requires lot of refinements, because of course without having the code it's also difficult to design the interface.
Anyway, this thing is actually interesting me because it's something different from what I've done in the past and it seems like it can be of help :)
If somebody wants to see what I'm talking about the M4 things, I've used bazaar again: http://dev.gentoo.org/~flameeyes/bzr/rubytag++ . The version (1.4) is related to the API version of the library, it will proceed like 1.4.1, 1.4.2, and so on and bump to 1.5 following taglib.
Update
Thanks to Caleb who replied me as usual really quickly, now I know what I have to do :)
I'm working on the actual code that generate implementation (it's M4 code, thanks again to Ciaran for giving me the idea), and I already have something done. The road to work is really long but it's a starting point :)
Tagging, amaroK, ruby
As I said today the option to recode tags in amaroK is now gone and it wants that the tags are filed with valid UTF-8 support. EasyTag, while seemed to work originally, seems not to work on the long run, it crashes on its own processed files!
And there are currently no good choices for KDE/Qt based software for tagging that I know of (okay amaroK has support for some tag editing but it's not the same of EasyTag.
So I'm tempted to start a tag editor written in Ruby, using Korundum. Why Ruby and not native C++? It's because of a series of reasons: there are already bindings for freedb access and taglib, Ruby is natively UTF-8 compliant and I don't have to deal with that myself, I don't even have to care about endianness.. Then there's the thing that I'm being a completely Ruby freak lately that _might_ make me biased :D
I think JulTagger can be an interesting name (you have to guess the reason of such a name tho :D); I'll give that a shot now, I have some free time and I want to take a bit of work on something for a while non-gentoo-related.
Update
Okay, I started working on it, it's not difficult at the end to at leat mock the design up when using Korundum. I've placed it as usual in KDE's SVN, playground/multimedia module, so whoever wants to get it and start looking around.. it's only barbone right now.
Unfortunately this barebone is enough for me to see that ruby-taglib is not powerful enough for what I need to do, it only provides basic API support because it uses the TagLib's C interface.
I'd have to write something more complex if I really want to continue this way, and I want, but that might take some more time...
How to spend a night
It's midnight now, I'd like to be in my bed, reading The Wastelands (by Stephen King, The Dark Tower series), but instead I'm here, in front of my workstation, again. I'm actually not doing anything particular, that's why I'm writing here, I'm probably going to take time to read some webcomic, but I'm not really in the mood.
What I'm doing here? Well right now I'm waiting rtorrent to complete the download of a torrent so that I can check if -fomit-frame-pointer is breaking on amd64, too. Still an hour to go. On another term instead I'm checking out amarok's localisations as I'm preparing a snapshot for the ones who dares to try it. It will be in my bzr overlay that I've started publishing lately.
I'm quite tired, today I spent the day... well I can't really tell, it flied away quite quickly, I had to do a bit of real-life cleanup, then there was the GCC4 test (turned out the culprit is patchset 1.3, I hope Mark can get to fix that soon).. I spent some time reading vgcats, too.
I planned lots of things to do today, and I basically did nothing, mostly because I thought of waking up at 9am, and I didn't wake up until 11am (sigh), but also because I'm trying to give up with coke (not THAT coke, I mean Coca-Cola! :)) and I feel that missing caffeine I'm less productive :P
Are there some caffeine patches for caffeine addicted? It would be handy.
Anyway... I'll wait :P
My first "new year" within Gentoo
This is, obviously :) I joined Gentoo development last April so this is for me the first time I change the year as a Gentoo dev. Not like this actually change that much my usual new year's eve, but it's somehow a satisfaction to say "I've lasted until now!". I hope this won't be the last new year within Gentoo, too.
From a personal point of view, this new year is quite promising, also if I spent the eve with my parents at home as usual, with almost all my friends at someone's house near Santa Croce lake. I called them after midnight to wish them all an happy new year, and that was an enjoyable call after all.. actually, I'd like to thanks Marco for the surprise when I called, but he's not going to read this anyway :)
What I hope from this year is to be able to continue not only the work on Gentoo/Alt and Gentoo/FreeBSD in particular (6.0 version comes to mind, I'll take a better look to that in the next month, I'm still looking for some binutils expert to help me splitting out the patches from FreeBSD sources). I'm also probably going to resurrect a few projects I left lingering around, at least to build fine with GCC 4.0/4.1 that is probably something that always get problematic for software that's not actively maintained.. KNetLoad is probably the most notable project I want to restart working on.
Oh an announcement that I forgot to do, I released two days ago a service release for unieject, version 5.1, that features the new manpages written using docbook (and xmlto), thanks to Stuart for suggesting me that (and for webapp-config manpages, that I used as an example to write mine). It also features a few changes in the configure script to be cleaner and to make use of configure cache, that gets quite useful especially for me when I'm working on it :)
Website cleanup
Okay, tonight was still a bit off after the week working on the data entry job, and all the holidays and stuff (almost all of my best friends are now happily on mountains, near Santa Croce lake, and I'm still here in the hole of the world near the city). I spent the evening and night watching About A Boy, and then I've thought it was the case to clean up a bit my site, moving a few more projects to the "old stuff" page, as I stopped caring about most of it.
Tomorrow I'll spend more time for house cleanings, and then I'll see to restart working as a full-time dev until a new job comes.
Oh I still have to learn docbook, but it seems like docbook2man requires the use of (old) sgml format, if someone knows if that's right or not, can please confirm it on comments? That would be great :)
I'm also tempted to start learning Ruby on Rails and looking for AJAX programming, it might be a good alternative solution to propose in spite of Access/VBA data entry software, it would allow to use a more powerful database like PostgreSQL while being user friendly, not counting the ability to depend not on a single operating system.
Yeah I'm probably not going to convince the people I worked for to move to such a framework, but it might be an interesting test and something that can actually show off well on my curriculum that mostly sucks right now.
:: Next >>