Friday, June 27, 2014

DataBasin: more powerful CSV writing for Select and Select-Identify

DataBasin, the clean-room impelmentation of a data extraction tool for SalesForce.com available for GNUstep and Mac just made a big leap forward!

If you have ever done a SELECT in salesforce.com, you might have noticed that the results are not ordered and that semi-joined fields ("." notation) are handled strange because a whole object is returned.

DataBasin extracts the  columns of the CSV file by checking the first row of the dataset and recursing on the field names of salesforce's response. The effects in DataBasin are the following:
  • The field order is not preserved
  • If a sub-object is queried, all those fields are grouped together in that object
  • If more than one field is queried on a sub-object and on certain record this object is missing, the number of columns between records is inconsistent: salesforce.com doesn't return the whole object and DataBasin iterates record after record in the sub-object, but if it it is totally missing, only one empty column will be written, not as many as needed
  • Capitalization of the column names doesn't get preserved (compared to the above issues, something really minor)

I added a new option available in write out fields in the order of the query.

This feature implies a more complex under the hood. For each record gotten in the response, the field names are reconstructed as before (e.g. by recursing inside sub-objects) and put in a Dictionary.

The original SOQL query is parsed and the field names extracted, then these names are used as keys for each record dictionary and written out.
  • Order preserved, also with sub-objects
  • Fields preserved and empty values are written even if whole sub-objects are missing
  • Case is preserved
This approach looks fine and comes with a relatively small performance penalty, however it is delicate because during parsing of the query, many naming subtleties of Salesforce.com needs to be inferred, that is, DataBasin tries to infer how the name in the Response will be:
  • field aliases
  • aggregate names with no alias, which are called progressively Expr0, Expr1
  • idiosyncrasies with aggregate functions. A field in a sub-objects is called Object__c.Field__c when in a regular query, but when used in an aggregate query, only Field__c is used, disregarding the join-depth
  • COUNT() vs.COUNT(Id)
I hope I have not missed any! in any case, enjoy!



This feature is available now both in Select and Select-Identify, since it is a problem of the CSV Write backend and enhances DataBasin operation usability greatly, bringing it on par with DataLoader.
Since DataLoader performces similar transformation and sometimes produces wrong results, I left this feature as optional with the flag "Write fields in query order".

Sunday, May 04, 2014

ProjectCenter build parser fixes

Debugging build tools...

I was long plagued GNUstep's IDE ProjectCenter had problems with parsing the compiler's output. This made "clicking" on the warning or error often impossible. I never dug into the details, but it happened more and more often and was worse on different systems than others.

Yesterday, while working on another projects I got so annoyed that I debug until deep into the night to fix them and found two different sources:
  • On all OS recent versions of gcc (gcc 4.x) have a "fatal error" that was not being correctly parsed and assimilated to an error
  • OpenBSD was using egcc and this was causing the build files not to be recognized, so the error was parsed, but opening the correct editor was impossible
I fixed both! Using modern gcc is thus now fine as using OpenBSD that works now like Linux. GNUstep's cross-platform support thus continues!

Happy hacking.

Wednesday, April 30, 2014

DataBasin 0.7

DataBasin 0.7 is out!

If you need to query, update,  create data on SalesForce.com and are on a GNU/Linux, *BSD, Solaris system or MacOS-X... try it out! Do you need to perform a query having objects or IDs instead of a where clause? Select-identify will come handy for you.

Some of the news:
  • Save results of update and create in a results.csv file with succeess and failure
  • Progress monitor of operations shows time remaining 
  • The login panel shows a visual icon if login happened successfully or not
  • Progress monitor for Query, Delete, Insert
  • Select identify now supports ORDER BY
  • Internal core enhanced for Delete
  • Many bug fixes and clean-ups

Thursday, April 03, 2014

Graphs: Improved Grid and labels

Lots of new stuff in OresmeKit, the graphing toolkit for GNUstep and Mac! As an Example, an advanced dashboard based on DataBasin that displays the system load of Salesforce.com. It is not generally available yet, but I hope it will be!

Grid-sizing is now selectable so it gets spaced in 1K or 1M intervals (depending on the data-range available), like it is used in both screenshots in this example.

 - (void)setYAxisGridSizing:(OKGridSizing)sizing;

Can take now: OKGridConstantSize, OKGridKiloMega

Also, one can decide to draw Just the label of the minimum and maximum value or a label for every grid:

- (void)setYAxisLabelStyle:(OKLabelStyle)style;

Can take:  OKNoLabels, OKMinMaxLabels, OKAllLabels

1000-unit Grid



To complement this kind of visualization, a new kind of Label formatting can be used. In the example above, the numbers are plain, 10.000 is written as such, in the example below, it is formatted as 10K, if we were using 10.000.000, it would me 10M

1000 - grid with K formatting

Monday, February 17, 2014

Tailoring OpenBSD for an old strange computer

I have an ol' OmniBook 800CT. A small, interesting computer, for its time, extremely advanced!
Small form factor, but still a very nice keyboard, something unmatched on modern netbooks. The unique pop-out mouse. The series started out with 386 processor, b&w display and ROM expansions.
The 800CT is one of the latest models: same form factor, SCSI connector, but color screen (800x600) and a hefty Pentium 133Mhz!
But only 32 MB of ram (the kernel report 31 of real mem, 24 avail mem)

