Software, Hacks and other nonsense

TTYtter group support library

Filed under: tips, tools — Tags: , , — vkoser @ 6:45 pm June 26, 2009

As referenced in my previous post I’m a pretty big fan of TTYtter.  I won’t go into it’s advantages here you can find that information in my previous post.  I follow quite a few people so one of the first things I did when I started using TTYtter was to write a group add on library for it.  The previous post and the TTYtter site have good information on how to enable these libraries and also how to write them.  This library is pretty good size and performs quite a few operations that I thought would be a good example for someone else looking to extend TTYtter for their own use.

Operations:

  1. Custom commands for handling groups
  2. Bookmark of tweet id for place tracking what already was evaluated
  3. Filtering based on dynamic lists of users
  4. Add users to groups from inside TTYtter
  5. Remove users from groups inside TTYtter
  6. Add users to multiple groups

The easiest way to get started is to install this and get it going.  Download the library from svn and modify the one configuration item at the top of the library to set the group file storage path.  Reference the library from your .ttytterc file or use the library command line switch.

Once loaded you might want to have a look at the command set supported out of the library, there is built in help accessible from within TTYtter

/grouphelp
Group commands are as follows.

/group [groupname]
display stored tweets from group

/groups
list the current groups on the filesystem

/grouplist [groupname]
list the members of group [groupname]

/groupadd [groupname] [username]
add [username] to group [groupname]

/groupdel [groupname] [username]
delete [username] from group [groupname]

At this point you can add some users to a group via something like the following command which adds myself to a group called coders.

TTYtter> /groupadd coders vkoser
User vkoser added to group coders
TTYtter>

Once you have some groups built up it’s really easy to view them in TTYtter by using the /group coders command to list the last 20 tweets from that group.  That’s reasonable if your activly using TTYtter but it’s much more useful to use something like GNU Screen to view multiple groups and assign one screen section per group.  I typically set mine up with split windows and a large scrollback buffer configuration which lets me scroll back through pages of information.

I hope someone can get some value out of this as a learning tool and possibly expand it for your own use.  It’s not overly error proof as an add on for my own use but it works pretty well.  If anyone would like to submit changes or enhancements to the library just send them over to me or contact me on twitter and I’ll see about getting them migrated into the library.

The current release can be gotten here [TTYtterGroups.pl] from the svn repository.

extending TTYtter

Filed under: tips, tools — Tags: , , — vkoser @ 9:37 am June 15, 2009

One of my favorite twitter apps is @TTYtter and you can download it from floodgap.com.  It’s written by Cameron Kaiser aka @doctorlinguist on twitter.  Now before we get all crazy and discount TTYtter because it’s not a fancy graphical application with sliding panels and lots of things you can click you need to understand why this is a great tool.

  • Scriptable (make your own search/harvesting tool)
  • Schedulable (run it, grab search output dump to a file etc…)
  • Automate posting information (use it to tweet your coffee pot status etc…)
  • Extensible
  • Open Source
  • Easily runs on almost all varieties of Unix

There are many other features but if your prone to requiring a mouse to interact with a computer this might not be a good fit for you.  It’s the idea of extensibility that I’m going to discuss in this post.  TTYtter has a really nice way to extend it’s functionality or override it’s default behaviors.  One of the things I like most is the ability to just change how it behaves.  If your using an open source client you could just modify the source but then your stuck with what to do when there is an upgrade you have to integrate your changes into the new version if they weren’t something that was accepted back into the project distribution.  TTYtter uses a user defined library that is loaded from your own file.  You can specify a library at runtime that will be loaded with TTYtter that gives a user the opportunity through the use of a little perl to extend or alter the default behaviors.  The big win for this architecture is if a new version of TTYtter comes out it still just loads your custom user library and you get all your customizations with the new version.

I’ve recently fallen back in love with iChat on the mac after finding a nice plug-in that allowed a unified contacts list and I’ve grown used to the time stamp format.  I wanted to add this time stamp format into TTYtter.  There is a default provided time stamp option on TTYtter but it places the time stamp on each tweet which really adds to the width of the displayed line.  I had the idea to create a time stamp that inserted itself every 5 minutes or so that would give me an indication of 5 minute blocks of tweets and also let me find my place if I’m away from my desktop for a meeting or something so I can scroll back to unread items.

Picture 9

You can see in the above screen shot there are two displayed timestamps in the form of “–Mon Jun..”.  The small library I’m going to discuss here inserts those time stamps into the listing of tweets.  This probably isn’t the most elegant way to handle this but it does give you a preview of the type of alterations you can do to TTYtter with your own libraries.

Lets take a look at the code:

