Archive for June 2013
A Wordsearch puzzle is a puzzle that contains words hidden in a grid of text. It is a fun activity used to teach children spelling and to help memorize information like country capitals.
This Word Search generator was written in C#/ASP.NET and generates PDFs using the iTextSharp library.
I bought the Logitech Trackman Marble Mouse after finding the Logitech Anywhere Mouse MX to be too small for my long fingers. Excessive use was causing my fingers to cramp up which is not fun after a long day at work. It is too bad because I loved the Anywhere Mouse and found it to one of the best mice I’ve ever used. A co-worker suggested the Trackman because it was ambi-dexterous and it accommodates long fingers. I bought the mouse from Amazon.com for $23.
The trackball is very unassuming, there is a red ball at the top you manipulate with your fingers and two buttons on each side. One side is meant to be clicked with your thumb and the other side by your ring or pinkie finger. The top is made of a slightly textured plastic that doesn’t get
uncomfortably hot with use. The bottom is the standard mouse black plastic with three anti-slip pads spread around it. The entire unit is sheathed in shades of an unassuming gray that exudes a sense of boredom.
The trackball feels like what you’d expect from a device made from cheap plastic. If feels decently comfortable in my hands, I can rest the palm of my hand on the base and stretch my fingers around it to reach the ball and buttons. The buttons are typical Logitech, the have a linear feel and click with very little drama. Each click is accompanied by a precise ‘snick’ that provides auditory feedback of the action’s execution. I can tell that these buttons are well made and that I can count on them to perform reliably for years.
The ball is smooth but is a little heavy and has quite a bit of friction. I have to put in more effort necessary to move it around, I can’t just flip the ball and move the mouse all the way across the screen. The ball is removable and this is a good thing because gunk tends to build up on the supporting pegs.
Becoming proficient in using the mouse takes a day or so, precise pointing takes some practice but you can go from opening the box to clicking links in Google in a couple minutes. The main left and right click buttons are easy to find and click. The 2nd set of buttons, meant to be used for back/forward while browsing the web, are useless. Clicking the buttons requires me to contort my hand beyond a comfortable level that is intolerable for any amount of time.
The ball is heavy and has a lot if friction. This makes it hard to scroll rapidly across the screen during regular use and I can feel fatigue in my fingers towards the end of the day. A big issue is that gunk from your fingers builds up in the ball supports which further impede progress. I find myself cleaning the ball supports at least once a day. The heavy ball becomes aggravating after a while and I feel like Logitech should have put more work in this part of the design.
Overall the Trackman Marble Mouse is a decent trackball considering the price. It has no fancy features and it does the work of the equivalent two button mouse. Having a sealed sensor means that the buttons or the ball will wear out before the sensor breaks. it also means that we’ll have precise sensing for the life of the product.
Annoyances include the extra buttons are useless and I think they were put there just for marketing reasons. Gunk tends to build up in the ball supports which requires frequent cleaning. The base doesn’t fit well in my hand – It would have been nicer if the base had been wider or had a slight dip for the base of my hand.
Useless forward and back buttons
Heavy track ball
Tendency to build up gunk in the ball supports
Update 9/14: These instructions no longer seem to work at Linode. Please leave a message in the comments if you see a mistake in my directions.
I’ve written about using Apache to proxy connections over SSH in order to hide sensitive information in public places. For an extra fee you can gain additional anonymity on the internet via companies like Private Internet Access which provides multiple VPN gateways for around $40/year without the risk of hacking or mis-configuration that comes with doing your own setup. You also get the ability to use VPNs in multiple countries and US locations thus further obfuscating information.
Private Internet Access has instructions on how to set up a VPN on Ubuntu using Network Manager. However I’m using a server install at Digital Ocean and I don’t feel like installing the desktop just to use Network Manager. In addition there is setup required to allow you to access the VPS while still routing outgoing data through the VPN. This should also work at Linode. Here is how to do it:
1) Install open-vpn : apt-get install network-manager-openvpn
2) Download a copy of Private Internet Access’ config files or if their site is down, here. Unzip the files in a new directory. The zip file contains everything you need to access their VPN servers without dealing with Ubuntu’s Network Manager.
3) Now you configure your VPS so that any traffic that comes to the VPS is responded to by the VPS. Otherwise once you start your VPN any attempt to connect to the VPS will be answered through the VPN which is not what the connecting software expects.
Type this at the prompt:
ip rule add from x.x.x.x table 128
ip route add table 128 to y.y.y.y/y dev ethX
ip route add table 128 default via z.z.z.z
Where x.x.x.x is your public IP y.y.y.y/y is the subnet of your public IP address ethX is your public Ethernet interface z.z.z.z is the default gateway To get the x, y, and z use ip route: ip route show. The last three lines of the output will look something like this:
220.127.116.11 via 127.0.0.1 dev eth0
18.104.22.168/1 via 10.155.1.5 dev tun0
127.0.0.0/24 dev eth0 proto kernel scope link src 127.0.0.1
Match the color coded output to the ip commands above. You need to type these in every time you restart your VPN so it helps to save them in a shell script.
4) Optional: Create a password file. You can create a password file to supply OpenVPN with your login info If you are lazy and don’t feel like entering a password every time you connect to Private Internet Access. To do this, make a file that contains your username on the first line, password on the 2nd line, and nothing else.
5) Start OpenVPN using one of the config files from step 2. Each config file is set up to connect to one of the VPN servers run by Private Internet Access. You can specify your password file from step 4 using the auth-user-pass argument. Here is what I use to connect to their Romania server:
openvpn –config Romania.ovpn –auth-user-pass password_file
Finally, check your IP using their ‘Where’s My IP‘ page.
Questions or comments? Feel free to leave a message using the comments box below.
I recently had an issue on my Windows 7 Lenovo x230 laptop where it would boot up normally, let me log in normally, and then briefly show me the desktop before going to a solid white screen. When shutting down or logging off, I would again briefly see the desktop before my session ended. After some searching I found that this is a common type of malware and that it can be removed by booting up in safe mode with command prompt and then going back to a system restore point. Here is what I did:
1) Right before the Windows Boot screen comes up, press the F8 key to bring up the Boot in Safe Mode Menu
2) In the Safe Mode Menu, select the Safe Mode with Command Prompt option
3) The system will then boot into Safe Mode and you will see a Command Prompt window. In the Command Prompt window type %systemroot%\system32\restore\rstrui.exe to bring up the system restore menu.
4) Follow the prompts and restore to the earliest system restore point on your system. This will take a few minutes.
5) Reboot your computer. If you had the same issue I had then you should now be able to use it normally.
One last thing to consider is to go into the Programs and Features menu in the Control Panel and uninstall any programs you installed recently. A new program is often the source of malware since the install often requires you to give Administrator access.
I bought the Fenix-HL21 to light my way during my early morning runs. My reason for choosing it is that the headlamp uses just one battery and the output is regulated so it wouldn’t slowly go dim and fade out. The one battery means that the headlamp is light which means it won’t bounce around when running. I bought the headlamp in December of 2011 and I’ve now had it for about a year and a half. I use it semi-regularly at night and for general work when I need extra light for a dark space.
Fit and Finish
Overall the lamp is decently but not well built. Unlike other Fenix products which have an aluminum body, the lamp body and battery compartment is made of plastic. The plastic is thick and feels decently rigid in my hand. The casing around the LED is made of aluminum and this is done to facilitate heat dissipation. The cap on the battery compartment has good sized threads which makes it easy to open and close. The plastic construction probably allows the big threads, most aluminum lights have tiny threads that are easy to mis-thread when screwing on the cap. The big annoyance is that the lamp attachment to the headband is not secure and the lamp can come off if you are not careful when handling it. I’ve had issues with my past Fenix lights where the negative terminal spring wears out and no longer makes contact with the battery. It hasn’t happened yet but I fear that it will happen one day.
This is my second headlamp, my other lamp is a Zebralight which is floody and perfect for indoor work. Compared to the Zebralight, the light on the HL21 is highly focused and projects a decent distance. It is very diffuse and dim at the lowest 3-lumen dim setting but brightens up at the 43-lumen mid setting with the 90-lumens high setting being the brightest. It is hard to tell the
difference between the 43-lumen and 90-lumen settings except that the 90-lumen is slightly brighter. This may be due to the logarithmic nature of our brightness perception. There is very little flood which means there is little light for your peripheral vision which means you’ll be swivelling your head back and forth when you are outside. In addition there is a small gap around the cap of the LED which means there is a ring of light that leaks out around the gap. If you don’t adjust the light high enough on your forehead this leakage shines into your eyes which is annoying.
Battery life in the HL-21 is decent. It is not great and definitely does not match the product listing, I can expect an Eneloop battery to last about 1 1/2 hours on medium and an hour on high. The light has a tendency to turn off abruptly instead of dimming gradually. This is probably due to the active circuitry used to maintain constant brightness and the non-linear discharge of rechargeable batteries. Low mode is incredible though, I’ve had the lamp stay on for two whole days with juice left over in low mode.
The primary reason I bought the HL21 was because I expected it to be light due to the single battery design. The headlamp is indeed light and is ideal for running and night expeditions. The headband however only loops around the head without a piece that goes over the top of the head. This means that the lamp has a tendency to slip down my forehead unless I tighten it to the point
that it cuts of circulation to my head. In addition, the area where the lamp attaches to the cord is not padded and it leaves a mark on the forehead. The mark is especially deep when you wear the lamp for long periods and the mark persists for a while afterwards. Imagine going for a run in the morning and then heading to work with a strange red mark on your forehead.
Overall the HL21 is a decent headlamp for its price. it has a couple annoyances that shouldn’t be present at this price point but its worked out well so far.
Multiple light modes
Light single battery design
Good focused light
Solid, decent construction
Possible weak internal spring
No peripheral light
Gap around lens cover shines light into eyes
Doesn’t work well with rechargeable batteries
One of the major problems with WinHost is that you don’t get much disk space, their base plan comes with not even 2GB but 2000MB. One way to stretch this disk space is to host images and other big files using Amazon’s S3 service and just keeping your ASP.NET/PHP e.t.c code files at WinHost. To make this hosting appear seamless to your visitors, Amazon allows users to alias a sub-domain or domain to their hosting service. This way users see your domain i.e s3.xyzio.com but the files are pulled from AWS.
The setup is not very complicated and takes about 2 hours, most of which is spent waiting for your sub-domain name to propagate. First, log into the AWS S3 console and create a bucket named after your sub-domain – s3.xyzio.com here:
Then log into your WinHost control panel and click on DNS Manager. There under Manage CNAME Records enter your sub-domain for Domain Name, s3.amazonaws.com for the Destination and 3600 for TTL. TTL stands for Time-To-Live and denotes how long in seconds the alias is maintained before it is refreshed. Here setting it to 3600 means that it will be refreshed every hour:
Now wait for about two hours. Then you can access any file you’ve uploaded on AWS using the following format: http://<domain>/<directories>/<file-name>. For example, the image above is hosted on AWS at the following address: http://s3.xyzio.com/s3_cname/winhost_cname.jpg.
You can use https to securely link to your image. This will throw a warning message in your browser because the domain and hosted domain names are different i.e. https://s3.xyzio.com/s3_cname/winhost_cname.jpg.
Of course you can also link directly to your file using the AWS linking convention: https://s3.amazonaws.com/s3.xyzio.com/s3_cname/winhost_cname.jpg or http://s3.xyzio.com.s3.amazonaws.com/s3_cname/winhost_cname.jpg
And that is it. Now you can easily extend your disk space at WinHost without having to upgrade!
It has been a year since I moved my website off Mono at Linode to WinHost and I’m being honest here – the hosting has been absolutely boring and that is a great thing!
After spending some time looking at ASP.NET hosts it came down to DiscountASP.NET, GoDaddy, and WinHost. I ended up choosing WinHost because they offered database hosting in their base package, promise not to oversell, and I couldn’t find any bad reviews about them. Looking at my other options – The web is littered with bad GoDaddy reviews and DiscountASP.NET doesn’t offer a MS SQL database (or any database) at the same WinHost price point.
Unlike hosting with Mono – I do not have dink around with arcane text files, there is a nice GUI interface to manage my site. I can select my ASP.NET version, manage my databases, and do everything I need to manage my site through their interface. My website and iTextSharp based BingoCard maker just work! In addition, I’ve had no downtime or hosting issues since I’ve started hosting with them. Perfectly boring!
Of course nothing is perfect – I’ve had a few a couple issues with them:
Their auto installer would only install WordPress in domain.com/wordpress. I couldn’t choose another sub-directory like /blog or /diary. However, I was able to manually install WordPress in a different directory on my own.
Another problem I’ve had is that I had trouble connecting to WordPress Jetpack through my install. However it seems that they’ve now fixed the issue.
One last annoyance is that they don’t include Scheduled Tasks in their basic $5 package. This means that I can’t set up tasks a-la-Cron like a Mono-on-Linux install would allow.
Overall I’m happy with my experience, perfectly boring ASP.NET hosting with database for just $5/month where everything Just Works!
Have other questions? Check out the WinHost forums!
I’ve switched to using Mono at DigitalOcean on their base droplet. I get 20GB of disk space and greater ability to run scripts or set up a database for just $5/month. Also, WinHost changed their monthly price to $5.95/month with a 3-month pre-pay so DigitalOcean with Mono is cheaper, faster, and comes with more features.
I still highly recommend WinHost for beginners and for those that want no-hassle hosting. Maintaining your own server does take time and sometimes requires technical troubleshooting.