Original 5.4 kernel: 9.2M
Custom kernel: 5.0 M

This shrinkage is quite hefty! almost 50%! More than raw disk usage, this new kernel boots faster and leaves  more free memory. Enough more that X11 is now almost usable

How can this be achieved? essentially by removing unused kernel options. If you remove drivers which you know you don't need because you don't have the hardware (and won't use it, e.g. you know you won't plug-in a certain card in the future) then you configure it out, it won't be built and it won't get in your kernel.
On an old laptop with no expansion except the ports and the PCMCIA port it has, this is relatively easy.

To build your custom kernel, follow the OpenBSD FAQ.

The main theory is to take the kernel configuration file, skim over it line by line it and see if you have the hardware, which you know by checking your dmesg. Dmesg shows which devices and drivers were loaded.Remember that you do not modify GENERIC, but a copy of it.

You can automate this with a tool called dmassage: it will parse your GENERIC configuration and produce an optimal tuned version, however it will not work out of the box.
Why? there are drivers which do not compile if other drivers are not present.

I'm unsure if this is really a bug, in my opinion it is at least "unclean" code, however since mostly this kind of extreme driver-picking is not done, it is not fatal and probably won't be fixed.

 If you remove all drivers at once, you won't easily find out one which one breaks, so my suggestion is to remove them in sets. One by-one is surely too tedious, since for each you need to make a build.
  1. remove X drivers
  2. build, if it works, copy the configuration file as a backup
  3. test the kernel, optionally, by booting it
  4. continue removal

Thus, in case of breakage, you can narrow it down to a less options.

If your mahcine doesn't have a certain bus, you may remove all drievrs attached to each. But proceed from the leaves, not the trunk: gradually remove the peripheral drivers before removing the bus support.

In my case, I found that an unremovable driver is:
et*    at pci?                # Agere/LSI ET1310


Remember that you are running an unsupported kernel, if you want support for a problem, better try it with the original kernel, of which you should anyway for safety retain a backup copy during the iterative building process.

Addition:

In X11, which needs to be set to 800x600 8-bit mode, I had to uncomment these lines:
    #Option "progLcdModeRegs" "true"
    #Option "progLcdModeStretch" "true"

Friday, February 14, 2014

GAP moves to SVN

The GNUstep Application Project transitioned its source repository from CVS to SVN.

The sources were migrated with full-history and the same directory structure.

Connections detail, at the project's page about svn: https://savannah.nongnu.org/svn/?group=gap

Browsing can be done here: SVN Surfing

The CVS repsoitory will remain open for some time, in case something went wrong during the migration process, but it is not official or current anymore.

Thursday, December 12, 2013

GWorkspace, how to easily mount/unmount volumes

GWorkspace allows for easy mounting and unmounting of volumes (disks, usb sticks, CD-ROMs) like you would do manually on console, without the requirement of daemons or other tools.

Here is how.

First, be sure your underlying operating system is correctly configured to allow you to do that. I'll show as example how I configured my Debian system.

Your current user needs to have the permissions to mount the volume(s), this is usually done by being part of the correct group. For Debian we find cdrom and floppy as ready groups

cdrom:x:24:multix

The predefined mount-point for the cdrom is /mnt/cdrom, since I usually handle with USB sticks I added a mount point for it:

$ ls -l /media/
total 8
lrwxrwxrwx 1 root root    6 Jan  1  1970 cdrom -> cdrom0
drwxr-xr-x 2 root root 4096 Jan  1  1970 cdrom0
drwxr-xr-x 2 root root 4096 Nov 27 14:01 usb


Now, let's add the correct lines to /etc/fstab for our usb entry. The cdrom entry is usually already configured by Debian.

/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/sdb        /media/usb      auto    defaults,users  0       0


I auto shall determine the file system automagically, while users allows for user permissions for the mounted files. You can check if everything is configured fine if you can "mount" from the command line with your current user.

Then open SystemPreferences and configure the managed paths as shown here:

SystemPreferences - Mount points
Configure the mount points for removable media, here I have enabled the cdrom and the usb mount points. The mtab path is currently ignored by GWorkspace, so don't bother and the default value is anyway correct for Linux.

Now, in GWorkspace we can select Check for disks under the Tools menu.
GWorkspace - check for disks
If everything goes well, voilà, your volume will get mounted. It will appear on the destkop if you have the Desktop enabled and you can show its content. In any case it shall be visible in the File Viewer in its mount place.

Usb stick contents




If all options are set correctly as suggested, the volume is readable, writable as you can check with the Attributes Inspector. Also we can open the .zip file with Zipper easily.

Zipper and Attributes


To unmount a volume, just drag its icon to the Recycle Bin.

GWorkspace, fixed mount bug on Linux

Fixed a nasty bug (I was using the wrong macro) that was causing GWorkspace not to mount removable volumes (like an USB key) on Linux.

Sunday, November 24, 2013

Graphos supports Cusps!

Since many years, Graphos supports nice-looking and well known bezier-paths. However it always supported, by the design inherited by GDraw, symmetric handles. Since the handle points define the curve's tangent to the control point, there will be no discontinuity. That is, each control point's handles are equal and symmetric, allowing for smooth curves like here:



I added now support for splitting handles and making them a-symmetric, thus being able to draw cusps in a line.

