24 December 2012

Irssi for MSYS

Previously I tried to port finch which failed and have been looking at centerim too which nowhere easier. Now I'm back to focus on just the IRC part and let pidgin do YM task, the choice is clear: Irssi it also the most promising one to port than the two before. Irssi however is dull without perl just like all irc client supposed to be but adding perl would be too big, too many files.

I decide go with Msys setup which should be straightforward and it is, except how the plugins works. There is no libirrsi.dll or such thing so how it could load dll? note that the plugins isn't loadable module, it does depends/linked to Irssi (which has to be irssi.exe itself in windows unless it linked to irssi wholly). I learned about C Perl embedding too from this which involved joining dynaloader.o file in final linking.

irssi + twirssi in action
As you can see with perl, Irssi could be used as twitter client too although the popular way is using bitlbee gateway, unfortunately bitlbee is not work well with windows and the port is unmaintained. Msys version of Irssi has its quirks too, the obvious one is due to msys' limitation jabber plugin unlikely work but most important ones such as OTR and SILC may work. Because of limited nix functionality I'm stuck with DateTime::TimeZone perl module, which assume Msys as unix rather than Win32 for this particular issue, where perl should look up windows' registry to find local timezone thus modifying local.pm needed by aliasing 'msys' as 'Win32'. Also msys file permission is not entirely nix style which lead unexpected behavior.

BTW installing twirssi on vanilla msys-perl can be troublesome, there are dozens of modules from CPAN will be installed/updated which in the end still not completely satisfy its dependencies. Careful


01 December 2012

A Peek at MyPaint on Windows...

Not exactly what I want to write, but I have skipped the whole month now. Last weekend I tried latest mypaint and things are out of my reach. I couldn't build it normally at all and quite lost in the scons scripts but nonetheless I managed to made it. Still http://gna.org/bugs/?19948 (I'd personally call this release blocker for Windows) is here to stay. I try read the commits which trigger this windows specific bug but it seems to be a part of larger internal changes in mypaint.

So guys it would be nice if someone step up and fix this annoying bug, your help is greatly appreciated!

