For grins I decided to see if Killink CSV will run under Linux using the latest version of Wine. I tried a few months ago and it didn’t work. So imagine my surprise today when I upgraded the version of Wine installed on my Ubuntu machine, installed Killink CSV, and saw it run under Linux for the very first time. All functionality works as expected. I’ll post more about this soon.
After fighting with a few last minute issues when running under Vista, Killink CSV 1.9 was finally released last night. I wasn’t able to get all the changes I wanted into this release but I got a good number of them. The biggest change is the new sort feature. Users are now able to sort their delimited text data using Killink CSV. Also included in this release is improved navigation (quickly jump to the top, bottom, left, and right most item using Ctrl+Arrow key combinations) and more ways to select values (Shift+Click to select a range of columns or rows, Ctrl+Shift+Arrow keys to select blocks of items from the active cell). And finally the ability to paste a value to multiple cells simply by selecting a block of cells.
This release was long overdue. But I’m hoping users will find the wait worth well. Please read the revision history for a complete list of changes.
One feature that did not make this release is Unicode support. I really wanted to include this feature in version 1.9 but it is taking more time to implement than planned. So instead of delaying the other features I decided to release version 1.9 without Unicode support. At the moment Unicode support is now planned for version 1.10 which I have already started work on and will be released soon.
I have received a number of requests for new features in Killink CSV to be included in the next release of Killink CSV. I have been telling people I hope to have the next release available download no later than the end of February. Well, today is the end of February and the new release isn’t quite ready. More testing is needed before this next release is made available to the public. Assuming all goes well, the new release should be available within the week.
The 3 most requested features coming in the next release are:<ul>
</ul>Bulk paste, for those who might be wondering what it it, enables you to paste a value or a set of values from the Windows Clipboard into a selection of cells. This is a neat feature because it enables the user to quickly set the value for a large number of cells.
So if you are one of the people waiting on the next release of Killink CSV then keep an eye on this blog and or the announcement area of the White Peak Software support forums.
I would like to express my sincere apologies to the customers of White Peak Software, especially those who are waiting for features to be added to Killink CSV. My life has been turned upside down, in a good way, over the last 3 months. My wife and I are expecting a new baby at the end of March and we recently bought a house, our first house, which unfortunately needed work before we could move in.
The good news is we will be in the new house by next Thursday and life will return to normal, or as normal as one can expect with a new baby coming soon. The other good news is that I’m planning to release the next version of Killink CSV soon. This next version release should have many of the recently requested features including sorting and Unicode support. An update to SMTP Diagnostics is coming soon too.
So again I apologize to the customers of White Peak Software and I appreciate your patience over the last few months.
Things are really busy for me right now. I’ve just started two separate customer projects, sales of Killink CSV and SMTP Diagnostics are climbing, and I’ve been doing a lot of travel. But one thing has me really excited. I ordered a MacBook Pro and it’s expected to arrive in a couple of days.
The last 4 weeks have been crazy, which is why I have not blogged much over the last month. For starters, I put in a lot of time on Killink CSV, the new csv editor from White Peak Software, over the last 4 to 5 weeks. Last month I rushed out release 1.3 to address some capability problems with Windows Vista but it turned out to cause more problems. That will teach me to rush out a release without proper testing. Good news is a lot of additional enhancements have been made to Killink CSV and today version 1.4 is finally ready for download.
Now that version 1.4 has been released I should be able to focus time on new features such as search and replace. Another new feature I’m looking forward to is file extension association with Killink CSV. This has always been a trivial task under Windows but Windows Vista makes it a bit more difficult, hence the delay. Still, I’m looking forward to this new feature.
It hasn’t been all work for me over the last 4 weeks. I did take time off for NASCAR weekend in Loudon NH. I knew I would have fun but I didn’t know I would have as much fun as I did. It was a blast. Everyone should spend at least one weekend camping in an RV and watching NASCAR races, even if you are not a NASCAR fan.
Today I discovered a new problem in Killink CSV, the .csv editor I have been working on. Killink CSV has 2 general options, “Remember column widths” and “First row is read-only”. “Remember column widths” has a problem with hidden columns when the “First row is read-only” is turned on. Killink CSV will ignore the hidden columns when populating the first row causing column headers to appear under the wrong columns.
The second problem is more serious. The option “First row is read-only” causes the program to report an unhandled error under certain circumstances when more than one file is open at a time.
Fixes for these problems will be available in a few days. Meantime if you are editing .csv files with Killink CSV I suggest you turn off these options until version 1.4 is released.
I’m happy to annouce the release of Killink CSV v1.2, the spreadsheet application dedicated to delimited text files. Version 1.2 is a FREE upgrade for all licensed users.
Download Killink CSV at:
* Adds support for history, undo and redo actions
* Insert new rows
* Insert new columns
* Selected row column header highlighting
* Unsaved changes indiciator
* Select entire row by clicking row header
* Select entire column by clicking the column header
* Delete entire rows
* Delete entire columns
* Insert / delete cells
* Added popup cell editor (click the ellipses button at end of cell text or press Ctrl+Enter when a cell is highlighted)
* Right mouse click cell for fast access to common actions
* Fixed auto check for update
* Minor bug fixes and enhancements
* Fixed minor memory leak
I posted the following in the Killink CSV support forum but decided it might be helpful if posted here to:
Starting with Killink CSV v1.2 add cell values are formatted as text. This is a change from previous versions which used a general format similar to the one found in Excel.
The problem with the general format is that certain values are displayed in a format different then the format used in the actual file. For example, using the general format the value 01970 is displayed as 1970. Notice the leading zero is removed. With a text format the value 01970 is displayed as 01970. Changing to the text format means you will see the value as it is found in the file, which in my opinion is a good thing.
This leads me to the question, do you want the ability to change the format of cells?
I see some advantages to this. For example, by allowing formatting you could easily convert dates from a Month Day Year format to Year Month Day. Is this something Killink CSV users would find useful?
The latest beta release of Killink CSV v1.2 has been posted. Feel free to test the release and post your comments. If all goes well the final v1.2 release will be posted next week.
When I started White Peak Software 3 and a half years ago I lacked vision for what type of company White Peak Software would become. Over time visions developed and evolved into a single vision, to be a software vendor. During this evolution process I created multiple websites for White Peak Software. There is www.Killink.com for the csv editor released last month. There is www.SmtpDiagnostics.com for the first product released by White Peak Software, and there is www.WhitePeakSoftware.com, the official company web site.
Each site shares a similar look and feel which provides some synergy between the websites. But I also felt it led to some confusion in branding.
There are a number of reasons I took the approach of having product websites in addition to a company website. These reasons were based on advice read, heard, and given to me such as:<ol>
<li>Having different product websites is better if products are unrelated. Unrelated products can lead to confusion by the customer.</li>
<li>Customers can be confused if your website offers both products and services.</li>
<li>Customers might think you will drop support for a product if your product offerings are unrelated.</li>
<li>Having a separate product site makes it easier to sell intellectual property rights to another company.</li>
<li>A url such as www.myproduct.com might be easier to remember and type then the url for your company web site.
But after releasing Killink CSV I started second guessing the advice. To me it seems odd to have the multiple brands. It seems odd to push a product with its own brand while keeping your company name in the shadows. It seems odd one would want to start from scratch with a new website. After all improving a website’s page ranking and relevance within search engines takes a long time. It seems to me a new product would benefit from being marketed from the vendors existing company website.
So I looked at the websites of various software companies which have been successful over the years. I discovered many of them have a single company website with multiple, unrelated products for sale. Here are some of the sites I looked at:<ul>
<li>Fog Creek Software</li>
These software companies sell multiple products including ones that are unrelated to one another. Some have registered the product name as a domain name, such as snagit.com, that will redirect to the product’s home page within the company’s website. So if these companies are successful with only a company website then the recommendation that small software companies should have a product website and company website does not always apply, right?
This research got me thinking a company website is better than having multiple product websites. But as I continued researching I found there is no one good approach. One approach is not better than the other. To use separate product and company websites or to have only a company website depends on the company. For instance it is probably better to have a product website separate from the company website when the company’s product is a web-base application. However for a company like White Peak Software having product websites and a company website doesn’t make a lot of sense.
The product website means more work. Branding gets confusing. Trying to promote the company brand with the product becomes more challenging, and leveraging the capabilities of the company website can lead to customer confusion. This is why I decided to consolidate White Peak Software’s product websites into the company website. This will help me promote the company name at the same time I promote the products.
Google AdWords ads are a perfect example. Instead of seeing www.Killink.com in the ad you will see www.WhitePeakSoftware.com. The ad text still talks about Killink CSV but the company name now also gets additional exposure. More exposure is better than less exposure when building a business, right?
So after spending a lot of time thinking about the pros and cons of product websites versus company websites, I decided to consolidate the related White Peak Software websites. In other words, I have eliminated the product websites and now have only the company website. The product website domain names are still registered and will remain registered. Surfers who enter killink.com or smtpdiagnostics.com will now be redirected to the product home page within the White Peak Software company website.
This is partly a marketing experiment albeit one that will take time to determine the results. My hope is that consolidating the sites will help increase the company brand and encourage more sells. Time will tell if this indeed turns out true. Meanwhile I have the immediate benefit of having only one website to focus on improving instead of three.
Killink CSV v1.1 has completed testing and is available for general use. Click here for more information.
The latest build of Killink CSV v1.1 is available for download. This is a beta release and is intended for testing purposes only. More information is available here.
I received an email today from an individual asking if Excel files could be opened by Killink CSV. The person’s goal is to load the Excel file into Killink CSV and save the data to a pipe delimited text file. As far as I know this cannot be done in Excel, so guess what?
Yesterday was a 16 hour work day for me. It was a long day but a good end to a long, busy week. However I made one last minute mistake last night. I posted the new release of Killink CSV but I forgot to update the download page with links to the new download files. My apologies to anyone who tried downloading the program in the last 12 hours.
I updated the download page this morning, so all is well now.
Whew, it’s been a long, busy week.
I have been hammering away at various performance issues with Killink CSV and I’m happy to announce a stable build is now available for download. This is Release Candidate 1. Assuming no more show stoppers the final release of Killink CSV should be posted in a few days.
I’ll try to find time this weekend to blog about some of the performance improvements made in Killink CSV. One aspect I find exciting is the use of a custom dataset that allows a single copy of the delimited data to exists in memory and is used to feed data to the print module. But more on that later.
I’ve also been busy this week cleaning up the White Peak Software web site and the Killink CSV web site. The SMTP Diagnostics web site will be updated soon. Also look for a new release of SMTP Diagnostics coming soon with better Windows Vista support.
And if you haven’t seen it yet check out the new White Peak Software Store. The new store front is fully integrated with the White Peak Software web site giving the customer a more seamless shopping experience.
As I said, it has been a long, busy week.
I’m coming to the conclusion that having code loop millions of times to copy data from one structure to another is never going to be fast.
I’m using two controls, a spreadsheet control and a report printing control. Unfortunately the two do not support the same data structures so to print a report Killink has to copy the data from the spreadsheet to the report which means looping. And when there are a million + rows with 3 columns the code is looping 3 million + times. Not much can be done to speed it up.
What I need is a way to keep the data in a single data structure that is supported by both components. I’m starting to have a better understanding why certain commercial software tends to not rely on 3rd party components and libraries. However, time is important to me so I must rely on 3rd party components for certain features.
For now Killink will have to warn the user before allowing a huge files to be printed. “You wish to print a file that is very large. It will take some time to prepare the data for printing. Do you wish to continue?”
The report I’m trying to preview during testing will have more than 15,000 pages. I don’t see anyone realistically printing this many pages but you never know.
The first version of Killink is feature complete, but there was one thing that was brothering me, large file support. Opening, printing, and saving a large file in Killink is a rather slow process so I’ve been working on improving these 3 areas.
The first area I worked on was opening a large file, which is what I will talk about today. After profiling the application I found the biggest bottleneck was populating the spreadsheet with display data. This was an easy fix that involved “freezing” display while the spreadsheet is loaded with data. This change resulted in a huge performance increase. The test file I used took minutes to load prior to the change and only 2 seconds after the change. But then Killink took another perform hit.
A beta tester reported the bug that embedded new line characters were not properly handled. I modified the CSV parser to check each byte of data as it was read from the hard drive. However this is a very inefficient approach. A better approach is to buffer each read. In other words, instead of reading a single byte from the hard drive it is better to read a chuck of bytes. The chuck can be any size such as 65K chucks or 1MB chucks.
Buffering the file read process gave Killink the performance boost it needed to open large files. It’s not as fast as I would like it but it’s getting closer.
The performance improved version of Killink should be ready for download in a couple of days.
CSV (also known as comma separated values, comma separated list, or comma separated variable) is a commonly used file format that stores tabular data. Each data element, or value, is separated with a comma or other single character delimiter such as a Tab character. These types of files are also called delimited text files or flat files.
Many software application support CSV delimited text files either as an import or export data format. For example, Outlook users can export the address book to a comma separated value file and import the contacts into another application.
I have worked with comma and tab delimited text files throughout most of my career. I have written applications that produce delimited text and consume delimited text. And while XML is my preferred file format for sharing data there is no escaping the usefulness of CSV delimited text files.
While CSV delimited text files are typically used to import and export data between software applications there are times when individuals must manually create or edit comma and tab delimited text files. And many of these individuals use a spreadsheet program such as Microsoft Excel. However, using a full featured spreadsheet such as Excel to create and edit CSV delimited text files seems overkill to me.
For starters, say you only need to manipulate CSV delimited text files and have no need for working with spreadsheets. The licensing cost of Excel is hardly justified. Secondly Excel imposes certain size limitations. Excel is limited to 65,536 rows of data and 256 columns per worksheet. This means you will not be able to open a delimited text file containing 100,000 rows. Faced with high licensing cost, overkill list of features, and size limitations I decided to write Killink.
Killink is a spreadsheet-like editor for delimited text files. It supports delimited text files using any single character delimiter including comma and tab, and it supports large delimited text files.
Version 1.0 is currently in beta test which is open to the public. Visit the Killink download page and give the latest release a test drive. I appreciate any feedback, good or bad, you might have about Killink. Feedback can be posted to the Killink Support forum.
Update: Microsoft has improved the limitation of Excel. Excel 2007 supports 1 million rows per worksheet.
I’m adding a new feature to Killink to allow the user to integrate the application with Windows Explorer. Not a difficult task. Just involves making some registry settings. But one registry setting I need to make must go under HKEY_CLASSES_ROOT, and this hive is under administrative control in Vista.
This isn’t such a big deal if I am using an installer. Installers will typically ask for elevated permissions to perform the install. But I’m trying to provide a version that does not require an installer. This means my application will have to ask for elevated permissions when the user clicks the option to integrate with Explorer. It also means I need to display the shield icon indicating that elevated permissions are required to perform the task.
This really has me bummed out because it means more work (and learning). Now I have to learn up to ask for elevated permissions within the application.