topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • September 23, 2019, 10:11 AM
  • Proudly celebrating 13 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - dnm [ switch to compact view ]

Pages: [1]
1
General Software Discussion / Re: Best Python IDE
« on: November 04, 2008, 11:55 PM »
I use Wingware's Wing IDE myself, and highly recommend it. I also wanted to second 40hz's recommendation of learning the language first, then learning the IDE. But, having said that, if you know Python well, I find Wing IDE a huge boon, especially for larger projects.

2
Here's a question to start off the thread.

Earlier today I was trying to get write some basic AHK functions which allow me to convert characters which I've copied to the clipboard to a different representation. For instance, my initial use case was something like this: I want to be able to copy a series of bytes from my hex editor (as hex bytes) and use a hotkey to trigger a function (or series of functions) which will bit-invert those bytes, then save them as hex bytes back to the clipboard. Once that's done, I can paste them back into my hex editor and see the ASCII representation of the inverted bytes.

The strategy I used to go about this was seemingly simple, but possibly too complex. I'm not sure. I assume up front that the bytes I'm copying are already valid hex bytes, 0-9 and A-F, regardless of case (uppercase everything internally), and ignore whitespace (SPC, TAB, and RET). Convert from hex to a binary value, invert the value, then convert from binary to hex and save to the clipboard.

I'm not terribly familiar with writing functions in AHK; mostly I use it for hotstrings and hotkeys only. I tried my hand at a couple different approaches, none of which worked fully. I also looked at the following code samples on the AHK Community Forums, which seemed really interesting, but also overkill for what I want.

http://www.autohotkey.com/forum/topic21172.html
http://www.autohotkey.com/forum/topic21172-105.html

