Showing posts with label Objective-C. Show all posts
Showing posts with label Objective-C. Show all posts

Thursday, December 31, 2020

DataBasin 1.1 S released

DataBasin 1.1S and DataBasinKit have finally been released, after a long time-span.

This release is dedicated to my late friend and colleague Steven Rovelli (hence the "S" in the release name) who parted from us too young. He was an enthusiastic user of DataBasin and used and supported it inside our company, for countless AMS tasks. COVID-19 carried him away and he will be sorely missed.

This release is marks also the move from the GAP svn repository, to standalone projects on GitHub.

DataBasin sports some interesting news:

  • Improved interface with ComboBoxes to select update/insert objects and preferences to filter out more system objects
  • remember last successful login username
  • getUpdated / getDeleted
  • Undelete
  • Improved support for sub-objects and lists and unpacking (from DataBasinKit), this allows for example to use sub-queries, provided the related object is one (LIMIT 1)
  • support for enabling Assignment Rules in create/update

The core DataBasinKit has also many improvements,, some of them are not completely appreciated from the GUI interface, but useful for other programs wishing to use the API:

  • enhanced and rewritten handling of sub-objects and object-lists in query results: this allows to have SObject lists interpreted as such when using subqueries.
  • getUpdated and getDeleted
  • undelete
  • possiblity trigger Assignment Rules in create & update

Monday, December 21, 2020

LCD Display on RaspberryPI with Objective-C

Since many years there are ways to display Data on the Raspberry PI by using small LCD Displays connected to the GPIO pins. Most of these small projects however use Python, an interpreted language which I dislike. There are C projects using the wiringpi library and which are inspired by Arduino versions, I have looked at this nice work by binerry which concentrates on the PCD8544 (aka known as the Nokia 3310 display!).

I studied it but wanted to use the Objective-C language which I like much more and which will enable me in the near future to leverage existing Kits. I had some doubts about speed and interoperability, so I started by "wrapping" the C functions with an Objective-C class. The proof of concept worked fine, so I went on to write more native library.

SPIDisplayKit is thus born - requiring GNUstep Base only and providing an AppKit inspired interface to the Display - e.g. Coordinates to the methods are passed with a struct, similar to NSSize or NSRect, but simpler, since they are direct integer without any transformation, scaling or other support and thus eliminating the need of floating point:

Look in this video the result running on an original Raspberry PI 1:



Objective-C + GNUstep + Raspberry PI + PCD8544, the code of this trivial Pong example is full Objective-C and very easy too!

This opens the road to a lot of nice examples, since Data Management and Connection Management supplied by GNUstep Foundation is so convenient, but the speed of Objective-C (here with the GNU GCC runtime) are more than enough!


Friday, June 15, 2018

GNUMail + Pantomime 1.3.0

A new release for GNUmail (Mail User Agent for GNUstep and MacOS) and Pantomime (portable MIME Framework): 1.3.0!


Panomime APIs were update to have safer types: mostly count and sizes were transitioned to more Cocoa-like NSUinteger/NSInteger or size_t/ssize_t where appropriate.
This required a major release as 1.3.0 for both Pantomime and GNUMail. In several functions returning -1 was replaced by NSNotFound.

Note: When running the new GNUMail it will update your message cache to the new format. In case of problems, clean it (or in case of reverting to the old version). Message size is now encoded as unsigned instead of signed inside it.

Countless enhancements and bug fixes in both Pantomime and GNUMail should improve usability.
Previously there were issues of certain messages not loading when containing special characters and/or decoding personal part of Addresses.