While in path-editing (white arrow) a contextual menu will allow you to choose what kind of type the node is.

To support this new kind of information which is associated with each node, I changed the file format. Paths are now saved as a series of control points with their associated type, instead of the older format that was essential PS data, where each line-to and move-to was described. The latter format split information about each control-point between left-and-right and while more compact, did not allow to add the new information.

Anyway, here the result, left a smooth path, right the same path where the central point has been "split".





Note to self: this will allow to draw Graphos' own logo in Graphos much better. Something to do the next time I'm bored!

Saturday, November 23, 2013

Graphos 0.5 released

The GNUstep Application Project announced a new release of its vector drawing application, Graphos on Oct 15th.

Improved text object and handling, improved selection handling (e.g. for multiple objects that are group selected) and many other bugs. The format is 0.4 compatibile, although text object might be placed differently if loaded from old files, due to the old bug.

Tuesday, September 10, 2013

WindowMaker-style menus in GNUstep?

Did you know it was possible?
I got that question asked more than once!
Or horizontal menus? or Macintosh-style?

Well the obvious way is to install theme enabling this feature. However, you may want to tweak just a certain feature or customize the default look.

Now you need to set a certain default. If you do not want to fiddle with the defaults write NSInterfaceStyleDefault GSWindowMakerInterfaceStyle, then the "Defaults" preference panel will be your friend!
The Panel has been long around a long time! It is easy to enable things. But once you need to set 

I just completed two useful enhancements in System Preferences:

  • New editor type for fixed-list choices, as is the case for the interface styles!
  • All values can have now a localized description!






You can see the new editor in action with WindowMaker style menus which, by the way, are more convenient when using the "stick" pointer instead of a Mouse, as found on ThinkPads and certain other laptops.

Thursday, July 11, 2013

FTP: new features, some polish

I added some long-due functions to FTP, handled by a request dialog
  • Local and Remote Rename
  • Local and Remote New Folder



Furthermore, currently it is boring that after each operation the file lists are not updated.

I thus changed the core representation, fileTable, to be a mutable array and added basic manipultation methods. I will the progressively add provision to update dynamically the list after operations. Right now I worked on delete. The first impact is that the contents of the selection need always be copied before launching an operation, otherwise operations with selections larger than one element may fail or behave wrongly after the first element got processed.

Also, I noticed that FTP lacks a refresh function. Sometimes after years you notice the most basic things! I'll need to implement that.

Friday, June 28, 2013

Graphos: text alignment and other fixes

I finally fixed text alignment in Graphos! It was broken since a long time, perhaps since Graphos 0.1, probably due to the conversion made from GDraw. You had the controls in the editor, but then it didn't draw correctly!





Another long-standing bug was the manipulation of handles of a closed bezier path: the handles inside the path could not be touched. I think this bug existed even in GDraw!


A lot of work then went into restructuring the whole architecture that handles the zooming of the view. previously, everything was recomputed, there was no notion of original size, everything was transformed back and forth on the fly. While quick and easy, this provided serious problems when saving! Furthermore it means that there is data corruption when performing zooms!

Now, the original information is stored inside each object and everything is then calculated for representation. Some zoomed data is pre-calculated, other not. Probably there can be quite some optimization, but first everything needs to be debugged, since this is a quite consistent change. No new format is necessary since previosuly saving with a zooom different from 100% resulted in a broken file anyway.

Thursday, June 27, 2013

Graphos: new path editing

I changed the way selection and editing of paths and objects work in Graphos.

Previously, the program attempted to be smart: the "white" arrow tool would auto-select an object and start editing it. Clicking outside would deselect it.

This behaviour seems smart, but with many objects, with control poitns close together, it could drive you crazy. I thus changed the behaviour, by differentiating the black arrow and the white arrow tools  more:
  • the Black Arrow selects and unselects the whole object
  • the White Arrow selects and modifies control points, but does not change the object selection
  • the White Arrow only selects control points within the current selected object
  • missing a control point with the White Arrow does not deselect the object

This arrangement makes the two tools more orthogonal. It looks perhaps a bit more cumbersome for basic operation, but it ends to be much easier when objects overlap. Especially when using a graphics tabled this makes a huge improvement in my opinion.

And to close, just a drawing to show the current capabilities of Graphos. Making different shades is very easy with the new


Thursday, April 25, 2013

DataBasin: advanced SObject describe

I enhanced DataBasin object's describe. First, I do parse the RecordTypeInfo now, but that was the easy part.  Salesforce.com returns only the record type ID and name, but programmatically, this is not very useful. The important bit would be the Developer Name of each record type.

I enhanced the results by querying automatically the RecordType table, extracting the Developer Name, matching it through the RT Id and merging back the results, so that the resulting DBSObject has a complete Record Type information, totally transparent.

Sunday, April 21, 2013

Simplifying GWorkspace

I am streamlining GNUstep's Workspace. For many years it had a mode for spatial navigation, inspired essentially from Mac's finder and by GNOME. I personally never felt that it fits well in OpenStep's paradigm. MacOS X incorporated it for legacy reasons of Mac Classic, becasue Apple (sadly) wrote a new Finder instead of using OS's Workspace.
Spatial is good, but I think having a manager which incorporates both philosophies not.

