“@crashpaddesign: This is looking to be a serious contender to Shopify: http://t.co/iKL7oRh9 #woocommerce #ecommerce @Pirnke
View on Twitter
Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp
“@crashpaddesign: This is looking to be a serious contender to Shopify: http://t.co/iKL7oRh9 #woocommerce #ecommerce @Pirnke
View on Twitter
Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp
It’s taken me far longer than it should, but I’ve finally gotten my McLane Edger craigslist score in a proper working order. The original issue had always been an awful squealing noise that would totally un-wind the pull cord in disastrous fashion. A secondary issue was that the cutter arm was totally frozen, would not turn, rotate or telescope. I thought maybe the cutter arm was the issue as it seemed to happen as soon as I put pressure on the engine pulley. Turns out they were un-related, after failed attemps to free the cutter arm I ended up just replacing it with a new one – best $75 spent.
I knew then it had something to do with the starter pulley, which is a hard thing to google if you have no idea what it’s called. Common official terms appear to be “Ratchet Starter”, or “Ratchet Clutch”. What also makes it hard are the specs for this engine; a 2hp Briggs and Stratton horizontal shaft 4-stroke, I think they haven’t made them since the mid 90′s but they are bulletproof little engines used in everything from snow blowers to a favorite for go-karters. If I knew something about engines, probably wouldn’t have needed to google anything…
The best resources I found we’re Canadians or upper mid-west folk’s youtube videos on repairing their snow blowers/reel mowers, this was by far at the top:
http://www.youtube.com/watch?v=S2Kn6RiTA7U
And this guy has nothing but time to dink with small engines:
http://www.youtube.com/user/pimpinpenz#p/u/39/Fz7RUU_-YSc
To repair:
This is also an example of how to change the oil, plus stuff on blocks looks cool no matter what it is.
This picture shows the ratchet assembly in the center after removing the pull-cord housing.
This shows the inside of the ratchet starter. I’d actually been to this point about three times, oiled and cleaned all of the ball bearings with no luck solving my problem. Wasn’t until I watched that youtube video I realized that inner shaft was the problem. I took that off, was able to clean the entire inside of the ball-bearing housing, and cleaned and lubricated the engine shaft and ratchet-post thing.
Now it runs like a champ, along with my new cutter arm it’s like new. And yes, my yard looks better than yours.
I won’t rant for too long about the great Sham that is Comcast, but remember the big HD TV transition? With Comcast you “didn’t need to do anything”, right – nothing except get some set top boxes for each TV in your home if you wanted to retain the same programming. Oh – and you only get one for free with most cable plans.
Long story short, I found out with this set top box I didn’t get HD channels, yet my other tv with no set top box did get HD channels. THE COMCAST BOXES BLOCK HD CHANNELS BY DEFAULT! Why? So they can up-charge you $$$ to upgrade, essentially, pay extra money to remove a filter on their boxes.
As an irate customer, I bought an HD antenna and let it sit in my garage for about 18 months, then I decided to install it:
Parts:
The Antenna I bought was cheap, outdoor, and had a nice swivel mount for direct mounting to the side of a house, on top of something, or pole mounting. Turns out 1 1/2″ EMT conduit is really cheap, light, and sturdy. I decided to go big and get it just above my power service mast. Location was chosen based on the existing cable entering the house at that location, easy to mount by getting onto the garage roof, and it will be with all the other tall stuff attached to my house. As soon as you try to home run your own cable more than once, you’ll desire good tools, so you can be slick like the Comcast man. That Paladin set has been worth every penny, because did you know you can use Coax for signal cable too? Now you’re a home theater master.
In a passing conversation about HD Antennas, someone at work clued me into the fact I want to make sure I ground it properly. Something I figured the coax cable would take care of, but once you bolt a 8′ pole to your house that is now the highest point of your roof, its a good, easy idea. I just bought a length of 14AWG bare copper wire that runs from the top of the pole with the cable to the house, then takes the most direct route to my existing home electrical ground conveniently placed near where my cable enters the house.
The Comcast cable already had a single ground block for the coax, which had a ground wire also connected to the home ground. This was an easy swap out for a dual ground block. From there the cable enters the garage to where it gets Amped and distributed through the house.
Comcast also installed a signal amp to help with my internet and TV signal. This is also helpful and usually recommended for HD Antenna installs. So now in the garage, I have a Comcast line, and my Antenna line coming in the same spot. This makes it really easy to plug and play between the two for troubleshooting, and whenever else in the future.
The results were OK, most channels come in fine, however a few don’t come in well at all. I have a feeling some alignment is probably necessary, that and getting my wife sold on the nuances of OTA cable. Overall, its a success and if I had more time id figure out the alignment, or buy a better antenna. Also, http://www.antennaweb.org/ is actually an awesome resource with the information you’d need and want about OTA Stations, strengths, and locations in order to determine optimal antenna, placement, and alignment.
I use NAnt for a build and deployment tool for databases and OLAP. I wanted to be able to add only the accounts needed per-environment to certain objects on the fly through the script, as they are run on whatever workstation they are being run from.
I’m using the “Primary Dns Suffix” of the machine – which for me indicates the domain we’re running in. (Dev/Test/Prod). I’m accessing this using ipconfig /all, saving the output to text, getting the value I want as a property for use later in the script.
<exec program="ipconfig" output="ipconfig.all.txt">
<arg value="/all" />
</exec>
<loadfile file="ipconfig.all.txt" property="ipconfig.all" />
<delete file="ipconfig.all.txt" />
<property name="envrionment" value="dev" />
<regex pattern="(?<=Primary Dns Suffix\s(\s\.){1,7}\s\:\s)(?<environment>\w{1,})" input="${ipconfig.all}"/>
<echo message="CURRENT ENvIrONmENT: ${environment}" />
Regex Master.
First, I don’t know why; but it seems like as soon as you add in the word OLAP or Analysis Services to your problem things just stop working as you would normally expect.
Problem:
The “should work out of the box solution”:
Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");
RoleMember r= new RoleMember("Domain\\Account");
role.Members.Add(r);
role.Update();
What’s the big deal right? Well, there are a few problems:
First:
Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");
RoleMember r= new RoleMember("Domain\\Account");
if(!role.Members.Contains(r)){
role.Members.Add(r);
role.Update();
}
That is hopeless, I thought at first because of the SID thing – but NO… After the next solution, Role.Members.Contains() does not work very well even though in debugger I have the EXACT same role member I’m adding, and exists in the role. Not only was it not finding it, but it was still adding a duplicate. This along with the not mapping to proper SID – I deemed to be a future-issue I should avoid now. So…
List members = new List(); // I fill this with all the members I need to add
Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");
//oh wtf, I can't seem to Linq to the role.Members so I'll do it this way, plus case insensitivity on .Remove() doesn't exist
foreach(RoleMember rm in role.Members){
string er = (from m in members
where m.Equals(rm.Name, StringComparison.InvariantCultureIgnoreCase)
select m).FirstOrDefault();
if(er!=null){
members.Remove(er);
}
}
foreach(string m in members){
//you'll want to wrap in try catch in case the account doesn't exist, you'll get a IdentityNotMappedException
NTAccount acct = new NTAccount(m);
//conver it to SID - check if its even real
SecurityIdentifier sid = (SecurityIdentifier)acct.Translate(typeof(SecurityIdentifier));
//convert it back from SID - this will get us proper account Name format/casing
acct = (NTAccount)sid.Translate(typeof(NTAccount));
//create my wholesome role
//already done my "contains" magic, add that monkey
role.Members.Add(r);
role.Update();
}
}
That final solution actually works out pretty well, and accomplishes a lot of items I would have skipped had the first one just “worked”:
And it did solve several problems along the way:
I will try to write a follow up soon regarding how to determine what environment (primary domain your machine is connecting to) you’re in from NAnt
Because LAWS were optional until now? McGinn orders police to enforce rules at protesters’ encampment http://t.co/Hvndggix @SeattlePI
View on Twitter
Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp
Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp
Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp
“this is my sweet string” == “dGhpcyBpcyBteSBzd2VldCBzdHJpbmcZ”?
Those two are actually equivalent, as proven by Amazon SimpleDB. We started seeing these mysterious strings in our SimpleDB data which is supposed to be a direct upload of SQL data for use in a UI. I automatically assumed it had something to do with special characters and proper encoding, as we have seen in our processes before. But this case was more unique because instead of just mangling the special character, it has managed to blow out the entire string… WTF
The culprit was an “End of medium” ASCII control charachter. These ASCII control charachters are all non printable. Once I had this figured out some more googling led me to the answer of why the whole string was unrecognizeable, base64 encoding:
What’s happening/changed: http://www.dibonafide.com/?p=25
The official documentation: http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?InvalidCharacters.html
In my case the charachters were more of an anomaly and I just wanted to be rid of them. I had some options of taking care of it during the upload to SimpleDB or at the DB level. What worked easier was just throwing this handy function on my DB, and converting in the view I’m using to get data to upload:
http://iso30-sql.blogspot.com/2010/10/remove-non-printable-unicode-characters.html
Per the official documentation above the response object for the item will actually indicate what type of encoding it’s using. A few sites have mentioned they just base64 encoded on upload, and then decoded when its being used for display. I think with it specified in the item itself, you can probably just design your UI or whatever is consuming the data to check for base64 encoded strings, then decode, and remove any invalid characters there.
Now if I could just get WordPress to stop using invalid XML characters in its markup… that’s a topic for another day!
Recently I’ve come across two cases where it appears in the interest of usability, we’ve gone too far and invaded what I thought used to be “boundaries” for UX, and proper accessibility practice.
1. Google Hijacking My Down Arrow
Have you ever gone to a google search result page and tried to use your down arrow on the keyboard to bump down your scroll? AND NOTHING HAPPENS? They’ve hijacked your down arrow and given you what’s been affectionately named (by the internets) “little blue arrow” which is a cursor for each search result. Each press of your down arrow will move this cursor to the next result. Before: One keypress of down arrow would show roughly 10-20% more page “below the fold”. Now: I have to press my down arrow as many times as there are results showing “above the fold” to see more of the page…
I don’t know if this is some kind of conspiracy to increase views of top ranking search terms or just a bad attempt to “improve” usability, I’d rather it be the former in my book.
2. Sites are copy-jacking me
Yes it appears the current definition of “copyjacking” has something to do with copyright stuff, but that’s stupid. So I’m on a news article, and I copy a line of text:
The vote had no legal bearing on the state’s mega-project
I paste it in order to tweet something and this is what I get:
The vote had no legal bearing on the state’s mega-project
Read more: http://www.seattlepi.com/local/transportation/article/On-Ref-1-Seattle-says-build-the-tunnel-2076294.php#ixzz1VIzuHvAE
Not just text that I didn’t copy, but its got two whole line breaks, blowing up my little tweet window… Even worse than Seattle City Council wasting our time on votes and referendums that have “no legal bearing”
Based on my scientific Google research the practice seems fairly new, and the culprit on the site I was viewing was Tynt, as noted in the post below:
http://stackoverflow.com/questions/1203082/injecting-text-when-content-is-copied-from-web-page
I haven’t had time to crack open the js, but if they were also tracking what I copied it would be a great opportunity for a little #writealetter hacking to tell them what I think. Maybe this atrocity will warrant general analytics-spamming, we’ll see who else is on my list.