Robert Meffe

Jul 192012
 

 

This is just a teaser while I work. I finally gave a name to the project I been working on to take advantage of Amazon’s Spot Instances. Booh, is a piece of server software that lives in unpredictable environments. Booh is peer-to-peer and doesn’t need fancy dedicated servers.

 

Booh is in the next round for consideration at AWS re: Invent!!!! The Presentation is called “ Spot Instances – How to download and process the internet”

 

Jun 252012
 

I have been teaching a crossover developer for about 8 months now, we’ll say. We both started to give up our Saturday mornings and come in to work on projects the company would not allocate time for. An example would be the “Automated Build Tool,” as we call it. Basically, it has all the functions you need to build and release the product to stage or production, along with doing backups and running sql scripts. Not rocket science really; products exist for it, but since this is stage and production, we wrote it in-house. I personally have Cruise Control running on my development server to keep a running build of the current production tag and the current trunk. I inherited this build machine from a developer who left the company.

When we first started, we talked about design patterns and methodologies. When asked what I prefer, I said,”RAD.” RAD, or Rapid Application Development, is really the precursor to this current Agile craze that I tend to dislike. RAD was thought up by some IBM guys and put into a book in 1991. If you want to learn more about the book version of RAD, see Wikipedia.

For the most part, the “RAD” I use stays true to the book version.

My Version of RAD:

  1. Meet with the end-user or client to talk about what problem they are trying to solve and what needs to be addressed by the project.
  2. Lock yourself in a room of software engineers whom you get along with very well. If you can’t all agree to watch or to order food from , you should scrap the idea of using RAD.
  3. Ignore all code guidelines and pick a function and start writing it. Plan to use test cases to make sure all functions pass a valid test case. Example: validating a user login to a system should cover a yes, no, and what did you enter?
  4. Make the newest guy design a user interface (or send him to get food from and do it yourself).
  5. Make sure to take a shower and go back and meet with the end-user again. Make them use the software. Do not demo it at all and say, “Hey, this does that.” You want to see them fail and every time they do, note this, as you will need to fix it.
  6. From your first prototype, you should have a lot of questions for the end-user. These will be questions like, “Have you thought about Single Sign On instead of just a login field?”
  7. Now that you have shown the end-user, you know about their company/product/job by asking such amazing questions, and you need to get feedback. These will be questions like, “Did you notice anything that was missing,” or “Is there a feature you might not have thought about in the first session?”
  8. Back to the software engineer pen. Once again, stocked with Redbull and Doritos. You will create a new project. The code you showed the client is now the documentation of what needs to be in this version.
  9. During this code phase, you will start to use “code guidelines.” You will remember OOP means reusable code. Clean up that horrible nested foreach loop I know you are still amazed at the fact that it worked.
  10. Now that the code has been re-factored into a new project with the list of changes from the client in mind, you are ready to meet with the client again.
  11. This time, shower is optional, as you should not have been working 24/7 like last time. I am assuming you shower regularly. If not, now is a time to start.
  12. Just like the last meeting. This time, the end-user should know this will be the final revision to the spec. Besides, not much should be changed from here except the UI.
  13. Now, you get to go out and get dinner with the team at a nicer .
  14. When you are back to the office, open a new project and, this time, you will follow the coding guidelines to the letter. You will remember that design patterns work. You will XML comment this bad boy. You will have code so simple your mom could add a new feature!
  15. The product is shipped to QA and a technical document writer. This cycle should be sort and sweet. I mean, you wrote the product 3 times; I hope you learned a lot from the first 2. Your code should be secure, stable and elegant to read. When looking at the code, you should weep—as this is the stuff they write books about.
  16. Drop off the end product, collect that well-deserved check, and now you will use the waterfall method. If the user wants a change, you will document the change request in the normal boring fashion. These should only be minor tweaks, anything else, and you will need to remind them that the new request was way out of the scope of the initial project, and they will need to start a new project if they want those changes.

The truth is, I find this method to be the greatest way to get beautiful code. You and the end-users both contribute to the same problem: the 500 “what ifs” that come along with writing software. Agile tries to handle this with iterations when the “what if” is small. This does not handle a complete redesign like, “We need to change from XXXX back-end to XXXX third-party.” You can argue that all that needs to be done is switch out a class, if they did use OOP. Sadly, this is often never done.