Sorry about the lame void in the shot (gosh that's XP still living?), I have made some nice technical sketches but when I hit F10 (resize to fir) all my drawing has lost in space. Current MyPaint get basic pseudo-vector ability which great for prototyping, symmetry mode and more supported colorspace. Actually there is several performance-related experimental features that can be enabled but I'm not getting there at the moment.

About the future of MyPaint well this is just an opinion, a speculation from experience. With MyPaint migrate to gtk-3 thus using pygi (and possibly python-3), It would be most tedious migration I've ever seen before for Windows platform, I meant where is PyGI now? Not even a release yet... and GTK-3? usable but not ready. Lets just hope Windows get some priority in the upstream sooner.

The dreaded question is how gtk-3 handle tablet this time? with gtk-2 there are many users complaining about their tablet which likely gdk<->wintab issue and since gtk is a gnome project (a dominant linux GUI), priority for other platform is somewhat lower than other cross-platform GUI. In the past decent releases has been fewer too. From interface point of view, last time I checked (gtk 3.4.4), it's already native themed but I can't made it work with mypaint since my experimental pygi build can't deal with gtkbuilder (maybe because I use 64bit off_t and time_t which is ABI breaking?). Anyway it still a bit early for pygi in windows...

This build here is a manual build and unlikely I will maintain that build environment anymore.


Test and report bugs! your reports are very valuable in the release process, I believe the lag bug is workaround-able.

20 October 2012

Visual BASIC 6 GPL?

Long time ago I've heard  (from digg/slashdot, I forgot which)  a plan to release VB6 as open source which later denied by MS staff. But now I found this: http://sourceforge.net/projects/dvb6

It is a real full GUI VB6 (by microsoft) with "about" dialog still showing serial number (lol) but mention new license under GPL-3 (hmm.. they usually using their own Public License). Suspicious sources also available (more like a decompilation though) and as expected it's 32 bit only, not that there is a free 64bit compiler anyway.

The installer also bundling unregistered version of Bytessence InstallMaker and famous Angus' Resource Hacker.

The project already generate thousands download/week since 10/10/2012


13 October 2012

finch in windows (failed)

This weekend I want a little chat client like irrsi but want YM support (quite common here) too. Finch (part of pidgin) seems fit to this. I got libpurple compiled and appear to work. Finch however is a bit unix (even its glib stuff), so i try to strip most that hurdle compiling and able to get it linked (static build mingw).

Problem is somehow pressing two sequence keystrokes will register as exit signal or sort of, making it impossible to even configure a pidgin account.

here is what it looks like:
version 2.10.6 in CMD fitted window

and the failed build
finch.exe 1.43MB

meh, what am i doing posting a failed attempt :-(

10 October 2012

NTFSLink 64bit version

NTFSLink has been around for quite long time, but no 64bit binary found (at least by me), sometime I had to use 64bit windows which I use Link Shell Extension as NTFSLink replacement. But I prefer much NTFSLink for its simplistic (smart) context menu and how it show the origin of a junction.

ntfslink64.7z source is from https://github.com/miracle2k/ntfslink

To install use the included ntfslink.inf (right click, install), I wrote that cause I'm too lazy to make an installer, sorry.

- NTFSLink do not support symlink (native in Vista/7 or later), so using XP64 is more preferable (which also my case)
- This is not compiled by me but a friend (here it's far easier to find pascal/delphi programmer than C/C++, lol), I've asked why was the dll size was too big and explained that the old version may be compiled with much older borland.

POV Ray 3.7rc3 Console Edition

Sometime at work, colleague start discussing about the new renderman (v17) and the would it be fit for architectural pipeline musing, it's been a while since I tested PRMan (pirated edition of course :), that time I already accustomed with V-Ray's "one click render" way and thus feeling upset with what PRMan produce by default (speed and quality).

It's only when I found pov-ray (again not used in architectural) that I finally realized the power behind both renderers, their scene description language: RI and RSL for Renderman and SDL for POV-Ray. Sure they are two different thing just about how both are different too. But comparing any of the two with the rest (older V-Ray, KT, LuxRender, Yafaray, etc) is even bigger mistake and obviously unfair. But people usually only care the result and leaving the "how" question subjective to user's skill.

Revisiting povray site is a little worrying, I think it was 2008 the first time povray support multi-threading (v3.7) and yet final version still not arrived. However considering their novel idea behind povray it maybe not as easy to accomplish than other renderers (which usually already multi-core aware since inception). I mean imagine how those procedural models, CSGs and all different exotic primitives blend in the threads? they aren't plain meshes, even Maya use post rendering for PFX.

So there I go try dig more about SDL (still personally not much interested) using Scite which has pov api/syntax support and try to find non interactive way to do batch rendering, yeah using python I could do stealth subprocess, but I want a pure one :). If I'm not mistaken povray for linux is a console app, so I tried to build that one from its unix source (which somehow more updated than windows' source) but failed when using mingw... continuing with VS2008 express way and surprisingly there is a project called "console" which turned out the one I'm looking for.


- exr support is disabled, I can build static openexr 1.7.1 with VS (need a little change) and completing its tests but somehow with povray, it crashed during writing.
- this is just the renderer, standard libraries (includes) files still needed (point that in POVINC environment) but no installation required (portable), no registry nor settings files.

05 September 2012

Ultimate++ Library Edition

This weekend I'm evaluating several GUI Libraries which have very liberal license such as new BSD or MIT. and found only IUP which is C based. There are some GUI libraries come as part of framework, they use different configuration and often have their own build tool: VCF and U++. Both C++ based and was meant to be work together with the sources instead of available in usual binary distribution such as GTK, considering their license which developer given total freedom to modify the library itself. I tried to package it into distribution friendly way. Let's try U++!

Overall from its examples U++ was intended to compete with Qt or Wx though with current situation Qt is the most advanced. U++ use BLITZ for a fast compilation (SCU), sort of what GHC did which a bit confusing to packaged as they're combined objects. Binary size is reasonably small at minimal setup but as usual mingw build is always significantly larger than VS especially with C++.

U++ has a quirk to make it available as package, while we can choose not using BLITZ and rebuild all *.a (except theIDE related) to monolithic archive there is an exception: files *.icpp which determined and called by "uses" in .upp file that compiled and appended during linking process. This create problem for generic packaging as they are conditional requirement. The (ignorant) easy workaround is to link the whole *.icpp objects (can be done in pkg-config's libs option too). This however create up to 700KB larger binary as some objects aren't actually needed but will works with generic compilation way.

Here is binary as library for both 32bit and 64bit
http://osspack32.googlecode.com/files/upp4193_mingw32.7z (only for MinGW32 dwarf2)

note: it's MinGW-W64 SJLJ based and if using with vanilla G++ you'll need to append -lpthread during linking and naturally TheIDE still needed for GUI craft. When using postgres/ssl plugin then openssl and postgres client library required. 

Currently I had side project related to postgres and need BSD licensed GUI with built-in support, but after some trials I found myself lost... this weird(unique) C++ approach is too high for me to boot :-(

Windows backward evolution tree

I was born mid '80 that time nature is my playground, mud on hand, dirt all over shirt, everything is fun. I did got my first PC experience, I think that time I use DOS 3.x playing digger, pango and once in a while have a dig at GW-BASIC making  pictures with CAD-like commands. Isn't DOS a simple experience? it was, although I had to type at least I don't (need to) care about the OS itself. That time when real-world application starved for hardware revolution, it wait until established commodity become sufficiently capable. Developer wrote PC software the way apps for embedded devices written nowadays, because there just no room for bloatness.

I'd consider a decade ago as the time when hardware being on par with software need, complex apps such as 3D become more accessible by PC. Now put that "PC" aside (unlike what MS said in their current campaign), what is a PC? Sorry if I had to call a phone a PC that's just rude. But tablets is the future is it? agreed in some way. The form factor revolution is at least remain in linear line except when the two different product blend in. Maybe PC will become the next mainframe, you know not dead but become niche. Say you won't play the next GTA on tablet anytime soon (using 3d glasses) or doing NLE, 3D modeling on it too. Still users probably could do more things on their tablet sooner (thanks to internet and Windows 8).

Following the hardware (CPU) revolution there is a period when it was no longer speed (MHz) race instead it was an energy-efficient race lately, multi-core race previously. I think the desktop market hasn't shrinking that much, it's just that the internet is so fascinating that it demand a simplistic way to be reached by more non-technical people, a hand-held device. For phone goes to tablet is a revolution but from PC into phone? Are you kidding me? I even call netbook as too restricted computer. When both worlds meet together my a** But hold on, it is still indeed a revolution from majority people point of view! jeez I just realized how minority I am. Soon (if MS succeed) people who used to *work* with computer but not a programmer/developer with also become a minority too ;-)

From a PC user to adopt tablet form-factor device I'd say:
- damn that little dinky screen rape my eyes
- the OSD keyboard is so unreal!
at least...

So what if OS for phone/tablet run on PC? I'd say "A crippled UI for an uncrippled sane device"

Remember that Metro is what an UI would be should developer face device limitation such size constrains, physical peripheral inaccessibility and non-technical minded person. OK the latter is where the money come from so there you go. But that's just interface, the core itself is still the real thing right?

Lets see, hey even OSX is still a desktop OS (although they did incorporate several iOS feature into OSX)! so only MS is gambling their long term future this time? Not really, they have Windows 7 in reserve and is in very good shape for prolonged desktop domination if Windows 8 failed but if they really can bridge and then attract the big mass of non-technical audience into the "new PC" world then big kudos for MS. I do believe that Windows (or whatever OS) should have same interface in all devices. I mean, you know the one we see in the movies, when people talk to PC, a non physical screen, a genius or at lest self-learning OS. Therefor unless PC play catch up with our intelligence and intuition, there will always a way/device which users can properly express/interrupt/assert to achieve what intended to be.

Back to Windows 8, it's not just UI, there is WinRT that chained to AppStore policy. How cool was that? how they seems try to disconnect Win32 API and how this affect open source world is to be revealed by the end of 2012. When MS had enough time for evaluating users input. Damn I must eat my own word for saying I will skip Vista and 7 altogether to jump in 8, yet this is what I will get? Time to visit Linux to see if they finally "become" XP.

Now I wonder what's the "actual" future after tablet era then?  back to "PC"? Unlikely
So I ask my sister whom most used device is tablet. What she get most from it (Android). She said, the internet and games, see it's not a revolution at all. Keep in mind that she had never interested in games nor internet (via PC) before buying an Android. So the devices itself is a magnet! it did bridge more people in reachable way just the way I'm interested in DOS games and eventually learn how to "magically" draw pictures via keyboard (not even mouse exists). MS is doing milk money for what they have recognized as and redefine an approachable "PC" definition for the fresh market. For users all of these is just the matter of POV.

29 August 2012

no dropbox left

Phewww.. got another dropbox suspension (nothing left now) though I could just made another clones but...

Apologize for the goners, will try to back it up at googlecode someday.

25 August 2012

Three swiss-army image tool

In the context of mainstream usage, ImageMagick probably held the swiss-army status for automated/mass image processing and we could argue why not GraphicsMagick instead? ImageMagick has the most complete raster image format support (including good read but mediocre write support for vector image) and the most important is they have detailed yet easy to follow tutorial and manual to let users know why it's a swiss-army tool.

The other two have different niche but capable of doing many of mainstream usage: VIPS and the fairly new OpenImageIO (used by Blender). The first was best know as the specialist for processing large image (large = very very high resolution) without choking your RAM, the latter is currently better known as a library, thanks to its permissive BSD license but I see the potential for its interface to replace ImageMagick because OIIO also a bit faster in conversion task. VIPS has extensive mathematical operation which make it also scientific niche, OIIO in other hand have distinguished texturing features which make it a bit 3D graphics niche, at the moment OIIO CLI tool was rather simplistic but I'm looking forward for big evolution in this area. Both has official python binding support which should be more interesting for advanced users than what their CLI tool offer additionally VIPS has GUI interface called nip2 which IMO may hinder its true ace.

Even so I found none of them have support for other specific task such as RAW image processing or decent vector image conversion which I resolve by using several utilities. In the end I guess there is no such of a real swiss army image tool yet... not at FFmpeg level at least or imaging was just too broad to cover entirely.

What I wish for these tool is a kind of loadable and user-friendly inline/offline FX subsystem ala GIMP-fu/PyGIMP where artists can share/reuse/enhance their template.

Binaries (mingw build):
OpenImageIO 1.0.8: oiiotool.exe (1.7 MB) maketx.exe (1.7MB) since I don't build iv here is a small exrdisplay.exe (300 KB)
VIPS 7.30: vips.exe (2.1 MB)
ImageMagick 6.7.8-6: convert.exe (2.1 MB)

Features enabled as much as possible with exception some ImageMagick's vector support which I found not that good. This builds can be considered as update for my previous ImageMagick build.

Static library attempt for GTK

In my previous post when I had to make rsvg-view a static build, a complete set of static GTK libraries needed. GTK known to refuse being build as static library on Windows. Obviously there is lot good reason (be it Windows or not), GTK is a library with lots of addons (theoretically a GLib based one) so a modular/extensible approach chosen, then if I recall internationalization won't work unless in dll mode, then GTK is known using lot of settings files and modules scattered in etc-lib-share folder, then in version 3 there is DBus stuff which all of these make it almost a deal breaker for static build mode. Although some modules (found in pango, gdk-pixbuf, gtk) can be statically linked to main library, others are not (need modification) such as wimp theme engine.

For this minimalistic use case (rsvg-view) where basically a window with just 2 zoom buttons, a static build would be nice eh?

Oh well let's just get it on...
Firstly this is GTK-3 that I tried which should prompt a serious warning message about stability/maturity. Historically in version 2.x IMO there is only 3 stable, good or sane version for Windows: the last 2.12.x, 2.16.x and 2.24.x. I did try make static GTK-2 (2.24.10) however almost all but three tests mysteriously crashed during startup, here is one of that survived: testtreecolumns (unfortunately not LTO optimized so it's a bit too big)

The main thing that prevented static linking is multiple definition of dllmain. In case you're not aware, GLib starting with 2.30 support static build but broken in 2.32 since glib-init introduced but is trivial to fix. So based on how this static glib work we could also do the same to gdk-pixbuf, pango and lastly to gtk itself:

- override the Windows guard in configure script which prevent static build. hint: "DLL on Windows"
- make sure all possible and desired modules being "bundled" via configure
- initialize hmodule instances as null instead of uninitialized
- prevent dllmain from being compiled by adding #ifndef DLL_EXPORT
- assign declspec instances as nothing when #ifndef DLL_EXPORT (or create your own guard) instead of dllimport/dllexport (seems GTK-3 somehow omit this already)

note: DLL_EXPORT and PIC are common flags used by libtool during compilation, they are off when configured with: --enable-static --disable-shared

This way, path finding and internationalization still works as expected. Here is example of gtk3-demo in static binary: gtk3-demo.7z

It would great to bundling it in my MinGW distro... kinda rare to see C-based GUI library, not that C is good for GUI

SVG viewer for Windows

I'm looking for a simple svg viewer for which can be invoked from command line and found some candidates:

- SVG Viewer from QT 4.8.2's example (3 MB)
- SVG test from AGG 2.5's demo (178 KB)
- RSVG View from librsvg (2 MB, explicitly need file input, otherwise will silently quit)

It should be static(standalone) as usual, preferably small and must be fast. Both from RSVG and QT are quite capable and compliant (by far compared to AGG). There is a performance issue with QT though when SVG is fairly complex, where panning and zooming become very slow despite snappy once switched to OpenGL mode. RSVG didn't have this issue and load faster but since it use static build (an unsupported mode in Windows) of GTK-3.4.4 which still not stable for Windows, is unfortunately quite a crasher, also didn't resize its window automatically.

There is one more (better) candidate from Batik's Squiggle but probably too big when compiled and too GUI-ish for a simple viewer. Finally every "sane" modern browser also SVG viewer capable :-)

11 August 2012


Been a while since the last post, I'm looking forward for upcoming holiday :). Hopefully there would be a lot of free time (if not spent too much for vacation) for lot of new material/updates to this blog. At the moment I've (more or less) managed to reach my main goal for tuma mingw, this could mean much less attention after version 0.6b and more focus to others such as mypaint, gtk3 and graphics stuff or maybe some delayed chm book releases.

07 July 2012

How to clean invalid clipboard data

Sometime for unknown reason suddenly I'm not able to do paste operation. It happening anywhere, in explorer (file content) or in editor (image/text content). It seems clipboard contained invalid data or sort of. Now I have to find a way to clear this data, naturally by copy (overwrite) new data into, but it doesn't work! Copy and cut operation also failed.

If I recall Windows have a clipboard viewer program which filename was abbreviated and I can't find that one either (probably available in Windows 98 only). Eventually found "clip.exe" which control clipboard content via command line.

Then invoke this command (from CMD):
echo off|clip

Yay clipboard content cleaned up :). So while GUI applications failed to cure it, clip.exe come to save... weird eh?

10 June 2012

RSVG-Convert SVG image conversion tool

LibRSVG is probably one of well known svg library (other is Batik), the library use libcairo for pdf,ps and svg backend. This is a convenient static build of RSVG-Convert (part of librsvg 2.34.2) compiled with MinGW. I made this since originally the executable would dragged many dependencies.

The command line also used by ImageMagick through delegates although being deprecated (the rsvg wrapper), currently rsvg-convert.exe support png, ps, pdf and xml output but not jpg.

use "rsvg-convert --help" to see its command options, notice that the default output is stdout so be sure to specify file output.

rsvg-convert-  (30-12-2017) with fontconfig support ( use with environment variable PANGOCAIRO_BACKEND=fc )

note: embedded images now displayed (broken in previous builds), now support jpg, gif, png, svg, tiff, wmf, emf, ico,  images mime type aliases also added.

18 May 2012

Will be missed! Casey Stoner the fastest motoracer of modern time

If you ever wondering why politician scumbags keep getting votes, you know how foolish the world is. When honest people are to be denied and the tricksters win. This is totally off-topic post, but damn I've been watching GP since I was 6 and still stunned until now. Even the only game that I still occasionally play is MotoGP.

Casey Stoner, how should I put it: to be the victim of ignorance, stupidity and fanaticism because he always ride the bike 110% like no others. Yes, he riding skill is on a different level, and no it is not just me who saying this, there are several MotoGP riders who agree with that.

An honest personality always have ton of foes including in MotoGP, just because you tell truth doesn't meant people/media will trust/agree with you. In most case fanaticism prevent delusional person to be realistic and logical in their judgment. This is where Stoner is special (at least to me), he is very underrated by the crowd (even by top managements in the show) yet he still winning when most crowd keep (by all means) to ridicule him. Even Stoner paid lower than other champions.

Personally I'd briefly put some blame at the half brained #46 yellow brigades whom responsible for most of incorrect mockery. Yes, they are half brained because the logical part has been stolen by extreme fanaticism. Casey is no way a celebrity minded person with full of tricks, this partly explained why he never gained huge supporters. Hell, even local MotoGP commentator here is inclined not to give the credit appropriately.

Well, whatever... I actually think that if he keep winning more championships people will eventually gain some sanity. But that retirement is your decision mate, after all you're now a family men too. Best wish for your family and your future (where you'll hopefully gained proper respect)! You'll be missed more than you'll ever think :-)

