NYC Resistor

We learn, share, and make things

Archive for the 'Software' Category

Hex-curious?

Have you ever wondered how to make sense of hexdumps?

e1a02000e5d00000 e3500000012fff1e
e3a00000e2800001 e7d23000e3530000
1afffffbe12fff1e

Or been curious to know what exactly does a bxeq lr instruction mean in assembly?
<br />
   0:   e1a02000        mov     r2, r0<br />
   4:   e5d00000        ldrb    r0, [r0]<br />
   8:   e3500000        cmp     r0, #0<br />
   c:   012fff1e        bxeq    lr<br />
  10:   e3a00000        mov     r0, #0<br />
  14:   e2800001        add     r0, r0, #1<br />
  18:   e7d23000        ldrb    r3, [r2, r0]<br />
  1c:   e3530000        cmp     r3, #0<br />
  20:   1afffffb        bne     0x14<br />
  24:   e12fff1e        bx      lr<br />

If so, then you should sign up for the introduction to assembly programming and reverse engineering class. You can learn assembly programming and machine architecture using reverse engineering techniques on your own code. In this class we will write code, compile it into an executable and then disassemble it to learn about registers, stacks, branches, function calls and argument passing, structs and other common idioms.

Experience with any programming language is required; the examples in the class with be in C, with dissassembly into ARM assembly. Bring your own laptop with arm-elf-gcc and associated binutils installed to follow along.

No comments

30 days of watches

Inspired by Ranjit’s instrument-a-day (Make coverage), I’m writing a new wrist watch face every day for my progamable inPulse watch (more background). The full sources are posted online for others to build on.

Utah Teapot renderingOdometer clockphoto.JPG

Day 1 was a fixed point 3D rendering engine with a rotating Utah Teapot, day 2 was a rolling odometer or aviation altitude ticker display and day 3 is a 24-hour analog clock. This last one still needs some work.

3 comments

Hackable wrist watch makes Dick Tracy dreams come true

The inPulse watch is a great platform to hack on. It has an ARM7, 32 KB of flash and 8 KB of RAM, Bluetooth, a buzzer, an OLED screen and a button. Not much by today’s standards, but plenty to play around with. The programming environment is very much like a microcontroller; no multitasking, no dynamic memory, and very constrained memory/cpu. That is, of course, what makes it so much fun.
Read more

2 comments

Debian-NYC Novice Night

Debian-NYC would like to invite you to our next Novice Night.

Novice Nights are Debian-NYC’s meetings for everyone. If you would
like to install Debian, come on by. If you would like help with
configuring or making Debian do what you need, we can do that too. If
you want to hang out with Debianistas to pick up tips and tricks, come
on by. We can also provide some help with other derivatives of Debian,
such as Ubuntu.

Novice Nights are free-form: bring your questions, and you’ll be able
to talk to people to answer them. There isn’t a set structure here or
presentation, so you can come and go as you would like. There may be
mini-presentations throughout the night. We will be able to help with
new installations or fixing/configuring existing ones. We can make
installation CDs or USB drives. You should bring your computers you
would like help on (and your friends!).

We welcome groups. If you have a group attending, feel free to contact
us in advance so that we can prepare something for you. If you have
questions, please direct them to Richard Darst .

Where and When: Eyebeam, Tuesday, January 18th, 2011. Come and go as
you like between 6pm and 10pm.

Getting there: See Eyebeam directions. Eyebeam is on the west side of
Manhattan, in Chelsea. (540 W. 21st Street, (between 10th and 11th
Avenues) New York, NY 10011) A/C/E/1/2/3/L trains are the closest, and
Eyebeam is right next the Hudson River Greenway.

Contact: IRC on #debian-nyc on irc.debian.org ; debiannyc@vireo.org ;
or Richard Darst (rkd at zgib dot net).

Web: http://wiki.debian.org/DebianNYC/NoviceNights

No comments

Craft Night & Special Talk: FONT SECRETS REVEALED

Font Secrets Revealed

Fonts cannot be shared and when they do not work right, you are not allowed to fix them. Making your own typefaces is a black art, hidden in mystery.

A long time ago programs were the same, but the free software movement has freed the know­ledge, tools and the business of software.

Now it is time to free fonts.

This introductory talk and Q&A reveals how to design typefaces using only free software—and how to make money doing it.