Most companies that hire me have a software system that is living on a life support machine. One wrong config key, and it’s all over for the software. Okay, so I make it seem more hellish than it is, but—really— most software I touch, design and standards still are not a thought.

During our 4 hours on Saturdays, I watched Youtube and Netflix while the crossover developer would sit there and struggle to get anything to work. Every now and then, I would say, “You know it would be a lot faster to use this?” or “Why reinvent the wheel? That feature is built into the framework.” I rattled off classes and functions with the parameters needed to make the function work. He would, of course, ask if all developers knew this, and I would say, “No. My background is debugging and software architecture. I have been paid to know the framework in and out. Most developers understand that something must exist but will need to look up a help document.” When the project was done, they congratulated us. He has the habit of always giving me credit when I feel no credit is due. I was no more helpful than Google with good word suggestion.

The first version was to get the software working and tested. This, of course, went to production to make sure it did work, with a careful eye over it all. The second re-factor started when our boss asked for SVN tags to be sorted by name. Instead, I offered to just filter the results based on a string entered into a textbox. While I was in the code, I started to rename all the badly named buttons and lists. For instance, button1_click became btnBuild_click. He got the idea and spent a few days re-factoring the code and splitting it out. Now that the code was in SVN, and I had full access, I started the final re-factor of moving all logic code to a single class. This way, only display logic would remain in the front end. This would allow for the majority of the code to be ported to a Windows service. You would then just need to add the queue logic and be done with it. After reviewing the code changes with him, he said, “Now, I see why you support RAD.”

Writing software once with a frozen, well-defined specification beforehand is like building a Skyscraper with the first draft of blueprints. While the end-product might work, it was not designed for the pool on the 5th floor and will require a major overhaul to support the weight. It would have been better to make a few drafts and get feedback during each draft.

Jan 152012
 

Okay, I am flying with out my editor for this post. Long story, I had a tooth extracted that caused grief for a month, then my uncle died, and then a chronic condition I have decided to flip out. I been pretty much out of work and laying in bed for two months now waiting to die. I mean waiting to get in for testing. You might be like “Awesome! you have all this free time to work on projects.” Well, I been working odd contracts and the company I was working for let me go 1099 until I recover. This means money is a little tight. I am awake for mainly 6-8 hours a day and I spend the time in a great deal of pain or playing video games trying to forget I am in pain. Due to the condition opiates really offer no pain relief.

I will be at Ohayocon this year along with a fellow photographer that owns Moments By Cole. I will post another update hopefully soon.

Aug 292011
 

RFID Spoofer: slightly dropped the ball this last week. I was a little out of my “zone”. Currently working on a RAW mode. This has eaten into my time to write the flash chip code to test the circuit. I really should do this first as I could then do one final check for fitting of components then send the board to batch PCB.

Open Source Text Editor: While text editors are all the rage and I know the world does not really need another one. I wrote one that also provide intellisense. I am waiting for official word from my current employer to release this project. This was mainly designed to help speed up coding inside a third-party vendor’s custom scripting language. I can release the editor with out the custom language syntax but it makes no sense as Notepadd++ rocks ;).

WMI Code Samples: See RFID Spoofer. I have the code I am just trying to turn it into an all-in-one class to make it much more useful. I am trying to provide managed classes for the native WMI. Thinking about that I should check and see if they don’t already exist. I am just writing a code generator to spit out all the properties and options on a WMI class that then generates a .cs file.

HTC Incredible TVOUT for CyanogenMod: See data sharing below. I really need to set up VNC on that virtual machine.

Photography: Seems Route 77 south-bound was closed all day Saturday and I missed the Northcoast Nero event. By the time we would have been able to reroute it was not worth going “it would leave only an hour of daylight left”. We did stop and take photos of some wildlife. I will be posting the photos for sale soon. (Along with a lot of other photos I have been meaning to sell). Also, we will be trying to set up a deal to do a photo shoot at an anime convention next year!