Thus I removed spatial navigation from GWorkspace. Some loyal users perhaps will mourn it, but I want to remember that GWorkspace is just one possible application to implement NSWorkspace, anybody can write a replacement. In fact, I have already plans to write an alternative version, but this will be material for other blog posts.

Monday, April 08, 2013

FTP 0.4

FTP 0.4, the ftp client of the GNUstep Application project, has been released.

This is release has a couple of new features which should make usage a bit cleaner as well as many bug fixes and portability issues. I would recommend the upgrade. Among the many small changes:

  • Reopening connections without restarting FTP is fixed, there were corner cases where this didn't work
  • Better progress report, also for file listings. Indeterminate progress if size is unknown.
  • 64bit and portability fixes. Smaller fixes about corner cases with empty selections and empty files and interface locking.
  • When disconnecting, the remote connection gets cleared.
  • More minor but annoying bugs, like problems with large selections on Cocoa. 


FTP running on NetBSD, Sleek theme applied

Thursday, April 04, 2013

Graphos 0.4

Graphos 0.4 is out!

  • The Text editor now uses the standard font panel 
  • selection improved
  • mouse constraints for boxes and circles
  • undo for pasteboard operations
  • many bug fixes
  • 64bit fixes
Some shapes fun


Tuesday, March 26, 2013

GWorkspace 0.9.2

 pleased to announce the new release of the GNUstep Workspace application.
This is mainly a bug fix, stability and improvement release.
  • updated to current APIs and changes to NSUInteger, NSInteger and CGFloat
  • thanks to the above, improved 64bit support
  • improved BSD support
  • improved localizations and capability to localize better in the future
  • Fix logout timer
  • improved handling of Recycler and other daemons on logout
  • MDKit and MDFinder improvements, although problems on some setups remain
  • TabbedShelf crash fixes
  • memory leaks fixed as detected by the clang static analyzer
Thanks to the many who tested and contributed fixes, first of all Sebastian Reitenbach.


GWorkspace with the Sleek theme



Sunday, March 24, 2013

DataBasin 0.6

DataBasin 0.6 released!
  • Support "." as Semi-Join
  • Select Identify works now with multiple columns (all in AND as condition)
  • Support LIMIT clause in Select Identify
  • Improved Exception catching and display for Select Identify
  • Object Inspector supports selection of items
  • Log window with selectable log level
  • Progress and estimated completion time displayed in Log
  • Remember logins
  • internal API improvement
  • vast 64bit and portability improvements
  • Support count and aggregate queries
Select Identify is now vastly improved. Supporting multiple columns and LIMIT, coupled together with the other improvements of this release, makes it an invaluable tool during support and maintenance of a Salesforce org. How else could you check the status of a lot of objects, say Cases or Accounts?
The object inspector is always handy too.

DataBasin allows you to work with SalesForce.com much easier and also from your favourite free OS  using GNUstep like any BSD or GNU/Linux or at need on Solaris or Macintosh.

Many thanks to my colleagues, Claudio and Paolo amongst them, for finding bugs and testing the 9 internal beta releases!

BatMon 0.7

Battery Monitor 0.7 is now available from GAP.
Improved BSD support has been improved, Support for linux on powermac has been added.

Tuesday, March 12, 2013

Cynthiune 1.0.0

Cynthiune 1.0.0 has been released, the Music Player for GNUstep. This is the first of GAP after Wolfgang handed over the source code.

Improved stability, portability, support for big-endian processors. Ported to Windows and Macintosh. Memory leaks and bug fixes. This is definitely a recommended upgrade. Thanks to Wolfgang for the code and Sebastian and Philippe for the long hacking sessions!



Tuesday, March 05, 2013

GNUstep on FreeBSD

I thought it would be fun to share how well GNUstep runs these days. FreeBSD now is a first-quality platform! Stable and not second to Linux at all. NetBSD is close to it too. I try hard that all application maintained by me are not "Linux centric" as most of today's desktops are!

Workspace

 First a clean desktop. Just the workspace and a terminal. Icon display in a viewer, miller column browser (my favourite) in the other. Transparent dock on the right, showing some running apps and some not.
Battery Monitor in the background and as AppIcon! Now perfectly running on FreeBSD!


IN the development screenshot, we can just admire ProjectCenter with the build panel and a detached editor window. In the background, a GWorkspace file viewer in "details" mode.
Development

Friday, March 01, 2013

BatMon on FreeBSD

I just have improved GNUstep's Battery Monitor support for FreeBSD. It now handles the High state, that is the state where the battery is present and charged and not charging. Furthermore the cases of Missing batteries or a battery in Critical low state are now handled much better.
Check out CVS or wait for the upcoming release!


Wednesday, December 26, 2012

PRICE 1.2.0

After 10 Years with PRICE a Christmas Anniversary release! 1.2.0 is out!

This new version sports JPEG saving along with TIFF! Thus PRICE rgisters itself as editor both for TIFF and JPEG files. Compression factor is of course user selectable.

Along with many bugfixes, the Curves function is now improved in usability: the transformed histogram is drawn specular on top instead of right. Furthermore bug fixes should make the display more reliable and faster.

Of course, for GNUstep and Macintosh.





Monday, October 29, 2012

Pie Charts in OresmeKit

OresmeKit, GAP's charting framework for GNUstep and Cocoa, got its first rudimental Pie Chart implementation.

Data colors, background and edges are customizable already, as a real OKChart implementation. The dataset is represented as the set of each first element of the series, so that for each the color can be specified, being the series color.