Very sad day, Casey is about the same age as me, guess in 2013 I will support Lorenzo then (the factually next best).

Forgot to mention the interview: http://motomatters.com/interview/2012/05/17/casey_stoner_explains_his_decision_to_re.html
The interview has moral value of course :-) as usual honesty is rarity

17 May 2012

HTMLDOC 1.9 r1707 for Windows

Been looking for what may be missing for documentation toolchain in Tuma MinGW... umm no not L4t3X! too big (even bigger than the whole packages). It's direct html to pdf converter and has to be open source too. So there would be Ghostscript, OpenJade, Poppler, Doxygen, DjVulibre, HTMLDoc and some others.. great

HTMLDoc is a quite capable converter with extensive command line features. I've taken the svn snapshot which is r1707 (not sure if it still developed). The svn version have somewhat unfinished? support for CSS and pdf bookmark too.

It need some patch (included in the download) for building with mingw instead of M$VC and minor modification to make it portable (no registry/installation needed)

Binaries for Windows 32bit:
HTMLDoc.7z 3.65MB

Extract anywhere and you're ready to go!

HTMLDoc 1.9 r1707 (console only)
HTMLDoc 1.8.27 (console and gui)

When using the command line version, the folder where htmldoc extracted need to be put in PATH environment.

27 April 2012

