text:
SHOUTcast DNAS Server 2
Shoutcast Home | Shoutcast Server (DNAS) | Shoutcast Developer (API) | Shoutcast For Business & Revenue Generation | Shoutcast DSP (encoder Plug-In for Winamp)
- 1 Introduction
- 2 Overview of Features
- 3 Getting Started
- 4 Configuration File
- 4.1 Banning
- 4.2 Client Behaviour
- 4.3 Debugging
- 4.4 Flash Security
- 4.5 Introduction and Backup Files
- 4.6 Logging
- 4.7 Miscellaneous
- 4.8 Networking
- 4.9 Network Buffers
- 4.10 Relaying
- 4.11 Reserved List
- 4.12 Stream Configuration
- 4.13 Web Connection (W3C) Logging
- 4.14 YP Server Behaviour
- 4.15 YP Server Errors
- 5 Administration
- 6 Stream Addresses
- 7 Locale Error (Linux / Mac OS X / BSD)
- 8 Virtual Memory Footprint (Linux / Mac OS X / BSD)
- 9 Maximum Client Connection Limits
- 10 Example Configurations
The purpose of this document is to show you the different configuration options supported by sc_serv along with basic and more advanced example configurations to enable you to get started with using sc_serv and the features it can offer.
The aim of sc_serv is to provide enhanced serving features and also access to the new YP2 infrastructure whilst maintaining as much backward compatibility with previous versions of sc_serv as possible. The new features introduced include:
- Serving multiple streams from a single server instance
- Relaying multiple streams from a single server instance
- Multiplexing all server activity through a single IP port
- SHOUTcast 2 wire protocol support for sources, relays and clients
- Repackaging of SHOUTcast 1 and SHOUTcast 2 data as needed for connected clients
- YP2 infrastructure support
- Real-time metadata and statistic reporting
- Static station id support
- In-stream metadata in standardised xml files
- UTF-8 and international character encoding
- Improved server and stream security
Overview of Features
To take full advantage of the newer features provided as part of the SHOUTcast 2 and YP2 systems then you will need to ensure you are using a compatible version of sc_serv (any version 2 will work) and that you have the required authorisation key to register as a broadcaster on the YP2 directory (see section 3.0).
If you were intending on taking full advantage of the multiplexing and multiple stream support offered as part of sc_serv then you would need to make sure you enable the SHOUTcast 2 options (this is enabled by default with server builds from the end of 2010 if the 'yp2' option in the configuration file is not specified [see section 4.14 ). The reason for needing to enable this support is if you try to do it with the original SHOUTcast 1 protocol then it will not work as the original protocol has no means of expressing multiple streams from a single port due to the lack of an identifier provided for them.
If you are planning on connecting multiple sc_trans instances to sc_serv then you must use the SHOUTcast 2 protocol support so that each sc_trans instance can have a unique identifier which allows for multiple streams to then be provided from a single server. It is still possible for an older source to connect to the server with a number of config options available to support this though functionality will be limited compared to what can be done with a fully supporting SHOUTcast 2 source.
Finally clients connecting to your server do not need to directly support SHOUTcast 2 as sc_serv will repackage the stream data and any related metadata into the correct format the client requests (typically based on the user agent detected by the server).
Getting Started
One of the key aspects of the new YP2 directory infrastructure is an authorisation key which is used to validate your server when it tries to connect to the YP2 infrastructure for any of the station(s) you run. Once this key is obtained, it will be valid for all root servers of the station being broadcast.
This can be done by going to the SHOUTcast Authhash Management page which shows how to do this via the 'Administation Summary' page as long as a valid source has been connected to the server. This process automatically updates your configuration file(s) with the new authhash and if the stream is set to be public then will attempt to get the stream listed in the SHOUTcast Radio Directory.
When using an older SHOUTcast 1 server then you do not need to do this registration and the server will still be able to be listed on the directory but there is not the same level of protection over the stream as is the case with registering it.
Running the Server
The server is able to be run either as a console application or it can be run as service (Windows) or daemon (Linux / Mac OS X / BSD). Detailed below is how to get the server running on the different operating systems supported by it.
The Windows version of sc_serv is designed to run on fully updated and patched versions of Windows 2000, XP, Vista and Windows 7, 8 & 10.
Please note that the Windows versions of sc_serv are built with a dependency against the Microsoft Visual C++ 2008 SP1 Redistributable Package. If sc_serv is unable to start due to a dependency issue then you will need to install the correct version of the package so it can run which depends on the version of sc_serv you are attempting to run:
32-bit version: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2
64-bit version: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ba9257ca-337f-4b40-8c14-157cfdffee4e
Install as a Service
sc_serv.exe install <servicename> <username> <password> <conf>
<servicename> - Name of service
Typically enter this as 'sc_serv' though you can use a different name but you will need to remember it as it is required to be the same when using the 'uninstall' mode.
<username> - User under which to run the service as or '0' for the local system
<password> - Password for user or '0' for the local system or with no password
<conf> - File path to the configuration file
If no file / an invalid file is specified then sc_serv will abort loading.
When run as a service there is not a good sense of a current working directory so requires all paths in the configuration and playlist files to be fully qualified otherwise lookups will fail when sc_serv is run.
To run sc_serv with a configuration file in the same folder as the server as the current system user account you would enter into the console:
sc_serv.exe install sc_serv 0 0 sc_serv.conf
Uninstall the Service
sc_serv.exe uninstall <servicename>
<servicename> - Name of service as used when the service was registered
To uninstall sc_serv assuming it was installed as detailed in the install section above then you would enter into the console:
sc_serv.exe uninstall sc_serv
Run as a Non-Service in the Console
sc_serv.exe <conf>
<conf> - File path to the configuration file (can be relative or absolute)
If no file / an invalid file is specified then sc_serv will abort loading.
Linux / Mac OS X / BSD
Remember to enable the required access on the sc_trans file by doing 'chmod a+x sc_trans' after extracting it from the distribution file otherwise the OS is likely to not run it and show the error message './sc_serv: Permission denied'.
Run as a Daemon
./sc_serv daemon <conf>
<conf> - File path to the configuration file (required in all cases)
If no file / an invalid file is specified then sc_serv will abort loading.
./sc_serv daemon ./sc_serv.conf
When run this should output the following:
'sc_serv going daemon with PID [XXXX]' where XXXX is the <pid> of the process.
End a Daemon
kill -SIGTERM <pid> or kill -15 <pid> or kill -s TERM <pid>
<pid> - The PID of the daemon instance (reported when the daemon started or can be found with 'ps ax | grep sc_serv' as long as sc_serv was the file run otherwise you can just use 'ps ax' if the filename isn't known). Additionally the PID of sc_serv is listed in the log file.
Run as a Non-Daemon
./sc_serv <conf>
<conf> - File path to the configuration file (can be relative or absolute)
If no file / an invalid file is specified then sc_serv will abort loading.
Additional Signals
When run on Linux / Mac OS X / BSD then some additional signals are supported to allow for additional control over the running daemon instance of sc_serv.
The following signals can be used with the 'kill' command (in the manner of your choosing for using the kill command) along with the <pid> of the daemon instance to do one of the following actions:
SIGKILL - Stops sc_trans (also SIGTERM, SIGINT and SIGQUIT will work) SIGHUP - Rotates logfile, w3clog and streamw3clog
The result of SIGHUP is that the current log file contents will be moved into <logfile>_1 e.g. sc_serv_1.log, <logfile>_1 will be moved into <logfile>_2 e.g. sc_serv_2.log and so on for all log files which can be found which match the current log file's name. This is useful if timed to have it create day specific log files.
These signals are not supported by the Windows version of sc_serv which will only respond to the Ctrl + C / Ctrl + Break / console close commands the OS provides.
Configuration File
Here you can find a complete list of all of the configuration options which are provided by sc_serv which ranges from logging to networking configuration and control over the media being used when streaming via the server.
Configuration entries labelled as <MULTI> can be used to set up simultaneous connections to the server or allow for multiple connections from various sources. These are specified by adding _# to the end of the option's name as shown below where # begins with one. If you are only working with a single instance then you do not need to add the _# part as any instances of a configuration option will assume it is for _1.
Note: The <MULTI> system is not hierarchical and all values beyond the default must be specified for all connections. So for example, if you wanted to connect to two servers on the same port you must do:
portbase_1=8080 portbase_2=8080 destip_1=stream.server1.com destip_2=stream.server2.com
Note that you CANNOT do it like this as it leads to not all values being set:
portbase=8080 destip_1=stream.server1.com destip_2=stream.server2.com
The configuration files also allow for comments/notes or options to be disabled by the use of a semi-colon (;) or a left bracket ([) or the hash / pound symbol (#) at the start of a line which can be seen in all of the configuration examples.
Known options in the configuration files are recognised irrespective of the case they are entered in the configuration file so maxuser and MaXuSer will be handled the same way.
Any items found in the configuration file which are not known (as detailed in following sections) or is not processed as a comment will be reported in the following manner:
<date + time> W msg:[CONFIG] Invalid item on line XX
Where <date + time> is the date and time the event happens at and XX is the line in the configuration file where the error has been found to occur at.
banfile : File to store the list of banned IP addresses [Default = sc_serv.ban]
savebanlistonexit : Re-write the 'banfile' on server exit [Default = 1]
If you are using a folder for saving the file into then you need to ensure that the folder already exists as sc_serv will not attempt to the create the folder for you.
Client Behaviour
maxuser : Specify the maximum number of clients allowed to connect to the server [Default = 32]
This is used in conjunction with 'streammaxuser' (see section 4.12) to control the maximum limit on the number of client connections allowed to connect to the server instance.
listenertime : Specify the maximum time in minutes a client can listen to the stream [Default = 0]
A value of zero means there will be no time limit.
autodumpusers : Enable to allow the server to disconnect clients if the source disconnects [Default = 0]
srcip : Specify the server side binding address for sources to connect on [Default = <no value>]
dstip or destip or publicip : Specify the server side binding address for clients [Default = <no value>]
If 'any' or no value is specified then sc_serv listens to all addresses.
If you specify a value for 'dstip / destip' then this will be used by the listen feature on the Administration Pages (see section 5.1) so it can provide a valid stream url in the generated playlist. If 'dstip / destip' is not specified then the server will attempt to auto-generate the IP required for the client to be able to connect. If this fails the generated playlist is likely to return a stream url like http://0.0.0.0:<portbase>/<path>
The IP provided needs to be in a valid format like http://<my-ip> or an address which can be resolved to an IP otherwise the internal lookups done are likely to fail (depends upon the server configuration and OS being used). Also you cannot set srcip and dstip / destip to be the same IP value and if this happens then the server will close. Closing of the server will also happen if the IP cannot be resolved or correctly bound to i.e. server is not there or an invalid value was entered.
titleformat : Specify a string to be used in-place of the default icy-name string being used [Default = <no value>]
urlformat : Specify a string to be used in-place of the default icy-url string being used [Default = <no value>]
In all cases, the default value is for no debug logging for the options listed below.
yp1debug : Enable debug logging of YP connections
yp2debug : Enable debug logging of YP2 connections
shoutcastsourcedebug : Enable debug logging of SHOUTcast source connections
uvox2sourcedebug : Enable debug logging of SHOUTcast 2 source connections
shoutcast1clientdebug : Enable debug logging of SHOUTcast streaming clients
shoutcast2clientdebug : Enable debug logging of SHOUTcast 2 streaming clients
relayshoutcastdebug : Enable debug logging for SHOUTcast relays
relayuvoxdebug : Enable debug logging for SHOUTcast 2 relays
relaydebug : Enable debug logging of common relay code
streamdatadebug : Enable debug logging of common streaming code
httpstyledebug : Enable debug logging of http style requests
statsdebug : Enable debug logging of statistics
microserverdebug : Enable debug logging of common server activity
threadrunnerdebug : Enable debug logging of the thread manager
rtmpclientdebug : Enable debug logging of rtmp clients
admetricsdebug : Enable debug logging of ad metrics (v2.5 and newer)
Flash Security
flashpolicyfile : Name of file containing flash crossdomain policies on the server [Default = crossdomain.xml]
Introduction and Backup Files
Note that intro and backup audio files must precisely match the format and bitrate for the stream! If they do not match, there will be a break in the stream and the listener will be disconnected.
introfile : File to play when a client first connects to the server [Default = <no value>] Note: This is used globally and also is default for stream #1 on DNAS versions greater than 2.0. To apply a specific intro file to a stream, use streamintrofile_X.
streamintrofile_X : File to play when a client first connects to the server [Default = <no value>]
backupfile : File to play if the source disconnects from the server [Default = <no value>] Note: This is used globally and also is default for stream #1 on DNAS versions greater than 2.0. To apply a specific backup file to a stream, use streambackupfile_X.
streambackupfile_X : assigns a specific backup file to a streamID X [Default = <no value>]
streambackupurl_X : assigns a specific backup stream to a streamID X (v2.6.1 feature)
specialfiletmpdir : place to store intro and backup files uploaded by sc_trans [Default = /tmp/ (*nix only)]
maxspecialfilesize : Change the maximum size in bytes of the backup and intro files [Default = 30000000]
log : Enable logging of the servers output [Default = 1]
screenlog : Enable logging of servers output to the console [Default = 1]
If log=0 then this option is ignored due to no logging happening.
logfile : Specify a different logfile to save the logs into [Default = %temp%\sc_serv.log or /tmp/sc_serv.log]
logclients : Enable logging of details about client connections and disconnections made [Default = 1]
If you are using a folder for saving the logs into then you need to ensure that the folder already exists as sc_serv will not attempt to the create the folder for you.
configrewrite : Re-write the 'config file' on server exit [Default = 0]
songhistory : Specify the maximum song history to preserve [Default = 10]
cpucount : Specify the number of cpu's present instead of the calculated number if non-zero [Default = 0]
unique : Specify a substitution string for the '$' character to be used when processing filenames which if specified will set any occurences of '$' to the value set. This will be used in the processing of the following filenames: logfile, introfile, streamintrofile, backupfile, streambackupfile, banfile, streambanfile, ripfile, streamripfile, include, w3clog, streamw3clog
So when 'unique' is changed from '$' to say 'test' then the following happens if 'logfile' is set to '/usr/local/shoutcast/$.log' then this would be converted to '/usr/local/shoutcast/test.log'
include : Specify an additional include file containing settings to be processed from the current point in the main configuration file [Default = <no value>]
You can do multiple calls of this allowing for a basic configuration file with then 'specific' stream configurations set in individual conf files though you need to ensure not to include a reference to the same file in itself.
You can also specify a path with a wildcard for sc_serv to use to find multiple configuration files to include e.g. 'include=stream/*.conf'. This can then be used along with the multiple stream configurations (see section 4.12) and the admin command 'admin.cgi?mode=reload' (see section 5.1) to add / remove / update stream configurations without having to close the server to apply them.
admincssfile : Specify the css styling to be used on the index.html and admin pages [Default = v2]
This can accept the following parameters:
- admincssfile=v1 - Uses the v1 DNAS style
- admincssfile=v2 - Uses the newer SHOUTcast 2 style
- admincssfile=path_to_local_css_file e.g. my_index.css</nowiki>
If using a custom css file, if it does not exist on the first try to load it the server will revert to the default css style. As well the style is cached once loaded so changes require a restart of sc_serv.
faviconfile : Specify the file to be returned as the favicon.ico when the administration pages are being queried by the client's browser [Default = <no value>]
The default behaviour is to use a SHOUTcast themed built-in icon file and support / handling the update of this will entirely depend on the browser.
faviconmimetype : Specify the mime type for actual file to be served in the favicon.ico response [Default = image/x-icon]
Ensure this is correct for the type of image being used so it is valid.
hidestats : Specify if the publically accessible stats?sid=# page can be accessed or if it is only available via the private administration pages [Default = 0]
robotstxtfile : Specify the file to be returned as the robots.txt when queried by search engines, etc to attempt to prevent incorrect access to the server's pages which may cause invalid client connections [Default = <no value>]
The default behaviour is to return a robots.txt reponse indicating not to look at any of the server's pages i.e.
- User-agent:*
- Disallow:/
namelookups : Enable to allow reverse DNS look-ups on incoming IP addresses [Default = 0]
portbase : Specify the port which clients and sources need to use to connect to the server [Default = 8000]
SHOUTcast 1 sources are only able to connect to 'portbase + 1'.
autodumpsourcetime : Specify how long before an idle source is dumped from the server (in seconds) [Default: 30]
A value of zero means there is no timeout of an idle source. Also if you set this too low then it is likely that valid sources will fail to connect during the initial stages of a source connection.
maxheaderlinesize : Specify the maximum size of an HTTP header line [Default = 2048]
maxheaderlinecount : Specify the maximum header lines in an HTTP style exchange [Default = 100]
adminpassword : Specify the administrator password for accessing the remote server features [Default = <no value>]
password : Specify the password for broadcasters when connecting to the server [Default = <no value>]
This matches the 'uvoxauth' value in the sc_trans configuration file (see sc_trans.txt - section 3.11).
Network Buffers
buffertype : Specify whether the buffer size is fixed [0] or adaptive [1] [Default = 0]
adaptivebuffersize : Specify the buffer size in seconds if buffer is set to adaptive [Default = 1]
fixedbuffersize : Specify the buffer size in bytes if the buffer is set to fixed [Default = 1048576]
bufferhardlimit : Specify the maximum buffer size in bytes which it can never go above [Default = 16777216]
allowrelay : Enable to allow a relay to connect to the server [Default = 1]
allowpublicrelay : Enable to allow relays to list themselves in the YP directory [Default = 1]
relayreconnecttime : Specify how many seconds to wait to reconnect on a relay failure [Default = 30]
Setting this to 0 will disable attempts for the relay to reconnect.
relayconnectretries : Specify the number of times relays are attempted to be connected to if it is initially unable to connect [Default = 3]
This generally applies only to YP1 connections and is related to the actual attempts to make and get a http response from the YP server.
maxhttpredirects : Specify the maximum number of times we can redirect when relaying [Default = 5]
<Legacy Options>
relayport : Port of the source to use for the relay [Default: 80]
relayserver : Url of the source to relay [Default = <no value>]
Using the stream configuration options (see section 4.12) is the preferred method of setting up a relay. These options are only provided as a means for loading legacy configuration files. If found then these are mapped to 'streamrelayurl_1'.
Reserved List
ripfile : File to store the list of reserved IP addresses [Default = sc_serv.rip]
saveriplistonexist : Re-write the 'ripfile' on server exit [Default = 1]
riponly : Only allow connections to be made from reserved IP addresses [Default = 0]
If you are using a folder for saving the file into then you need to ensure that the folder already exists as sc_serv will not attempt to the create the folder for you.
Stream Configuration
Important Note: If you do not specify an identifier (_#) on the end of the above options then it will be treated like _1 (effectively acting like SHOUTcast 1). Additionally, _0 is not a supported identifier and will be mapped to _1.
requirestreamconfigs : Only allow sources to connect if a stream configuration has been set in your configuration file [Default = 0]
With this enabled, you will need to ensure that any sources have their configuration details setup to match those in sc_trans's configuration, in particular the 'uvoxstreamid' value with sc_trans (see sc_trans.txt - section 3.11).
<MULTI> (one set for each stream configuration):
streamid : Specify the numerical identifier of the stream for control or referencing the stream configuration. This can only be a numeric value from 1 to 2147483647.
If you use multiple stream configurations then you will need to ensure the _X part is specified and correct for each stream configuration group e.g. streamid=1 streampath=/live or streamid_1=1 streampath_1=/random_mountpoint streamid_2=2 streampath_2=/another_mountpoint
streamauthhash : The authorisation key needed for YP2 directory registration.
This is a requirement for using the YP2 system and without it you will not be able to successfully connect to the YP2 directory (see section 3.0). This can be used for multiple streams you are providing or can be different (as long as valid) so you can infact provide multiple stations from the same server if desired.
streampath : Specify the path clients need to use to access the stream
If a / is not specified on the start of the string then the server will add it to the generated path in playlist entries or other places as required so http://<serverurl>/<streampath> will work so clients are able to connect. If this is not specified then http://<serverurl>/stream/<streamid>/ will be used for client access and in generated playlist entries so that it will always be possible for clients to connect to the server somehow. See section 6.0 for more information on the server's stream address support.
Note: streampath is the mountpoint, e.g. streampath_1=/mystation would result in ip:port/mystation Do NOT specify a streamurl as streampath as this will result in an error.
streamrelayurl : Specify the full url of source to relay (if this is a relay).
Make sure if you use this that the full url is entered and that it is the url which clients would connect to for the stream to be relayed.
streammaxuser : Specify the maximum number of clients allowed to connect to the stream [Default = 0] If set to zero, not specified or higher than 'maxuser' then the value set for 'maxuser' (see section 4.2) will be used for all known streams.
Changing this to a value between zero and 'maxuser' will enforce the user connection limit for the specified value in the stream configuration e.g.
streammaxuser_1 = 8 maxuser = 32
This allows a total of 32 connections to the server but specifies the maximum number of connections to the first stream configuration is 8.
With the following stream configuration
streammaxuser_1 = 64 maxuser = 32
This allows a total of 32 connections to the server but with a per stream limit above the maximum means the maximum number of connections to the first stream group will be 32. However this also depends upon any other stream configurations and their limits as to whether 32 clients will be able to connect to this stream configuration.
Finally unless a valid stream configuration is specified then this value will only be applied to the first stream configuration found i.e. there is a need to specify a streamid_XXX for streammaxuser_XXX (where XXX is the stream identifier of the stream configuration group.
streamadminpassword : Specify the administrator password for accessing the remote server features for the specified stream configuration group. If this is not specified then 'adminpassword' will be used.
streampassword : Specify the password for broadcasters when connecting to the server for the specified stream configuration group. If this is not specified then 'password' will be used.
This matches the 'uvoxauth' value in the sc_trans configuration file (see sc_trans.txt - section 3.11).
streampublicserver : This allows you to override the public flag received from the source when a connection is being made to the YP directory. If this is not specified or is set to empty then 'publicserver' will be used.
streamallowrelay : Enable to allow a relay to connect to the server. If this is not specified then 'allowrelay' will be used.
streamallowpublicrelay : Enable to allow relays to list themselves in the YP directory. If this is not specified then 'allowpublicrelay' will be used.
streamriponly : Enable to only allow connections to be made from reserved IP addresses. If this is not specified then 'riponly' will be used.
streamautodumpsourcetime : Specify how long before an idle source will be dumped from the server (in seconds). A value of zero means there is no timeout of an idle source. If not specified then 'autodumpsourcetime' will be used.
streamautodumpusers : Enable to allow the server to disconnect clients if the source disconnects. If not specified then 'autodumpusers' will be used.
streamlistenertime : Specify the maximum time in minutes a client is allowed to listen to the stream. A value of zero means there will be no time limit. If not specified then 'listenertime' will be used.
streamintrofile : File to play when a client first connects to the server. If this is not specified then 'introfile' will be used.
streambackupfile : File to play if the source disconnects from the server. If this is not specified then 'backupfile' will be used.
streammovedurl_X : redirects a permanently stopped or moved stream to a different working stream url.
streambanfile : File to store the list of banned IP addresses. If this is not specified then 'banfile' will be used.
streamripfile : File to store the list of banned IP addresses. If this is not specified then 'ripfile' will be used.
streamw3clog : File to store the web connections logs into. If this is not specified then 'w3clog' will be used.
DNAS v2.6.1 and newer
sslCertificateFile : For https:// streams, specify .crt file e.g. sslCertificateFile=/path/to/ssl.crt
sslCertificateKeyFile : specify key file, e.g. sslCertificateKeyFile=/path/to/key.pem
Put the whole certificate chain in the .crt file, and only the key in the .key file SSL Cert needs to be assigned to a DNS e.g. stream.mysite.com Be sure to also add destip=stream.mysite.com and/or publicip= and alternateports=443 lines to DNAS config file.
Note: SSL Support is for Linux-only, not Windows.
Web Connection (W3C) Logging
w3cenable : Enable logging of web connections to describe the duration a client has listened to a specific title [Default = 1]
w3clog : File to store the web connections logs into [Default = sc_w3c.log]
If you are using a folder for saving the log into then you need to ensure that the folder already exists as sc_serv will not attempt to the create the folder for you.
webclientdebug : Enable logging of web client connections [Default = 0]
YP Server Behaviour
uvoxcipherkey : Specify the key used to obfuscate the initial handshaking with the source [Default = foobar]
This is a SHOUTcast 2 only feature and it matches the 'djcipher' value in the sc_trans configuration file (see sc_trans.txt - section 3.3).
Only change this if you really need to do so as not all SHOUTcast 2 clients will allow you to edit this value from the default value. If using the Source DSP plug-in then see dsp_sc.txt - section 5.0 for details on how to change the plug-in to use a differnet value.
metainterval : Specify the metadata transmission interval in bytes [Default = 8192]
YP1 only
yp2 : Enable to use the SHOUTcast 2 protocol and related server features for access to the YP2 directory [Default = 1]
If this is enabled and not all of the required values are set then the server will throw an error and will abort from its start-up attempt. It should be indicated what needs to be set to allow the server to start with this set.
Additionally if there is an issue then the server will report an error in its log ouput of 'Connection attempt failed. YP2 error code is XXX (<message>)' where XXX is one of the following error codes and <message> is a message set in the error response to indicate a bit more what the error relates to. All current error codes can be found here.
ypaddr : Allows you to specify a different YP server if required [Default = yp.shoutcast.com]
ypport : Allows you to specify the port of the YP server if required [Default = 80]
ypPath : Allows you to specify the path to YP2 services on the server [Default = /yp2]
ypTimeout : Specify the timeout interval in seconds for requests made to the YP server [Default = 60]
ypmaxretries : Specify the maximum number of times a YP request will be attempted [Default = 10]
This generally applies only to YP1 connections and is related to the actual attempts to make and get a http response from the YP server.
ypreportinterval : Specify the maximum time in which the YP must have contacted our server in seconds [Default = 300]
ypminreportinterval : Specify the minimum time in which the YP can contact our server in seconds [Default = 10]
publicserver : This allows you to override the public flag from the connected source when a connection is being made to the YP directory [Default = default] This can be one of the following values:
default - use the flag provided by the source always - force the source to be public never - never allow the use the flag provided by the source
When using sc_trans this would match with the 'public' value (see sc_trans.txt - section 3.8).
YP Server Errors
If not all of the required values are set for a public listing then the DNAS server will throw an error and will abort its attempt to be listed in the Directory. It should be indicated the error is with one of the error codes provided below so it can be resolved.
Additionally if there is an issue during Directory updates or removals, then the server will report an error in its log ouput as one of the following error codes and <message>.
Status Code Status Message 400 Generic error (covers all other cases usually from internal failures) 457 Unrecoverable error while updating station information - DNAS restart required. 470 Invalid authorization hash 471 Invalid stream type (could be a bad bitrate or mime type) 472 Missing or invalid stream url 473 Server unreachable by YP 474 Relay url does not exist 475 Invalid server ID 476 Invalid max clients (value out of range or missing) 477 Terms of Service violator. You are being reported. 478 Incompatible protocol. 479 Streams requiring authorization are not public and cannot list here. 480 Cannot see your station/computer (URL: <streamurl>) from the Internet, disable Internet Sharing/NAT/firewall/ISP cache. 481 Cannot verify server since all listener slots are full. Please wait. 482 This network has been permanently banned due to a previous violation of the SHOUTcast directory terms of service 483 Invalid listeners (value out of range / missing) 484 Invalid avglistentime (value out of range / missing) 485 Invalid newsessions (value out of range / missing) 486 Invalid connects (value out of range / missing) 487 Request & Response objects are null 488 Request xml is null 489 YP command not specified 490 Generic error, while doing xml parsing 491 Generic error, while reading xml request 492 Error closing buffer / HTTP connection 493 Internal error - unable to acquire data source 494 Error updating information - DNAS restart required 495 Error acquiring station ID - DNAS restart required 496 Error converting data type 497 Inconsistent stream behaviour 498 Invalid Request (Invalid request received) 499 Error while getting information
With sc_serv there are administration pages available for accessing and controlling the server remotely which allows you to monitor and control clients connected to the stream (or not if banning them). These pages can now be accessed through a summary page at /index.html which will show a link to any active stream(s) or you explicitly access them via the /index.html?sid=# path where # is the ID of the stream (see section 4.12 for more about using 'streamid') e.g.
If no sid or an invalid sid is passed then you will be taken to the summary /index.html and this will be applied even if you were on a page with a known ID and then enter an invalid sid or remove it purposefully.
Administration Pages
As part of the administrative features provided there are the following pages where # is the streamid you want to use). This is not a complete list but should cover all of the pages which allow for a direct http url to be entered to get an administation action to work. The ban and reserve IP actions require input fields and do not map to direct sends.
Public Pages
index.html - Shows a summary page with links to get to any active stream(s)
currentsong?sid=# - Returns the current song title or a null response
nextsong?sid=# - Returns the next song title (if known) or a null response
currentsong and nextsong both provide a UTF-8 encoded string of the song title otherwise it will return effectively no response (ignoring the http header).
nextsongs?sid=# - Returns in an xml format the next song title(s) (if known) to be played when using a compatible v2 stream source. See section 5.2 for more details on the format of the xml returned).
index.html?sid=# - Shows current status of the specified stream
played.html?sid=# - Song history of specified playing history
- or
listen.pls?sid=# - Provides a PLS for file clients to use to connect to the stream.
- or
listen.m3u?sid=# - Provides a M3U file for clients to use to connect to the stream.
listen.asx?sid=# - Provides a ASX file for clients to use to connect to the stream.
With the listen pages you either need to have specified an IP with 'dstip / destip' (see section 4.2) or leave empty and allow the server to attempt to auto-generate the IP required for the client to be able to connect. If this fails the generated playlist is likely to return a stream url like http://0.0.0.0:<portbase>/<path>
home.html?sid=# or home?sid=# - Opens in a new window or tab (depending on the client browser) the 'streamurl' as specified by the stream source. If this is not set then the client will be redirected to the shoutcast.com main page.
stats?sid=# - Provides an xml response for public accessibility which matches the private version from admin.cgi?sid=#&mode=viewxml&page=1. This is the modern version of the 7.html page as provided by the legacy v1 servers. See section 5.2 for information on what is provided in the xml response.
Private Pages
By passing &pass=password where password is the 'adminpassword' (see section 4.8) then it is possible to directly access the administration page(s) required. As well the base64 encoded version of the password can be passed as long as it is prefixed with YWRtaW46 e.g. &pass=changeme is the same as &pass=YWRtaW46Y2hhbmdlbWU=
admin.cgi - Shows the an overal summary admin page for the streams provided by the server including direct links to certain information pages (see notes about the 'admin.cgi?sid=#&mode=viewxml' command for more info)
- or
admin.cgi?sid=# - Shows the base admin page for the stream and information
- or
If 'title' is not empty then it will be set as the current song title for the stream specified until the next use of this action or the next title update is received from the source. Specifying '&type=xml' will process the value of 'song' as v2 XML metadata instead of a v1 title.
admin.cgi?sid=#&mode=viewlog - View logfile
admin.cgi?sid=#&mode=viewlog&viewlog=tail - View logfile (tailing)
The tailing option keeps adding additional log entries to the end of the view whilst the view is active. As well any html or xml data in the log will not be shown correctly in the view as < > & are not escaped to their html entities. See section 4.6 for more information on the log file.
admin.cgi?sid=#&mode=viewban - Ban view which matches the ban file and allows you to ban a single IP or an IP range from it (see section 4.1 for more info on the file)
admin.cgi?sid=#&mode=viewrip - Reserved IP list that matches the rip file (see section 4.11 for more info on the file)
admin.cgi?sid=#&mode=art or admin.cgi?sid=#&mode=art&art=playing - Displays the artwork SHOUTcast v2 compatible clients may be able to display if the SHOUTcast v2 source does provide it.
The artwork mode is primarily intended as a debugging option to make it possible to see what (if anything) has been provided by the SHOUTcast v2 source. If no '&art=' is specified or not a matching option then the stream artwork (if available) will be shown. If no '&art=playing' is specified then this will show the playing file's artwork (if available).
admin.cgi?sid=#&mode=viewxml or admin.cgi?sid=#&mode=viewxml&page=# - Returns an xml output of the current stream information
If page is not set or is outside of the range zero to 6 then this will output all of the information as the standard viewxml action does. Otherwise this only display information depending on the value assigned to page which can be from 1 to 6 which maps as follows: 1 - Server Summary (this is the same as using the public stats?sid=# action) 2 - Not used (previously used for Webdata Stats but not in current builds) 3 - Listener Stats 4 - Song History 5 - Stream Metadata (if supported by the source otherwise can just be title) 6 - Stream Configurations (displays all of the known stream configurations though this is only available on admin.cgi) If accessing the standard viewxml or the listener stats (page = 3), you can also send '&iponly=1' which will filter the listener information (if there are any) to just output the IP instead of the additional information provided normally.
admin.cgi?mode=resetxml&sid=# - Will flush the held stream information to refresh it
admin.cgi?sid=#&mode=kicksrc - Will allow you to kick the currently connected source for the specified stream.
admin.cgi?sid=#&mode=unripdst&ripdst=<IP> - Where <IP> is the IP to reserve (see section 4.11 for more information).
admin.cgi?sid=#&mode=unbandst&bandst=<IP>.0&banmsk=0 - Where <IP> is the first 3 parts of a subnet IP to unban.
admin.cgi?sid=#&mode=unbandst&bandst=<IP>&banmsk=255 - Where <IP> is that of a single IP to unban.
admin.cgi?mode=rotate or admin.cgi?mode=rotate&files=log|w3c - This will rotate the log files set via the 'logfile', 'w3clog' and 'streamw3clog' options.
If &files is specified then passing log or w3c will allow you to only rotate one type of file otherwise both will be rotated by this command.
admin.cgi?mode=reload or admin.cgi?mode=reload&force=1 - This reloads the stream configuration details in the main configuration file the server used when started and is only available on the admin summary page and so can only be run by the master administrator password.
This command works on the server as a whole (hence no sid parameter) and it will add or remove or update any stream configuration as applicable which will cause any connected sources and clients to be kicked as applicable (usually if a stream configuration was removed). This will recognise any configurations included via 'include' entries so you can have 'include=stream/*.conf' in your main configuration file which the server can then use to detect different stream configurations. If '&force=1' is passed then the reload will treat the updating of active stream configurations in the same manner as a stream configuration removal instead of trying to update compatible stream configuration details without resetting the stream e.g. not increasing the 'streammaxuser' when it could be increased. The following configuration options are updated when using this command: password or streampassword (*) streamadminpassword (#) requirestreamconfigs streamid streamauthhash streampath streamrelayurl streammaxuser streampublicserver streamallowrelay streamallowpublicrelay streamriponly streamautodumpsourcetime streamautodumpusers streamlistenertime streamintrofile streambackupfile streambanfile streamripfile (*) This will depend upon the current values versus the new configuration values (#) The master 'adminpassword' can only be changed after a restart of the server
XML Responses
As detailed in the previous sections, some of the administration actions will provide the information in an xml response. For information on what is actually returned in these xml responses see sc_serv2_xml_responses.txt.
Stream Addresses
Clients connecting to the streams provided by sc_serv are able to so in a number of ways depending upon how the streams have been configured and also depending upon the number of streams you have available.
The two main ways for a client to connect to a stream are as follows:
<serverurl> is typically formed as http://dstip:portbase (see sections 4.2 and 4.8) <streamid> is the 'streamid' set from the stream configuration (see section 4.12) <streampath> is the 'streampath' set from the stream configuration (see section 4.12)
If the client attempting to connect to the server instance does not specify <streampath> or <streamid> in the stream url it attempts to access or if only one stream is provided then the server will usually default to the first stream it knows about and will allow the client to make a valid connection (though this is not guaranteed to happen).
This handling of the stream addresses provided is something to keep in mind especially if you are providing multiple streams as this will allow you to provide different addresses for certain clients to be able to use a specific stream e.g. if you wanted to have mobile clients connect to a lower bandwidth stream then you could direct them to '<serverurl>/mobile'
The server options available for controlling how the stream's path is specified can be seen in section 4.12 which also details the equivalent values needing to be set in the sc_trans configuration if you use sc_trans to provide a source to sc_serv.
Locale Error (Linux / Mac OS X / BSD)
If you receive the following error then you have a locale related issues:
terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort trap
If this happens then you need to set the 'POSIX' locale in your terminal's environment values. If this does not happen then everything is fine or you are using a newer version of sc_serv from the end of 2010 which should no longer exhibit this issue.
export LC_ALL=POSIX
setenv LC_ALL POSIX
Mac OS X:
export LC_ALL=POSIX
You can test to see if this has worked by checking the shell command "locale":
Virtual Memory Footprint (Linux / Mac OS X / BSD)
Due to how sc_serv works it will create a large number of threads which may become an issue due to the default virtual memory stack allocation per thread potentially being large (typically 10MB per thread). For most people this should not be an issue as the memory is not really allocated unless it is used. If however if you have a resource constrained system or if you plan on running many copies of sc_trans then you could potentially run out of virtual memory.
The default thread allocation can be reduced by issuing a "ulimit" command before running sc_trans and in the example reduces it to 512KB per-thread e.g. ulimit -s 512
Maximum Client Connection Limits
In general, there are inherent limits on the maximum number of client connections which may be made to a running instances of sc_serv which can either be set by configuration limits e.g. 'maxuser', Operating System limits or bandwidth limits being reached.
The first two are easy to resolve whereas the last (bandwidth limits) is something which will usually require obtaining additional hosting or paying for more available bandwidth.
If reaching the Operating System limit, this is usually indicated by the maximum number of clients never going above a fixed value even if there is the bandwidth and the server has been configured to go higher. This usually appears as around 1016 maximum connections (though this can vary a bit)
If using a non-Windows Operating System then you can use the 'ulimit -n xxxx' command to change the upper limit from what is already set which can be found from just 'ulimit -n' e.g. to change the limit to 4096 connections you would run ulimit -n 4096
If using a Windows Operating System then there isn't any real way to change such things due to the OS hopefully being configured with limits that will not be reached when using sc_serv. If in doubt then consult the Microsoft support documentation for the OS used.
Example Configurations
Include as part of the sc_serv installation are a number of example configurations to get things started with using some of the features of the server. The provided examples are:
sc_serv_basic.conf sc_serv_public.conf sc_serv_relay.conf sc_serv_simple.conf
All of the configuration examples are documented and will relate back to details in this file appropriately. You will need to change some details in these example files or to obtain any applicable authorisation keys for the setup you are making (see section 3.0). In all cases the examples are designed to work from the same install folder as sc_serv.
Remember these examples are a way to get you up and running faster though you are still likely to have to adjust things depending upon the systems you are using and how you want to manage your sources and server connections which are covered in previous sections.
Additionally if you are not happy with editing the files or find it still too confusing then you can use the configuration builder which (if installed) can be found in the 'config_builder'. Open 'config_builder.html' in your browser and then use this graphical tool to setup a configuration file for the server (and additionally the transcoder).
This is the base configuration from which the other configuration examples are based and this will get a sc_serv instance running as a local setup with no connection made to the YP directory.
This configuration file changes the required options in the sc_serv_basic configuration to get a sc_serv instance running as a public setup with a connection made to the YP for listing the stream in the directory. This shows the use of the 'include' option (see section 4.7) and how specifying a configuration option twice uses the last value found.
This configuration file changes the required options in the sc_serv_public configuration to get a sc_serv instance running as a public setup with a source coming in from a relay server providing a SHOUTcast 2 stream.
This configuration file can be included in any other configuration files to allow you to get debug logging output when trying to investigate any issues you may be experiencing.
Use this if you just need to get a very basic server running or are impatient or are struggling to get it running despite the previous example configurations.
This configuration file is designed to be used just as is and is the simplest form of the configuration file you can have which will allow you to get a running server to appear on the YP. This works on using the default settings of the server though does change some of the file paths inorder to fit in with the existing setup as used in the other examples.
All you need to do when using this configuration file is to enter your authorisation key in the 'streamauthhash' line e.g. if your authorisation key is 123456789 then you change streamauthhash=<enter_your_auth_key_here> to streamauthhash=123456789 and save the file.


text:
I think it's a terrible pity that the custom has long fallen out of fashion.
Whatever your politics, you cannot deny that the United States is in the throes of a painful identity crisis. Argument is rife as to what it means, exactly, to be an American.
This is not a political blog–heaven knows I don't have the brains or stomach for that*–but on this one day, I humbly suggest that as we collectively search for an answer we might begin by reviving the old custom.
Turn off your cell phones, your laptops, your iPads, your iPods, your Blackberries and your television, and read the Declaration out loud to your family, your friends, your cat–whoever's there. You may feel somewhat akin to a cornball for the first few lines (beautiful as they are) but the feeling (I promise you) will pass. (If you knit or crochet, feeling somewhat akin to a cornball is terra cognita, anyhow.)
As we try to reach a common understanding of who Americans are, and what America is, we can't do better than to return to the source. And we are singularly fortunate, as a nation, to have the source still with us.
Do you believe we're all created equal? Do you believe we are all entitled to certain unalienable (go look it up) rights, including Life, Liberty and the Pursuit of Happiness?
If so, perhaps we can agree–at least for the length of time it will take to read the Declaration aloud–that being American is less about one's color, or the color of one's state, than it is about buying into these very basic ideas.
Take it away, Mister Jefferson.
When in the Course of human events it becomes necessary for one people to dissolve the political bands which have connected them with another and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.
We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness. — That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, — That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn that mankind are more disposed to suffer, while evils are sufferable than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security. — Such has been the patient sufferance of these Colonies; and such is now the necessity which constrains them to alter their former Systems of Government. The history of the present King of Great Britain is a history of repeated injuries and usurpations, all having in direct object the establishment of an absolute Tyranny over these States. To prove this, let Facts be submitted to a candid world.
He has refused his Assent to Laws, the most wholesome and necessary for the public good.
He has forbidden his Governors to pass Laws of immediate and pressing importance, unless suspended in their operation till his Assent should be obtained; and when so suspended, he has utterly neglected to attend to them.
He has refused to pass other Laws for the accommodation of large districts of people, unless those people would relinquish the right of Representation in the Legislature, a right inestimable to them and formidable to tyrants only.
He has called together legislative bodies at places unusual, uncomfortable, and distant from the depository of their Public Records, for the sole purpose of fatiguing them into compliance with his measures.
He has dissolved Representative Houses repeatedly, for opposing with manly firmness his invasions on the rights of the people.
He has refused for a long time, after such dissolutions, to cause others to be elected, whereby the Legislative Powers, incapable of Annihilation, have returned to the People at large for their exercise; the State remaining in the mean time exposed to all the dangers of invasion from without, and convulsions within.
He has endeavoured to prevent the population of these States; for that purpose obstructing the Laws for Naturalization of Foreigners; refusing to pass others to encourage their migrations hither, and raising the conditions of new Appropriations of Lands.
He has obstructed the Administration of Justice by refusing his Assent to Laws for establishing Judiciary Powers.
He has made Judges dependent on his Will alone for the tenure of their offices, and the amount and payment of their salaries.
He has erected a multitude of New Offices, and sent hither swarms of Officers to harass our people and eat out their substance.
He has kept among us, in times of peace, Standing Armies without the Consent of our legislatures.
He has affected to render the Military independent of and superior to the Civil Power.
He has combined with others to subject us to a jurisdiction foreign to our constitution, and unacknowledged by our laws; giving his Assent to their Acts of pretended Legislation:
For quartering large bodies of armed troops among us:
For protecting them, by a mock Trial from punishment for any Murders which they should commit on the Inhabitants of these States:
For cutting off our Trade with all parts of the world:
For imposing Taxes on us without our Consent:
For depriving us in many cases, of the benefit of Trial by Jury:
For transporting us beyond Seas to be tried for pretended offences:
For abolishing the free System of English Laws in a neighbouring Province, establishing therein an Arbitrary government, and enlarging its Boundaries so as to render it at once an example and fit instrument for introducing the same absolute rule into these Colonies
For taking away our Charters, abolishing our most valuable Laws and altering fundamentally the Forms of our Governments:
For suspending our own Legislatures, and declaring themselves invested with power to legislate for us in all cases whatsoever.
He has abdicated Government here, by declaring us out of his Protection and waging War against us.
He has plundered our seas, ravaged our coasts, burnt our towns, and destroyed the lives of our people.
He is at this time transporting large Armies of foreign Mercenaries to compleat the works of death, desolation, and tyranny, already begun with circumstances of Cruelty & Perfidy scarcely paralleled in the most barbarous ages, and totally unworthy the Head of a civilized nation.
He has constrained our fellow Citizens taken Captive on the high Seas to bear Arms against their Country, to become the executioners of their friends and Brethren, or to fall themselves by their Hands.
He has excited domestic insurrections amongst us, and has endeavoured to bring on the inhabitants of our frontiers, the merciless Indian Savages whose known rule of warfare, is an undistinguished destruction of all ages, sexes and conditions.
In every stage of these Oppressions We have Petitioned for Redress in the most humble terms: Our repeated Petitions have been answered only by repeated injury. A Prince, whose character is thus marked by every act which may define a Tyrant, is unfit to be the ruler of a free people.
Nor have We been wanting in attentions to our British brethren. We have warned them from time to time of attempts by their legislature to extend an unwarrantable jurisdiction over us. We have reminded them of the circumstances of our emigration and settlement here. We have appealed to their native justice and magnanimity, and we have conjured them by the ties of our common kindred to disavow these usurpations, which would inevitably interrupt our connections and correspondence. They too have been deaf to the voice of justice and of consanguinity. We must, therefore, acquiesce in the necessity, which denounces our Separation, and hold them, as we hold the rest of mankind, Enemies in War, in Peace Friends.
We, therefore, the Representatives of the united States of America, in General Congress, Assembled, appealing to the Supreme Judge of the world for the rectitude of our intentions, do, in the Name, and by Authority of the good People of these Colonies, solemnly publish and declare, That these united Colonies are, and of Right ought to be Free and Independent States, that they are Absolved from all Allegiance to the British Crown, and that all political connection between them and the State of Great Britain, is and ought to be totally dissolved; and that as Free and Independent States, they have full Power to levy War, conclude Peace, contract Alliances, establish Commerce, and to do all other Acts and Things which Independent States may of right do. — And for the support of this Declaration, with a firm reliance on the protection of Divine Providence, we mutually pledge to each other our Lives, our Fortunes, and our sacred Honor.
*I am so averse to political argument in social settings that I almost shut off the comment feature for this entry–until it struck me that this would be outrageously undemocratic. But hear this: keep your comments civil. And I mean on both sides. No cracks about anybody–not Sarah P., not Barack O., not anybody. If anybody starts anything, I'll delete comments with a tyranny so ruthless that it'd make George III clutch his stars and garters.

subset: commoncrawl


text:
Release version 0.0.30
How to register an account on GitLab. To prevent spam, new accounts are locked until approved by an admin or the approver bot. You can also file an unlock request to expedite access.
Support: mw:GitLab, how to host a project on GitLab, #wikimedia-gitlab on libera.chat, #GitLab on Phabricator.


text:
Defense Distributed, an organization best known for advocating open-sourced 3-D printing of guns, says its founder, Cody Wilson, is now a federally licensed gun manufacturer and dealer.
Wilson sent the application to the Bureau of Alcohol, Tobacco, Firearms and Explosives in October. According to Ars Technica, the process, which usually can take as little as 60 days, took about six months for Wilson.
Defense Distributed has been creating prototypes of 3-D guns and magazine clips for months. In February, the project released a video displaying the success of a new magazine that holds 30 bullets for an AR-15 rifle. In total the magazine fired 342 bullets, Wired reported. The group fired "227 of those rounds using full automatic fire, while swapping out the barrels on the rifle to keep them cool," Wired said.
This is an improvement compared to previous testing.
Currently, the website states:
"Is giving you a blueprint for a house the same as building that house for you?
"Our project is to test and share .STL [3-D file format] designs through file sharing services like BitTorrent, not to print guns for people. No prototype we print or test will ever be sold or given to another person. And nothing we create as a part of this project is for sale."
But, that doesn't mean selling weapons isn't an option for the future. Wilson recently applied for an "add-on" to the Federal Firearms License, known as a Class 2 Special Occupational Taxpayer (SOT) that would allow Wilson and Defense Distributed to manufacture a broad range of guns.
The federal firearms license allows Wilson to sell and distribute firearms. The license requires dealers to keep a detailed record of all firearms created or sold, according to the ATF website. Ars Technica reports that the SOT add-on would allow the group to start selling guns, which would help offset printing costs.
Maureen Chowdhury is an intern on NPR's National Desk.
Copyright 2021 NPR. To see more, visit https://www.npr.org.


text:
Moving Company 44325 Akron, OH
At some point we all move in our lifetime, sometimes it's because of a new job offer in another state. Other times in can be because you are going to collage or finishing college. And in most cases you bought a new home and you have the joy of moving in to your first place or dream place. Whatever your reason for moving in 44325 VMoving is here to help you out. We like to provide local and well respected movers to our clients in the 44325 area.
Gaudie - Akron, OH
"Always a pleasure to move with this company, I have moved with them twice now and both times were faultless. The level of service is always top tier and the price point is hard for other companies to match. I will undoubtedly be more than happy to recommend this company to anyone who is interested."
Local Movers - Akron, OH
"I live in a 5 bedroom ranch style home and I had to coordinate this move with me not being there and having my son and daughters help me move. I relayed to the moving dispatcher to keep me in the loop about the move while coordinating with my kids and they did every step of the way. Lucky for me I have a great family and this fantastic moving company did a grand job."
If you are looking to put together a move then we can help you build a moving package that will impress you at a price that will suit your needs. You will be able to tailor the move anyway you want in 44325 it's that simple. Find Moving Company 44325.
Simple Move
For a simple move we have movers who supply a truck, it's our most popular asked for move in 44325 and it covers a couple of your licensed movers who will do a great job of moving your goods. We suggest this type of move if you a have a smaller move.
Simple Plus Move
The next type of move that is popular is pretty much the same as the simple move but you get an extra person in the moving crew helping. So 3 guys will be working to get the job done which speeds things up and it helps for a slightly bigger place in 44325.
Medium Move
We recommend this for large places in 44325 that has allot of stuff that needs to be moved. Because it will be our biggest truck and a crew of 4 to 5 guys working hard to get everything on the truck as quick and safe as they can for you it is the best choice.
Large move
For moves of considerable size in 44325 that will require 2 or 3 trucks and packing and boxing services this is our highest package. It will cover everything and have a large crew of guys working around the clock if they have to make sure everything is safely loaded on the vehicle and secure. You will also have a flat rate price as its always best on jobs that could stretch around the clock or sometimes even over a few days if they are that large.
Specialist move
We consider piano moving a specialist move because of the weight and size of the item and the care that is needed to transport and relocate pianos. All of our movers are trained in the correct way of how to lift and relocate a piano without causing it damage. They have managed to get grand pianos up to penthouses and even upright pianos up flights of stairs with ease. It's all in the experience and training of our staff members located in 44325.
Find Movers 44325 Near You.
Movers by CITY:
• Akron • Alliance • Ashland • Ashtabula • Athens • Beachwood • Berea • Bowling Green • Canton • Chagrin Falls • Chillicothe • Cincinnati • Cleveland • Cleveland Heights • Columbus • Cuyahoga Falls • Dayton • Delaware • Dublin • Elyria • Euclid • Findlay • Gambier • Grove City • Hamilton • Hilliard • Hudson • Kent • Kettering • Lakewood • Lancaster • Lima • Lorain • Loveland • Mansfield • Marblehead • Marietta • Marion • Massillon • Medina • Mentor • Middletown • Milan • Newark • Niles • North Canton • Oberlin • Oxford • Painesville • Port Clinton • Reynoldsburg • Sandusky • Solon • Springfield • Strongsville • Toledo • Warren • West Chester • Westerville • WestLake • Willoughby • Wooster • Worthington • Youngstown • Zanesville •
Movers by ZIP:
• 44301 • 44302 • 44303 • 44304 • 44305 • 44306 • 44307 • 44308 • 44309 • 44310 • 44311 • 44312 • 44313 • 44314 • 44315 • 44316 • 44317 • 44319 • 44320 • 44321 • 44322 • 44325 • 44326 • 44328 • 44333 • 44372 • 44393 • 44396 • 44398 • 44399 •


text:
If you are looking to improve the ignition or fuel system of your Mustang, then CJ Pony Parts has a wide range of MSD ignition components and fuel system equipment that are sure to correct any problem you may have. MSD is one of the Mustang aftermarket's leading manufacturers of ignition controls, coils, timing accessories, spark plug wires and electronic fuel injection conversion equipment. MSD Ignition Controls have come to be the ignition solution company of choice for many of the top professional drivers around the world.
MSD got its start in the early months of 1970 in El Paso, Texas, and was founded as a research and development company by a group of engineers that had previously worked at the White Sand Missile Range in New Mexico. The group of engineers and their other partners established MSD in order to begin working on a lean burn fuel system for drag racing automobiles and other racing engine assemblies. This system was called the electrasonic fuel induction system, and was designed to help improve fuel economy of new and older automobiles, reducing the amount of fuel needed to make the race cars go the same amount of distance.
During the process of perfecting the new fuel system, the engineers and technical specialists soon found the air and fuel mixture was becoming so lean with this system that it was difficult for conventional breaker points and early electronic ignitions to ignite it. This dilemma drove the men of MSD to begin investigating a newly designed ignition system using a modern technology known as capacitive discharge, or CD. This new CD ignition design corrected the previous problems of failed ignition and opened doors for MSD, as they had developed an excellent new ignition system that was more efficient than previous designs.
MSD has since grown from the small company that it started as to become an industry leader that employs a work force of over 400 individuals. This work force consists of highly trained design and function engineers, technicians and assembly specialists. Together this collection of skilled workers compete the process of designing, developing, testing and manufacturing the entire line of MSD equipment, ensuring that each piece of MSD merchandise performs perfectly, and meets the high quality standards that MSD has upheld since they got their start. Take the time to browse through CJ Pony Parts' online inventory of MSD ignition and fuel system equipment above and find a piece that will solve your Mustang's problems.


text:
"Weekend Reflections" rules are simple:
1)Post a photograph taken by you that contains a visual refection.
2)After I post my Weekend Reflections photo, add your name, country and link to MckLinky
3)Be sure that your link goes directly to your Weekend Reflections post.
4)Link Weekend Reflections to your post so other will know where to go if they want to join
5)Comment on other Weekend Reflections participant's blogs.
Feel free to be creative.Remember this meme is for any type of reflection photographs.This meme runs Friday 11 am EST through 11pm Sunday, so feel free to link your post anytime within that time frame. Join the fun!


text:
Tuesday, March 24, 2009
Three Savory Quick Breads the French Way
Years ago a girl's rite of passage included the making toll house cookies and a quick bread or two. Since then I've made a ton of cookies, but quick breads, for whatever reason, fell victim to benign neglect. There was an occasional pumpkin or cranberry bread but most other recipes were tucked away for a someday that never came. Then came a challenge - a quick bread challenge. Now, if I tell you I know why folks climb mountains - they're there and the climbers aren't - you'll understand how I feel about a healthy challenge. I pulled six recipes from my files, put on an apron and went at it in a big way. Today's breads are French, sassy and come to the table with lots of attitude. They're gutsy and delicious, but - and it's a big but - I don't know when you'd actually serve them. I've been told they should be cubed and served on toothpicks as an appetizer or h'orderves. Maybe. The problem is, while quick, they're competing with other finger foods that are easier to prepare. That's my prejudice. I won't make them again, but I recommend that you give them a try. They are really very good and if you're looking for something with a wow factor these breads just might do the trick.
Walnut Bread
2-1/4 cups all-purpose flour
2 teaspoons baking powder
1/2 teaspoon fine sea salt
2/3 cup whole milk
1 large egg
3/4 cup sugar
1-1/2 cups walnuts, coarsely chopped
1) Preheat oven to 325 degrees F. Grease and flour an 8-1/2 x 4-1/2 x 2-1/2-inch loaf pan. Set aside.
2) Sift flour, baking powder and salt together. Set aside.
3) Place milk and egg in a large bowl. Add sugar. Whisk to combine. Stir in flour mixture and beat with a wooden spoon until ingredients are combined. Mix in walnuts. Turn into prepared pan.
4) Bake in center of oven until puffed and golden, about 45 minutes. Increase oven temperature to 375 degrees; continue baking until cooked through, about 15 minutes longer.
5) Remove from oven. Let sit for 10 minutes. Turn onto a wire rack to cool completely. Wrap in plastic wrap and allow to age 24 hours before serving. Yield: 1 loaf.
Recipe adapted from the French Farm House Cookbook by Susan Herrmann Loomis
Olive Bread
1-1/2 cups unbleached flour
1/2 teaspoon fine sea salt
2 teaspoons baking powder
1 large roasted red pepper, coarsely chopped (from a jar is fine)
1 cup pitted Greek-style black olives, coarsely chopped
4 cups (loosely packed) then minced basil leaves
6 large eggs
1/4 cup olive oil
1 clove garlic, minced
1/2 teaspoon freshly cracked black pepper
1/2 cup grated Parmesan cheese
1) Preheat oven to 400 degrees F. Liberally grease and flour a 8-1/2 x 4-1/2 x 2-1/2-inch loaf pan.
2) Sift flour, salt and baking powder together onto a piece of waxed paper. Set aside.
3) Place eggs in a large bowl; whisk. Add oil, basil and garlic; whisk until combined. Stir in flour; whisk until just combined. Add pepper and cheese. Fold in olives and roasted peppers. Scrape batter into prepared pan. Bake in center of oven until golden, about 45 minutes. Remove and cool in pan for 10 minutes. Turn onto a wire rack to cool completely. Yield: 1 loaf.
Recipe courtesy of Susan Herrmann Loomis
Herb Bread
1 cup unbleached all-purpose flour
2 teaspoons baking powder
1/2 teaspoon fine sea salt
3 large eggs, lightly beaten
1 cup nonfat plain yogurt
2 tablespoons Dijon mustard
1/2 cup grated Parmesan cheese
1/4 cup minced fresh mint leaves
1/4 cup minced fresh thyme leaves
1) Preheat oven to 425 degrees F. Grease and flour a 1 quart bread pan. Set aside.
2) Place flour, baking powder salt, eggs, yogurt and mustard in bowl of a food processor. Blend thoroughly. Add cheese and herbs and process to blend.
3) Pour batter into prepared pan. Bake in center of oven until firm and golden brown. Remove from oven. Let cool for 10 minutes. Turn onto a rack to cool to room temperature. Yield: 1 loaf.
Recipe courtesy of Patricia Wells
I'm sending these recipes to Mansi who is hosting this month's event at Fun and Food. BBD is a popular food-blog event that was started by Zorra of Kochtopf.
33 comments :
- Donna-FFW said...
HMMM. If I had to pick one, Im thinking the herb bread would pair so well with soup!!
- March 24, 2009 at 12:35 AM
- Unknown said...
oh my goodness, which one should I try, they all sound to tempting!
Happy Twirls,
Libby - March 24, 2009 at 1:10 AM
- Martha said...
I've made the walnut bread and thought it quite good. I agree with Donna-FFW, the herb bread might go well with soup. The olive bread . . . I agree with you! I've also made a pain d espices that was quite tasty.
- March 24, 2009 at 4:46 AM
- Schnitzel and the Trout said...
You put in a lot of time getting these three beautiful loaves together. I have Susan Loomis' cookbook and have seen these recipes. You are right, when do you really put them into a meal or before meal treat?
- March 24, 2009 at 7:20 AM
- Dewi said...
Unbelievable, not just one but all three love look gorgeous. I am they are very delicious as well mary.
elra - March 24, 2009 at 9:40 AM
- Unknown said...
you are the best - March 24, 2009 at 10:31 AM
- Netts Nook said...
Mary: This is my weakness can't wait to try they look tasty.
- March 24, 2009 at 11:04 AM
- Cathy said...
They certainly look good, Mary. I'm thinking about that olive bread with a big pat of butter. Oh dear, I would probably eat the whole thing.
- March 24, 2009 at 1:25 PM
- Usha said...
All three of these breads looks so inviting ! My favorite one is the herb bread :-)
- March 24, 2009 at 2:43 PM
- Allie said...
Wow that herb bread is calling my name!
- March 24, 2009 at 5:30 PM
- NKP said...
I am so impressed that you did three! I love a study on a theme.
That olive bread is striking in all it's colours.
I have my peaches thawing for my BBD quickbread.. there's your hint! And no, it's not cake.
I think your quickbreads look wonderful - and as for where or when to serve them? I think brunch is a good time - with some nice whipped cream cheese and sliced cucumber, perhaps some smoked salmon...
Just let me know when to be there, I will make the bellinis! - March 24, 2009 at 5:50 PM
- Mary Bergfeld said...
Natashya, I loved your suggestions. Cream cheese would be great with the walnut bread. The other two might work with a cup of simple soup, but they are strongly flavored and will insist on a starring role. They'd overwhelm smoked salmon. As to the three, actually six, my "box" of untried recipes is growing again and this is my way of weeding out.
- March 24, 2009 at 6:04 PM
The olive bread has my mouth watering.
- March 24, 2009 at 11:52 PM
- Mary Bergfeld said...
Cathy, the olive bread is good,but it can overpower other food. If you make it serve it with a simple soup.
- March 25, 2009 at 12:23 AM
If I had to choose one, I'll have to go with the walnut bread. So heavily studded!
- March 25, 2009 at 1:58 AM
awesome flavors!all of them... Love the Olive Bread!
- March 25, 2009 at 3:40 PM
- Karen said...
Love that olive bread... it's so pretty and I bet it tastes out of this world!
- March 25, 2009 at 5:25 PM
- Mary Bergfeld said...
Gals, all three of these breads are delicious and worth making. To reiterate....my problem is they are strongly flavored and I don't know what to serve them with. Ideas are welcome.
- March 25, 2009 at 5:45 PM
- cikmanggis said...
I like breads!I must try your recipes...awesome,look very tasty
- March 25, 2009 at 11:57 PM
- Mary Bergfeld said...
cikmanggis, thanks so much for stopping by. I hope you'll visit often.
- March 26, 2009 at 12:57 AM
- La Bella Cooks said...
Oh wow, I would LOVE to try the olive bread! It looks mouthwatering and so savory.
- March 26, 2009 at 4:46 AM
- Lori said...
I think they are great breakfast food. Kind of like a slice of a muffin. Thats when I would eat them. Oh and with tea in the afternoon with my Mom or something. They look real delicious Mary. I so need to make that savory one. My husband would just flip over it.
- March 26, 2009 at 10:25 AM
- Allie said...
Oh, want. These look amazing.
- March 30, 2009 at 11:13 PM
- Siri said...
Gorgeous- I've actually made the herb one before! Next on my list would be the walnut bread. You've got a lot of motivation to make all three at once!
Thanks for sharing,
Siri - April 6, 2009 at 9:12 AM
- Chats the Comfy Cook said...
It pays to search your blog. Just look what I found, not 1, not 2 but three recipes that my husband will love. Thank you so much.
I will like them too but I love cooking for him and he is more fussy than I am because he has celiac. All of these can be made gluten free without losing the good qualities. - June 27, 2010 at 9:47 PM
- SamJLinnane said...
That olive bread will make a gorgeous christmas party hors d'oeuvre as mini-muffins. How much oil goes in though? I've been looking for good savory quick breads for a long time, I think this will be perfect. I've been very much enjoying your blog!
- December 16, 2010 at 8:53 PM
- Mary Bergfeld said...
Sam, thanks so much for catching my omission. I've added the olive oil to the ingredient list. Have a great day. Blessings...Mary
- December 16, 2010 at 9:06 PM
- Mrs K said...
The bread round-up is brilliant,I had earlier read your post on the coconut bread,and I had no clue there were so many posts on so many more,honestly after seeing all these it is difficult to pick one or two,but I love the olive bread,it has all my favorite ingredients:)I wish I was your neighbor;)
- December 19, 2010 at 11:42 AM
- Jill said...
Wow factor all over my mouth! LOVE the herb bread recipe. I altered the recipe to accommodate the ingredients I had on hand. Substituted white spelt flour (1 ¼ C) and included sundried tomatoes, dried thyme and fresh basil instead of other listed ingredients (I'm sure the recipe is brilliant as it stands—just didn't have the ingredients on hand). Upped the cheese to approx 1C of Asiago. I had to stop myself from eating more than 2 pieces! I served it with a hearty Tuscan minestrone soup. My family LOVED it. And it was SO QUICK AND EASY! Thanks for the great recipe. Can't wait to try the olive bread!
- March 30, 2011 at 11:47 PM
- mtalley2tx said...
I made the herb bread today. It is so yummy. I will have to make some roasted tomato and red pepper soup for dinner. Thanks for the recipe. I blogged you over at www.somethinsouthern.blogspot.com. I will have to try the olive bread next. It is enticing! Monica
- March 31, 2011 at 2:40 PM
- Maria said...
Maria, se ven tan deliciosos que los probaré...!Me encantan!!
Besos y mios mejores deseos para usted. - June 15, 2011 at 3:57 PM
cheese fondue fest :-)
- October 23, 2013 at 8:47 AM
- Cami said...
I just made the olive bread and it its to die for!!!!! I will use it as an appetizer bread with an antipasto. Thanks so much . I have been looking for an olive bread recipe for a while now.
- November 14, 2014 at 9:48 PM


