Category: Software
November 29, 2014 Flattr this
Maschine Webfont. Frei, wie in Bier.

1994 hatte ich eine dieser ultraportablen Reiseschreibmaschinen mit einem schon ziemlich lädierten Schriftbild. Dieses Schriftbild gefiel mir und ich wollte es gerne ins digitale Zeitalter rüber retten. Und genau das habe ich dann einfach getan.

Maschine book preview
Maschine Book

Ich habe alle verfügbaren Zeichen auf ein Blatt Papier getippt, eingescannt, in Altsys Fontographer nachkonstruiert und somit meinen ersten Typ 1 Postscript-Font geschaffen. Der Font enthält weder einen Klammeraffen (ät-) noch ein Euro-Zeichen. Ja, Kinder, Neunzehnhundertvierundneunzig gab es nämlich noch keinen Euro und mit einer Reiseschreibmaschine konnte man keine E-Mails schreiben. Vielleicht finde ich ja mal die Zeit, ein paar fehlende Glyphen zu ergänzen.

Nun bin ich durch Zufall auf die alten Dateien gestossen, konnte sie in ein zeitgemäßeres Format konvertieren und – Ladies and Gentlemen – präsentiere euch nun (ja ist denn schon wieder Weihnachten) meinen „Maschine“-Font als Webfont (.eot, .svg, .ttf, .woff).

Den Font, der einen normalen und einen fetten Schnitt beinhaltet, stelle ich unter folgender CC-Lizenz zur Verfügung:

Creative Commons LizenzvertragMaschine von Stefan Seiz ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Viel Spass damit!

Download „Maschine“

Posted in: , by seiz | Comments (0)
May 01, 2013 Flattr this
Safari Web Inspector

webkit-icon-256.pngWith the update of Safari 6.0.4 i realized the Web Inspector changed in a way which makes it almost unusable for my needs. In 6.0.4, the Inspector wouldn't even properly show cascading css properties or inheritance for a selected element anymore! See the screenshots below for a comparison between Safari's and Chrome's Inspector.

I posted my frustration on Twitter and thanks to some keyword search running somewhere in a lonely cloud, a Safari Engineer got back to me. So thank you very much, Timothy! This blogpost is for you, because i couldn't fit it into 140 characters.

In this post, i will focus on one aspect of the Inspector only: Working with CSS. Because that's what i do most and because for JavaScript development, the tools at hand generally get the job done well for me.

Web Inspectors showing information for the exact same element (Safari to the left, Chrome to the right):

Safari Chrome

Preface