Multiple Google Drive (Do It Yourself)

Google head to cloud! started with Google Drive, a 5GB (free) file synchronization service application based on Python 2.6 and wxWidget (similar to dropbox). If you haven't notice it, google drive during startup extract itself into temporary folder (_MEI???) where python do its stuff.

How? well not too dissimilar from dropbox trick:

Download it first (I hate to download a downloader that claiming as installer, screw it!)
one of mirror:

Once it installed "silently" you will find it in %PROGRAMFILES%\Google\Drive
I believe that's what you get if you're administrator

Copy all files, make a folder [somewhere] and paste there

Copy following text into notepad:

MD "%USERPROFILE%\AppData\Roaming">nul
MD "%USERPROFILE%\AppData\Local\Application Data">nul
MD "%USERPROFILE%\Application Data">nul
MD "%USERPROFILE%\Local Settings\Application Data">nul
MD "%USERPROFILE%\My Documents">nul
MD "%USERPROFILE%\Documents">nul
START googledrivesync

Save above as "gdloader.bat" (you may change "Tukul" to anything else, just be descriptive) in [somewhere]
Run gdloader.bat,  You know what to do next!

make another copies if you want another Google Drive (be sure name different %USERNAME%)

- Apparently when google do shell registration (shortly after finishing folder setup), Google Drive will nuke current account like crazy (at least in my XP) but that's okay, no worries
- As usual only one account that get file markings (checked icon etc...)
- Tested in XP go try yourself on other Windows!

15 April 2012

Statistics and Windows users

Not much to say this weekend so I make up this...

Looking at some statistics data sometime can be fun and give you some unexpected conclusion. Here is some trivia about this blog based on Google Analytics.

- "Borderline" article is always popular among Windows users, my two hackish article about two popular apps: sketchup and dropbox prove that. While dropbox article got linked many times the sketchup article traffic is barely came from Google search. Imagine if I wrote another similar hackish articles I bet this blog will no longer an open source blog. But I do intentionally lure visitors to peek on other articles (OSS) in the process however thats doesn't seems quite work according to statistics.

- Blogspot give you a bad name. At least thats what I felt in my country where majority blogs is aggregator or worse a duplicator :-) It's hard to believe the content of a blog is original even for myself. The abundant numbers of "peek and leave" visitors and the very low number of commenter come to mind. Even when the article is valid to their search.

- A portion of commenter and reader are Linux users despite linux platform represent less than 10% of total visitors! quite surprising. Ha ha see what a Windows diehard could attract :-)

- Decreasing Indonesian visitors, quite a sad fact. Somehow I believe I have good rank toward Indonesian googlers, but it's just open source + windows are very unpopular topic. Majority Indonesian open source users are IT students/graduates whom taught to use linux while the rest people like me have the Windows tendency. At some point I even consider to publish article in bilingual format to pump more native visitors but statistics say the targets here is by far lower than those developed countries such as Europe and US.

- Windows users don't/won't download unless something come with line: "This software has been scanned by forty something AV before uploaded even so you must scan it by yourself after download". I need to do comparison with others to came with this conclusion though. Thanks! this is the best heritage for becoming windows users. Be afraid people, be very afraid... virus is everywhere... Wow I must be very lucky still running XP with no active AV (just ClamWin) and still providing clean downloads ho ho.

- Open Source is the domain of developed countries (both developers and users). I hope I'm wrong but thats what the statistics say. Aside Japan/China which might have language barrier most visitors are US and Europe. Kind of irony but the reality show that crackers win the heart of most Windows users in developing countries. Piracy crushed open source in all sensible way :-)) I thought both are practically compatible...

04 April 2012

New mirror available at googlecode

Hi all, due to bandwidth issue that keep hitting this blog,  I decide to mirror several files to code.google.com/p/osspack32. I have use the command line uploader from google and seems I can handle small files myself but big files is will be kindly uploaded by ShoneCheung. If you want to be commiters (uploader) too please contact me.


02 April 2012

Continued... PHP and nginx

Tonight I try to resume what I left yesterday: setting up php with nginx. I try to follow http://wiki.nginx.org/PHPFastCGIOnWindows, but since I have single exe php-cgi I would just copy it and php.ini into nginx folder. Thus use non-hardcoded path configuration:

Before that I have to comment about the RunHiddenConsole thing, in PE thingy this is just a matter of using -mwindows or -mconsole during compile. And there is a better tool called postw32 (from freepascal project, I included this in my mingw build) which could turn any console application into consoleless a.k.a "click and nothing seems to happened" (because it was already windowless) or vice versa (back to console again).

so inside conf\nginx.conf instead of:

root c:/www;