Thursday, July 12, 2012

DataBasin development: logger and semi-joins

I am working on two long-needed features of DataBasin, the open source application to extract and inspect data from salesforce.com

The first feature is rather simple: a log window which shows some informative or debug output usually thrown to the console. While on standard Unix we always have the terminal emulator open and all debugging is very convenient there, on mac and especially on windows it is inconvenient: DataBasin logged every output as an Event in the windows log. Quite painful.

A much more complex, interesting and long awaited feature is that DataBasin now supports semi-joins! In other words, one can reference a field of a referenced object with the dot notation (like: Case.Account.Name) exactly as in the Salesforce.com Data Loader. The objects are recursively scanned and flattened so that they can be written to the CSV file. The column names are generated through the descent of the object tree.
This feature required a much more flexible approach in the CVS writer core. This means that some regression bugs could appear... hopefully not.

This feature applies to all queries, including the Select Identify query tool.

As the parser was being rewritten and the supported API bumped to 25, it is now improved to handle Aggregate Objects, thus one can now issue the following SOQL query:

select count(id), status from case group by status

and get the expected result:
"Status","expr0"
"New","16"
"Closed","31"

I hope these features make DataBasin much more useful!

Wednesday, July 11, 2012

NetBSD quick update guide

Since I always tend to forget and the documentation on the website is a bit incomplete, I sum up the procedure I use to update from source the kernel and userland:

Update /usr with cvs, create /usr/obj and /usr/tools (or clean its content).

As per documentation, build the tools. Inside /usr/src:
$ ./build.sh -O /usr/obj -T /usr/tools -U -u tools
Now build the kernel:
$ cd /usr/src
$ ./build.sh -O ../obj -T ../tools kernel=
Install it:
# mv /netbsd /netbsd.old
# mv /usr/obj/sys/arch/i386/compile//netbsd /
And now, important, build and install the modules:

# ./build.sh -O /usr/obj -T /usr/tools -U -u modules installmodules=/

Reboot and check that the kernel works. Then build and install userland:
$ ./build.sh -O ../obj -T ../tools -U -x distribution
# ./build.sh -O ../obj -T ../tools -U -u -x install=/ 
 Cross your fingers and happy BSD!

Monday, July 02, 2012

Grr 1.0 and RSSkit released

Grr 1.0, the RSS Reaseder, and its compantion framework RSSKit 0.4.0 were released on Friday.

Thursday, June 21, 2012

PDFKit 0.9.2

PDFKit 0.9.2 released. Still based on xpdf 3.0.2, it solves several build problems. It now builds with clang and with current GNUstep. Portability to BSD's improved.

Monday, June 04, 2012

GWorkspace 0.9.1

I'm pleased to announce that GWorkspace 0.9.1 is out.


Some release highlights:

Enhancements / new features

  • New Modern vs Classic style which control:
    • classic vs. alpha-blended selection
    • transparent dock vs classic dock style
  • new "scale" attribute for the desktop, for uniform scaling
  • Browser icons (Eric W.)

Fixes & Maintenance

  • PDF Content Inspector fixed and updated
  • NSUInteger updates for new APIs
  • crash fix on exit when Grayscale background images were selected
  • updates for integer positions and resolutions to avoid blurring of elements
  • NSDragOperation updates
This release is highly recommended when compiling and running GWorkspace against the current GNUstep core release.

Terminal 0.9.8

Terminal 0.9.8 was released by the GNUstep Application Project. It is mainly a maintenance release to tix bugs, enhance portability to more platforms (including GNU/HURD and OpenBSD) and current GS core libraries.

GSPdf 0.5 released

GSPdf 0.5, the ghostscript front-end for GNUstep, suitable for PDF and PS viewing (and thus also as GS print preview application) was released on June 3rd.

Friday, May 25, 2012

DataBasin 0.5

I'm pleased to release DataBasin 0.5.

  • quoted CVS support in reading
  • support for reading DOS/UNIX/MAC file formats
  • improved exception trapping and display
  • fixed bugs in create and updates
  • various fixes

Sunday, May 20, 2012

Cynthiune running on Macintosh

Cynthiune is working again on the Mac! I was able to compile a limited set of bundles on Mac again! This is good because it also confirms that some of the latest playlist changes work fine!
I am unable to compile the ID3 Tag bundle for some weird compiler errors I don't get on any GNUstep machine, so I won't prepare a binary release.

Friday, May 11, 2012

Zipper 1.4

I'm happy to announce that yesterday the GNUstep Application Project released version 1.4 of Zipper. It was adopted by GAP in accordance with the original author and the license changed to GPL v2.
Zipper is an archive tool which allow viewing of various formats and creation of tarball (with GWorkspace Service).
What's new in this 1.4 release
  • First version released by GAP
  • Interface redone in Gorm
  • Extensive fixes to BSD tar support
  • Bug fixes in the handling of archiver outputs, options and dates
  • Portability fixes and crash fixes
  • Updated infrastructure to current GNUstep make and runtime
  • Macintosh port (to prove portability)
Where to find it?
Many thanks to Sebastian Reitenbach who contacted the original Author, Dirk Olmes, to make the move and who with Philippe Roussel helped during tested and debugging sessions

Wednesday, May 02, 2012

Cynthiune on Windows