I did find some code in AutoIt (v3) that I modified only slightly that works well (at least the one bit I've tested), but the problem is that I don't run AutoIt like I run AutoHotkey, i.e. running in my system tray, capturing key macros, replacing text, etc. I probably can run AutoIt that way (I'd have to look into it), but generally I run AutoIt scripts for specific tasks, and don't really use it the same way I use AutoHotkey. While I could just write hotkeys in AutoHotkey to call the AutoIt scripts, that gets rid of the idea of having this be self-contained in my standard AHK script, and complicates deployment.

Any ideas? I'm open to all approaches, as long as I can make sense of the code.

Thanks in advance!

Here's the edited AutoIt code (as it stands right now):

Code: AutoIt [Select]
  1. ; baseconv.au3 -- Base conversion functions for representative strings (binary
  2. ;                 strings, decimal values, hex values).
  3.  
  4. ; ==============================================================================
  5. ; FUNCTIONS
  6. ; ==============================================================================
  7. ;
  8. ; Original code for functions by "ptrex" on AutoIt Forums
  9. ; http://www.autoitscript.com/forum/index.php?showtopic=70507
  10.  
  11. ; --------------------------------------------------------------------------
  12. ; BinStr2Dec
  13. ; --------------------------------------------------------------------------
  14. Func BinStr2Dec($strBin)
  15. Local $Return
  16. Local $lngResult
  17. Local $intIndex
  18.  
  19. If StringRegExp($strBin,'[0-1]') then
  20. $lngResult = 0
  21.   For $intIndex = StringLen($strBin) to 1 step -1
  22.     $strDigit = StringMid($strBin, $intIndex, 1)
  23.     Select
  24.       case $strDigit="0"
  25.         ; do nothing
  26.       case $strDigit="1"
  27.         $lngResult = $lngResult + (2 ^ (StringLen($strBin)-$intIndex))
  28.       case else
  29.         ; invalid binary digit, so the whole thing is invalid
  30.         $lngResult = 0
  31.         $intIndex = 0 ; stop the loop
  32.     EndSelect
  33.   Next
  34.  
  35.   $Return = $lngResult
  36.     Return $Return
  37.     MsgBox(0,"Error","Wrong input, try again ...")
  38.     Return
  39.  
  40. ; --------------------------------------------------------------------------
  41. ; Dec2BinStr
  42. ; --------------------------------------------------------------------------
  43. Func Dec2BinStr($iDec)
  44. Local $i, $sBinChar = ""
  45.  
  46. If StringRegExp($iDec,'[[:digit:]]') then
  47. $i = 1
  48.  
  49.  $x = 16^$i
  50.  $i +=1
  51.  ; Determine the Octects
  52. Until $iDec < $x
  53.  
  54. For $n = 4*($i-1) To 1 Step -1
  55.     If BitAND(2 ^ ($n-1), $iDec) Then
  56.         $sBinChar &= "1"
  57.     Else
  58.         $sBinChar &= "0"
  59.     EndIf
  60.  Return $sBinChar
  61.     MsgBox(0,"Error","Wrong input, try again ...")
  62.     Return
  63.  
  64. ; --------------------------------------------------------------------------
  65. ; Hex2Dec
  66. ; --------------------------------------------------------------------------
  67. Func Hex2Dec($Input)
  68. Local $Temp, $i, $Pos, $Ret, $Output
  69.  
  70. If StringRegExp($input,'[[:xdigit:]]') then
  71. $Temp = StringSplit($Input,"")
  72.  
  73. For $i = 1 to $Temp[0]
  74.     $Pos = $Temp[0] - $i
  75.     $Ret =  Dec (Hex ("0x" & $temp[$i] )) * 16 ^ $Pos
  76.     $Output = $Output + $Ret
  77.     return $Output
  78.     MsgBox(0,"Error","Wrong input, try again ...")
  79.     Return
  80.  
  81. ; --------------------------------------------------------------------------
  82. ; Dec2Hex
  83. ; --------------------------------------------------------------------------
  84. Func Dec2Hex($Input)
  85. local $Output, $Ret
  86.  
  87. If StringRegExp($input,'[[:digit:]]') then
  88.     $Ret = Int(mod($Input,16))
  89.     $Input = $Input/16
  90.     $Output = $Output & StringRight(Hex($Ret),1)
  91. Until Int(mod($Ret,16))= 0
  92.  
  93.     Return StringMid(_StringReverse($Output),2)
  94.     MsgBox(0,"Error","Wrong input, try again ...")
  95.     Return
  96.  
  97. ; --------------------------------------------------------------------------
  98. ; BinStr2Hex
  99. ; --------------------------------------------------------------------------
  100. Func BinStr2Hex($strBin)
  101.     Local $test, $Result = '',$numbytes,$nb
  102.  
  103. If StringRegExp($strBin,'[0-1]') then
  104.  
  105.     if $strBin = '' Then
  106.         SetError(-2)
  107.         Return
  108.     endif
  109.  
  110.     Local $bits = "0000|0001|0010|0011|0100|0101|0110|0111|1000|1001|1010|1011|1100|1101|1110|1111"
  111.     $bits = stringsplit($bits,'|')
  112.     #region check string is binary
  113.  
  114.     $test = stringreplace($strBin,'1','')
  115.     $test = stringreplace($test,'0','')
  116.     if $test <> '' Then
  117.         SetError(-1);non binary character detected
  118.         Return
  119.     endif
  120.     #endregion check string is binary
  121.  
  122.     #region make binary string an integral multiple of 4 characters
  123.     While 1
  124.         $nb = Mod(StringLen($strBin),4)
  125.         if $nb = 0 then exitloop
  126.         $strBin = '0' & $strBin
  127.     WEnd
  128.     #endregion make binary string an integral multiple of 4 characters
  129.  
  130.     $numbytes = Int(StringLen($strBin)/4);the number of bytes
  131.  
  132.     Dim $bytes[$numbytes],$Deci[$numbytes]
  133.     For $j = 0 to $numbytes - 1;for each byte
  134.     ;extract the next byte
  135.         $bytes[$j] = StringMid($strBin,1+4*$j,4)
  136.  
  137.     ;find what the dec value of the byte is
  138.         for $k = 0 to 15;for all the 16 possible hex values
  139.             if $bytes[$j] = $bits[$k+1] Then
  140.                 $Deci[$j] = $k
  141.                 ExitLoop
  142.             EndIf
  143.         next
  144.     Next
  145.  
  146. ;now we have the decimal value for each byte, so stitch the string together again
  147.     $Result = ''
  148.     for $l = 0 to $numbytes - 1
  149.         $Result &= Hex($Deci[$l],1)
  150.     Next
  151.     return $Result
  152.     MsgBox(0,"Error","Wrong input, try again ...")
  153.     Return
  154.  
  155. ; --------------------------------------------------------------------------
  156. ; Hex2BinStr
  157. ; --------------------------------------------------------------------------
  158. Func Hex2BinStr($strHex)
  159.     Local $Allowed = '0123456789ABCDEF'
  160.     Local $Test,$n
  161.     Local $Result = ''
  162.     if $strHex = '' then
  163.         SetError(-2)
  164.         Return
  165.     EndIf
  166.  
  167.     $strHex = StringSplit($strHex,'')
  168.     for $n = 1 to $strHex[0]
  169.         if not StringInStr($Allowed,$strHex[$n]) Then
  170.             SetError(-1)
  171.             return 0
  172.         EndIf
  173.     Next
  174.  
  175.     Local $bits = "0000|0001|0010|0011|0100|0101|0110|0111|1000|1001|1010|1011|1100|1101|1110|1111"
  176.     $bits = stringsplit($bits,'|')
  177.     for $n = 1 to $strHex[0]
  178.         $Result &=  $bits[Dec($strHex[$n])+1]
  179.     Next
  180.  
  181.     Return $Result
  182.  
  183.  
  184. ; ==============================================================================
  185. ; TEST CODE
  186. ; ==============================================================================
  187.  
  188. ; Quick and drity, not good test code, but works for now.
  189. ; Currently only tests Hex2BinStr.
  190.  
  191. Dim $testVal1 = "DEAD"
  192. Dim $returnVal1 = Hex2BinStr($testVal1)
  193. MsgBox(0,"Results",$returnVal1)
  194. ; Expected value: 1101111010101101
  195.  
  196. Dim $testVal2 = "2152"
  197. Dim $returnVal2 = Hex2BinStr($testVal2)
  198. MsgBox(0,"Results",$returnVal2)
  199. ; Expected value: 0010000101010010
  200.  
  201. Dim $testVal3 = "b57b"
  202. Dim $returnVal3 = Hex2BinStr($testVal3)
  203. MsgBox(0,"Results",$returnVal3)
  204. ; Expected value: 1011010101111011

3
I didn't see an existing thread for questions about AutoHotkey programming, so I thought I'd start a catch-all here. Mouser, feel free to move this wherever is more appropriate.

The idea is that since we have sterling AutoHotkey (AHK) programmers like skrommel and others, those of us on DonationCoder who have AHK programming questions can ask them of each other here. This isn't a replacement for the AutoHotkey Community forums, just a local thread for AHK programming questions. Deeper discussions can be taken offline, moved to another thread, or moved to the AutoHotkey Community forums.

Thanks for reading!

4
There's a larger issue here in that a lot of these AV hits can be valid, in certain circumstances. AutoHotkey is a general purpose (and useful) tool, which means it can also be used by malware authors, especially to do the sorts of things malware often wants to do (and that AutoHotkey is good at): Windows automation! (e.g. hooking the keyboard and capturing passwords, GUI automation, network access, general system scripting, etc.). The AV engines have no way to determine the intent of any given AutoHotkey script, so they may flag them as dangerous.

This is a general problem with multi-purpose tools like AutoHotkey for AV vendors. On one hand there are power users trying to use tools like Skrommel's software, and on the other hand there are other users who are being taken advantage of by malicious users who happen to use AutoHotkey.

I'd argue that malware using AutoHotkey is pretty transparent and easy to find, comparatively speaking (it's not anywhere near as complex as a half-decent rootkit, for instance), but nonetheless, it's useful for both good and bad. I think this is unlikely, but if there are more people complaining about AV flagging AutoHotkey than there are AV vendors finding AutoHotkey-based malware in the wild or getting enough credible reports, then it's more likely they'll take it off their lists, which conversely means it's a more worthwhile tool for malware authors (since it'll go undetected by AV for longer).

There's no easy solution for AV, sadly, other than knowing what's running on your machine.

5
Procedural Content Generation is just a fancy name for an old technology that was popularized by Will Wright's Sport media [...]
I think you meant "Spore". Just in case people were confused.

6
Developer's Corner / Re: The Mozart Programming System
« on: September 03, 2006, 06:43 AM »
Mozart/Oz is very nice. In many ways, it's a "more functional" (excuse the pun) Concurrent Prolog. It's multiparadigm, although it seems somewhat stuck in academia compared to other languages like Haskell and OCaml, which have branched out more. For anyone interested in both using Mozart/Oz and learning a novel way to think about programming language paradigms, I highly recommend "Concepts, Techniques, and Models of Computer Programming" which uses Mozart/Oz to implement kernel languages of other programming languages, and which is written by key Mozart/Oz designer-developers.

7
Living Room / Re: Having 2 monitors - will change your life
« on: October 19, 2005, 04:48 AM »
Regarding the Alt-Tab issue, I installed TaskSwitchXP Pro 2.0 today and have been using it. So far, so good. While it won't display its dialog on both monitors at the same time, there is an option to set it to display on the currently active monitor, which seems more like what I want anyway.

8
Living Room / Re: Having 2 monitors - will change your life
« on: October 18, 2005, 05:38 AM »
Agreed.

I just upgraded to two Dell 2100 FP 21" LCD flat panel monitors at the end of last week and I'm loving my new setup. As an unintended side effect, the computer desk is also much less cluttered.

Coincidentally, I came here to the forums just now to post a question regarding dual-monitor setups. Namely, does anyone know of a utility that will extend the Alt-Tab window selection dialog across monitors? I'm using UltraMon <http://www.realtimesoft.com/ultramon/> on the recommendation of a friend, and it seems very useful and neat; among other things it will let you extend a sort of second taskbar to another monitor (sans Start menu, Quick Launch, systray, and other taskbar toolbars) which by default will only have buttons for the apps that are running on that monitor. However, if I Alt-Tab to get to another app (say one behind the maximized one I'm looking at on the second monitor), I have to look back at the primary monitor to see the Alt-Tab dialog. UltraMon itself doesn't seem to do anything with this dialog or with Alt-Tab in general.

Anyone have any suggestions?

9
Any further updates?

10
A useful feature for System Path Commander: a right-click option which would let me "move" a path item from say the system path to my local path and vice versa.

11
I tried Find and Run Robot a while back, and one of my issues was the use of the Break key as the key that brings Find and Run Robot to the foreground. If I remember correctly, I looked for a way to configure that and didn't find it. Break was an unnatural and hard key for me to hit on my laptop, and doing so consistently would have been a serious pain; I wanted to map it to Alt+Space, which happens to be AppRocket's default (I only recently started using AppRocket though, so I didn't know that at the time).

I think I had some issues with the search and weighting implementation, but that may simply be because I didn't play with it/use it long enough. I don't remember specifics about what I found weird.

I'll download Find and Run Robot again and give it a try while I use AppRocket and let you know what I think.

12
Living Room / Re: Scripting utility suggestions?
« on: July 14, 2005, 07:36 PM »
I use AutoIt (v3) on a daily basis. It's a lot more work to make AutoIt scripts than to use something like AutoMate, which I tried out (but ran away from after finding out about the price, and the fact that it leaves a server/scheduler app running continuously by default, which I didn't need), but it has enough of the features I want at the right price.

Having found out about AppRocket (see <https://www.donation...ndex.php?topic=561.0>), I use it to launch my AutoIt scripts, which is a huge win. I do this rather than assign a key macro to each script with KeyText because there are more than just a few AutoIt scripts I want to run fairly often and having too many key macros is a pain.

13
General Software Discussion / AppRocket: Quicksilver for Windows
« on: July 14, 2005, 07:33 PM »
Found via Lifehacker <http://www.lifehacke...-tutorial-106642.php> (itself found via 43 Folders, which I noticed just popped up here on the forums), AppRocket <http://www.candylabs.com/approcket/> is the closest thing to Quicksilver <http://quicksilver.blacktree.com/> (which is for OS X only) available on Windows.

I've wanted something like this for a while on Windows, especially since I've been using Quicksilver on my Mac for quite a while. ActiveWords was the program that usually got the nod, but when I tried using it, I felt it got in my way too much. With a key macro program like KeyText and a incremental-search app/file/action launched like AppRocket, life is good.

14
Living Room / Re: anyone recommend freeware cd/dvd burning soft?
« on: June 26, 2005, 11:40 PM »
If you have ISO files to burn (or can make whatever it is that you want to burn into an ISO, obviously), I recommend ISO Recorder <http://isorecorder.a....com/isorecorder.htm>.


15
Living Room / Re: What Programs Run In Your System Tray?
« on: June 23, 2005, 02:42 AM »
I use WinXP's feature to automatically hide systay icons that I never want to see (like Thunderbird's new mail notification icon) and to keep others always present. Here's what sits in my systray most often these days:

  • PureText: Convert any text in your clipboard to plain ASCII text with a keystroke
  • KeyText: Key macro and automation software
  • Pageant: SSH key agent for PuTTY
  • goScreen: Virtual desktops
  • TrayDay: Displays the current date, and displays a floating calendar
  • Bitvise Tunnelier (when running): SSH client for WinSSHD
  • BestCrypt: Disk encryption software
  • Stunnel: SSL tunneling program and log console
  • InCD: Nero program to use rewriteable CDs or DVDs as drives.
  • Apache Monitor (usually hidden): Control Apache httpd servers
  • HotSync: Palm synchronization software
  • NetTransport: Download manager
  • Trillian Pro: Instant Messaging
  • KeePass: Password manager
  • Workrave: RSI avoidance
  • PGP: Email and file encryption, etc.

And then of course there's other software the sometimes minimizes to my systray, like FeedDemon, and Windows specific things, like the Power Manager and network connection status icons.

16
I've been using KeyText by MJMSoft Design <http://www.mjmsoft.com/> for a few years now (on the recommendation of a friend) and I've grown to miss not having programmable key macros/hotkeys on whatever system I'm using.

I don't use the Windows key for my key macros with KeyText primarily because it didn't support capturing the Windows key when I first started using it (it might do so now, or it still might not; I haven't checked). Instead, I use Ctrl+Alt and then another letter because Ctrl and Alt are easy for my left hand to hit with my pinky and thumb on my Dell laptop keyboard. Ctrl+Alt+P launches PuTTY (easily one of the most used key macros I have), Ctrl+Alt+D writes out a long date and time stamp, Ctrl+Alt+C opens a command prompt, etc. I also used to use key macros extensively for "typing" boilerplate bits of text into emails, and still do so for things like my standard text file header, my email signature (which isn't always set in some rarely used web mail programs), and the like.

17
General Software Discussion / Re: Software for Mindmapping etc
« on: June 22, 2005, 06:08 PM »
I use MindManger X5 Pro and find it very intuitive and powerful. It took me a little bit to remember the keystrokes for adding a new child element, etc. but once I did, it flowed real well for me. I also made a couple of basic map templates that I use for certain kinds of projects, which saved me from doing the same basic initial map setup over and over again. I highly recommend it.

18
General Software Discussion / Mouser's Systray Goodies
« on: June 22, 2005, 06:02 PM »
Hi all,

While watching one of the screencast software demo screencasts, I noticed all the various systray icons on display. Mouser, care to tell us what they all are? I recognize some as software I use, and some as your own software, but a list of what's in there might be interesting. Looking at what's in my friends' systray is one of the ways I find out about new and useful software. Chances are, if it's in your systray, it's become indispensible.

Thanks!


I should have read before I posted; I just found the "Which app stays open on your desktop all day?" topic, which covers this. Mouser, feel free to delete this topic or houseclean however you see fit.

19
Best Text Editor / Re: UltraEdit 11 - Best text editor?
« on: April 24, 2005, 01:47 PM »
Thanks for the review. I knew this one would be contentious, and I expected UltraEdit to win, but of course I still side with EditPlus. To be fair, I haven't used UltraEdit since around version 8 or so, but I've found no compelling reasons to give it another go over EditPlus.

One thing I would like to point out is that there is a column mode in EditPlus, by default it's bound to Alt-C, and it's the first item in the context menu if you right click in a edit window. I wish I had pitched EditPlus a bit more, in the hope it would take the top spot, but alas, I don't think I could shout over the top of all the UltraEdit fans around here. ;]

Another neat feature of EditPlus (which other editors have, I'm sure) is what it calls "Allow Virtual Space", which, when enabled (see Edit -> Allow Virtual Space), will let you place the cursor anywhere in the edit window and start typing, padding with spaces if you're not at the start of a line. I find this to be useful, and a real productivity saver in conjunction with column select if I'm working with column oriented data. KEDIT has a similar feature, but KEDIT is about as esoteric as text editors get on Windows, being essentially a souped-up version of XEDIT from IBM mainframe (MVS) days. I suspect there are way more people using VIM on Windows than KEDIT or other XEDIT clones. =]

20
Scott,

I saw your request for in the other thread for this tool, and I'm game to put something together for you. I was going to see how easy it would be to hack up something using your existing browser and AutoIt, a free Windows automation scripting language with syntax similar to VB, but I think a better way would to be to write a self-contained utility for you.

I'm busy this weekend and early next week, but I'll see if I can't get something to you ASAP, if only just to test it out.

21
Best Text Editor / Re: Pre-review discussion of "BEST TEXT EDITOR"
« on: April 23, 2005, 08:22 PM »
My votes are for EditPlus (http://www.editplus.com/) and Notepad2 (http://www.flos-free...are.ch/notepad2.html). I use a ridiculous number of text editors on pretty much every platform I use, because as simple as text editing seems, it's actually very personal and difficult to please everyone with one editor. Holy wars abound in the Unix world over vi versus Emacs (to name perhaps the most long-standing battle), but similar conflicts are also present in the Windows and Macintosh communities too.

I can rant on and on about why I use so many text editors and which editors remain my "default choices" for which tasks and on what platforms, but I like EditPlus (as my favorite Windows-native text editor) for anything more than just writing a quick, short plain text file or looking at a simple, uncomplicated plain text file. I often use Notepad2 (which I've assigned Ctrl-Alt-N in KeyText for launching it) to write down little notes or URLs or to view README files and the like, which litter my home directory and its subdirectories. EditPlus is the best "full-featured" Windows-native text editor I've found, and the one I keep coming back to despite having tried easily over a hundred other editors. I've been using it since at least 1998. While it has a number of built-in features for web developers, such as the in-editor browser, I don't make much use of that. I do use it to edit HTML and the like, but primarily I use it for programming, etc.

I found Notepad2 sometime in early 2004, if I recall correctly, and have been using it as described above, since then.

If I were to pick just one editor to win the award, I'd pick EditPlus.

I have a occasionally-updated text file which catalogues my notes on using various text editors over the years, though I didn't start putting it together until a few years ago. I had planned to make it into a large article or essay for my web site, which I may still do. The idea was to capture what I did and didn't like about the editors I was using or just trying out. Chances are, if you can think of a text editor for Windows, I've at least tried it.

Just in the interests of, well, I'm not sure what, here's a list of some of the editors I use on Windows besides the two mentioned above, in no particular order:

WinVi: http://www.winvi.de/
SciTE: http://www.scintilla.org/SciTE.html
GNU Emacs: http://www.gnu.org/s...are/emacs/emacs.html
XEmacs http://www.xemacs.org/
KEDIT: http://www.kedit.com/
j: http://armedbear-j.sf.net/
Programmer's File Editor (PFE): http://www.lancs.ac.uk/people/cpaap/pfe/

22
Backup Guide / MirrorFolder compared to reviewed programs?
« on: April 18, 2005, 06:02 AM »
Hi everyone,

I was curious if anyone else here has used MirrorFolder from TechSoft:

http://www.techsoftpl.com/backup/

I found a recommendation to it on some web site somewhere a while back, and downloaded the trial version and have used it a bit, but haven't really exercised it, nor have I put it up against the programs shown in the backup guide reviews.

I would love if someone would do that kind of hard work for me and write up what they think the differences are, pro and con. I suspect it would be most easily compared to GenieSoft's program. One thing I *do* like about MirrorFolder is the fact that it just fades into the background as an Explorer extension.

23
Living Room / Website bugs
« on: March 30, 2005, 10:51 PM »
I just found DonationCoder.com today from Mike Gunderloy's "Larkware" blog <http://www.larkware.com/> and have been poking around the site some, including the reviews. In the Beyond Compare review, for one of the screencasts <https://www.donationcoder.com/Reviews/Archive/CompareTools/flash/BeyondCompare1.html>, I noticed the "Go Back to Review.." link at the bottom <https://www.donationcoder.com/Reviews/Archive/CompareTools/index#moviethumbs> gave me an HTTP 404 Not Found error.

Thought I might note it here so it could be fixed. Might be a good idea to trapse through the site with a link checker and see if that happens for any of the other links, at least in the reviews section.

Pages: [1]