location ~ \.php$ {
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

I just need (merely replace /scripts with  $document_root  from stocked config):

location ~ \.php$ {
root html;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

Both configuration assumed we have virgin php.ini (doc_root has empty value, do not confuse with nginx's   $document_root  above which translate root declaration before it that is "html" which refer to html folder relative to where nginx.exe located). In short we have portable configuration.

Now talk about respawning thingy... in the bottom part of the wiki before describe how to make it run under SYSTEM account. Well let me tell you something:
AFAIK we (as admin) could impersonate to SYSTEM using "at" (scheduler) command then kill "explorer.exe" just before launched and bang Windows P4WN3D and CHR00T3D! no no not that old trick, actually the proper way is to use "sc" command see below:

C:\Users\Administrator>sc create --help
Creates a service entry in the registry and Service Database.
sc create [service name] [binPath= ] ...
NOTE: The option name includes the equal sign.
type= (default = own)
start= (default = demand)
error= (default = normal)
obj= (default = LocalSystem)

Extra Extremely Important Note: That is an empty space right after equal sign and before the actual value.

Now we could even make php as service too that depends on nginx service, or run them under different credential (a hidden user preferably, you know like postgresql way). Nginx already have respawning (parent - child) facility adding it to relaunching service will increase its reliability more too.

Hmm.. I will make my own stack installer one day maybe came up with tagline: "Install and run in 5 seconds yet takes only 10MB of space" Yeah whatever, but I really hope this will become a fine release and get it's own page in the main menu of my blog. Certainly need more testing

It's Just Wrong: MSYS Python

I thought it would be helpful to have python which understand both posix path and windows path: MSYS version of python that is. In my old review about MinGW python, this kind of build already hampered with incompatibilities especially due to python heavily rely on inconsistent "defines" across modules sometime use uname() then sys.platform then posix or not (os.name).. meh.. this make workaround also inconsistent.

What did I tried is even worse:
- with uname = msys it's unknown system to python fine lets change it to cygwin, well this will create another problem since msys is not cygwin (different runtime unlike MinGW vs MSVC) its c modules should have different suffix to avoid python try to load native win32 module by accident (I set it to .myd meh...). Note: "msys" or "cygwin" or "mingw" is a hardcoded value that returned by sys.platform it can be only changed via hex editing once python.exe compiled
- distutils which used when building extension then would call uname (unlike mingw or msvc) to decide platform / compiler flags etc and what you get is insane name: MINGW32_NT-5.1-1.0.17(0.48/3/2) <- yes there even slashes there :-)
- unlike mingw build which can be changed to win32 (hardcodedly) to provide more compatibility thats not the case for msys which the only possible option is cygwin with above quirks.
- many c-extension tests failed! not really a problem if we just want barebone or purelibs though

In the end I decide to edit ntpath.py and site.py of native msvc python to make it use "/" under msys, this again have its own quirks too: win32 python need to use ";" as path separator which ":" already used as driveletter and because it doesn't know root "/". Meh...

Anyway here is the msys binaries of python 2.6.7: python-2.6.7_msys.7z (sources and patches from cygwin repo)

01 April 2012

NginX-svn4568 MinGW Win32

Want to test more my php-cgi (mingw build) last week but feel bothered to install/setup apache...

Building is quite straightforward, do not download from nginx.org instead take the svn trunk source code at svn://svn.nginx.org/nginx/trunk and modify ngx_atomic.h@24 to include defined __MINGW32__ then depends on which mingw api you use you may encountered conflicting off_t

$ configure --with-pcre=/local/php --with-zlib=/local/php --with-libatomic=/local/php --with-openss
l=/local/php --with-ipv6 --with-http_xslt_module --with-http_geoip_module --with-http_image_filter_
module --with-md5=auto/lib/md5 --with-sha1=auto/lib/sha1 --with-http_ssl_module --with-mail --with-
mail_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with
-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --wit
h-http_random_index_module --with-http_stub_status_module --with-select_module

note:  --with-md5=auto/lib/md5 --with-sha1=auto/lib/sha1  not required if you have openssl

the configure/conf kind a odd though (or it just me?) that I need to edit the final objs/makefile from strayed path including changing NGX_PREFIX into "./" (hmm not sure about it, but kinda works)

Well at least I'm greeted with "Welcome to nginx!", time to set up with php... oh remind me old days!

26 March 2012

Curl 7.24 with IPv6

cURL is a sophisticated downloader (okay, plus many others) utility that except for spider/batch is way better than wget. I decided to build this one because oddly enough the official build did not support IPv6, I noticed it when building PHP last week which by default when built with MSVC curl will have IPv6 but not with MinGW. The issue is in auto-generated curl_config.h file which have bogus values despite claiming (on screen) that it was configured with IPv6 enabled.

Okay enough talking here is two flavor of cURL:

cURL.exe 773KB with SSH, SSL(OpenSSL 1.0.1), IPv6, Asynchronous-DNS, RTMP, SSPI, IDN (via libidn) and WinLDAP
cURL_vista.exe 739KB same as above except IDN is natively supported that's why it need at least Vista

23 March 2012

Static build PHP 5.4.0 with MinGW

Experimental fully static build of PHP 5.4.0 with moderate bundled extensions compiled with MinGW. Though not supported, PHP turned out can be built with modern GCC under windows as long as we specify the correct  _WIN32_WINNT. Most features can be enabled too with exception dotnet module due to insufficient headers and libraries and also Zend inline optimization need to be disabled.

The CLI version has readline support in interactive mode (good for learning) similar to those linux build.

configure --enable-static --enable-embed=static --disable-fpm --disable-posix --disable-inline-optimization --enable-fd-setsize=256 --enable-maintainer-zts --disable-shared --with-readline --with-openssl --with-zlib --with-bz2 --enable-zip --with-libxml-dir --with-libexpat-dir --with-xsl --enable-wddx --enable-soap --with-xmlrpc --with-gd --with-jpeg-dir --with-png-dir --with-vpx-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-t1lib --enable-exif --enable-calendar --with-curl --with-curlwrappers --enable-ftp --with-libmbfl --with-onig --enable-mbstring --enable-sockets --enable-shmop --enable-bcmath --with-gmp --enable-intl --with-icu-dir --with-pspell --with-iconv-dir --with-gettext --with-mhash --with-mcrypt --with-tidy --with-ldap --with-imap --with-snmp --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pgsql --with-pdo-pgsql --with-pdo-odbc=generic,/usr/local,odbc32 --with-pdo-dblib --with-db4 --enable-dba --with-custom-odbc CUSTOM_ODBC_LIBS=-lodbc32
Autotools configuration should not be used since it missing winsock awareness and can be replaced by supplied win32 config (used for MSVC). Being a static build means all extensions are loaded at startup therefor it's quite a dog for repetitive processing but convenient enough for interactive mode.

CGI: php-cgi.exe 8.45MB
CLI: php.exe 8.44MB

For more detailed info, use php-cgi -i > config.html

update: php-5.4.10 static binary (mingw patch and hints included)

15 March 2012

My Dropbox is choked

Error (509)
This account's public links are generating too much traffic and have been temporarily disabled!

A reader notify me this morning that my dropbox account is not usable. I currently very busy with projects and don't know if I could mirror them to my another dropbox account (that's 2GB upload for my poor 128Kbps connection). This make me wonder whether my blog is popular? for ~300hits/day? I don't think so. Let see if my account could back to normal again or else.. well.. I don't know what to do. Help me? anyone? sourceforge? googlecode? because this issue would hit back again in the future since this is the first time.

If anyone interested to help please email me, I'll give my account credentials

My apology

according to this thread http://forums.dropbox.com/topic.php?id=52227
my account possibly reach 10GB/day.. seriously? How come?
anyway any volunteer? a very kind person with decent bandwidth :-) just to mirror the files to another free file hosting, I'd be very grateful!

since no one replied, this weekend I will start move all download links into one page possibly "other builds" then start mirroring to other account (will takes sometime). I believe that 10GB/day quota provided by dropbox is more than sufficient and very generous at it, what happened is probably someone spread a public link recklessly? I need to change the links in the future once in a while deliberately.

took longer than I thought.. downloads will spread into two dropbox account and now partially available again. Package larger than 50MB will stayed disabled until banning lifted up. Guess I need onr more account to balance the quota

Apparently it's not a regular 72-hours suspension from dropbox (Sadly my request for inquiry regarding the issue hasn't been replied), I will resume the remaining mirroring and all new download will be passed to goo.gl link shortener so it can be monitored but remained a "direct link"

04 March 2012

Ported LADSPA plugins collection

Hundreds of ladspa plugins for Windows!

