Today I did something that I’ve been saying I will do for a long time. I retired my CSV editor, Killink.
Last month I briefly mentioned my plan to productize some of the services I offer through White Peak Software. The main idea is to take a consulting service that I already offer to my clients and turn it into a product that my clients and others will hopefully subscribe to thus creating a monthly recurring revenue stream for my company. My goal was to spend no more than 40 hours over the span of a few weeks setting up this new product. And now, after spending 38.75 hours over the last few weeks, I’m ready to share more details.
A few years back I was making the majority of my income from the products I sold. My apps, my book, they were all doing well. But that changed in 2013. Things came crashing down, and I found myself wondering how I was going to pay the bills.
Last year my wife told me more family and friends would “like” my photos on Facebook if I posted the them directly to Facebook. At the time I was using ifttt to selectively cross post to App.net and Facebook. This meant my photos on Facebook were actually links to the App.net, which is where the photos were being stored, and this required my Facebook followers to tap the link to see the photos. Not the best experience for my followers.
Believe it or not, I finally released a new app for iOS. It’s my first new app for White Peak Software in more than 2 years. Somewhere along the way over the last two years I lost my way, but I’m back.
Hey! What’s going on here? A new blog post after more than a year and a half?
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.
I have talked about White Peak Software being a product company for the last couple of years, but the transition from services to products has been challenging. I’m working on a new email program call Vertigo but progress has been slow for various reasons. I learned trying to get a product like Vertigo out the door at single person software company is a huge challenge especially when you rely on services work to bootstrap any R&D; work.
What I need is a different approach, so 8 weeks ago I came up with a set of short term goals to start building momentum towards being a product company. Tomorrow is the last day of the 8 weeks and I’m happy to say I reached my goals as of today. It hasn’t been easy especially over the last couple of weeks which has had me working 14 hour days, but momentum is finally starting to build.
Over the last 8 weeks I released an update to SMTP Diagnostics and published a new product called Killink CSV. I have also made numerous improvements to the White Peak Software web sites including a fully integrated store front. More work is needed but things are off to a good start.
My next challenge is to sustain and build on top of the momentum started over the past 8 weeks. This means a new set of goals for the next 8 weeks. The new goals include:
* At least 2 product releases
* Sell at least 20 units of my products
Key to the next 8 weeks is selling 20 units. This means not only getting updates to Killink CSV out the door but making improvements on the marketing side. Currently, my plans include a press release campaign and Google AdWords. I also plan to do a better job monitoring conversion rates and web site traffic, something I have ignored over the last year and a half.
My motivation level is high and will only get higher as sales increase. But even with a high level of motivation I must do a better job managing my time during the next 8 weeks. I’ve been working 14 days recently and it’s starting to wear on me…and on my wife too.
White Peak Software has a set of support email accounts. Each time an email is received it is logged to a tracking database and internal notification emails are sent out. In addition to responding to incoming email I review email messages marked as spam each day.
I noticed today the number of spam messages received had dropped to only 5. This seemed odd but a new grey listing anti-spam measure was also implemented this week on the mail server. I thought it was too good to be true that 99% of spam messages received were being filtered by the mail server. After all the mail server is configured to mark most spams not deleted them for fear of fault positives.
As it turns out the reduction in new spam messages was not the result of improved filtering but a problem with the tracking system. The support mail accounts have been overloaded the last 48 hours and the tracking system has been slow to catch up. The problem has been fixed and the queued messages are now being processed.
If it had not been for the reduced spam count the problem might have gone undetected for a longer period of time. For once spam proved to be useful.
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 have been talking about Vertigo for a couple of years now. Vertigo is a software product line currently under development at White Peak Software. In a nutshell it is an email program for the Windows desktop. And yes, it will be release this year.
Why develop yet another email program? Simple, none of the available mail programs suit my needs as a small business owner. And I have tried them all including Outlook, The Bat, Eudora, Poca, and ThunderBird. My needs are not unique and there is definitely an untouched market out there, which is why we are building yet another, albeit, a new kind of email program.
We current have a working version of Vertigo that is being used daily. Dogfooding an email program, though, can have its challenges especially given than I must send emails out every day. The thing that has surprised me the most is the large amount of crap contained in mail messages.
We are building a database containing thousands and thousands (soon to be hundreds of thousands) of real mail messages. Of course the majority of the messages in our database are spam mail. This will be extremely helpful when work begins on the spam filter feature. But the spam messages are also proving to be helpful in uncovering bugs in Vertigo. Malformed message headers, date formats, and MIME encoding are common. Then of course there are the attachments containing questionable content. It’s been amazing to see what actually happens with email under the hood.
Work on Swirl has started up again. For those readers who have forgotten, Swirl is the code name for White Peak Software’s soon to be released Web service debugger and testing program. I missed the planned milestone of having the first beta release out by the end of May due to other customer demands. Can’t blame a guy for needing to make money from time to time, right?
As I’m working through preparing Swirl for the first beta release, something occurred to me. I really don’t like the WSDL parser I wrote. It works mostly. I say mostly because there is still a bug or two left in the parser. But the reason I don’t like it is not because there are a few bugs but because the code is nasty and hard to maintain. I think it is time to take a step back and refactor the WSDL parser into something better. This of course will delay the beta release even more but it’s worth the delay in the long run.
A common question I get is “How is White Peak Software doing?” The answer is quiet simply “We’re doing great.” Revenues continue to grow and we are inching closer to the release of our next product. We’ve also done some exciting custom software work over the last year.
I have decided to start posting news briefs on some of our more exciting, and successful, custom software work. You can read the postings in the White Peak Software Announcements forum or by subscribing to the announcement feed using your favorite RSS feed reader.
Work on White Peak Software’s next product, WS-Workbench (also called Swirl internally) is coming along nicely as you can see from this screen shot. The first beta should be ready soon. Post a comment or send me an email if you are interested in beta testing WS-Workbench once it is ready.
Heinz Tschabitscher posted a review about SMTP Diagnostics on About Email. I have to say I agree with Heinz when he says “SMTP Diagnostics does not help you understand or fix errors.” It is true SMTP Diagnostics will help you understand what is happening assuming you understand the protocol message, but the tool would be more useful if it explained things in plain English, which I believe is Heinz’s point.
Okay, I probably shouldn’t post this screenshot because it is ugly and far from the final Vertigo UI. But what the heck. I have been talking about Vertigo for a year now and this screenshot shows the world I’m actually working on it (finally).
Click the image to view full size.
For those wondering, Vertigo is a desktop email client that is being developed by White Peak Software and will be released later this year. Feel free to post your comments, suggestions, and questions to the Vertigo forum area.
2005 has come and gone, and man was it fast. 2005 was a very interesting year for me. I learned a lot about running a software business and I have a better idea of what it means to be a self employed computer geek turned aspiring entrepreneur. I have my success stories, made mistakes, changed directions, lost sleep, and spent more time with my wife. Here’s a brief recap of 2005:
- Release White Peak Software’s first product, SMTPdiagnostics.
- Released 4 custom software solutions for customers.
- Elected Chapter President of ICCA NYC Metro.
- Met target revenue goals.
- Became more focus on where I want to take White Peak Software.
- Over obligating myself and my time.
- Lacking focus for the first half of the year.
- Did not release Beta version of Vertigo.
- A poor job of networking and keep in touch with customer.
So what are my resolutions for 2006?
- Complete Vertigo version 1.0.
- Increase product revenue by at least 60%.
- Do a better job of staying in touch with customer.
- Do a better job of going to the gym.
- And find more ways to spend more time with my wife.