Shortcomings in the Safari Web Inspector and a lot of rendering bugs in Safari (which seem to be mostly ironed now) forced me to use Chrome more and more for my development needs. I never wanted to. I care for Safari. I still prefer the Safari UI over Chrome (just look at Chrome's Preferences-Screens – shudder) and don't know if i like where Google (the company) is headed to. But Chrome has compelling features and before i knew it, i was using Chrome during 95% of my development time.

Features i miss most in Safari's Inspector

  1. Being able to select an element in the source view of the Inspector and keep the element selected between reloads and navigating a site. Chrome supports this and if i remember right, Safari did at one time in the past.
    You won't believe how important that is for me and how often i need that during the day. Webdev often is rinse, repeat, reload (preferably via the Live Reload plugin).
  2. Edit a linked css file directly in the browser. This is often more convenient than fiddling with css in the styles pane of the inspector. Chrome supports that. Safari never did, afaik.
  3. Plugins, that work with file:// URLs. The live reload plugin is a huge timesaver when developing for the web. Unfortunately, Safari plugins are not allowed to work with file:// URLs, which i do most of the day while i develop (i just drag and drop a html file into my browser window). Chrome doesn't have that limitation.
  4. Easily check inheritance of certain values. Sometimes i just want to select an element in the source and e.g. quickly find out, where it inherited its font-size from, without having to endlessly scroll through all the rules and parse striked-through rules etc. I'd like to look at a property in the "Computed Style" section, klick on a little icon and together with a link to the respective line number in the css source, see the classname or id of the rule in the CSS displayed, which ultimately set the property. Chrome has this, but with a UI from hell.
  5. A toggle to simulate :active, :focus, :hover and :visited pseudo classes
  6. Inspector Preferences. Chrome's Inspector Preferences and Overrides are very, very useful. Also, as one get's older, a font-size setting for the inspector ui comes in pretty handy.

Features Safari's Inspector will hopefully soon get

Inspector toolbar

Timothy suggested i should check out the Inspector in Webkit Nightly (which i haven't done in a while). So that's what i just did. I looked at Webkit Nightly Build 8536.29.13, 537+. If all i see there makes it into Safari soon, things don't look so bad at all. Here's my comments on what i saw in the Nightly related to my above laundry list:

  • Live editing of linked css files is supported
  • Toggles to simulate :active, :focus, :hover and :visited pseudo classes are there
  • The proper display of cascading rules seems restored

Inspector pseudoclass new rule
New in Nightly: Nicely cleaned up Rules-Section with new pseudo elements toggles and a Button to quickly add a new rule (you missed a button to easily delete an added rule though). Further above you see a pretty nice new tooolbar.

Features still missing

Here's what's left from my above laundry list with comments about the nightly added (in bold):

  1. Being able to select an element in the source view of the Inspector and keep the element selected between reloads and navigating a site. Chrome supports this and if i remember right, Safari did at one time in the past.
    Selecting an Element in Source and reloading a page is totally buggy in the nightly (it's a beta, so that's ok).
  2. Edit a linked css file directly in the browser. This is often more convenient than fiddling with css in the styles pane of the inspector. Chrome supports that. Safari never did, afaik.
  3. Plugins, that work with file:// URLs. The live reload plugin is a huge timesaver when developing for the web. Unfortunately, Safari plugins are not allowed to work with file:// URLs, which i do most of the day while i develop (i just drag and drop a html file into my browser window). Chrome doesn't have that limitation.
  4. Easily check inheritance of certain values. Sometimes i just want to select an element in the source and e.g. quickly find out, where it inherited its font-size from, without having to endlessly scroll through all the rules and parse striked-through rules etc. I'd like to look at a property in the "Computed Style" section, klick on a little icon and together with a link to the respective line number in the css source, see the classname or id of the rule in the CSS displayed, which ultimately set the property. Chrome has this, but with a UI from hell.
  5. A toggle to simulate :active, :focus, :hover and :visited pseudo classes
  6. Inspector Preferences. Chrome's Inspector Preferences and Overrides are very, very useful. Also, as one get's older, a font-size setting for the inspector ui comes in pretty handy.

Inspector Design in Webkit Nightly

I am pretty sure, that the design we see in the nightlies won't make it into Safari without some additional designer-love, but let me offer some brief remarks anyway. Just in case. I really hope though, the new toolbar (i love it!) makes it into Safari (the current one is kind of overloaded and confusing).

  • Icon sizeThe icons in the toolbar seem too big for me (in relation to the label text-size), even when i set it to display small icons. I'd keep the icon size similar to the size of the 2 icons displayed to the left of the toolbar (the icons to close or dock the window).
  • I prefer the design of the icons very much over the coloured icons currently visible in the Safari Inspector. However, i think we don't need gradients in the icons. We also don't need color to indicate the selection, just make the icon for the selected section darker. Keep it simple.
  • I love the new "Instruments" display, where you - at a glance - see the number of resources loaded, total size, load time, console -logs, -errors and -warnings. However, i won't use fake glass. This is not a 90's version of iTunes. I believe an inset shadow around the area and light borders between the individual sections on hover will do. PS: the icon-size in here feels just right. That'd be a good size for the other toolbar icons too.
  • The area with the pseudo class toggles consumes too much vertical space. It should me much more condensed. Have a look at the chrome toolbar and use an 11" Air when you look at both toolbars, then you get my reasoning.
  • Same goes for the new "+ New Rule" area. Far too much top- and bottom-padding.

Conclusion

I was genuinely worried. Looking at Webkit Nightly, things look much better and some of my confidence is restored. Given, that what i see in the nightlies really makes it into Safari soon.

I still wonder, how it could happen, that Inspector in Safari 6.0.4 is in such a bad state and lost valuable features which it previously had. Is this just a bug that slipped in there due to sloppy QA or is it a case of terrible product management?

I hope, the importance of good developer tools in the form of the web inspector is clear to Apple. If we developers don't like the tools or if the tools slow us down, why should we use them? If we don't use them, we won't develop with the unique features of the platform (used) in mind and thus won't help drive it forward or keep afloat.

Thanks again Timothy for getting back to me! That was totally unexpected. If this feedback, which touches only very few specific points, is of any value to you and the Safari team, i can certainly post some more from time to time.

Posted in: , , by seiz | Comments (0)
December 01, 2012 Flattr this
Leistungsschutzrecht

IconMein Beitrag zum Thema ist eine Safari Erweiterung, die Einträge von Verlagen, die das Leistungsschutzrecht unterstützen, aus den Suchergebnissen von google.de, google.com und bing.com ausblendet.

Hier entlang bitte!

Posted in: , , by seiz | Comments (0)
November 27, 2010 Flattr this
«Twaasie», A Theme for Kiwi
Twaasie a Kiwi-Theme

Kiwi is a nice Twitter-App for Mac OS X which will finally replace Tweetie (where i am still waiting on an update or even a beta promised by MacHeist – boo on them) for me. It comes as a free version sponsored by ads displayed on top of your timeline or as a paid version for $9.95.

Kiwi has some very nice features like filtering, tabbed-accounts and themes, yet is still clean and not overloaded.

Being used to Tweetie, i haven't really liked any of the built in Kiwi-Themes too much and immediately whipped one up which you can see to the left and can download here if you like.
After downloading the Theme, simply unzip and double click to install.

Posted in: by seiz | Comments (0)
October 19, 2009 Flattr this
Analytics to Earth for Mac OS X
Google Analytics to Google Earth

Analytics to Earth is a Mac OS X Utility which lets you view Google Analytics Geo Reports in Google Earth

Download | Release Notes

I believe, looking at Geo Reports in Google Earth in 3D offers far more insight into the world wide usage of your site than the flat, colored map in Google Analytics. Therefore i developed Analytics to Earth. Maybe one day, Google will integrate KML export right into Google Analytics.
In the KML files generated by Analytics to Earth, each page view is represented by a logarithmically scaled yellow line. Red lines represent more than 1.000 page views.

Using the Google Analytics API, Analytics to Earth downloads geo reports of a given timeframe, displays them in the built in browser or converts them into a .kml file which you can open in Google Earth.

AnalyticsToEarthScreenshot.jpg

Usage:
After you launch the App, simply enter your Google Analytics Email and Password (needed to log in to the GA API), then specify a timeframe by setting a start- and end date. Clicking on the "Save" will then save the KML file to disk, where you can open it using Google Earth. Clicking on "View" will display the report in the built in browser using the Google Earth Internet Plugin.

Requirements:

All traffic to the Google Analytics api is done securely via SSL.


Posted in: , , by seiz | Comments (0)
September 17, 2009 Flattr this
Twitter API change catches clients cold and confuses users

This morning i was shocked to see tweets of people i don't follow. Turns out it's half as bad as it initially looked and the reason is an API change from twitter.

For whatever reason, Twitter seems to have rolled out an api change before Twitter Clients have implemented the necessary changes to deal with them.
The changes are concerning retweets. There's a new way retweets are handeled in a users timeline XML. Twitter is effectively stripping out the RT parts of the tweet text (making them invisible to the user) and includes them as meta data into the XML:

<retweet_details>
    <retweeting_user>
    	...
    </retweeting_user>
    <retweet_count>1</retweet_count>
    <retweet_id type="integer">4043457594</retweet_id>
    <retweeted_at type="datetime">2009-09-17T01:15:32+00:00</retweeted_at>
</retweet_details>

Today, there's only few Twitter-Clients which already support this new XML and this is where the problem starts. As the RT part of a tweet is now effectively hidden to anyone not supporting the new XML format, a retweet might be displayed as if it is a message from someone you do not follow (if someone you follow retweets someone you don't).

Twitter-Problem-Twittelator.jpg

TwittelatorPro 3.2 already supports the new format and indicates the retweet (RT) in the upper right corner of a tweet
Twitter-Problem-Twitterrific.jpg

Twitterrific (3.2 Mac) doesn't support the new API and thus it looks as if i received a tweet from Trisha which i do not follow. Shock and awe!

Update 1: These changes are clearly documented on the twitter API site, but contrary to the documentation, the changes affected friends_timeline.xml (at least for me) also and not only the new home_timeline.xml!

Update 2: It is possible, that i misinterpreted this and twitter didn't accidentally roll out any changes to friends_timeline. It may well be, that Andrew Stone (he retweeted Trisha as seen in the screenshots above and i am following him) was simply testing the new features using the statuses/retweet API call.
But still, even if he did, the RT shouldn't have arrived in my friends_timeline (in that new format).
That is why other services use versioned APIs and don't bend live APIs at will!


Posted in: , by seiz | Comments (0)
February 10, 2009 Flattr this
Why i hate Movable Type
Because:
mt-rebuild.jpg

This effing progress bar won't ever finish. It stands still at the exact position you see above. And MT silently fails to republish "ALL" (after a template change or such).
Worst of all, i am a web developer and have no clue how to fix this (emphasis on MT, not my abilities), nor does MT give me any hint as to what might be going wrong.

This could be such a lovely relationship but MT doesn't stop to show its ugly face every once in a while. Oh well, i love Movable Type.

Posted in: , , by seiz | Comments (2)
February 07, 2009 Flattr this
Meaningful Graphs in Web Analytics

Have you ever used Google Analytics (or any other tool) to compare your metrics to the previous month's or any other past timeframe?
Did you then realize, that the graphs shown didn't really tell you a story?

So here's a tip – which in case you haven't already discovered this yourself – is so simple, that you'll probably bang your head against the desk.

This tip probably applies to most Web Analytic Tools out there. As i have no access to any other tools, i'll use Google Analytics here for the examples.

Google Analytics has a nice date-picker which lets you select the timeframe used to display its verious reports. The timeframe is usually defined by a start- and end-date. In order to let you compare metrics to the past, there can even be two start- and end-dates.
Let's assume you want to look at your dashboard, and compare your statistics for April to the ones from March (the previous Month).

The Default

GA-Date-Range.jpg By default, you'll define a date range by either clicking on the month name (April) which automatically inserts 04/01/2008 and 04/30/2008 into the date fields or you fill in the date fields by hand (or even use the fency Timeline slider or what have you).
You then repeat this step for the timeframe in the past you want to compare your metrics to, click on Apply and you're done defining your timeframes and your report is being displayed.

GA-Mar-Apr.jpg
The defined timeframe as seen in the little calendar view

In your dashboard, you'll see all kinds of graphs and probably also one for Absolute Unique Visitors which might look just like the image below:

GA-Visits-Months.jpg As you can see in the graph to the left, we have a nice pattern, as the data used for this example is from a B2B Site which has an audience browsing the site mainly during weekdays.
The blue line represents April's trend and the green line represents visitors in March. You'll notice, the pattern is somehow repeated in the green line for March.
What the graph to the left fails to communicate however is the data you might probably be interested in most: The difference in quantity between the two months. Did April have more unique visitors or March?
The graph simply fails because there is too much noise and the pattern isn't aligned.
If your traffic doesn't show any patterns and you have the same amount of traffic every day, please stop reading, as all i say here doesn't apply to you.


The Hand Tuned, Meaningful Beauty

Now here's the simple trick. Let's align the patterns by adjusting our timeframes in a way, that makes sense for our scenario: Instead of picking whole months, we need to align our timeframes by a specific Weekday, which will be the same day for the current and past timeframe. We'll also make sure, both timeframes have the same length.

GA-Mar-Apr-Weeks.jpg
Adjusted timeframes with similar lengths and the start days aligned at a Monday.
We're looking at four weeks each.

GA-Visits-Weeks.jpg Look at the graph to the left. Isn't this a beauty? Get the story this picture is telling you? Huge difference. We can still immediately identify the patterns from the previous graph, but can also see a meaningful, comparable representation of quantities.
I believe everybody will now be able to immediately spot the decline in March's visitors which lasts from the middle of week three until mid of week four.


This trick is so simple, i wish google had "Align by Weekday" build right in to Google Analytics already.
I hope this was news to at least some of you and that this little nugget will be helpful to you as you are crunching your numbers.

PS: If you're into Web Analytics and don't read him already, do yourself a favor and have a look at Avinash's Blog.

March 17, 2008 Flattr this
Modal Dialog of the Day - by Adobe Acrobat

AdobeAcroobatDialog.jpg Not only is this dialog silly, but it actually was displayed in a never ending loop when updating my Adobe CS3 Design Standard Suite today. I closed all my open Apps except the Adobe Updater and clicked OK in the silly dialog above and it would constantly re-display this dialog...
Go figure.

Adobe: next time double check your dialog localisation - or maybe add a #todo tag in the Dialog-Title so you spot these before release ;-)

Posted in: , , by seiz | Comments (0)
February 27, 2008 Flattr this
Play NetNewsWire Video/Audio Enclosures in QuickTime Player

nnw-icon.jpgFor your Enjoyment, here's a little AppleScript which plays the Enclosure (type Video/QuickTime or Audio/Mpeg) of the current selection in QuickTime Player. If you're like me and don't automaticaly download enclosures, this helps you save the hassle of Copying the URL and pasting it into QT Player or such.

Installation:
Download the Script, unzip it and move it into NetNewsWire's Scripts-Folder (~Library/Application Support/NetNewsWire/Scripts/). Done.

This comes especially handy, if you add a Keyboard Shortcut for the Script in the Keyboard & Mouse System Preferences like so:

nnw-shortcut.jpg

Enjoy.

Posted in: , by seiz | Comments (0)
December 17, 2007 Flattr this
Twitter Maintenance page done right

twittermaintenance.gifOnce again, Twitter.com is in maintenance-mode. Hopefully -- as usually -- for the win.

There's one thing i realized which really puzzles me. It is the way, they serve their temporary maintenance page (pictured in parts in the screenshot to the left).

This time (i haven't checked this during any of their downtimes before), they publish their temporary page in an extremely stupid way:
Twitter is serving a 404 status for every URL on twitter.com. The page you see during maintenance is a customized 404 "Not Found" error page. The 404 HTTP status means, that the url you tried to access doesn't exist and you should never use this url again, as it is bogus. This is not very clever. Now you can argue how important a proper google-index for twitter.com is, but even if you'd not care about google (and any other search engine) throwing every twitter-page out of it's index due to the 404 the crawler gets with every request, it still is wrong. HTTP statuses are there for a reason and serving a 404 during maintenance is not what the 404 status was meant to be used for.

The proper way to handle this would be to do a temporary redirect by serving a 307 or, even better, simply serve the maintenance page with a 503 status, which is the perfect fit for a maintenance. HTTP Status 503 stands for "Service Unavailable" which is exactly what is happening during a maintenance break.

Serving a 503 would deal with search engines nicely and clients like Twitterrific could also nicely parse it and inform the user correctly. For instance hahlo.com is momentarily just serving black frames, making their users believe something is wrong with hahlo. Pockettweets on my iPhone also confuses the user as Mobile Safari is simply alerting the user about too many redirects.

Hopefully someone from twitter will read this and not make the same mistake again in the future.

July 26, 2007 Flattr this
Host monitoring with Twitter and Perl - a poor man's Nagios

Twitter LogoJustin Mason of SpamAssassin fame recently published a perl-script on his blog, he developed to check health of some of his servers using perl and posting alerts to Jaiku.

Since i use twitter, i modified his script to post alerts and extended the functionality a bit. The script cureently only checks webservers via HEAD requests. If a host does not respond, it posts an alert to a given Twitter account, remembers the host and will post a host-up notification to twitter, should the host come up again.

The benefit of this is, that you can get Tweets via SMS providing you a nice 24/7 monitoring solution. In order to receive SMS alerts, you basically need 2 twitter accounts. One where you send the alerts to and a second one which you use to follow the first one in order to receive notifications vis SMS (as you can't receive notifications from your own account, this is not possible using just one account).

The script is usually run by cron. To run it, you need Perl and the Perl LWP module as well as a configuratio-file which is described in the header of the perl-script.

Download checkandtwitter.pl V 0.2 here and enjoy.

Posted in: , by seiz | Comments (0)
June 05, 2007 Flattr this
Mac OS X Calculator.app Problems?
Calculator.app IconIs your calculator suddenly not doing currency conversions correctly anymore? Do the currencies listed in the currency pulldown menus look funny with lots of blanks on either side?

Then you might experience the same problem i had which has an easy solution:

  1. Quit Calculator.app
  2. Open Terminal.app
  3. Type rm -r ~/Library/Caches/Calculator/

This will clear all Calculator cache files of which one was obviously corrupted in my case.

Posted in: , by seiz | Comments (0)
November 23, 2006 Flattr this
Website Statistics in Google Earth

Jacob Cord wrote a very nice little converter which takes a tab-text file, exported out of your Google Analytics Geo Map Report and converts it to a KML file which you can import into Google Earth.

The output of the original script didn't look all that exciting, so i modified it a little to produce some awesome visualisation of website traffic.


Click the image to see an animation (QuickTime required)

The longer the lines, the more pageviews are represented. If the pageviews are above a set limit, the lines are drawn in red instead of yellow.

Now isn't that an entirely different approach to website statistics visualisation? I'll soon follow up with a Mac OS X PPC binary of the converter and instructions.

November 23, 2005 Flattr this
CommuniGate Pro List Subscription Frontend

Recently, over on the CGPro List, people were interested in a webfrontend to subscribe/unsubscribe to Email-Lists hosted on a CommuniGate Pro mailserver.

Here is an example perl-script which does handle this and then some.

To use the script, you need a form like this:


<form action="/cgi-bin/ListSubscribe.pl" method=post>
<input type="hidden" name="listname" value="yourlist@example.com">

Your Name: <input type="text" name="realname" maxlength=40>
Company Name: <input type="text" name="company" maxlength=40>
Your Email: <input type="text" name="account" maxlength=40>

<br><b>Action</b><br>
Subscribe: <input type="radio" name="listaction" value="subscribe" checked>  
Unsubscribe: <input type="radio" name="listaction" value="unsubscribe">

<input type="submit" value="Submit">
</form>

Posted in: by seiz | Comments (0)
August 08, 2005 Flattr this
Mighty Mouse - minor glitches

My Mighty Mouse recently arrived and i must say. Very well done. The nipple works perfectly fine - much better than traditional scroll wheels which tend to give you carpal tunnel and such. It is actualy a moving part, not just a sensor. The mouse also has a "real" mechanical click like the previous one. The sensors sense if you intended a right or left click.

Only the side buttons are not perfect for me if i am in nipple mode. Because when my hand is in the scroll position on the nipple, my thumb is way to far back on the mouse to reach the left side button. Apple should have made the side buttons wider (almost double the width). Also IMHO one needs to press too hard onthe side buttons to actualy make them do anything.

Minor grief also with the scrolling speed. Prior to installing the Mighty Mouse Drivers, i could adjust scrolling to a decent speed of my liking. After installing the driver, it got a little slower. Especially horizontal scrolling could be faster.

Even with the normal mouse (is that tiny mouse now), i would have always preferred to adjust the mouse (pointer) speed bejond the limit the OS offered me. Same now with the scrolling speed.

And now for some glitches with the current Apple Driver for the Mighty Mouse:

It doesn't care (or cares too much) about context. Imageine you're looking at a webpage which includes a TEXT AREA with scrolling content. When you move your mouse pointer over the Text Area, the nipple will scroll the text area which is fine - but once you reach the top or bottom of that textarea, the whole webpage suddelny starts scrolling. This is a major usability issue as it makes scrolling to the top or bottom of a text area nearly impossible. IMHO, reaching the top or bottom of a text area should just stop the scrolling - scrolling should NOT continue bejond the boundaries of the text ara. See the movie below for an explanation.


Another weird thing is related to quicktime content. Try loading an MP3 file embeded via the QuickTime Plugin into a Webpage for example (any podcast should do) and move the mouse pointer over the QuickTime Controller displayed in the Browser (I tried with Safari). Now scroll right/left. Here what happens to the volume? But the left/right scroll doesn't actualy change the controllers volume but rather the volume you could adjust via the movie properties in quicktime pro - which could lead to terrible distortion.

Tags:

Posted in: , , by seiz | Comments (0)
April 19, 2004 Flattr this
CommuniGate Pro Healthcheck

So here's how i run my healthcheck against CommuniGate Pro to see if all is alive and well. This Healtchcheck works by using a pair of CGP Servers which email each other on given intervals. If one of the servers doesn't receive such a "ping" email, it alerts me via SMS.

This method - which uses real emails instead of just connecting to the email-servers ports (25 for SMTP for example) - has the benefit, that it can reliably alert you in case of a "stuck" Queue, where a simple connection to port 25 would still work. A stuck Queue is most often caused by a crashed or hung external helper.

This method involves the usage of cron, a shell script to analyze the received "ping" emails and the CGPro PIPE-Module and a perl script to "pipe" the received emails directly to a file on the server's HardDisk instead of a real Mailbox.

For this Tutorial, let us assume you have two CGPro Servers, called: server1.example.com and server2.example.com which handle email for these two domains respectively. Let us also assume, that healthckeck interval of 30 Minutes is good enough for us.

Configuration on the 2 CGPro Servers

You need to configure 2 Special Router Entries on both servers. These will be similar on both of the servers. Add the foollowing line to your Router-Records on both servers:

<pings> = "queue[PROC1] piper.pl"@pipe

The above router entry will result in your server accepting emails to an account named "ping" in the PRIMARY Domain (the licensed domain) of the server. When receiving an email to this account, the server's pipe-module will pass the email to a script called piper.pl.

If you haven't done so yet, you need to configure the CommuniGate PRO Pipe Module using the Web-Admin -> Settings -> -> PIPE. For our tutorial, we assume you have configured the PIPE-Modules of both servers with the application-directory set to: /var/CommuniGate/apps After you configured the CGP Pipe, you need to make sure, that the "apps" directory exists and has the appropriate permissions.

Here's the source of the piper.pl script:

#!/usr/bin/perl
open(OUTLOG, ">apps/pings.out"); 
while (<>){ 
print OUTLOG $_; 
} 
close(OUTLOG);

Create this piper.pl script in /var/CommuniGate/apps and make it executable

chmod +x /var/CommuniGate/apps/piper.pl

For now we're done with configuring CGPro and continue with the shell script we will use to check if the "ping" emails arrive properly. We'll call this script pings.sh and here's the source:

#!/bin/sh -
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /var/CommuniGate/apps
if [ -f pings.out ]; then
        mv -f pings.out pings.out.old
else
        echo "`date +%Y-%m-%d_%H:%M:%S` PIPE Hangs on Server2" | /usr/bin/mail -s "CGP ALERT" someone@pager
fi
The above script will be slightly different on both servers as the text we echo to the mail command will include the server names. E.g. Server2 and Server1. Adjust the server names to your liking and make sure you use your desired email or pager address instead of someone@pager. Store this script also in /var/CommuniGate/apps and make it executable
chmod +x /var/CommuniGate/apps/pings.sh

Now we have all the scripts we need in place and can continue setting up cron to fire all this off at specified intervals.

On Server1.example.com

Edit /etc/crontab and add the following lines:
# send pings to server 2
5,35 * * * * root echo "ping" | /usr/bin/mail -s ping pings@server2.example.com
# check pings received from server2
7,37 * * * * root /var/CommuniGate/apps/pings.sh
These cron entries will send a ping to Server2 every 5 and 35 Minutes past the hour, each day and will check for received pings 2 Minutes later at 7 and 37 Minutes past the hour.

On Server2.example.com

Edit /etc/crontab and add the following lines:

# send pings to server 1
5,35 * * * * root echo "ping" | /usr/bin/mail -s ping pings@server1.example.com
# check pings received from server1
7,37 * * * * root /var/CommuniGate/apps/pings.sh
Same as on Server1 just using a different email address to send the pings to.

Almost Done

This is all there is to this healthcheck setup. But read on!

PLEASE don't email me as soon as you hit some wall when you try to implement this. A day only has 24 Hours - also for me.
So if you run into problems, please read this tutorial again and make sure you really followed it to the point. It took me quite some time to write this down, and i'd really appreciate if you could take at least the same amount of time reading this.
Thanks!

NOTES: Please note, that in the event of a hung Queue, all "ping" mails will PILE up and will get delivered in ONE go, after the Queue is working again. This will probably result in a bunch of PING Mails being sent to your pager. If for instance the Queue on Server1 hangs, it can't receive nor delive ping mails. This it thinks Server2 hangs and Queues up warning emails to your pager (or alert email-address). Once the Queue is working again, you'll get these emails which tell you Server2 is hung where in fact Server1 was hung. But these false alarms are easily identifyable.

Posted in: by seiz | Comments (0)
March 04, 2004 Flattr this
Feature Idea for NetNewsWire

Just had an idea for a feature for NetNewsWire

Lot's of people don't care to include their FULL Posts into their RSS Feeds (only an excerpt). This is bad when you use NNW to read RSS-Feeds on a commute to work and such (being offline).

In that cases, it would be real nifty to have NNW download the HTML-Version linked to a RSS-Post (the one you go to if you click on the Headline/Title in the 3pane-view). It should of course only do so if instruced by a Preference. It should then Cache the HTML-Version incl. images for a given timeframe so we could read that offline.

Having WebKit already in should make this possible.

This will also generally help reading RSS-Posts (not only when offline) as in case people only post excerpts, we could stay in NNW to read the rest of the post in HTML... I hate switching back and forward between NNW and Safari.

Whadayathink?

Posted in: by seiz | Comments (0)
November 03, 2003 Flattr this
CGVirusscan minor Update

The CGVirusscan package has been updated. Due to the change to Perl 5.8 in Mac OS X 10.3, the updatevirex.pl script didn't work anymore.

The updated package contains a fixed version of updatevirex.pl which should run fine on Mac OS X 10.3 and lower.

Posted in: , , by seiz | Comments (1)