Originally I want to try interesting ffmpeg branch here https://gitorious.org/~saste/ffmpeg/sastes-ffmpeg which if works would make ffmpeg a formidable both audio and video editor. Alas after porting many of those plugins, I have no idea how to apply them in ffmpeg :-( with a little change in af_ladspa.c ffmpeg could load and initialize ladspa correctly but that's all it refuse to be applied when input is video (saying invalid src) and completely ignored if input is audio.

Anyhow all is not lost, these plugins still work with audacity or lmms. Few interesting audio effects: rubberband, caps, calf, pvoc and more.. some are generator/synth though

To install
Audacity: copy files inside ladspa folder into [Audacity]\Plug-Ins
LMMS: extract archive to [LMMS]\plugins
FFMPEG: extract archive to the same place where ffmpeg.exe reside (applicable to my ffmpeg-aoutuv build only)


ladspa.7z (5.6 MB) enjoy!

16 October 2012

- rebuild some core2 optimized plugins into sse3 optimized, strip debug symbols
- remove some crasher plugins
- add plugins from FAUST, OOM, StudioBlood and axonlib

To port invada-ladspa, I made this small static library containing srand48, drand48 and etc functions taken from libnewlib 1.18 xrand48.7z

22 February 2012

Testing WebkitGTK3 1.6.3 Win32

This is a test using the supplied GTKLauncher with default settings, I have done most of these tests a year ago and found few workaround but mostly remain the same now.

Core components:
WebkitGTK 1.6.3
GTK+ 3.3.6 using adwaita theme
libsoup 2.37.3

Issue 1. 50% resources hog

When opening certain pages (in this case google.co.jp) browser will eat up 50% resources (my system is dual core).
Workaround: unfocus the window (you kidding me? that's not workaround)

Issue 2. Unicode glib, fontconfig and pango aliases.

Under Linux, baidu.com reportedly okay (glib backend) while becoming like this under windows, anyone knows why?

Workaround: build webkitgtk against ICU instead of glib, above is webkitgtk 1.2.7 with ICU (gtk2)

Wikipedia.org shown with freetype backend and default etc\fonts\fonts.conf

With freetype backend and modified etc\fonts\fonts.conf (add autohint, antialias and set tahoma as default). Here most indic languages is back, under windows 7 and pango 1.29 this should rendered near perfect like below but fonts.conf need to be set to segoe ui. Also notice dropdown list widget above is now properly rendered in GTK-3

With modified fonts.conf and modified pango.aliases (due to limitation in Win XP) also need additional unicode fonts.

Issue 3. Local file URI

Regression: webkitgtk 1.6.3 can't open windows' file URI see wikipedia, other schemes also failed

Here is how version 1.6.3 treat the triple slashed URI, it's like opening "/D:/Sources/webkit-1.6.3/html/index.html"

Application like Devhelp also affected

Webkitgtk 1.2.7 (GTK-2) correctly open local files

Issue 4. GCC miscompiles JavaScriptCore
When compiled against win32 api from mingw-w64, for example webkitgtk produce the following anomalies:

Numbered list stopped after 9th...?
Google top menu not shown in black

Workaround: use mingw32 or find the culprit?

Issue 5. Video

With gstdirectsoundsink and gstautodetect from gst-plugins-good webkitgtk3 also could play html5 video canvas and compared to 1.2.7 there is time lapse info. But other issue still the same: once volume muted sound will gone forever. Notice that fullscreen mode doesn't work in Windows so don't clicked it.

Issue 6. Printing doesn't work properly

Webkitgtk seemed to print with correct outer frame width (fitted?) and anything else is scaled down by approximately 8 times (thanks to Pawel for the report). Not an issue under linux.

Workaround: scaling up before printing

Issue 7. No plugins
And that's what youtube said

Okay that's enough with the problems :-)

Good :-)

Notes: If anyone encountered Mutex (pthreads) issue during building try to use https://mingw-w64.svn.sourceforge.net/svnroot/mingw-w64/experimental/winpthreads/

17 February 2012

Anti Piracy Campaign: The police move ahead their mouth and brain

After reading http://tekno.kompas.com/read/2012/02/16/15242314/Kampanye.Anti.Pembajak

Indonesian police seems felt very stimulated by the recent SOPA news in the internet. Now it's show off time!

If the idea is A, the police officer may later said B and in practice it won't be A nor B. That's how it works here, yet they act in name of law and justice. Shouldn't they went to jail themselves before they try to clean someone else ass? These corrupt filthy police! how dare! KPK should arrest more generals to give them some lessons.

One of the absurd plan is the police would endorse that "a PC should be sold not without OS" because they "worried" users will abuse this by installing illegal software. Oh well another M$ running dog... (note: here, it's rare to see build-up PC like Dell being sold)

The government themselves are only half-hearted when promoting OSS, they appear to be inconsistent presenting OSS as a solution for anti-piracy and do not have the dick to promote the availability of OSS *before* endorse "use of original software". Not that I can expect they could be a model for the citizen anyway...  (note: original software by any common means of public knowledge is paid software)

Some of reckless acts by the so-called government (of course they failed because they are too old to understand teh internet):
- Censoring the net after some sex scandal video involving parliament's thieves and bitches and several public figures
- You can get jailed for saying (typing) something inappropriate via twitter

IMO in a country where piracy is too common to be said as illegal and the authorities are hypocrites (they precisely also pirates) at the best, raid after raid is a suicide move. After all the level of software usage mostly can covered adequately by switching into OSS. Educational institution instead should be more proactive spreading the OSS awareness, but last time I checked the faculty is busy buying software licenses. It's true that there are many field where OSS is unacceptable but otherwise it can't be that worse.

Oh be careful there is also cybercafe raid and notebook raid maybe next time your PC get raided and don't forget BSA too, they won't tell you the truth they just want to squeeze your pennies. If you ever read http://www.software-asli.com/faq.php where they seems advocating themselves to the "original software usage"  while the fact there is no "open source" word found in their FAQ is a no good sign for your life. So an open source software is not original software? nice joke!. Don't get bullied! they just another running dog of corporate software who don't care about the future.

People should realize how poisonous is when they're overly adept to proprietary software. Alternatives do exist and (sadly) waiting to be found and learned. And there is more than just price: freedom

14 February 2012

How to perfectly mix 32bit and 64bit libraries in MinGW

Assuming you have multilib (dual 32bit/64bit) GCC and you have common libraries in /usr/local you could put all 32bit and 64bit in /usr/local/lib folder altogether.

How? I found out that GCC filename lookup for libraries (be it import lib or static lib) have the following order:
In case of -l[foo] getting parsed:
1. lib[foo].dll.a
2. [foo].dll.a
3. lib[foo].a
4. [foo].lib

The common convention is (1) as import library and (3) as static library however this may varied among makefiles. If you're willing to do a little renaming work or better more edit the libtool or makefiles. You could arrange them this way:

32bit import lib: lib[foo].dll.a
32bit static lib: lib[foo].a
64bit import lib: [foo].dll.a
64bit static lib: [foo].lib

This way, during compile gcc will look for all possibilities till found the matched bitness with import lib having higher priority than static lib. Huh lucky number 4 eh?

Hence the same -L/usr/local/lib and -lfoo for both 32 and 64bit hence single .pc (pkg-config) file too. Nice!

I use this convention in my MinGW toolchain

12 February 2012

JSCoreGTK 1.6.3 static build win32

JSCoreGTK is part of WebkitGTK and JSCore can be said as the vanilla version of Google V8. During my unsuccessful attempt to build webkitgtk I have been playing with it instead. And it seems possible to have static version through many fraudulent practices of course :-), now it can be fully integrated to a project requiring JavaScript Engine (I think).