During the revamp we of GAP are giving to Cynthiune, I revived today also the Windows port, look at how it is running on Windows 7... and yes, it plays really (something I am yet unabel to achieve on NetBSD...)


Monday, April 23, 2012

PRICE 1.1.0

PRICE 1.1.0 is out!

It has been a long hiatus, I essentially skipped a release and made two in one. What's new?

Curves: this was a lot of work (and will need more). Smooth way to correct highlights and shadows with an S-curve. Source and resulting histograms are displayed.

Bilinear filtering: scaling will now look better!

Minor tweaks to the interface, like the filters that on cancel while previewing or on GNUstep the convolve matrix reacting on end editing.

Furthermore a plethora of bug fixes and portability enhancements.

Get it here from SourceForce, in form of sources for all platforms (GNUstep or Cocoa) or as Macintosh binary.

It has been 10 years I've been working on PRICE. This is kind of an anniversary release. It has been a long time and it has been fun and I hope it will continue! But it is an amazing long time. There have been ups and downs, and some melancholy creeps in! I think I will blog more about some past and future ideas about GNUstep.

Thursday, April 19, 2012

LaternaMagica 0.4


LaternaMagica 0.4 got released.


The Image viewer and slideshow tool for GNUstep (and your Macintosh).

Enjoy better navigation, keyboard shortcuts and better mass-exporting tool Enjoy it on more platforms too.

Friday, April 06, 2012

FTP 0.3 Released


FTP 0.3 got finally a release! Many small fixes in the build system, better portability and updates.

You can see it in the screenshot running on Windows 7 with the native windows theme!

Thursday, February 16, 2012

Wednesday, November 02, 2011

DataBasin 0.4

0.4 is out!

Select Identify: Execute iteratively selects with given Ids or Unique Identifiers (no more Excel connector for this chore)

Select Http or Https as a preference for your connection (and it even works... http had a workaround due to sfdc stubborness which is now enabled only when necessary)

DataBasin at GAP

Friday, October 21, 2011

Neos 0.1 theme for GNUstep


Finally, the first official 0.1 release of the Neos theme. The theme contains now all the icons for the new special folders handled by GWorkspace, following thus the enhancements of the standard theme. You need both the latest GWorkspace and Base for all of them to appear properly.

Use the GNUstep filesystem layout (with the standard /usr/GNUstep or even / as a prefix) for maximum enjoyment. FHS has no real reason in a full GNUstep environment, in my opinion it should not be the default, it should just exist to ease people wanting to install one or two application in another environment.

Name your folders Documents, Images, Music, Downloads.

To have in idea of the look, check my past blog posts and you will see its evolution.

Thursday, October 06, 2011

The end of an Aera

Jobs died. Now He was not only the father of the Macintosh, the iPod, iPhone and the iPad. he was also the father of NeXT and thus our guide too, our uncle or step-father.
He surely left a trace in computing. Let us keep his spirit alive in GNUstep

Friday, September 30, 2011

GWorkspace 0.9.0


GWorkspace 0.9.0 is out.

Custom icons for special folders (System, Library, Images, Music, Documents, Downloads, Desktop). Themable.

Volume recognition ported or improved on NetBSD, FreeBSD, OpenBSD.

Many fixes in the build system, crash & security fixes.

Wednesday, September 28, 2011

OresmeKit: plotting two functions


OresmeKit now is capable of plotting two function each against the other in its Cartesian view.

I ported OresmeKit and its examples to the Mac without any major effort, as expected.

Thursday, September 08, 2011

Oresme, plotting for GNUstep

Parabola
I started creating OresmeKit, a plotting and charting framework for Objective-C, GNUstep (and Cocoa/Mac). I had the idea since quite some time, but finally started working on it. I know others had sketches on the subject too, but at the end one does need to start somewhere. The Kit will offer custom Views to be embedded inside your application to plot data. The goal is to have simple setup possible. Plotting is a complex art which can be tweaked quite a bit and which can lead to interesting mathematical computations, but let's start with something simple and easily usable, or the design will never go beyond the drawing board.
sinc(x)
The first component is a Cartesian plotting: two X and Y array need to be provided for abscissa and ordinata values. The view can be set to display different X/Y ranges, the Quadrant can be selected and a "centered" mode is available to automatically set the Origo in the center. The View live-resizes and the plot colors can be set. Currently there are no optimizations of any kind, but for simple graphs it works quite well, as the example application shows. Along with the Framework I develop and release also examples which serve the dual-purpose of testing the Kit and providing a starting point for other developers who want to use OresmeKit.

In the screenshots, the example application plotting a parabola  and the plot of the sinc(x) function.


Why OresmeKit? In honour of Nicolas Oresme the antique philosopher who thought about coordinates long before Cartesius. Because Cartesius was too predictable as a name and too tied to X-Y plotting, while OresmeKit shall support more chart types in the future. What's next? I plan on adding some more features to the Cartesian drawing view first. Then typical charting views: bars, lines, pies... At some point some optimization and computation will be available, since otherwise plotting of large datasets will be unbearably slow.

OresmeKit and its examples are available in GAP and are yet unreleased, check the CVS repository.

Friday, August 19, 2011

DataBasin 0.3

DataBasin 0.3 released!

New object inspector, bug fixes, improved character encoding...

DataBasin at GAP