Pantomime:

  • Correct signature detection as per RFC (caused issues when removing it during replies)
  • improved address and quoted parsing
  • generally improved header parsing
  • Encoding fixes
  • Serious iconv fix which could cause memory corruption due to realloc
  • Fixes for Local folders (should help fix #53063, #51852 and generally bugs with POP and Local accounts)
  • generally improved init methods to check for self, that may help avoid memory issues and debugging in the future
  • various code cleanup in Message loading for better readibility
  • more logging code for debug build, should help debugging

  • Possibility to create filters for To and CC directly in message context menu
  • Read/Unread and Flag/Unflag actions directly in the message context menu
  • Size status for Messages in bytes KiloBytes or MegaBytes depending on size
  • Spelling fixes
  • Improved Menu Validation
  • fix for #52817
  • generally improved init methods to check for self, that may help avoid memory issues and debugging in the future
  • GNUstep Only: Find Panel is now GORM based

OresmeKit initial release: plotting for GNUstep and Cocoa

Finally a public release of OresmeKit.
Started many years ago, it has finally come the moment for a first public release, since I put together even a first draft of documentation. Stay tuned for improvements and new graph types.

Oresme is useful for plotting and graphing data both native on Cocoa/MacOS as on GNUstep.

OresmeKit is a framework which provides NSView subclasses that can display data. It is useful to easily embed charts and graphs in your applications, e.g. monitoring apps, dashboards and such.
OresmeKit supports both GNUstep and Cocoa/MacOS.

An initial API Documentation is also available as well as two example in the SVN repository.







Monday, August 21, 2017

GNUMail and Pantomime 1.2.3


New releases which combine many improvements collected in the past three years!

GNUMail and Pantomime found a home in the past years in the "GNUstep non-FSF" project on GNA. However, GNA shut down and the project was moved to https://savannah.nongnu.org/projects/gnustep-nonfsf. This move was time consuming, left the repository unavailable for weeks, but we were able to recover the repository with full history. The code is on savannah.nongnu.org on SVN.

During the move, Copyrights, Headers and Licenses were cleaned up. The X-Face code had no clear license and was removed. It is quite an obsolete feature anyway, I haven't seen it used since long time.

The MacOS version works quite well and we provide now both a PPC and an Intel binary. The PowerPC version works well on vintage Macs so you can use GNUMail on your trusty iBook or iMac!

GNUMail
  • Thanks to improved Pantomime, more names and addresses appear correct and not quoted
  • bug fixes in quoting and re-flow, which could lead to mails have missing text portions
  • Allow creation of mail filters from To and Cc addresses
  • Continued to reduce GNUstep specific code: EditWindow, Console, AboutPanel;
  • Improved mail header view when resizing windows
  • Version check fixed and re-instantiated to work against nongnu.org
  • Fixed display of in-line attachment icons on GS
  • code clean-up, memory leak fixes, improved portability (FreeBSD, OpenBSD, NetBSD)

Pantomime
  • improved header parsing, recognizes better address formats, on the TODO list since many years
  • bug fixes in header and subject parsing which could lead to some mails not to load fully
  • speed improvements
  • code portability improvements
  • misc fixes

Tuesday, May 17, 2016

DataBasin and DataBasinKit 0.9 released

After more than a year of work, finally a new release of DataBasin and its associated framework. This version features a Framework that can be used in threads and the application itself is capable of having concurrent connection classes to SalesForce.com.

On Windows

On OpenBSD


Countless bug fixes (thanks to the bug reports of my colleagues Diego, Moustapha, Matteo + Matteo).

Major new features are:
  • threadable DataBasinKit framework
  • concurrent, interruptible operations (e.g. select vs. update)
  • handle multiple errors as a result of update
  • filter new lines when writing CSVs
  • countless bugfixes, especially in select-identify corner cases

DataBasinKit allows you native connection to SalesForce.com, allowing your application to integrate SOQL queries (SELECT, UPDATE similar operations), be it on Mac (Cocoa) or NetBSD, FreeBSD, OpenBSD, Linux or Solaris as well as Windows (MinGW).
DataBasin itself allows you to perform standard operations in a quick and agile interface: Extract accounts on Linux without the need of Java. Use the unique select-identify feature.

I am proud that Free Software can connect from a Free Software Operating System to a proprietary system and bridge the two worlds, enabling to do administrative work without being constrained to Java on Windows (read: DataLoader). Thanks to the many developers who continue supporting me in the development and keep these fine Operating Systems and tools alive.

Monday, September 28, 2015

Nasty DataBasin bug fixed

DataBasin's Select-Identify, an invaluable tool for many working with salesforce.com, showed erratic behaviour: extremely hard to reproduce even by sometimes re-running the same query on the same data set, the operation would just stop without any error in the console log, trapped exception or else.

After extensive debugging I found the problem in the queryMore method of the API implementation in DataBasinKit. If queryMore had to return just one record, it would malfunction.
Technically this happened because the size reported by Salesforce.com in the queryMore is not the size of the objects of the queryMore, but of the original query.

The problem affects thus anything using queryMore: If you would select and had a batch size in download of 500, you would get a problem with 501, 1001, 1501 records and so on. 500 or 502 would just work fine. Combine this that the query size of the selectIdentify is dynamic and you get the idea on how difficult it was to reproduce.

Now it is fixed and the upcoming 0.9 version will have this fixed. All currently released DataBasin versions are affected by this bug.

Friday, January 09, 2015

DataBasin 0.8

DataBasin 0.8 is out!

After several months of development and testing, many news:
  • DataBasin is now divided in its DataBasinKit framework which is LGPL'd and the application itself
  • (CSV writing) Support of empty fields in empty semi-joined objects through query parsing
  • (CSV writing) Support for writing fields in exact order as in user query, trough query parsing
  • Select Identify supports LIMIT
  • Customizable CSV file quoting and separator
  • Support for COUNT and aggregate queries
  • Object Inspector supports selection of values in cells
The most important news is the DataBasinKit separation.
The most important feature instead is DataBasin ability to parse the SOQL query and thus rearrange the output fields in CSV files not as Salesforce returns them but as the user requested them. The same feature allows related objects (. notation) to be null and retain the correct columns in the CSV file.

Friday, October 24, 2014

ProjectCenter 0.6.2 released

Version 0.6.2 of ProjectCenter, GNUstep's IDE (together with GORM), is out!

For more information and to download it, check the GNUstep website:
http://www.gnustep.org/experience/ProjectCenter.html

What's new?
  • Better compiler output parser, which includes fatal error
  • Compiler parser extended beyond gcc, like egcs and clang now get reasonable output
  • GoTo Line panel rewritten, works and can be extended in other editor plugins (like Gemas)
  • Find Panel fixes to work in detached editors, use of the standard find pabel
  • Crash fixes in the editor
  • Crash fixes in the highlighter
  • usage on Windows improvements
  • 64Bit fixes
  • Updated to current GNUstep drag operation (you need this release to work on current GNUstep)
  • some NetBSD/OpenBSD/FreeBSD support fixes (warnings et al.)

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, 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.

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.