Topics Include:

  • Installing GNU/Linux and Libre Graphic Design Tools on Your Laptop
  • Typeface Design Principles, Font Editor Secrets
  • How Graphic Design Businesses Can Profit From Libre Fonts

Thursday, August 5th, 2010 – 6-9pm, held jointly with our regular Craft Night

~ Free Fonts ~ Free Libre Open Source Software ~ GNU/Linux ~ GPL ~ Wikipedia ~ Creative Commons ~

~ Free Culture ~ Open Font Library ~ Inkscape ~ Open Font License ~ FontForge ~ Public Domain ~

A talk by Dave Crossland

1 comment

Extracting + Graphing Wii Fit data

I ordered a miCoach, which is the Adidas version of the Nike+. When it gets here I plan on opening it up to play with the data, but in the mean time I started with some better-travelled exercise bits and bytes: WiiFit body test data. Starting with Jansen Price’s excellent blog post on the subject, I slowly worked through the data and wrote a python script to interpret the binaries and save them to a CSV. I was able to generate the nice graph above. There was a lot of trial and error, but here’s an overview of the process:

  1. Copy Wii save game data to the SD card. This is done from Wii Options > Data Management > Save Data > Wii
  2. Find the save game data on the card. It’s in something like ‘private/wii/title/RFPE’, although different regions may have slightly different codes. RFPE is the code for WiiFit Plus. Copy the WiiFit data.bin file from the SD card to your local machine.
  3. Decrypt data.bin. This is explained pretty well here. To create the keys I ended up creating text files with the hex string for each and then using “xxd -r -p sd_iv_hex sd_iv” et al to save a binary version. If you’re getting “MD5 mismatch” errors, you probably saved the keys incorrectly. If you aren’t sure, check the file size. They should be 16 bytes each.
  4. Run the decrypted RPHealth.dat through a parser (I wrote one in Python for this)
  5. Run the CSV through your favorite graph generation library. I use flot because Google Charts don’t handle dates very well.

More details, including the source for the Python script can be found over on my blog: Kellbot!

2 comments

The Web Application Approval Process.

There’s a lot of discussion going around on the web about the controversial new device placed onto the free market by Apple Computers, the iPad. I was thinking about the app store approval process, and the potential for how shall we say, abuse that might occur through such a system. That’s when it occurred to me, Apple is right. Developers should be able to safeguard the experience of their users. So I opened up the terminal.

Here’s the php code that you might want to use on your web applications to let iPad users know that their device might not meet the user experience requirements that you feel are necessary for the full enjoyment of your applications. You know, requirements such as screws on the device, or the ability to multitask, or install software without an approval process controlled by some megalomaniac in Cupertino. I’ve modeled the response to be somewhat familiar in wording to apple developers. You know, just to show that I care.

Anyways, if you like me feel that the iPad is ruining the web experience for users, and don’t want to see your web applications tainted by it’s inferior design choices use the code below to protect yourself and your work. You aren’t making a tool, you are creating an experience. Remember place the code such that it executes before your page data is displayed. If you have a header include or something that would be an awesome location.

1 comment

March Madness: Product Info Screen Scraping!

Since everyone else appears to be at SXSW, I suppose I’ll have to step up for today’s March Madness. I bring you: a screen scraper for retail products on ecommerce sites.

While I’m hardly the first person to write such a tool, finding useful examples or libraries among the hundreds of pages of screen scraper spam has proven difficult. I ended up writing one from scratch in PHP using the DomDocument object.

The goal of the scraper is to come up with the product title, price, and 3 most likely product photos from any given product URL. In order to make it a bit faster (it’s pretty painfully slow), I attempt to filter out images which are obviously not product photos (those which are very long/tall, those which are not displayed in the browser). Then for a bit of extra fun, it sorts the image array by it’s “likeliness” to be a product photo. Obviously it needs some refining to actually be useful.

Read more

2 comments

March Madness Day 3

Under the wire… with a rather boring script. Here’s an apache log parser that uploads log data to MySQL. Interesting part about it? If your user auth field has LDAP data this will parse that properly.

Click through for code…
Read more

No comments

March Madness! Day 2.

So today I decided to mix things up a bit. I figure, how else can one honor the time honored world of languages than by paying homage to the language wrought by Knuth himself…. LaTeX.

Here’s the resulting PDF: m2
I will post the associated EPS file later, currently NYCR’s blog is very anti EPS.

Read more

No comments

Next Page »