Monday, July 18, 2011

GMastermind running on Macintosh


During the weekend, I rewrote the whole graphics core of GMastermind to use NSBezierPaths instead of PS operations. Furthermore it uses a gorm file to create the menus and instantiate the application Controller.

With these changes, a port of the code to Cocoa is possible! The screenshot shows the game running on my iBook with 100% the same code base of GNUstep.

Friday, July 15, 2011

GMastermind, LapisPuzzle, Sudoku, GMines released

Some of the applications given by Marko Riedel to the care of the GNUstep Application Project were released today:
GMastermind
Sudoku
GMines

Furthermore, LapisPuzzle was released too.

These are maintenace releases which make the application work on current gnustep, fix bugs, improve memory handling and improve porting to different platforms, including windows.

Many thanks to the original author Marko Riedel who helped the code not fall into oblivion and Sebastian Reitenbach whose idea was to import the apps and who helped fix them.

Monday, July 11, 2011

GNUstep on PowerPC


I got a first-generation iBook, those cute tangerine clamshells. Already owning a clamshell iBook, the lime SE version, which runs MacOS Panther, this one had to run GNUstep. I installed Debian/ppc, installed GNUstep and about everything seems to work quite smoothly, I see no extra problems compared to x86.
You can see a busy desktop exported to a bigger display.

GMines 0.2

GMines 0.2, the GNUstep version of the mine field / minesweeper game, got released. It is the first of several applications written by Marko Riedel that were salvaged and subsequently updated and bug-fixed by the GNUstep Application Project.

GMines on GAP.

Thursday, June 23, 2011

BatteryMonitor supports NetBSD


BatteryMonitor for GNUstep now has support for NetBSD acpi too now! Support languished because decent acpi support in NetBSD is relatively recent and reading it requires checking a property list (which is of course more complex, but at least consistent and clean compared to the maze of files linux provides). To manipulate it libprop sports handy functions, yet I always had some problems here and there, until I realized something very cool. Property lists are familiar to GNUstep and Cocoa users.
char * prop_dictionary_externalize(prop_dictionary_t dict);
Exports fully-fledged XML property list compatible with GNUstep plists, not just something similar. Thus it is a matter of using
-[NSString propertyList]
to get a dictionary and manipulate it with obj-c iterators, which is much more convenient than the equivalent C function provided by libprop.

Support is still quite rough and, for example, only the first battery is checked. I have only one NetBSD laptop and I don't know how NetBSD shields the results from BIOS idiosyncrasies I experienced on Linux (watt-hour and ampere-hour usage and orthogonality for example). But it is already very nice!

Tuesday, June 21, 2011

Battery Monitor now on OpenBSD


The battery monitor for GNUstep of the GAP project, has now basic battery information support by accessing the APM/ACPI driver. Advanced cell information supplied by ACPI is still missing. In any case at least I can see how much juice my OpenBSD laptop has left...

(Tested on my Dell Latitude C600, as always with APM and APCI, your luck with other laptops may vary depending on BIOS information and Kernel support)




Thursday, June 09, 2011

Marko Riedel's apps now in GAP


Some applications recently lost their home, thus Sebasitan Reitenbach, of OpenBSD packages fame, asked if GAP could find a new place for them.
Marko Riedel published several small applications in the past year: games, preview utilities... these need patches to continue working with newer GNUstep versions and to fix bugs. For a packager, it is more convenient to have a stable place from where to retrieve everything.

Mr. Riedel gave us the authorisation to import the applications.

Sudoku and GMines are already part of the repository and have been brought up-to-date and work again smoothly.

Jigsaw puzzle is on its way.

I wonder what we should do with Yap, the a2ps front-end. The image viewing capabilities are well covered by PRICE and LaternaMagica, the PDF viewing is handled by GSPdf in the same way through ghostscript. The only value added would be the pretty printing through a2ps. Does anybody use this and is it worth investing time to fix YAP ?

Wednesday, March 16, 2011

DataBasin Object Inspector sorting


The fields are now sortable by Label and Developer Name. A little feature that was sorely needed within orgs with almost 500 fields per object!

This feature is currently not available in GNUstep.

DataBasin, Objective-C portable data access tool.

Thursday, March 10, 2011

DataBasin: object inspection


DataBasin now sports an Object Inspector which works in the easiest way possible: insert a SalesForce.com ID: DataBasin will try to attempt do determine the object type, automatically describe it and finally load the data.

How many times did you have the need to quickly inspect an Object of which you got the ID in an exception email? Or how many times did you have to inspect the value of a field not visible on the layout?

This new feature required some extension to the underlying API of DB: the Soap class now has an identifier method which looks for an ID in all objects returned by the Describe Global in the attempt to identify the object it comes from.

The coolest addition however is in the DBSObject class itself: it is capable of loading or refreshing the values of a set of fields or of all known fields. And behold, a finesse: when loading the value of all fields, the queries will be split into executable queries without reaching the maximum SOQL size of 10K chars, as opposed to Apex Explorer which chokes if you select all fields of a very big object.

Friday, January 28, 2011

GWorkspace and BSDs

GWorkspace is now more portable: the desktop feature and its mounted volume display now should work reliably not only on Linux but also on most BSDs and derivatives. GWorkspace needs to check which volumes are mounted. Comparing it with a list configured in SystemPreferences the user can see the mounted devices on the desktop.