Data Sharing: I really need to get better on this. I am going to set up GIT or Dropbox or something soon and dump all my open source projects into the public. While they will be unfinished and horrible to read, I feel that in case I die, get hit by a bus, or taken by aliens to another planet people will still have access to my data long after. The most valued possession I own is my knowledge and it belongs to the world if not under trade secret agreements. I will also release some “trade” secret code encrypted on the net also and leave the code with some people in case any of the above happens. Do I feel any of this will happen? No, but I check my work into SVN everyday before I leave work. I should do it with my projects.

Aug 132011
 

Hello Everyone! Shhh, short message don’t tell my editor I am posting with out her reviewing it. Then again it just makes me look like an idiot. At work this week we had some problems with starting/stopping IIS websites via the build tool I helped someone make. Since it took me like an hour to figure out how to do it. I thought I would write up a guide to using WMI. Look for code samples before the article.

Aug 082011
 

RFID Spoofer: I got the final parts and everything mounted to my breadboard. Once I make sure the 8mb flash works I will release the board design and BOM (Build of materials). Everything is from mouser and uses no outdated parts. I will also release the Nokia 5110 screen designer I had to write to generate screens that will save into the flash chip.

Cyanogen Mod TV out: Really sorry this got moved to the back burner. I really need to set up remote access to my Linux machines. It’s been a little of a learning curve to learn the framework as it does differ from Linux a bit.

Sports Car: Left bank lean! The problem was with the MAF sensor and now the car is back to zipping around. I am remounting and doing a lot of the electrical work. I switched out the 100 amp glass fuse for a 100 amp breaker. The problem is that I need a case for the breaker. I refuse to place any bare positive charged bolts/wire in an area where they are not protected from a rogue bolt failing and grounding the car out. The battery would of course explode. I had the codes ran at Autozone last weekend and they said the problem is the left bank o2 sensor. I will order a new o2 spacer off Ebay, as it must not have been spaced enough.

Webservers: We have almost moved all the websites to a new host: Media Temple. My only complaint to this date is the fact you have to log in to respond to a ticket and you can’t e-mail them back. I was at Kirtland Ohio Wine Festival, and I needed to send a simple “That’s cool” reply. Since I never updated my Keepass file on my phone before I left, I couldn’t login to the support site to send a reply message. Of course I could have tunneled through 4-5 systems to get access to send the message, but it was hot, and I had been drinking and lacked a bluetooth keyboard.

Coding Competition! Seems work likes my mad coding skillz (was that hacker eliter speak?). In September, we are competing to see who can send out e-mails the fastest using a third-party system. I don’t want to give away any details as we are competing against some hard hitters. I don’t know if my current company fully knows who I have worked for; but I am not scared, and I will take first ;). I know, big talk — I will probably oversleep or something and lose.

New Content: I have been working really hard to provide some really good nerd content. I failed at a video of how to solder thick gauge wire only to have it work when I was not being filmed. I am also constantly rewriting an article on thinking like a hacker.

RFID Giveaway!!!! I will be giving away a few RFID Spoofers when I have the boards printed. I am going to try to team up with Hack a Day for the giveaway.

Also, thanks to everyone for reminding me I am a year older now.

Jun 202011
 

I almost have the circuit done. I am missing 5 switches, an expansion port, and storage memory. I was originally going to have a bar code reader on the same board but the size of the parts and the positioning of the IR stuff would have been a pain. So, I am going to add a tiny header to the board to allow hacking of all kinds. Since only 1-2 cogs will be used for the whole circuit why not allow hacking fun? You will notice I opted to use almost all SMD components in the design. Sorry if you feel your soldering skills are not up to the task, but the goal was to keep this all pocket-sized.

Background:
Originally I wanted to “spoof” RFID chips from my phone. After much looking into, even if I used ultra small parts, adding a spoofer into my phone became a little unrealistic. The best option turned out to be to solder a transistor to the headphone output jack and use pulse-width modulation to short the tuned circuit (lc) circuit. I wasn’t too keen on possible interference to my headphone jack. The other option was to fit the circuit into a 1/8 headphone jack, but then I would have something sticking out, and that wouldn’t be cool!