$handle = sub {

my $delayInSeconds = 60 * 5;

#load the Lib_past with current time on first run
if(!$Lib_firstrun){
     $Lib_firstrun = true;
     print "Seeding timestamp generator\n";
     $Lib_past = time;
}

#if we have elapsed $delayInSeconds then print a time stamp
if($Lib_past < (time - ($delayInSeconds))){
     $Lib_past = time;
     print "--" . localtime time . "\n\n";
     print "\n";
}

#this allows TTYtter to handle displaying the tweet normally
my $ref = shift;
&defaulthandle($ref);

return 1;

};

The above code is fairly self explanitory but lets take a look at whats happening.  You want to save this code into a file, ichat.pl for instance might be a nice logical choice.  Then when launching TTYtter you need to specify -lib=ichat.pl and this will load your library along with TTYtter.  The above code will be called every time a tweet is received allowing you to customize and extend what happens at that time during code execution.  The last two lines of code are of interest because those two lines allow TTYtter to handle the tweet display as it normally would.  If you want to modify how the tweet is displayed you have full access to do so and override the default behavior.  This is useful for modifying how details are shown, for instance you could add the source client information if you like.  For this library we just want to display our custom time stamp so we’ll let TTYtter handle the tweet display.

You can read all about this advanced use of TTYtter at the website where it is documented.  I encourage you to play around with it it really is quite fun to get things working just the way you like.  I have a much more complicated library that allows me to group users and filter those users tweets into files.  It also allows for group management within TTYtter via custom /commands.  I’ll post details on that in the coming days and add it to the software download page.

iPhone 3GS lack of AT&T upgrade pricing musings

Filed under: Apple, iPhone — vkoser @ 7:24 am June 11, 2009

I have seen tons of malcontent floating around the internet about the lack of any upgrade pricing for current iPhone 3G users to get an iPhone 3GS without paying non subsidized pricing. This seems ok to me as I understand how the pricing works and It’s been the same for every phone I’ve owned. If I sign up for a 2 year agreement I don’t expect to get a “deal” on another phone until I reach the end of that contract period.  I can tell you from first hand experience though it’s hard waiting when that OMGAWESOME phone you have been waiting on finally comes out and your a year away from an upgrade price.

A friend @thejesse brought up a very valid point today that came across my shared greader items as a comment that I had never considered. If your getting a deal on a phone for a 2 year contract why isn’t your monthly fee lower if you pay up front full price for the phone instead of getting a subsidized phone?  I mean if I pay $800 up front for a phone and the carrier isn’t subsidizing me for a 2 year contract then it only seems fair to get a lower monthly fee since I’m not paying off my phone over the course of the contract.

picture-41

That being said I do like the looks of the 3GS and my wife will probably upgrade in September when she is able but I’ll probably skip this round due to cost and lack of being able to take advantage of contract pricing.

On a somewhat related note I am rather annoyed at AT&T over not having MMS and tethering ready at os 3.0 launch though.  AT&T has tons of phones already doing MMS and many other carriers will be ready at launch time.  Don’t even get me started on the slingbox working over 3g on windows mobile and blackberry but not iPhone.  It’s inexcusable to not have this ready to go when the 3.0 software launches.  I hope Apple will allow some other carriers in the future in the US to force AT&T to get their act together a bit more.

Economy be damned were hiring!

Filed under: .NET — vkoser @ 5:01 am June 7, 2009

I work for NCR as my day job.  My division which is an exciting technical mashup of Linux servers using postgresql / apache / php and a large central host technology built around Microsoft technologies like .NET and MSSQL server is hiring.

We just opened 5 jobs and I thought I’d post about them here and try to get the word out.  We are looking for some quality people that have a strong drive to contribute to our product.  While we are part of a large company our solution is somewhat sequestered and feels much more like a startup.  We are in direct contact with our clients, our schedules are aggressive and we get to make our own decisions on our methodologies and architecture.  We are located in the Purdue research park in West Lafayette, IN.  The research park is located just a few miles from campus where there is plenty of entertainment and some decent restaurants.

We normally have one staff meeting a week and then some breakout meetings so typically you’ll have time to focus on development, documentation or testing depending on your job area.  There is a really nice gym across the street that several of us belong to and go to over lunch or before work.  Our solution involves providing a management system for large retailers to create and distribute promotions to customers.  We have a web based tool to create the content and then it’s distributed to the appropriate channels.  There is an official page about us here but it’s not very detailed.

If your interested in any of the following positions please contact me at vkoser at gmail or @vkoser on twitter and I’ll point you in the appropriate direction to get the official job postings and application process.

All of the positions will expect the following:

Skill & Attributes:

  • Self-motivated
  • Work independently with limited supervision
  • Solid troubleshooting & problem-solving skills
  • Excellent communication skills, both verbal and written
  • Strong aptitude for learning quickly
  • Work well in a team environment
  • Excellent presentation skills
  • US Permanent Resident