All started by a patch offered by Sebastian, where a FreeBSD feature was used on OpenBSD. The whole code was a maze which attempted to parse the "mount" output. I first fixed it and also found security holes which were rapidly amended.

The final solution however has been to remove the parsing code and use getmntinfo() where available and maintain only one fall-back mechanism, the parsing of /etc/mtab as to maintain Linux compatibility.

The question on how to support GNU/HURD remains open though. I'd love to have it working in a clean way. However, it lacks /etc/mtab and even the hackish solution to parse mount is not feasible since it returns valid content only for Linux.

Solaris support needs to be verified too.

Constructive input appreciated.

Tuesday, December 14, 2010

GNUstep's Desktop


Who says we don't have a desktop? ;)
Look at the screenshot. NSWorkspace now identifies the Desktop as a special folder and associates it with an icon. The icon is new too.

Also the Music folder is now recognized as a special folder and has its cool new icon too.

Maybe that wasn't a blog post you all expected about a complete GNUstep desktop :)

With this last additions, the addition of special folders to NSWorkspace is quite complete. Images, Documents, Downloads, Music and Desktop are recognized as special folders in the user home. The user home itself had already a special icon since a long time. Regarding system-wide folders, the "System" and the "Library" folder have its icons, if they applicable for the used file system layout.

These icons are all theme-able too, each Theme can customize them.

Monday, December 13, 2010

ProjectCenter 0.6.0

ProjectCenter, GNUstep's IDE, equivalent of ProjectBuilder / XCode was released in version 0.6.0.

  • New project format, bundle-based, user information is separated from project information: this makes collaboration of different people easier with CVS/SVN/etc
  • Editor undo support
  • Support for setting the project Installation domain
  • Improved gnustep-make 2.x support in both the project itself as in the project generation
  • integrated debugger
  • first integration between ProjectCenter and Gorm regarding
  • improved usage and run on Windows
  • uncountable bug fixes (in syntax highlighting, detachable editors, portability...)

Happy coding!

ProjectCenter page.

Sunday, November 28, 2010

DataBasin 0.2

DataBasin v 0.2 was released, the free software, open source tool for working with Salesforce.com.

The core library was enhanced and new features were added.

Read more and download it from the DataBasin homepage.

Monday, November 15, 2010

New Workspace icons


NSWorkspace handles now a new set of icons reserved for special folders, similar to what Apples Finder always did or what Windows does. Up to now the root icon and the user home were special.
I designed and added a new cache-based handling to NSWorkspace for the icons depicting the user's Documents, Images and Downloads. For the the System folder a new icon is associated where applicable, since it doesn't make sense in certain Layout. The Library icon will associated with the Library folder in all Domains (System, Network, Local).

GWorkspace has been adapted to display these icons and it is the primary goal. Check the screenshot and spot them! However since the Icons and the Code are supplied by GNUstep core they will be available for alternative Workspace and File Managers or for any application which asks the Workspace for the icons to display.

If you want to try them out, you need the SVN trunk version of GWorkspace, gui and base. The latter is needed because NSPathUtilities needed some tweaking.

The icons are for the default theme currently. I plan to update other themes soon.

Thursday, November 11, 2010

bilinear filtering


Finally PRICE got proper Bilinear filtering.

This was surely long due! The previous linear h+v filter was little more than a quick hack.

Bilinear filtering is quick, good and quite sharp and works well with scaling between the 50% and the 150% range. It is quite good when downscaling while upscaling beyond a certain range surely has better algorithms.

LaternaMagica and its export tool with automatic constraining will benefit from this new filter too.

Monday, October 25, 2010

Internet module for SystemPreferences

I created a new System Preference Module called Internet. It is intended to hold system-wide configurations for Internet applications, a bit like Macintosh had up to version 10.2 (or, for that matter, even the older System 7.5 up to 9... or SGI Irix IndigoMagic...).

Currently, the preference implemented is the default browser selection (used by NSWorkspace when it has to open URLs). The registered browsers are presented, they are set immediately on selection and the corresponding application icon is conveniently displayed.

Currently the selection of browsers is essentially limited to Vespucci and SWK's test-bed SWK Browser. Browser wrappers are not supported because they are unable to register with NSWorkspace correctly as they can't open URLs.


Saturday, October 23, 2010

Browsing GNUstep documentation


A quick update! Vespucci and SWK are now able to display our GNUstep documentation. Links and frames do work now much better now. This required an patient debugging in URL management.
This is a milestone in the usage of SWK and shows that it can be already very useful as an embedded view.

Saturday, October 16, 2010

Vespucci and SWK news update


It has been quite some time since the last post here. My coding efforts were and are scattered among the various GAP applications. Vespucci has lately received most of the attention. The window and document controllers were rewritten to follow more the NSDocument and NSDocumentController philosophy. The major benefit is that some smaller features that worked only on Mac now work well also on GNUstep.
The recent Document list now works, which is handy for local files. Opening URLs fron NSWorkspace works more reliably.
During the restructuring, I added the classic back and forward buttons. Thanks to suggestions of Wolfgang Lux now both the buttons and the menu entries are validating and disable/enable themselves.

Incidentally, the screenshot of Vespucci running on GNUstep is also on HURD! The mac screenshot shows the portability and shows that on Cocoa SWK has rough table support through NSTextTable.