text:
Thursday, July 12, 2012
Sage Blogging Advice From the HoseMaster After 199 Posts
46 comments:
- Alfonso Cevola said...
- This comment has been removed by the author.
- July 12, 2012 at 9:53 AM
please come and pick up your feral cats that we spayed and neutered. It has been three months now and we need the space...
Napa valley SPCA - July 12, 2012 at 9:54 AM
please come and pick up your ferrari red go carts which we sprayed and neutralized. we need the space
Sears Point go-cart liquidators - July 12, 2012 at 9:56 AM
You forgot: "Don't have conversations with yourself in your blog posts - no matter how ¡important! you think you are."
- July 12, 2012 at 10:12 AM
- Thomas said...
"misfits, evil geniuses and misanthropes"
To the circus acts: do you know which one describes you?
Me--just a spectator (can I use that word on a wine blog?). - July 12, 2012 at 12:04 PM
- Samantha Dugan said...
Oh, Oh! Can I be an evil misfit?
- July 12, 2012 at 1:11 PM
- Ron Washam, HMW said...
I'm clearly the clown, which encompasses all three.
You, a spectator? Hardly. You're one of the star attractions, like the Bearded Woman or the Poodle-Faced Boy. The circus can't afford to lose you, or have you just spectating. - July 12, 2012 at 1:13 PM
- Ron Washam, HMW said...
My Gorgeous Samantha,
No. But you can be an evil perfect fit. - July 12, 2012 at 1:16 PM
Now I will never know what I said.
- July 12, 2012 at 4:18 PM
- Thomas said...
Will it be ok if I expectorate instead of spectate? - July 12, 2012 at 4:40 PM
- Samantha Dugan said...
He gives gold stars if you pontificate while you expectorate...or so I've heard. - July 12, 2012 at 5:10 PM
- Ron Washam, HMW said...
200 of these stupid posts seemed like a landmark to me. Or a tombstone. Take your pick.
If someone had told me a year ago that I'd last this long, I'd have laughed. STEVE! posted today about reaching the four year mark of his blog. I have no idea how he does it. And I have no idea why I've done it. Or why any of the eight people who read it, read it.
Now I just have to figure out a reason to keep doing it. Not easy being a Poodle. Everyone thinks they're better than you. And their butts smell bad. - July 12, 2012 at 5:41 PM
I give this blog post 199 points!
-James Suckling - July 13, 2012 at 5:34 AM
I give this blog post 200 points!
- Robert Parker - July 13, 2012 at 6:35 AM
- Thomas said...
The best thing about this blog, after the humor, is that I don't have to wait for all the ads and pictures and other stuff to load up before I can read the post and comment.
I've stopped reading many blogs for that reason alone (well, not alone: waiting that long for drivel is a double slap). - July 13, 2012 at 6:49 AM
- Ron Washam, HMW said...
Here's another interesting stat--your last comment was the 3500th over the 200 posts, which averages out to 175 comments per post!!
OK, I know, it averages out to 17.5 comments per post. Somewhat over wine blog averages, I'm guessing.
There was a time I had a lot of people who wanted to "advertise" on HoseMaster, but I haven't been solicited in months and months. Of course, if I had accepted advertising, I'd be richer by about $45. You're worth at least that.
For a guy who doesn't read many blogs, I sure see you commenting all over the place. How long does it take 1WineDoody to download? Heck, I didn't even know he was on the download... - July 13, 2012 at 9:04 AM
- Richard Jennings said...
Nice take off on Steve H's recent attempt to bestow his wisdom, or whatever that was.
Can we get an "amen" to your comment about people's "journey?" I know I tune out when I hit that word in someone's blog bio. Yeeeech. - July 13, 2012 at 9:07 AM
- Thomas said...
"All over the place" is relative.
Here's a joke for you: yesterday I received my share of a class action settlement against Google's Adsense for some esoteric reason that i have forgotten.
The check arrived wit this warning on it: "Pleas cash this check no later than 12/26/1012, because after that date the check will no longer be negotiable.
The amount of the check: 40 cents. I kid you not.
Apparently, the settlement represents about the same amount in earnings that most bloggers would make from the program.
Still, I can't help wondering how much the attorneys in the class action suite get to keep for their, er, service. - July 13, 2012 at 9:28 AM
- Thomas said...
Oops. the date is 2012, not 1012.
- July 13, 2012 at 9:29 AM
- Ron Washam, HMW said...
Actually, I wrote this post more than two weeks ago, before STEVE! published his fourth anniversary column. I always try to work four or five posts ahead, unless something timely demands that I spoof it that week--not common in the wine biz. We're a dull bunch.
You sent me your list of Best New Wine Blogs that you had to endure as a judge of the Wine Blog Awards. I apologize that I didn't send you my thoughts about those blogs, but I looked at most and it was incredibly discouraging. But it did remind me how unbelievably pedestrian and jejune it is to describe your wine blog as a "journey," like you're fucking Odysseus when you're more like William Trevor's Felicia.
I'm interested to see which blogs you nominated, Richard. After glancing through most, I certainly won't hold you accountable. Slim pickin's, indeed. - July 13, 2012 at 9:30 AM
- Marcia Macomber said...
Expectorate, spectate, pontificate... wait--aren't these all part of a lyrics sequence in the Mikado? Oh, wait, no. Something of Sting's... Surely most commentors are here to pontificate. It's what we do as a substitute for NOT writing another wine blog... :-)
- July 13, 2012 at 9:39 AM
- Thomas said...
Do the latter regard themselves as the former?
I'll give odds. - July 13, 2012 at 10:48 AM
Nothing much to add but admire your writing (would love you but there is only one truly wonderful Samantha).
And you are right, Marcia. I started thinking about writing a blog way before I went into menopause. Ron isn't menopausal and we are better for it.
Since Brad Pitt (from Springfield, Mo, corporate home of the Assemblies of God and BassPro) isn't doing Billionaires Vinegar he is obviously available, Ron. How's the screenplay going? - July 13, 2012 at 10:56 AM
- 1winedude said...
Thomas - my check was $0.31, so beers are totally on you next time.
HMW - Me not being able to read about 1WineDoody on other blogs fundamentally eliminates 80% of the content here and on STEVE!'s blog. C'mon, man, what the hell am I supposed to do with all of that free time, taste more samples of $12 Argentine Malbec?!?? Have you no humanity??!???? - July 13, 2012 at 11:27 AM
- Thomas said...
Are you going to cash it?
I figure that if we don't, that's more money for the attorneys to keep. The only problem is: it costs me $2 to drive to the bank... - July 13, 2012 at 12:14 PM
- 1winedude said...
Thomas - HA! Well, I will cash it I think, once I have real checks to cash along with it...
- July 13, 2012 at 12:18 PM
- Ron Washam, HMW said...
Don't forget regurgitate, which is what I generally make readers do.
As ever, thank you. I haven't gone through menopause but I have gone through my old posts, which definitely gave me night sweats. And I love you too. Samantha can share.
Joe Dude,
First of all, now I'm mad I never used Adsense. Let's not forget it cost them 45 cents to mail the damned checks for 40 and 31 cents. Just my two cents.
And I rarely see you mentioned on STEVE! any more. I assumed it was an ugly breakup, like Tom and Katie, and just let it go. I use you a lot because between us we have the two coolest and best recognized nicknames in the wine blogosphere--1WineDoody and HoseMaster. Well, that and you deserve it...
Way to go, you monetized your old blog! - July 13, 2012 at 12:35 PM
- Thomas said...
Now you see that us old print pros get the big coins.
I meenieweenietized the old blog.
It did not cost them 45 cents to mail the check--they have a First Class Permit, not to be confused with a First Class Ticket to Ride.
But--big Butt! They did have to pay for the paper and the printing, not to mention the UPC Code rental fee.
I'm thinking of sending the administrator an email to ask if this is for real and to thank him/her for all the work he/she must have done to get this sum of money out to so many of us worthy bloggers. Then, I'm going to ask how he/she made out on the deal.
Do you think that's a good plan? - July 13, 2012 at 12:52 PM
- Ron Washam, HMW said...
Only if you think your time is worth less than the postage and the check put together. - July 13, 2012 at 12:57 PM
- Andrea said...
You had me at "bunch of black guys who gangbang white girls." Seriously?
- July 13, 2012 at 2:10 PM
- Ron Washam, HMW said...
Yes. Seriously.
Now THAT'S social media. - July 13, 2012 at 2:20 PM
- Dean Tudor said...
Ron, my subscription to your blog ran out today. please tell me how I can renew and what it now costs, plus an address where I can mail you my cheque in US dollars (or, is that "check in US dollars" ?).
Funny that you do not send out renewal notices.
We really appreciate your blog in Canada, which, as you know, is a wine-free zone.
Maybe someday the Middle East Spring will arrive in Canad and we can overthrow the tyranny of state booze monopolies...
Power to the people!!
Let me know where I can send the cheque/check. This time it will not be a letter bomb. - July 13, 2012 at 2:42 PM
- 1WineDoody said...
Ron... Give it time, STEVE! and I will get back together at some point, sort of like Mick & Keith only with less coke and a LOT less hookers and groupies...
- July 14, 2012 at 7:25 AM
- Alfonso Cevola said...
Sage blogging advice from one sagging blogger to another - July 14, 2012 at 7:50 AM
- Ron Washam, HMW said...
Hey Dean,
Hell, I haven't even renewed my own subscription to HoseMaster. The whole damned blog has expired, or is, at the very least, in a coma.
Mick and Keith? More like Captain and Tennille. And if you have groupies, man, you don't need hookers. Only bloggers pay for it.
Yeah, I know. I hate it when I wade into the ocean and my balls get wet before my trunks do. - July 14, 2012 at 8:16 AM
- Marcy Gordon said...
This comment is about me. This post was inspired by you-
You'll have to break rule number one if you read it. - July 14, 2012 at 9:39 AM
- Beau said...
At first, I didn't like this blog, it seemed like the bitter rantings of an angry old dude who was forced to buy wine at Trader Joe's.
Then, I read more posts, some of the short stories. I laughed my ass off. I began to see the humor that is at once self-flagellating but also self deprecating. And the myriad little hooks thrown into all who dare take themselves too seriously, glorious!
Sadly, now I too am hooked, awaiting each new post with the same eager anticipation that I await my dog's morning turd.
Keep up the good work, Hosemaster. Here's to at least three more posts, before you retire once more. - July 14, 2012 at 2:32 PM
- Ron Washam, HMW said...
Thanks, I guess.
I've talked about this previously in the comments section of my blog. I do this nonsense for fun, and for the odd, pure and inexplicable joy of writing comedy. If I make people laugh, if I make them angry, if I make them profoundly weary, if I make them think, I'm not sure I care. I can't control reactions. I can barely control what I write.
Many of my posts are written as etudes of tone. I get an idea for a post, and then I decide what sort of tone I want to use. Angry, whimsical, pedantic, weird, satirical... I try to vary the tone as much as possible all in the context of the character of the HoseMaster. I expect that everyone who shows up here regularly will like certain posts and hate others. I'm not trying to be 1WineDoody (and I like him) or Alderpated or Tom Wark (like him too). I'm trying to be odd, unpredictable, occasionally offensive and funny. So your reaction is one I appreciate, and I thank you for your honesty and candor.
And, by the way, Beau, when I was learning about wine back in the 1970's, Trader Joe's was THE place to buy wine in Southern California. I bought the best California wines there as well as First Growth Bordeaux, Chateau d'Yquem, and great Rhone wines. No one could touch their selection and quality and price in the day. Lots of crap has mad me angry in my life, but not shopping at TJ's. - July 14, 2012 at 3:07 PM
- Beau said...
Ron, While you needn't explain your motives or writings, I appreciate it nonetheless, as it illuminates the Hosemaster just a little bit more.
As far as Trader Joe's, I recall some of your previous comments about the wine selection. I spent a frustrating 4.5 years working the wine section of a store in Southern California, lamenting the plonk that is now sold there. I vaguely recall the late 90's/00's when you could still get delicious wines there for reasonable prices.
I suppose when the company makes around 9 billion dollars a year at 360+ stores, something's got to slip.
Thanks for keeping us bloggers in check. - July 14, 2012 at 3:48 PM
- Ron Washam, HMW said...
I was speaking to a winemaker Thursday, who, to his dismay, is a fan of HoseMaster, and we were speaking about the creative process. As much as I love wine, and I love wine a LOT (I often wish more people strove to love wine rather than know wine), I am far more enamored of the creative process. So starting this blog was always about re-exploring that process as it works in my twisted mind. It's almost an accident that it's been focused on wine and wine bloggers. That the HoseMaster is often seen as an "enemy" of wine
bloggers is both validating and peculiar at the same time.
It's not much of a secret, but it bears repeating; when I insult bloggers I do not exempt myself from that category. I've never denied that I'm just another attention-barking Poodle worthy of the HoseMaster's contempt. - July 14, 2012 at 4:23 PM
On behalf of those who read and don't comment, which may include people other than myself, depending how many Napa merlot bottles one consumed while making this assessment - please keep going.
I read everything, laugh like a limo driver missing the turn to Opus, and get some perspective about my own writing and taking oneself seriously.
I'll raise a magnum of Petaluma late vintage tempranillo for the success of the next 200 posts - July 15, 2012 at 5:19 PM
- Ron Washam, HMW said...
It's one thing to take your writing seriously and another to take yourself too seriously. Thank you for knowing the difference, and for taking time to comment.
I cannot imagine I'll do 200 more posts. But, as they say about any addictive and life-threatening behavior, like blogging, I'll take it one post at a time. - July 15, 2012 at 5:53 PM
- John M. Kelly said...
Ron - a day late and $0.31 or $0.40 short here, but I have not had a lot of time to keep up with your work lately - I've been breathlessly waiting to see who got WBC finalist.
Imagine my disappointment when I saw you on that list! Oh well. - July 18, 2012 at 4:27 PM
- Ron Washam, HMW said...
Yes, I know, I've disappointed everyone by being a Poodle Nominee. I knew I shouldn't have nominated myself! Damn, shit just backfires.
So do you think it would be poor taste to make fun of my fellow nominees? - July 18, 2012 at 4:41 PM
When will the prizes for journey-free blog bios be mailed out? And thank you for scaring me into rereading, very closely, my own write-up. And, I promise never to use journey again. Ever. For any reason. I won't even mention that music group.
- July 20, 2012 at 1:06 PM
- Ron Washam, HMW said...
Journey-free blogs are their own reward. And Journey-free playlists are also better by definition. Say "journey" fifteen times in a row and it's one of those words that loses all meaning. "Terroir" only takes twice.
Thanks for commenting, and even more thanks for not doing it anonymously. - July 20, 2012 at 2:16 PM