Here is the rundown on the current positions:

Position Title: Database Manager

Minimum Qualifications:

  • Bachelor’s Degree in Computer Science, Computer Technology or a related field
  • 2+ years experience in database analysis/design/clustering/tuning and systems development

Preferred Qualifications:

  • Experience with:

    • SQL
    • 3+ years as an SQL Server (2000 / 2005) Database Administrator /Developer.
    • Background in Transact SQL programming database design-writing stored procedures, triggers, functions, etc. by using practices, standards, code-optimization techniques.
    • Experience using SQL Profiler, Query Analyzer, SSMS to identify performance issues (blocking, locking, etc.)
    • Experience in Index Tuning, Query Tuning, Clustering Administration and some .NET
    • Strong debugging skills with ability to solve complex problems
    • Ability to assist team in stress0testing applications, locating bottlenecks, and recommending solutions.

Position Title: Software Engineer I (Integration)

Minimum Requirements

  • BS/BA degree in Computer Science, Computer Technology or a related field
  • Strong practical experience with Linux operating systems
  • Experience with PHP, SQL, .NET, ASP.net or related technologies
  • Strong practical experience programming and database experience

Preferred Qualifications

  • Experience with Pogresql, Apache
  • Experience with Linux distributions; Suse, Debian, Red Hat
  • Minimum 1 year experience in software analysis/development and systems development

Position Title: Information Engineer II

Minimum Requirements

  • Bachelors Degree in technical writing or communications
  • Experience Designing: database documentation, systems processes flows systems architecture documents and end user documentation
  • Testing Documentation
  • Training Documentation

Preferred Qualifications

  • Databases ( e.g., SQL)
  • Some experience with technical languages, VB or PHP
  • Some experiences with flowcharts, diagramming, visual presentations

Position Title: Quality Development Engineer I

Minimum Requirements

  • Bachelors Degree in Computer Engineering or a technology -related field
  • Some experience with Linux operating systems and PHP
  • Ability to recreate and document issues reported by customers, and issues found during regression testing and new functionality testing

Preferred Qualifications

  • Automated Test Script development
  • Some experience with PostgreSQL or other SQL
  • ASP.net and/or .NET, web services
  • Software testing experience, verifying new product features, defect fixes, debugging/ troubleshooting issues
  • Experience in mentoring and interacting with team members
  • Some experience interacting with offshore team members
  • Retail terminal and peripherals experience a plus

Position Title: Software Engineer II (Linux)

Minimum Requirements

  • BS/BA degree in Computer Science, Computer Technology or related field
  • Strong practical experience with Linux operating systems
  • Experience with PHP, SQL, .NET, ASP.net, or related technologies
  • Strong practical experience programming and database experience

Preferred Qualifications

  • Experience with Pogresql, Apache
  • Experience with Linux distributions; Suse, Debian, Red Hat
  • Minimum 2 years experience in software analysis/development and systems development

Twitter removes option to see @replies of those you don’t follow

Filed under: Uncategorized, tips — Tags: — vkoser @ 4:06 am May 13, 2009

repliesTwitter has has the option to view @replies to only the people you follow or all @replies in the settings for quite some time.  Last night unexpectedly they changed this to only allow you to see @replies to those people you follow.  This change effects the API (all client applications) as well as the web.  There is no longer a way to see replies to folks your not following unless you directly visit each users profile page.

I think that this is a change for the worse and there are others that would agree with me.

picture-1

picture-21

The reason I dislike it so much is I used it extensively when I first joined twitter in 2007 to help me find other interesting people to follow.  Twitter states the change is to reduce confusion.  Huh, normally when I want to reduce confusion I write some more documentation and try to educate users instead of removing a useful feature.  Perhaps it was removed to reduce load on the cache from having to load up timelines with tons of @replies that weren’t normally associated with a persons followers list but I see it as an important change that impacts how some people were using twitter.

picture-3

Twitter claims that less than 5% of the users were using the feature but lets say hypothetically that twitter has only 2 million users I’m sure they probably have more in reality but this unexpected change impacts 100,000 people of that hypothetical 2 million number.  Doesn’t seem like such a small population to me.  If it was confusing maybe they should have altered the default or done a sweep to turn it off for everyone but leave the option to turn it back on.  As it is right now it’s a fundamental change in the way the timeline works for quite a number of people and impacts how someone might find new friends via twitter.  I hope they will reconsider and enable this but I fear it’s a done deal at this point and won’t be coming back.

You will still see mentions inline in a tweet that isn’t a reply but the way I’m interpreting the functionality is anytime you specifically reply to someone that someone else isn’t following they won’t see the reply.