Static build (sjlj exceptions, TDM compatible):
jscoregtk-1.6.3_win32.7z 1.45MB

static interpreter in release and debug (no-symbols) version
JSCoreGTK 1.6.3 headers and static library
minimal Glib 2.28.8 static library
minimal pango 1.28.4 static library
libintl static library

- to build you may need to append -lpthread in LIBS
- the jscoregtk alone seems to be licensed under LGPLv2 only (slightly different from Webkit)
- I also made spidermonkey mingw binary here for comparison

Freenode banned toonel.net

Just noticing now why pidgin so stubbornly not logged me in into #freenode IRC. Why banned? what about my privacy? People with public IP? Come on that's no fun at all, I need to hide my ass from any possible intrusion and penetration. Even now, some sites have also banned Opera's proxy a.k.a "Turbo mode" which also hide your identity. Now what? should I use the sluggish Tor network?

Really.. is this part of ACTA SOPA or PIPA so they could catch their prey easily? arrrgh

11 February 2012

GDB 7.4 with TUI win32

GDB UI for windows is rare indeed, I've looking at Insight but the latest version only support GDB 6.8 and apparently gdbtk also withdrawn from GDB source code tarball. Thats only leave TUI, fortunately it's not that complicated to enable it. We need latest ncurses (5.9) to make it happen, but since GDB has its own termcap implementation for windows this will conflicting ncurses' (see patch below). However when using gdb.exe (instead of gdbtui.exe) it will crash immediately once we type as this mode expect for GDB's own termcap that being disabled earlier. Thus only gdbtui.exe usable, to build normal gdb.exe we will need to rebuild with --disable-tui.

And there is more catch about gdbtui, if it was run under MSYS (TERM=cygwin) gdb will print ugly UI. We need to unset TERM before execute gdbtui and only plain Windows console that works (console2, rxvt or mintty won't). Here is a screenie under CMD window:

Patch to enable TUI (need ncurses 5.9):

--- gdb/configure Tue Dec 13 20:08:05 2011
+++ gdb/configure Sat Feb 11 18:06:04 2012
@@ -9799,9 +9799,10 @@
     ac_cv_search_tgetent="none required"
-    ac_cv_search_tgetent="none required"
-    CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
-    ;;
+    if test x"$enable_tui" = xno; then
+      ac_cv_search_tgetent="none required"
+      CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
+    fi ;;

 # These are the libraries checked by Readline.

Patch to make portable python integration:

--- gdb/python/python.c Sun Jan 15 01:04:05 2012
+++ gdb/python/python.c Sat Feb 11 19:21:56 2012
@@ -1429,6 +1429,12 @@
   # interpreter to find them.\n\
   if old_dir in sys.path:\n\
    sys.path.remove (old_dir)\n\
+  if (os.getenv ('PYTHONHOME')):\n\
+    if os.path.isdir (os.getenv ('PYTHONHOME'), 'Lib', 'site-packages')):\n\
+      gdb.PYTHONDIR = os.getenv ('PYTHONHOME'), 'Lib', 'site-packages')\n\
+  else:\n\
+    gdb.PYTHONDIR = os.path.join (os.path.split (sys.executable)[0], 'gdb', 'python')\n\
   sys.path.insert (0, gdb.PYTHONDIR)\n\
  # Tell python where to find submodules of gdb.\n\

gdbtui74.7z 2.59MB with python 2.6

7.4.1 with python 2.6 against pdcurses + the old insight 6.8-1a, gdb linked to msvcr90.dll
7.5.1 with keybinding patch (see comment)

09 February 2012

The closest thing to Thinstall

Portable app will getting more interesting with this available open source tool: a registry emulation
The fabled ThinApp (formerly Thinstall) is an application level virtualizer for windows that handle both filesystem and registry redirection. Each have true virtualization, one of the simplest thing of filesystem redirection is by altering some common environment variable like %USERPROFILE% %PROGRAMFILES% and so on at user session level. But this method is nowhere near what Thinstall do. Say, what if the program call for hardcoded path?

Few years ago I've looking for OSS alternative for Thinstall, if I recall there was one, a research product (I think) which come as source code only, too bad I forgot its name.. but seems to be discontinued or become commercial software (dunno).

Now let's leave that one alone because OSS generally more simple and timid when it come to Windows (no COM, no ActiveX although now there are some). Now about registry... Like it or not no matter how clean and standalone an application is, it will indirectly ask for many information from registry via windows so it's good to emulate it.

And this app "WinAPIOverride32" http://jacquelin.potier.free.fr/winapioverride32/ don't let the name fool you (me too) for thinking "oh an open source alternative of procmon" but wait till I unpack the zip file, a registry emulator being bundled! (Umm.. well registry emulation is basically overriding one of Windows API) While still in beta (source code available) the documentation is minimum but clear enough and there is video too http://jacquelin.potier.free.fr/winapioverride32/videos/registryemulation.htm

For large OSS app like OpenOffice, this tool could be a lifesaver (no compromised functionality). I'm still playing with it tonight :) will see how far it can go, for my first try I want to emulate userlevel fonts availability by emulate HKLM\Microsoft\Windows NT\CurrentVersion\Fonts a.k.a adding fonts without admin rights and put it in user accessible location.

Check it out dudes! oh caveat that I don't feel:  it's currently a 32bit only

03 February 2012

Qemu git win32

Yet another Qemu-git win32 (XP SP1) binaries...
Originally I want to test if Qemu-alpha is able to emulate openvms (as es40 replacement), but no luck.. probably bios issue

Configured with:
configure --static --enable-sdl --enable-curses --enable-curl --enable-libiscsi --enable-vnc-tls --enable-vnc-jpeg --enable-vnc-png --enable-vnc-ws --audio-drv-list=winwave,dsound,sdl --enable-guest-agent --enable-vhost-net --enable-libssh2 --with-coroutine=windows

Static Libraries:
Glib, libintl, win-iconv
GnuTLS, libgcryp, gpg-error

last update: 21 May 2013

The installer will install to [CD]\QEMU then make all console-less version of qemu-system*.exe with 'w' suffix and upx'd all executables.
Or you can extract it using 7zip too but without above extras.

01 February 2012

AoTuV on edcast

Winamp+edcast+icecast2 = broadcast yourself :) took me a while to realize how similar this to Skype, although I got nasty 10s lag which seems more to client issue rather than icecast.

But with only 128Kbps connection, realistically I only have ~60Kbps upload speed thus the bundled vorbis q0 (~64Kbps) just barely over the top. AoTuV will fix that! with q-1 (~48Kbps) still good for music or -2(~32Kbps) for speech I could get steady streaming, tested with Opera's proxy (turbo mode) as client on the same connection.

To enable aotuv replace edcast's vorbis.dll and ogg.dll with my dlls edcast_aotuv.7z