Phase 1:
I first used a simple RFID reader circuit I got for 10 bucks but found I was unable to read my work RFID card. After some looking around for better readers that support FSK and not just ASK, I came across a wonderful little circuit by Beth Scott. This used the propeller with a few extra parts. What I really liked about the design is the built-in tuner. The circuit looks like an inductor sensor with an attached LC. After building this and two failed coils I changed some of the capacitors around and lowered the mH of the inductor. This allowed me to complete 3 coils: 6 inch, 4inch, and 2 inch. Now I could read the cards!

Phase 2:
Still I needed to replay the payload. As luck would have it, Beth Scott released an awesome RFID tag using an Attiny85. While I could shrink her design down to be almost no bigger than the chip itself, the problem was how to reprogram it on the fly. Without finding any good answers or none that looked pretty phase 3 came in.

Phase 3:
With the reader outputting over a serial connection to my computer it was not very portable. At first I was going to use a simple 2 line character LCD that was lying around. To make sure I could really shrink Beth’s RFID tag down to the size of the chip, I needed an AVR programmer. Enter another nerd nip favorite of mine. Lady Ada owns a cool little site with all kinds of goodies at www.adafruit.com. While looking for an AVR programmer (I bought the AVRTinsy kit). I remembered the Nokia LCD screens are hacker approved. That completed my order from Ada Fruit. After getting the screen I was like hrmm…………….I bet I can make this whole circuit board with reader/spoofer fit on the back of the LCD! After some designs and a few test prints on paper, I was right: I could fit all the parts on the back of the LCD screen.

Phase 4:
With a lot of over-powered goodness I decided to remove some extra bloat from my wallet. I started to write a bar code library to draw my bar codes on the Nokia 5110 screen so I can ditch the plastic cards. I thought HEY! Why not add a bar code reader also and make this really awesome. Well, the circuit was just a little too big, and really, reading bar codes on the fly is something you do once. So, I created a bar code reader daughter board for the overall project.

About the Current Circuit:
The other night via Twitter I posted to @scanlime a sample schematic (Shown below). On the left side is the power supply with a green diode to let you know it’s on. The main center square is all the parts for the propeller chip (Memory, prop plug port, 5mhz crystal, and the propeller chip). Below that is a simple LC with a transistor to short on the circuit at the right times. Top right is the Nokia 5110 header. Below the Nokia 5110 Header is Beth Scott’s reader design. Missing additions to her design is two solid-state relays. These relays are made to shut off the inductor coil when the device is “spoof” mode. I am going to add 1mb-8mb of memory on board for storing the screen art, RFID tags, and bar codes. I think I have some Microchip flash memory some place that I will probably use. The memory will auto store via the readers or can be accessed via the prop plug’s serial connection. Two buttons below the LCD will change from reader to spoofer. On the side of the LCD will be an up and down buttons to scroll through a list RFID and bar codes. The PCB (once its been tested), will be made all open source goodness, and you will be able to order a print from http://batchpcb.com/ of course for free. I have no interest in selling circuits or parts. If it becomes popular, you can bug the lovely Lady Ada, and maybe she will sell a kit on her site. I also plan to make a home-brew friendly through-hole design that will be laser-printer friendly and single-sided. Attached below are some photos!

Links
Scanlime – Beth Scott
Lady Ada
Ada Fruit




Jun 182011
 

I would like to thank Media Temple for the really nice easy setup. Normally transferring sites as large as this one is a real pain. They had an awesome 10.8mbs download speed so I was able to transfer my site image over very quickly. Took a little bit messing around but I need no support help to restore my large databases or get my site running! If you need load balanced scalable hosting at the cheap look up Media Temple and tell them that robertmeffe.com sent you!

Jun 092011
 

Based off of work from the lovely and talented Beth Scott I have completed an on the fly RFID spoofer that uses a parallax propeller chip. The design uses one external inductor to read and a built-in very tiny inductor the transmit. The device should be slightly bigger thickness and width then a Nokia 5110 display. The main usage will be to consolidate RFID tags into one nifty little device on the fly. I also thought about consolidating bar codes and maybe even mag strips.

Google Circle
Join my Circle on Google+

Plugin by Social Author Bio