• Home
  • About TechTalk
  •  

    The challenges of creating a web application

    25 November 2009

    We tend to move around a little at the office mainly to achieve what is summarized in the popular buzz word knowledge sharing. A few weeks ago my turn was up and I was asked if I wanted to transfer to another team working on our future frontend interface, centralized around the Journal. The main objective is speed, performance and usability experience. And the Journal input experience will be very similar to what you see in most spreadsheet applications. This was too exciting, as a backend developer I had to give it a go and this is now my primary concern for the time to come.

    Read the rest of this entry »


    Performance update

    30 October 2009

    Over the last couple of days, we have experienced overall performance degradation on our application.
    We have now located the source of the problem to be an internal logging function. The problem was resolved yesterday.
    Read the rest of this entry »


    The Eureka moment

    2 October 2009

    Because of several circumstances I have seen myself a little unfortunate when it comes to keeping a job for the last three or four years but I take comfort in the fact that I have never been fired because of incompetence – not to my knowledge anyway.

    Read the rest of this entry »


    Scheduled downtime 5-6 September

    28 August 2009

    Update 6 September 05:48 CET/04:48 BST:  

    The planned system upgrade has been completed earlier than announced and e-conomic is now available again.

    Read the rest of this entry »


    New API features: Time entries and a lot more…

    16 July 2009

    With our July 14th update to version 1.4.5 of the e-conomic API, a number of new features have been added:

    Time entries may now be created via the API, using the new ITimeEntry class. This will open up a host of new possibilities for integrations (IPhone interface, anyone?). Note that this requires access to the Project Management add-on module. Also note that approval of time entries is not yet available in the API.

    Accruals may now be set on cash book entries, using ICashBookEntry.SetAccrualInformation(). Note that this requires access to the Accruals add-on module.

    Accounting years are now exposed (read-only), via the IAccountingYear class. This is a great help for integrating with e.g. reporting tools, where your calculations of account balances from entries (class IEntry) will depend on which accounting years are already closed.

    The new ISumInterval class allows reading and writing of sum intervals for sum interval accounts (AKA TotalInterval accounts in some language versions of the e-conomic web application). To retrieve all sum intervals for a given sum interval account, you can use IAccount.GetSumIntervals().

    It is now possible to look up invoices by order number, using IInvoiceUtil.FindByOrderNumber(). Note that, since the order number is auto-generated, the recommended way of tracking an invoice all the way through is to set ICurrentInvoice.OtherReference. Both ICurrentInvoiceUtil and IInvoiceUtil contains a FindByOtherReference() method for subsequently looking up your invoice.

    Subscription users can now find all subscribers on a customer using the new IDebtor.GetSubscribers() method.

    The IDebtorEntry and ICreditorEntry classes now expose a SerialNumber property, allowing you to uniquely identify individual debtor/customer and creditor/supplier entries.

    Finally, the new IEntryUtil.GetLastUsedSerialNumber() makes it even easier to synchronize entries between e-conomic and other systems, by allowing you to very quickly determine whether new entries have been created in e-conomic.

    As always, if you wish to utilize some of this new functionality, you need to upgrade to the latest version of Economic.Api.dll – or ‘re-consume’ the web service if you’re not developing on the .NET framework. Pick up the latest version of our SDK here.

    NOTE: The SerialNumber property on debtor/creditor entries seems to have caused some problems for a few people. Long story short: Make sure you’re using at least version 1.4.5.21081 of Economic.Api.dll, and you should be fine.

    For any technical questions on either the new or existing API functions, we are of course still available at api@e-conomic.com.


    A message from e-conomic – in e-conomic

    7 July 2009

    Hi,

    I have been given the opportunity to develop a new option for delivering current performance messages in e-conomic.

    Today, we use the Dialogue tab to display messages, such as current application performance, but that message targets everyone, including users not on line at the moment; another important issue is that the dialogue system do not guarantee that the users currently on line sees the message right away.

    We concluded that the dialogue system didn’t do the job and we realized the need for a small message pop up restricted only to users on line or the ones who log on while the message is valid.

    The added message popup will be included and Live in the next market package from e-conomic. I would expect the pop up to be used during high peak hours with messages such as: You could experience some minor delays using the system for the next two hours. We are looking into this, thank you for your patience.

    Edit: Observant users might have realized that this post has changed a few times during the day; don’t be alarmed, I am, what some of you would call on a learning curve.

    cheers


    New E-conomic API Forum Launched!

    8 June 2009

    Striving to be the best in the business, e-conomic now launches a new API Forum to meet the demands of the growing number of people who want to integrate their system with e-conomic.

    The API Forum is a place where developers who use e-conomic’s API can meet and exchange stories, tips ‘n’ tricks and help other users who need help in using the API.

    The Forum will host a number of categories (subject to change), where users can create topics and discuss challenges faced in the API.

    Starting out, the API Forum will have the following categories:

    • .NET
    • PHP
    • JAVA
    • SOAP
    • Miscellaneous
    • Integration

    A warm welcome to everyone,

    and see you at: http://apiforum.e-conomic.dk


    Planned downtime 18th of May 00:15-06:00 (CET)

    14 May 2009

    Our hosting center are upgrading their high-voltage power supply on May 18th between 00:15 and 06:00 (CET). In this period e-conomic will be unavailable, this means that neither the web site nor the API will be available. So if you have any automatic jobs running within this time interval, they will not be run on May 18th.

    As the system comes online again, we will be monitoring it to make sure that everything is running correctly.


    Next generation user interface

    13 May 2009

    In these days, work on our new generation user interface (UI) project is starting up – a project that will ensure that we also in the future can provide you with a modern, up-to-date accounting platform.

    Our main challenges in this work is to improve user experience of the system, i.e. make the system faster, make the system more flexible, and adapt the system to the everyday of accountants, bookkeepers, and other users of the system.

    Performance is a central issue for web applications and we have had our share of difficulties with performance in the past. In the new UI project, we aim to address the performance issues upfront.  Thus, we aim to develop a high-performance application with short response time, efficient data entering processes, as well as an application optimized for both keyboard and mouse navigation.

    In modern IT systems, the user expects and should expect flexibility, and we have much focus on developing a system with a proper fit to your everyday. Which data is relevant for your business, where should it be accessed and displayed, and how should it be entered? In the future, you will get more control yourself, or you can of course continue to rely on the setups specified by our country managers.

    To reach these goals we have a lot of prototyping and experiments to do, and a lot of technology to test, for example in relation to client-side caching of data to improve performance and use of AJAX to increase interactivity, and we will implement both client side and server side unit tests, to ensure the necessary quality of our software. This is not a small task!

    So, when will you benefit from this work?

    We have a number of projects in the pipeline, which will build on the new UI project, and updating the journal will be one of the first to be implemented.  By implementing a number of different journal types, the new journal concept should be both more specialized and more flexible, and thus, it should provide a better support for e-conomic users in various different countries and use contexts.


    API: Something new, something faster…

    16 April 2009

    Last night, our latest Market Package with enhancements, fixes and improvements was released. It contains one new API feature, as well as a vast improvement of the speed of another.

    As for the new feature, it is now possible to login (’Connect‘ in API terms) as an administrator. This facilitates integration with external accounting applications, e.g. reporting tools.

    To utilize this feature, instead of ‘logging in’ by using the Connect() method, you use the ConnectAsAdministrator() method, which takes the administrator user’s credentials (administrator agreement number, user ID and password), as well as the agreement number of a client to which the administrator user has access, as parameters. Note that the client in question of course still needs to have the API add-on module enabled.

    As for optimizations, we were recently made aware of some serious bottlenecks in our GetDataArray() methods when large registers are downloaded. Somewhat embarrassing, since we’re constantly pushing the data array methods as the recommended way of bulk reading/writing of data :-(

    After digging deeper into this, we discovered that the culprit was our ORM tool’s extremely conservative approach to checking for ‘dirty objects’ in its cache. While you’d expect the execution time for a GetDataArray() call to be proportional to the number of objects retrieved, in practice, it turned out to be polynomial instead! Not exactly what you’d want when downloading product registers in the thousands…

    While we could conceivably implement a generic workaround directly in our ORM tool, for the sake of risk minimizing, we have instead opted to implement bespoke optimizations on a per-object level – starting with the objects our logs show us to be the most frequently used.

    Last night’s release includes this optimization for the IProduct object – in practice, the Product_GetDataArray() method, which now handles upwards of a couple of thousand objects in a few seconds. The relative speed improvement increases with the number of objects – we’ve measured the speed increase to a factor of 10+ with 2,000 products.

    Our next Market Package release, due in mid-May, will include similar optimizations for a lot of other objects (IDebtor, ICreditor, IAccount, IInvoice, IInvoiceLine, etc.). As for all these registers, we still recommend ‘paging’ to approximately 500 objects for each call to its GetDataArray() method.

    For more detailed technical API documentation, take a look here.