using the free Multiple DSP plugin will enhance audio "quality" by applying DSP FX and edcast simultaneously

depends on how complex is the audio channel separation, in most case we won't get any higher than 60Kbps

31 January 2012

ImageMagick Win32 Pack

This package contain numerous file format command-line converter (all are open source software). The main package is ImageMagick (I think it's more complete than official build) with dozens other additions. While most are image format conversion, I put several addition to handle other documents (DWG, PDF, DjVu, WordPerfect, OpenXML and ODF), Audio/Video through ffmpeg and several SWF tools.

There is some overlapping functionalities though, for.ex IM could convert pdf to svg however Poppler's pdftocairo produce much better svg result. This case we could always modify delegates.xml and make IM do what we want and even to handle what it can't.

To use them effectively we need to be accustomed with batch script and IM has valuable guide for it http://www.imagemagick.org/Usage

To install, extract the archive somewhere and add [somewhere]\bin to your PATH environment variable, then start making .bat files and put them in your SendTo folder so it can be accessed from explorer's context menu.

download (with HDRI and OpenMP enabled):
IM-6.7.3plus_win32.7z 23.6MB [patches]
MD5: e4daa031556eef7b6c1c5b8227b065c1

Updated 32bit/64bit build available in main page

- IM's convert.exe has been renamed to imconvert.exe to prevent name conflict with Windows' convert.exe
- All binaries should run without dependencies except for ODF<->OpenXML converter which need .NET framework
- Most of them are my personal build (optimized for Core2 CPU), few others are taken from official build

24 January 2012

A little program that print CPU class

Got this nice executable from GMP package that auto-generated during compilation. Only 39KB :-) but very useful if we just want to retrieve a processor class (instead of ID) from command line easily.

Supported x86 CPU family:

A class is differentiated specific CPU features unlike "family" that call pentium pro - pentium 3 as i686 which is a bit vague.

execute without argument and it will print your CPU class name:

22 January 2012

Spidermonkey 1.8.5 MinGW

After tried Webkit's JSCore previously which is quite working despite unstable webkitgtk, I decide to compare it with Mozilla's offering: spidermonkey. Sadly neither it was new? (1.8.5) nor they provide win32 binary? Did they?

Anyway there is a VS build here www.kahusecurity.com/2010/spidermonkey-1-8-5-for-windows/
So why not MinGW?

Binaries and devel files (Mingw32 dwarf2 exceptions not MinGW-w64):
The js.exe only depends on msvcrt.dll and libnspr4.dll, no WinSxS hell :-) Good, now I want to bind Gjs with python!

Build instructions:
Surprise, seems mozilla didn't care much about mingw (after seeking some pointers on their site)...
The source use autotooled configuration.. good :-) so does its dependencies: NSPR

1. To build it basically I just modify any line in configure that define CC/CXX as "cl" with gcc/g++ and remove all illegal options and flags such as -nologo and -mno-cygwin (GCC 4.6.2). Here is my configure for refenrence.

2. NSPR is easy to build: configure and make

3. For Spidermonkey be sure to define CC=gcc and CXX=g++ first, then I use: configure --with-nspr-prefix=[path to nspr] --with-windows-version=502 --disable-shared-js --enable-static

note:  --with-windows-version=502  needed to silence windres version error

4. Once completed, we will soon encounter infamous error WinMain thingy when compiling nsinstall, I already have this tool so I skip this and replace all $(INSTALL) occurrences with [path to nsinstall.exe]

5. Continuing, If we're unlucky there is an undeclared intptr_t in nanojit.h, just include wchar.h there

6. Build will resume smoothly, up to linking step where it complain invalid path (python not automatically turn "\" to "/"), So we have to edit libjs_static.a.fake file and replace all slashes

7. Continue make, and then make check which give me 2 errors: a math and a date test...

16 January 2012

PyGObject 3.0.3 MinGW

About a year ago I made a big but messy conservative PyGTK AIO now it's time for experimental stuff :-)
After testing GTK-3.3.6, I think they are much closer to a "usable" stage in win32 port. So why don't we try that in python...

Technically this pygobject-3.0.3 is more like pygi in the inside and IMO "PyGI" sounds cooler too ah well..

Here is win32 binary pygobject and pycairo for python 3.2
Downloads: http://opensourcepack.blogspot.com/p/pygobject-pygi-aio.html

24-01-12 Added WebkitGTK3 1.7.4 very unstable due to unstable Glib
20-01-12 Added WebkitGTK3 1.6.1 very unstable due to unstable Glib, added Clutter-1.8.2 and MX-1.4.1
17-01-12 Added GTK3 3.3.6 with broadway and Glade. to use broadway set environment variables: GDK_BACKEND=broadway and BROADWAY_DISPLAY=[some port number]

AIO runtimes for GI, GTK, Clutter/MX, Webkit, Gstreamer, GDA and Telepathy are planned later as well as supplementary apps like Glade-3 and Gtranslator.  And if I in mood maybe a win64 binary too, however installer are not planned (I'm tired of NSIS)

I already played with MX and whooah you should try this OpenGL (bitmap/css skinnable) GUI library! it's very cool, as sleek as QtQuick!

be warned that this is mingw binaries, I'll assume you know the potential issues. Last weekend I've tried to compile python 3.2 with WDK (the infamous msvcrt.dll linking trick) the whole night but given up after several unreferenced functions. OTOH tried to compile the whole GTK3 with mingw against msvcr90 but also failed.

11 January 2012

GTK 3.3.6 GDK Test

Today I give a try on latest gtk3 (3.3.6) which according its changelog have some win32 bugfixes.
During configure I also enable GDK broadway! with a little replacement: sys/socket.h -> winsock2.h in several c files and add missing brodway function exports in gdk.symbols (patch). Also don't forget to create etc\gtk-3.0\settings.ini and fill it with at least:
gtk-theme-name = MS-Windows

Sadly native theme still broken.. and redraw issue like in GTK 3.0 also prevails :-(
Goodness that pango's win32 module is back so I can give a screenshot :-)

Below is two instances of gtk3-demo, one running broadway inside webkitgtk 1.6.1 (require html5 websocket) browser (two windows with oversized "x" button) and other one is the ordinary win32 backend.

Both demonstrating pixbuf animation, however the one in webkit runs very slow and webkit process hog 50% CPU during the animation :-( anyway that's one cool remote display we got here!

http://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00050.html explain the broadway win32 situation better.
Almost forgot, pygi (pygobject 3.0.3) also works too:
this was run on python 3.2

GTK3 adwaita theme engine (in gtk3-theme-standard package) can be used instead before windows native theme fixed.

10 January 2012

Indonesian Internet Social Culture Phenomenon

Before the booming of smartphone, here internet is mostly held by internet cafe, universities, workplace or subscribed home internet. Now everyone want a tablet or at least smartphone to replace their ordinary mobile phone and people start enjoying the "boxed" internet.

Boxed? the reason behind internet access mostly didn't came from true curiosity but rather a trend or prestige. Recently, I watch a commercial TV ads which illustrate how a rural newcomer always get everything for free in Jakarta because she have connections from facebook. Not surprising, here connection is too important, a mandatory survival asset for anyone. Which probably lead to common acceptance of nepotism and eventually corruption as a hobby.