If I compose a new tweet though “Having lunch with my brosef @funkatron” then that will be visible to all users of my time line since it wasn’t a reply.  But if @funkatron replies to that message and says “@vkoser we’ll talk about that new library your writing can’t wait to see it”  None of @funatrons followers that don’t already follow me would see his reply even if they were interested in finding out more information about whatever cool new library I’m writing.

I’m with @funkatron, I don’t like it one little bit.  Here is a link to the original blog post from twitter.

Would AppStore pre-approval help?

Filed under: Apple, iPhone — vkoser @ 12:00 pm May 11, 2009

app-storeOver the past months we have read about a variety of applications being denied for sale in the AppStore.  A few of them have gotten approved after some discussions with apple but there are still some that never made it to iTunes and end up either forgotten or only available on jailbroken devices.

One of the major pitfalls for a developer of the current AppStore model is you need to submit your finished application for review before you know if it’s going to be approved or not.  There are guidelines but there is always an area of unknown.  You can’t know for sure if your application will be denied due to being obscene or possibly duplicating some core iPhone functionality.

A possible solution would be a pre approval process.  This pre approval process could involve sending application mock ups and functionality descriptions to Apple for pre review prior to starting major coding on an application.  If I wanted to develop an application that might contain some questionable content I could include artwork that would be included in the application for pre approval.  Certainly the art work takes time and effort as well as application development but getting art and concepts per approved before further development was done would save many developers time and effort for those denied applications.

This probably isn’t manageable for Apple due to the backlog and time delay on the regular application approval process but perhaps they could offer it for an extra fee.  $40 for a pre approval would eliminate the bulk of submissions that wouldn’t follow through with development and submitting the application if approved.  Perhaps a 3rd party could develop a relationship with Apple to handle this process if they worked closely with Apple to reduce the load on Apple.

PaceMate 1.1 finally in the AppStore

Filed under: Apple, PaceMate, iPhone — vkoser @ 5:57 pm May 6, 2009

screenshot1The update I submitted to iTunes finally was approved today.  The new version has some nice upgrades.  You can now enter data in miles or kilometers and once you calculate you can convert the values between Metric and English units.  It will also remember your default unit choice between launches.

I hope that it’s bug free.  One thing I’m disliking about iPhone development so far is that it’s pretty involved to distribute a testing version.  It would be nice to be able to just send out the binary to some trusted friends for testing without having to go through all the Apple nonsense to distribute signing keys and such to prepare testing phones with the proper keys to run the application.

PaceMate available in the AppStore

Filed under: Apple, iPhone — vkoser @ 6:12 am April 17, 2009

pacematewaitAfter an 8 day wait PaceMate is available in the AppStore. I checked the stats this morning and it had 70 downloads yesterday so not bad for an application with no press and not much visibility in the AppStore.

I’ve rethemed the blog and also changed the Downloads page to Software which I think is more clear.  I’m hoping to redo the table linking to software in the coming days and make it a little more attractive.

If you are a runner or cyclist or walker give it a look.  It’s a nice way to figure out your pace or how long a particular distance will take you based on your pace and desired distance.

PaceMate

PaceMate submitted to AppStore

Filed under: Apple, iPhone, tools — vkoser @ 4:53 pm April 9, 2009

pacematewait

I’ve been working to learn some Objective-c for a few months now and finally got something put together that is fairly complete.  I’m often using a pace calculator for running at coolrunning.com but wanted one in my pocket.  There are already several really nice ones in the AppStore but this was more of a learning process for me.  I also added something I think is nice that lets you email your data once you entered it.  I intend to enter my run data and email it to myself after a run so that I can then transfer it to dailymile.com or other places I log running information.

At any rate I learned a few things about the application submission process as well as quite a bit about Objective-c and interface builder in xcode.  Interface builder was more of a hurdle than I would have expected.  Coming from .NET forms development background it’s really easy to drag a button onto a form and double click it to have it put my cursor right into the function that handles that button click.  It’s quite a bit more involved when using the xcode setup.

I also think that the AppStore submission process is quite a bit more complicated than it needs to be.  I’m giving my app away for free why do I have to do all the certificate requests and code signing when I don’t care about it being copied and freely used?  It seems like applications submitted at the free price point could avoid all that.

PaceMate is now in the review process and hopefully it will be approved in a few days.

ceTwit build 1019 released

Filed under: ceTwit, winmo — vkoser @ 5:49 pm April 4, 2009

Released build 1019 tonight with a couple fixes:

  • Twitpic previews work again with twitpics new servers/api method
  • Avatars that were scaling improperly are now displaying correctly

Get it on the download page or via the in application check for update feature.

Older Posts »